{"version":3,"sources":["webpack:///webpack/bootstrap 4793825f4b3ff07789d8","webpack:///./node_modules/awayjs-full/dist/lib/core.js","webpack:///../../../../../node_modules/tslib/tslib.es6.js","webpack:///../dist/lib/errors/ErrorBase.js","webpack:///../dist/lib/errors/AbstractMethodError.js","webpack:///../dist/lib/events/EventBase.js","webpack:///../dist/lib/events/AssetEvent.js","webpack:///../dist/lib/events/EventDispatcher.js","webpack:///../dist/lib/library/AssetBase.js","webpack:///../dist/lib/attributes/AttributesBuffer.js","webpack:///../dist/lib/attributes/AttributesView.js","webpack:///../dist/lib/attributes/Byte4Attributes.js","webpack:///../dist/lib/attributes/Float1Attributes.js","webpack:///../dist/lib/attributes/Float2Attributes.js","webpack:///../dist/lib/attributes/Float3Attributes.js","webpack:///../dist/lib/attributes/Float4Attributes.js","webpack:///../dist/lib/attributes/Short2Attributes.js","webpack:///../dist/lib/attributes/Short3Attributes.js","webpack:///../dist/lib/managers/StreamingAudioChannel.js","webpack:///../dist/lib/managers/WebAudioChannel.js","webpack:///../dist/lib/utils/ByteArrayBase.js","webpack:///../dist/lib/utils/ByteArray.js","webpack:///../dist/lib/parsers/ParserUtils.js","webpack:///../dist/lib/managers/EventAudioChannel.js","webpack:///../dist/lib/managers/AudioManager.js","webpack:///../dist/lib/audio/WaveAudio.js","webpack:///../dist/lib/utils/ColorUtils.js","webpack:///../dist/lib/base/ColorTransform.js","webpack:///../dist/lib/geom/Vector3D.js","webpack:///../dist/lib/geom/Box.js","webpack:///../dist/lib/geom/MathConsts.js","webpack:///../dist/lib/geom/Orientation3D.js","webpack:///../dist/lib/errors/ArgumentError.js","webpack:///../dist/lib/geom/Matrix3D.js","webpack:///../dist/lib/events/TransformEvent.js","webpack:///../dist/lib/base/Transform.js","webpack:///../dist/lib/errors/DocumentError.js","webpack:///../dist/lib/errors/PartialImplementationError.js","webpack:///../dist/lib/errors/RangeError.js","webpack:///../dist/lib/events/LoaderEvent.js","webpack:///../dist/lib/events/ParserEvent.js","webpack:///../dist/lib/events/ProjectionEvent.js","webpack:///../dist/lib/events/TimerEvent.js","webpack:///../dist/lib/events/URLLoaderEvent.js","webpack:///../dist/lib/geom/Point.js","webpack:///../dist/lib/geom/Matrix.js","webpack:///../dist/lib/geom/PlaneClassification.js","webpack:///../dist/lib/geom/Plane3D.js","webpack:///../dist/lib/geom/PoissonLookup.js","webpack:///../dist/lib/geom/Quaternion.js","webpack:///../dist/lib/geom/Rectangle.js","webpack:///../dist/lib/geom/Sphere.js","webpack:///../dist/lib/library/AbstractionBase.js","webpack:///../dist/lib/library/AssetLibraryIterator.js","webpack:///../dist/lib/library/LoaderContext.js","webpack:///../dist/lib/net/URLLoaderDataFormat.js","webpack:///../dist/lib/net/URLRequestMethod.js","webpack:///../dist/lib/net/URLVariables.js","webpack:///../dist/lib/net/URLLoader.js","webpack:///../dist/lib/parsers/ResourceDependency.js","webpack:///../dist/lib/library/Loader.js","webpack:///../dist/lib/library/ConflictPrecedence.js","webpack:///../dist/lib/library/ConflictStrategyBase.js","webpack:///../dist/lib/library/ErrorConflictStrategy.js","webpack:///../dist/lib/library/IgnoreConflictStrategy.js","webpack:///../dist/lib/library/NumSuffixConflictStrategy.js","webpack:///../dist/lib/library/ConflictStrategy.js","webpack:///../dist/lib/library/AssetLibraryBundle.js","webpack:///../dist/lib/library/AssetLibrary.js","webpack:///../dist/lib/library/IDUtil.js","webpack:///../dist/lib/library/LoaderInfo.js","webpack:///../dist/lib/net/CrossDomainPolicy.js","webpack:///../dist/lib/net/URLRequest.js","webpack:///../dist/lib/utils/Timer.js","webpack:///../dist/lib/utils/getTimer.js","webpack:///../dist/lib/parsers/ParserBase.js","webpack:///../dist/lib/parsers/ParserDataFormat.js","webpack:///../dist/lib/parsers/WaveAudioParser.js","webpack:///../dist/lib/projections/CoordinateSystem.js","webpack:///../dist/lib/projections/ProjectionBase.js","webpack:///../dist/lib/projections/ObliqueNearPlaneProjection.js","webpack:///../dist/lib/projections/OrthographicOffCenterProjection.js","webpack:///../dist/lib/projections/OrthographicProjection.js","webpack:///../dist/lib/projections/PerspectiveProjection.js","webpack:///../dist/lib/ui/Keyboard.js","webpack:///../dist/lib/utils/Byte32Array.js","webpack:///../dist/lib/utils/ByteArrayBuffer.js","webpack:///../dist/lib/utils/CSS.js","webpack:///../dist/lib/utils/Debug.js","webpack:///../dist/lib/utils/Extensions.js","webpack:///../dist/lib/utils/RequestAnimationFrame.js","webpack:///../dist/lib/utils/XmlUtils.js","webpack:///./node_modules/awayjs-full/dist/lib/scene.js","webpack:///./node_modules/awayjs-full/dist/lib/parsers.js","webpack:///./node_modules/awayjs-full/dist/lib/view.js","webpack:///./node_modules/awayjs-full/dist/lib/graphics.js","webpack:///../dist/lib/animators/data/ParticleData.js","webpack:///../dist/lib/animators/nodes/AnimationNodeBase.js","webpack:///../dist/lib/events/RenderableEvent.js","webpack:///../dist/lib/events/StyleEvent.js","webpack:///../dist/lib/events/ShapeEvent.js","webpack:///../dist/lib/base/Shape.js","webpack:///../dist/lib/base/Style.js","webpack:///../dist/lib/base/TraverserBase.js","webpack:///../dist/lib/draw/CapsStyle.js","webpack:///../dist/lib/draw/DrawMode.js","webpack:///../dist/lib/draw/GradientType.js","webpack:///../dist/lib/draw/GraphicsFillStyle.js","webpack:///../dist/lib/draw/GradientFillStyle.js","webpack:///../dist/lib/draw/GraphicsFactoryHelper.js","webpack:///../dist/lib/utils/HitTestCache.js","webpack:///../dist/lib/utils/ElementsUtils.js","webpack:///../dist/lib/events/ElementsEvent.js","webpack:///../dist/lib/elements/ElementsBase.js","webpack:///../dist/lib/elements/TriangleElements.js","webpack:///../dist/lib/draw/GraphicsPathCommand.js","webpack:///../dist/lib/image/SamplerBase.js","webpack:///../dist/lib/image/Sampler2D.js","webpack:///../dist/lib/draw/GraphicsPathWinding.js","webpack:///../dist/lib/draw/JointStyle.js","webpack:///../dist/lib/draw/GraphicsStrokeStyle.js","webpack:///../dist/lib/draw/GraphicsPath.js","webpack:///../dist/lib/draw/LineScaleMode.js","webpack:///../dist/lib/draw/GraphicsFactoryStrokes.js","webpack:///../dist/lib/elements/LineElements.js","webpack:///../dist/lib/events/ImageEvent.js","webpack:///../dist/lib/image/ImageBase.js","webpack:///../dist/lib/factories/DefaultGraphicsFactory.js","webpack:///../dist/lib/utils/ImageUtils.js","webpack:///../dist/lib/image/Image2D.js","webpack:///../dist/lib/utils/BitmapImageUtils.js","webpack:///../dist/lib/image/CPURenderingContext2D.js","webpack:///../dist/lib/image/ImageData.js","webpack:///../dist/lib/image/CPUCanvas.js","webpack:///../dist/lib/image/BitmapImage2D.js","webpack:///../dist/lib/image/ImageCube.js","webpack:///../dist/lib/image/BitmapImageCube.js","webpack:///../dist/lib/image/BlendMode.js","webpack:///../dist/lib/events/MaterialEvent.js","webpack:///../dist/lib/materials/MaterialBase.js","webpack:///../dist/lib/textures/MappingMode.js","webpack:///../dist/lib/textures/TextureBase.js","webpack:///../dist/lib/textures/Single2DTexture.js","webpack:///../dist/lib/materials/BasicMaterial.js","webpack:///../dist/lib/textures/SingleCubeTexture.js","webpack:///../dist/lib/managers/DefaultMaterialManager.js","webpack:///../dist/lib/Graphics.js","webpack:///../dist/lib/draw/GraphicsFactoryFills.js","webpack:///../dist/lib/draw/InterpolationMethod.js","webpack:///../dist/lib/draw/PixelSnapping.js","webpack:///../dist/lib/draw/SpreadMethod.js","webpack:///../dist/lib/draw/TriangleCulling.js","webpack:///../dist/lib/elements/ElementsType.js","webpack:///../dist/lib/image/BitmapImageChannel.js","webpack:///../dist/lib/image/ExternalImage2D.js","webpack:///../dist/lib/image/SamplerCube.js","webpack:///../dist/lib/image/SpecularImage2D.js","webpack:///../dist/lib/managers/TextureAtlas.js","webpack:///../dist/lib/parsers/Image2DParser.js","webpack:///../dist/lib/parsers/ImageCubeParser.js","webpack:///../dist/lib/parsers/TextureAtlasParser.js","webpack:///../dist/lib/pick/PickingCollision.js","webpack:///../dist/lib/utils/MipmapGenerator.js","webpack:///./node_modules/awayjs-full/dist/lib/stage.js","webpack:///./node_modules/awayjs-full/dist/lib/renderer.js","webpack:///../dist/lib/base/AlignmentMode.js","webpack:///../dist/lib/base/HierarchicalProperties.js","webpack:///../dist/lib/base/OrientationMode.js","webpack:///../dist/lib/managers/FrameScriptManager.js","webpack:///../dist/lib/base/Timeline.js","webpack:///../dist/lib/base/TouchPoint.js","webpack:///../dist/lib/bounds/BoundsType.js","webpack:///../dist/lib/events/DisplayObjectEvent.js","webpack:///../dist/lib/display/DisplayObject.js","webpack:///../dist/lib/display/DisplayObjectContainer.js","webpack:///../dist/lib/display/Sprite.js","webpack:///../dist/lib/prefabs/PrefabBase.js","webpack:///../dist/lib/prefabs/PrimitivePrefabBase.js","webpack:///../dist/lib/prefabs/PrimitiveCubePrefab.js","webpack:///../dist/lib/bounds/BoundingVolumeBase.js","webpack:///../dist/lib/bounds/AxisAlignedBoundingBox.js","webpack:///../dist/lib/bounds/AxisAlignedBoundingBox2D.js","webpack:///../dist/lib/prefabs/PrimitiveSpherePrefab.js","webpack:///../dist/lib/bounds/BoundingSphere.js","webpack:///../dist/lib/bounds/NullBounds.js","webpack:///../dist/lib/controllers/ControllerBase.js","webpack:///../dist/lib/controllers/FirstPersonController.js","webpack:///../dist/lib/controllers/LookAtController.js","webpack:///../dist/lib/controllers/HoverController.js","webpack:///../dist/lib/controllers/FollowController.js","webpack:///../dist/lib/controllers/SpringController.js","webpack:///../dist/lib/display/Billboard.js","webpack:///../dist/lib/events/CameraEvent.js","webpack:///../dist/lib/display/Camera.js","webpack:///../dist/lib/shadowmappers/ShadowMapperBase.js","webpack:///../dist/lib/shadowmappers/DirectionalShadowMapper.js","webpack:///../dist/lib/events/LightEvent.js","webpack:///../dist/lib/display/LightBase.js","webpack:///../dist/lib/display/DirectionalLight.js","webpack:///../dist/lib/display/LightProbe.js","webpack:///../dist/lib/display/LineSegment.js","webpack:///../dist/lib/display/LoaderContainer.js","webpack:///../dist/lib/events/MouseEvent.js","webpack:///../dist/lib/text/TesselatedFontChar.js","webpack:///../dist/lib/text/TesselatedFontTable.js","webpack:///../dist/lib/text/TextFieldAutoSize.js","webpack:///../dist/lib/text/TextFieldType.js","webpack:///../dist/lib/text/TextFormat.js","webpack:///../dist/lib/text/TextShape.js","webpack:///../dist/lib/display/TextField.js","webpack:///../dist/lib/display/MovieClip.js","webpack:///../dist/lib/shadowmappers/CubeMapShadowMapper.js","webpack:///../dist/lib/display/PointLight.js","webpack:///../dist/lib/display/Skybox.js","webpack:///../dist/lib/events/TextureProjectorEvent.js","webpack:///../dist/lib/display/TextureProjector.js","webpack:///../dist/lib/errors/CastError.js","webpack:///../dist/lib/events/ResizeEvent.js","webpack:///../dist/lib/events/TouchEvent.js","webpack:///../dist/lib/lightpickers/LightPickerBase.js","webpack:///../dist/lib/lightpickers/LightSources.js","webpack:///../dist/lib/lightpickers/StaticLightPicker.js","webpack:///../dist/lib/shadowmappers/CascadeShadowMapper.js","webpack:///../dist/lib/shadowmappers/NearDirectionalShadowMapper.js","webpack:///../dist/lib/prefabs/PrimitiveCapsulePrefab.js","webpack:///../dist/lib/prefabs/PrimitiveCylinderPrefab.js","webpack:///../dist/lib/prefabs/PrimitiveConePrefab.js","webpack:///../dist/lib/prefabs/PrimitivePlanePrefab.js","webpack:///../dist/lib/prefabs/PrimitivePolygonPrefab.js","webpack:///../dist/lib/prefabs/PrimitiveTorusPrefab.js","webpack:///../dist/lib/text/AntiAliasType.js","webpack:///../dist/lib/text/BitmapFontChar.js","webpack:///../dist/lib/text/BitmapFontTable.js","webpack:///../dist/lib/text/Font.js","webpack:///../dist/lib/text/GridFitType.js","webpack:///../dist/lib/text/TextFormatAlign.js","webpack:///../dist/lib/text/TextInteractionMode.js","webpack:///../dist/lib/text/TextLineMetrics.js","webpack:///../dist/lib/tools/Merge.js","webpack:///../dist/lib/utils/Cast.js","webpack:///../dist/lib/Scene.js","webpack:///./node_modules/awayjs-full/dist/lib/materials.js","webpack:///../dist/lib/aglsl/assembler/Flags.js","webpack:///../dist/lib/aglsl/assembler/FS.js","webpack:///../dist/lib/aglsl/assembler/Opcode.js","webpack:///../dist/lib/aglsl/assembler/OpcodeMap.js","webpack:///../dist/lib/aglsl/assembler/Part.js","webpack:///../dist/lib/aglsl/assembler/RegMap.js","webpack:///../dist/lib/aglsl/assembler/Sampler.js","webpack:///../dist/lib/aglsl/assembler/SamplerMap.js","webpack:///../dist/lib/aglsl/assembler/AGALMiniAssembler.js","webpack:///../dist/lib/aglsl/Header.js","webpack:///../dist/lib/aglsl/Description.js","webpack:///../dist/lib/aglsl/OpLUT.js","webpack:///../dist/lib/aglsl/Mapping.js","webpack:///../dist/lib/aglsl/Destination.js","webpack:///../dist/lib/aglsl/Token.js","webpack:///../dist/lib/aglsl/AGALTokenizer.js","webpack:///../dist/lib/aglsl/AGLSLParser.js","webpack:///../dist/lib/shaders/ShaderRegisterElement.js","webpack:///../dist/lib/animators/data/AnimationRegisterData.js","webpack:///../../../../../../../node_modules/tslib/tslib.es6.js","webpack:///../dist/lib/errors/AnimationSetError.js","webpack:///../dist/lib/animators/AnimationSetBase.js","webpack:///../dist/lib/events/AnimatorEvent.js","webpack:///../dist/lib/animators/AnimatorBase.js","webpack:///../dist/lib/attributes/GL_AttributesBuffer.js","webpack:///../dist/lib/base/ContextGLBlendFactor.js","webpack:///../dist/lib/base/ContextGLClearMask.js","webpack:///../dist/lib/base/ContextGLCompareMode.js","webpack:///../dist/lib/base/ContextGLDrawMode.js","webpack:///../dist/lib/base/ContextGLMipFilter.js","webpack:///../dist/lib/base/ContextGLProfile.js","webpack:///../dist/lib/base/ContextGLProgramType.js","webpack:///../dist/lib/base/ContextGLStencilAction.js","webpack:///../dist/lib/base/ContextGLTextureFilter.js","webpack:///../dist/lib/base/ContextGLTextureFormat.js","webpack:///../dist/lib/base/ContextGLTriangleFace.js","webpack:///../dist/lib/base/ContextGLVertexBufferFormat.js","webpack:///../dist/lib/base/ContextGLWrapMode.js","webpack:///../dist/lib/base/ContextMode.js","webpack:///../dist/lib/base/SamplerState.js","webpack:///../dist/lib/elements/GL_ElementsBase.js","webpack:///../dist/lib/elements/GL_TriangleElements.js","webpack:///../dist/lib/events/StageEvent.js","webpack:///../dist/lib/events/PassEvent.js","webpack:///../dist/lib/flash/OpCodes.js","webpack:///../dist/lib/flash/ResourceBaseFlash.js","webpack:///../dist/lib/flash/CubeTextureFlash.js","webpack:///../dist/lib/flash/IndexBufferFlash.js","webpack:///../dist/lib/flash/ProgramFlash.js","webpack:///../dist/lib/flash/TextureFlash.js","webpack:///../dist/lib/flash/VertexBufferFlash.js","webpack:///../dist/lib/flash/ContextFlash.js","webpack:///../dist/lib/gles/GLESAssetBase.js","webpack:///../dist/lib/gles/TextureBaseGLES.js","webpack:///../dist/lib/gles/CubeTextureGLES.js","webpack:///../dist/lib/gles/IndexBufferGLES.js","webpack:///../dist/lib/gles/GLESConnector.js","webpack:///../dist/lib/gles/ProgramGLES.js","webpack:///../dist/lib/gles/TextureGLES.js","webpack:///../dist/lib/gles/VertexBufferGLES.js","webpack:///../dist/lib/gles/ContextGLES.js","webpack:///../dist/lib/image/GL_ImageBase.js","webpack:///../dist/lib/image/GL_Image2D.js","webpack:///../dist/lib/image/GL_BitmapImage2D.js","webpack:///../dist/lib/image/GL_ExternalImage2D.js","webpack:///../dist/lib/image/GL_ImageCube.js","webpack:///../dist/lib/image/GL_BitmapImageCube.js","webpack:///../dist/lib/image/GL_RenderImage2D.js","webpack:///../dist/lib/image/GL_RenderImageCube.js","webpack:///../dist/lib/image/GL_SamplerBase.js","webpack:///../dist/lib/image/GL_Sampler2D.js","webpack:///../dist/lib/image/GL_SamplerCube.js","webpack:///../dist/lib/image/ProgramData.js","webpack:///../dist/lib/image/ProgramDataPool.js","webpack:///../dist/lib/software/IndexBufferSoftware.js","webpack:///../dist/lib/software/VertexBufferSoftware.js","webpack:///../dist/lib/software/TextureSoftware.js","webpack:///../dist/lib/software/CubeTextureSoftware.js","webpack:///../dist/lib/software/ProgramVOSoftware.js","webpack:///../dist/lib/software/SoftwareSamplerState.js","webpack:///../dist/lib/software/ProgramSoftware.js","webpack:///../dist/lib/software/BlendModeSoftware.js","webpack:///../dist/lib/software/DepthCompareModeSoftware.js","webpack:///../dist/lib/software/ContextSoftware.js","webpack:///../dist/lib/webgl/TextureBaseWebGL.js","webpack:///../dist/lib/webgl/CubeTextureWebGL.js","webpack:///../dist/lib/webgl/IndexBufferWebGL.js","webpack:///../dist/lib/webgl/ProgramWebGL.js","webpack:///../dist/lib/webgl/TextureWebGL.js","webpack:///../dist/lib/webgl/VertexBufferWebGL.js","webpack:///../dist/lib/webgl/ContextWebGL.js","webpack:///../dist/lib/Stage.js","webpack:///../dist/lib/managers/StageManager.js","webpack:///../dist/lib/shaders/RegisterPool.js","webpack:///../dist/lib/shaders/ShaderRegisterCache.js","webpack:///../dist/lib/shaders/ShaderRegisterData.js","webpack:///../dist/lib/shaders/compilers/CompilerBase.js","webpack:///../dist/lib/shaders/ShaderBase.js","webpack:///../dist/lib/materials/passes/PassBase.js","webpack:///../dist/lib/materials/passes/BasicMaterialPass.js","webpack:///../dist/lib/materials/GL_MaterialBase.js","webpack:///../dist/lib/materials/GL_BasicMaterial.js","webpack:///../dist/lib/materials/GL_MaterialPassBase.js","webpack:///../dist/lib/renderables/RenderablePool.js","webpack:///../dist/lib/materials/MaterialPool.js","webpack:///../dist/lib/materials/MaterialGroupBase.js","webpack:///../dist/lib/renderables/GL_RenderableBase.js","webpack:///../dist/lib/renderables/GL_ShapeRenderable.js","webpack:///../dist/lib/textures/GL_TextureBase.js","webpack:///../dist/lib/textures/GL_Single2DTexture.js","webpack:///../dist/lib/textures/GL_SingleCubeTexture.js","webpack:///../dist/lib/animators/data/AnimationElements.js","webpack:///../dist/lib/animators/data/ColorSegmentPoint.js","webpack:///../dist/lib/animators/data/JointPose.js","webpack:///../dist/lib/animators/data/ParticleAnimationData.js","webpack:///../dist/lib/animators/data/ParticleProperties.js","webpack:///../dist/lib/animators/data/ParticlePropertiesMode.js","webpack:///../dist/lib/animators/data/Skeleton.js","webpack:///../dist/lib/animators/data/SkeletonJoint.js","webpack:///../dist/lib/animators/data/SkeletonPose.js","webpack:///../dist/lib/animators/data/VertexAnimationMode.js","webpack:///../dist/lib/animators/nodes/AnimationClipNodeBase.js","webpack:///../dist/lib/animators/states/AnimationStateBase.js","webpack:///../dist/lib/animators/states/ParticleStateBase.js","webpack:///../dist/lib/animators/states/ParticleAccelerationState.js","webpack:///../dist/lib/animators/nodes/ParticleNodeBase.js","webpack:///../dist/lib/animators/nodes/ParticleAccelerationNode.js","webpack:///../dist/lib/animators/states/ParticleBezierCurveState.js","webpack:///../dist/lib/animators/nodes/ParticleBezierCurveNode.js","webpack:///../dist/lib/animators/states/ParticleBillboardState.js","webpack:///../dist/lib/animators/nodes/ParticleBillboardNode.js","webpack:///../dist/lib/animators/states/ParticleColorState.js","webpack:///../dist/lib/animators/states/ParticleTimeState.js","webpack:///../dist/lib/animators/nodes/ParticleTimeNode.js","webpack:///../dist/lib/animators/ParticleAnimationSet.js","webpack:///../dist/lib/animators/nodes/ParticleColorNode.js","webpack:///../dist/lib/animators/states/ParticleFollowState.js","webpack:///../dist/lib/animators/nodes/ParticleFollowNode.js","webpack:///../dist/lib/animators/states/ParticleInitialColorState.js","webpack:///../dist/lib/animators/nodes/ParticleInitialColorNode.js","webpack:///../dist/lib/animators/states/ParticleOrbitState.js","webpack:///../dist/lib/animators/nodes/ParticleOrbitNode.js","webpack:///../dist/lib/animators/states/ParticleOscillatorState.js","webpack:///../dist/lib/animators/nodes/ParticleOscillatorNode.js","webpack:///../dist/lib/animators/states/ParticlePositionState.js","webpack:///../dist/lib/animators/nodes/ParticlePositionNode.js","webpack:///../dist/lib/animators/states/ParticleRotateToHeadingState.js","webpack:///../dist/lib/animators/nodes/ParticleRotateToHeadingNode.js","webpack:///../dist/lib/animators/states/ParticleRotateToPositionState.js","webpack:///../dist/lib/animators/nodes/ParticleRotateToPositionNode.js","webpack:///../dist/lib/animators/states/ParticleRotationalVelocityState.js","webpack:///../dist/lib/animators/nodes/ParticleRotationalVelocityNode.js","webpack:///../dist/lib/animators/states/ParticleScaleState.js","webpack:///../dist/lib/animators/nodes/ParticleScaleNode.js","webpack:///../dist/lib/animators/states/ParticleSegmentedColorState.js","webpack:///../dist/lib/animators/nodes/ParticleSegmentedColorNode.js","webpack:///../dist/lib/animators/states/ParticleSpriteSheetState.js","webpack:///../dist/lib/animators/nodes/ParticleSpriteSheetNode.js","webpack:///../dist/lib/animators/states/ParticleUVState.js","webpack:///../dist/lib/animators/nodes/ParticleUVNode.js","webpack:///../dist/lib/animators/states/ParticleVelocityState.js","webpack:///../dist/lib/animators/nodes/ParticleVelocityNode.js","webpack:///../dist/lib/animators/states/SkeletonBinaryLERPState.js","webpack:///../dist/lib/animators/nodes/SkeletonBinaryLERPNode.js","webpack:///../dist/lib/events/AnimationStateEvent.js","webpack:///../dist/lib/animators/states/AnimationClipState.js","webpack:///../dist/lib/animators/states/SkeletonClipState.js","webpack:///../dist/lib/animators/nodes/SkeletonClipNode.js","webpack:///../dist/lib/animators/states/SkeletonDifferenceState.js","webpack:///../dist/lib/animators/nodes/SkeletonDifferenceNode.js","webpack:///../dist/lib/animators/states/SkeletonDirectionalState.js","webpack:///../dist/lib/animators/nodes/SkeletonDirectionalNode.js","webpack:///../dist/lib/animators/states/SkeletonNaryLERPState.js","webpack:///../dist/lib/animators/nodes/SkeletonNaryLERPNode.js","webpack:///../dist/lib/animators/states/VertexClipState.js","webpack:///../dist/lib/animators/nodes/VertexClipNode.js","webpack:///../dist/lib/animators/transitions/CrossfadeTransitionState.js","webpack:///../dist/lib/animators/transitions/CrossfadeTransitionNode.js","webpack:///../dist/lib/animators/transitions/CrossfadeTransition.js","webpack:///../dist/lib/animators/ParticleAnimator.js","webpack:///../dist/lib/animators/SkeletonAnimationSet.js","webpack:///../dist/lib/animators/SkeletonAnimator.js","webpack:///../dist/lib/animators/VertexAnimationSet.js","webpack:///../dist/lib/animators/VertexAnimator.js","webpack:///../dist/lib/events/RTTEvent.js","webpack:///../dist/lib/managers/RTTBufferManager.js","webpack:///../dist/lib/materials/GL_DepthMaterial.js","webpack:///../dist/lib/materials/GL_DistanceMaterial.js","webpack:///../dist/lib/events/RendererEvent.js","webpack:///../dist/lib/sort/RenderableMergeSort.js","webpack:///../dist/lib/RendererBase.js","webpack:///../dist/lib/DepthRenderer.js","webpack:///../dist/lib/DistanceRenderer.js","webpack:///../dist/lib/materials/DefaultMaterialGroup.js","webpack:///../dist/lib/Filter3DRenderer.js","webpack:///../dist/lib/DefaultRenderer.js","webpack:///../dist/lib/elements/GL_LineElements.js","webpack:///../dist/lib/elements/GL_SkyboxElements.js","webpack:///../dist/lib/events/ShadingMethodEvent.js","webpack:///../dist/lib/filters/tasks/Filter3DTaskBase.js","webpack:///../dist/lib/filters/tasks/Filter3DCompositeTask.js","webpack:///../dist/lib/filters/tasks/Filter3DFXAATask.js","webpack:///../dist/lib/filters/tasks/Filter3DHBlurTask.js","webpack:///../dist/lib/filters/tasks/Filter3DVBlurTask.js","webpack:///../dist/lib/filters/Filter3DBase.js","webpack:///../dist/lib/filters/BlurFilter3D.js","webpack:///../dist/lib/filters/CompositeFilter3D.js","webpack:///../dist/lib/filters/FXAAFilter3D.js","webpack:///../dist/lib/renderables/GL_BillboardRenderable.js","webpack:///../dist/lib/renderables/GL_LineSegmentRenderable.js","webpack:///../dist/lib/renderables/GL_SkyboxRenderable.js","webpack:///../dist/lib/shaders/compilers/LightingCompiler.js","webpack:///../dist/lib/shaders/LightingShader.js","webpack:///../dist/lib/sort/RenderableNullSort.js","webpack:///../dist/lib/materials/GL_SkyboxMaterial.js","webpack:///../dist/lib/utils/ParticleGraphicsHelper.js","webpack:///../dist/lib/utils/ParticleGraphicsTransform.js","webpack:///../dist/lib/methods/ShadingMethodBase.js","webpack:///../dist/lib/methods/AmbientBasicMethod.js","webpack:///../dist/lib/methods/DiffuseBasicMethod.js","webpack:///../dist/lib/methods/NormalBasicMethod.js","webpack:///../dist/lib/methods/SpecularBasicMethod.js","webpack:///../dist/lib/MethodMaterialMode.js","webpack:///../dist/lib/MethodMaterial.js","webpack:///../dist/lib/data/ChunkVO.js","webpack:///../dist/lib/chunks/CompositeChunkBase.js","webpack:///../dist/lib/chunks/LightingCompositeChunk.js","webpack:///../dist/lib/methods/AmbientDepthMethod.js","webpack:///../dist/lib/methods/CompositeMethodBase.js","webpack:///../dist/lib/methods/DiffuseCompositeMethod.js","webpack:///../dist/lib/methods/DiffuseCelMethod.js","webpack:///../dist/lib/methods/DiffuseGradientMethod.js","webpack:///../dist/lib/methods/DiffuseLightMapMethod.js","webpack:///../dist/lib/methods/DiffuseWrapMethod.js","webpack:///../dist/lib/methods/EffectAlphaMaskMethod.js","webpack:///../dist/lib/methods/EffectColorMatrixMethod.js","webpack:///../dist/lib/methods/EffectColorTransformMethod.js","webpack:///../dist/lib/methods/EffectEnvMapMethod.js","webpack:///../dist/lib/methods/EffectFogMethod.js","webpack:///../dist/lib/methods/EffectFresnelEnvMapMethod.js","webpack:///../dist/lib/methods/EffectLightMapMethod.js","webpack:///../dist/lib/methods/EffectProjectiveTextureMethod.js","webpack:///../dist/lib/methods/EffectRefractionEnvMapMethod.js","webpack:///../dist/lib/methods/EffectRimLightMethod.js","webpack:///../dist/lib/methods/NormalHeightMapMethod.js","webpack:///../dist/lib/methods/NormalSimpleWaterMethod.js","webpack:///../dist/lib/methods/ShadowMethodBase.js","webpack:///../dist/lib/methods/ShadowHardMethod.js","webpack:///../dist/lib/methods/ShadowCompositeMethod.js","webpack:///../dist/lib/methods/ShadowCascadeMethod.js","webpack:///../dist/lib/methods/ShadowDitheredMethod.js","webpack:///../dist/lib/methods/ShadowFilteredMethod.js","webpack:///../dist/lib/methods/ShadowNearMethod.js","webpack:///../dist/lib/methods/ShadowSoftMethod.js","webpack:///../dist/lib/methods/SpecularAnisotropicMethod.js","webpack:///../dist/lib/methods/SpecularCompositeMethod.js","webpack:///../dist/lib/methods/SpecularCelMethod.js","webpack:///../dist/lib/methods/SpecularFresnelMethod.js","webpack:///../dist/lib/methods/SpecularPhongMethod.js","webpack:///../dist/lib/chunks/ShaderChunkBase.js","webpack:///../dist/lib/chunks/AmbientBasicChunk.js","webpack:///../dist/lib/chunks/AmbientDepthChunk.js","webpack:///../dist/lib/chunks/DiffuseBasicChunk.js","webpack:///../dist/lib/chunks/DiffuseCelChunk.js","webpack:///../dist/lib/chunks/DiffuseGradientChunk.js","webpack:///../dist/lib/chunks/DiffuseLightMapChunk.js","webpack:///../dist/lib/chunks/DiffuseWrapChunk.js","webpack:///../dist/lib/chunks/EffectAlphaMaskChunk.js","webpack:///../dist/lib/chunks/EffectColorMatrixChunk.js","webpack:///../dist/lib/chunks/EffectColorTransformChunk.js","webpack:///../dist/lib/chunks/EffectEnvMapChunk.js","webpack:///../dist/lib/chunks/EffectFogChunk.js","webpack:///../dist/lib/chunks/EffectFresnelEnvMapChunk.js","webpack:///../dist/lib/chunks/EffectLightMapChunk.js","webpack:///../dist/lib/chunks/EffectProjectiveTextureChunk.js","webpack:///../dist/lib/chunks/EffectRefractionEnvMapChunk.js","webpack:///../dist/lib/chunks/EffectRimLightChunk.js","webpack:///../dist/lib/chunks/NormalBasicChunk.js","webpack:///../dist/lib/chunks/NormalHeightMapChunk.js","webpack:///../dist/lib/chunks/NormalSimpleWaterChunk.js","webpack:///../dist/lib/chunks/ShadowCascadeChunk.js","webpack:///../dist/lib/chunks/ShadowChunkBase.js","webpack:///../dist/lib/chunks/ShadowDitheredChunk.js","webpack:///../dist/lib/chunks/ShadowFilteredChunk.js","webpack:///../dist/lib/chunks/ShadowHardChunk.js","webpack:///../dist/lib/chunks/ShadowNearChunk.js","webpack:///../dist/lib/chunks/ShadowSoftChunk.js","webpack:///../dist/lib/chunks/SpecularBasicChunk.js","webpack:///../dist/lib/chunks/SpecularAnisotropicChunk.js","webpack:///../dist/lib/chunks/SpecularCelChunk.js","webpack:///../dist/lib/chunks/SpecularFresnelChunk.js","webpack:///../dist/lib/chunks/SpecularPhongChunk.js","webpack:///../dist/lib/surfaces/passes/MethodPassMode.js","webpack:///../dist/lib/surfaces/passes/MethodPass.js","webpack:///../dist/lib/surfaces/GL_MethodMaterial.js","webpack:///../dist/lib/factories/DefaultSceneGraphFactory.js","webpack:///../dist/lib/AWD3ParserUtils/AWD3Utils.js","webpack:///../dist/lib/AWD3ParserUtils/AWDBlock.js","webpack:///../dist/lib/AWDParser.js","webpack:///../dist/lib/Max3DSParser.js","webpack:///../dist/lib/FNTParser.js","webpack:///../dist/lib/FontParser.js","webpack:///../dist/lib/MD2Parser.js","webpack:///../dist/lib/MD5AnimParser.js","webpack:///../dist/lib/MD5MeshParser.js","webpack:///../dist/lib/OBJParser.js","webpack:///../dist/lib/Parsers.js","webpack:///../dist/lib/managers/MouseManager.js","webpack:///../dist/lib/partition/DisplayObjectNode.js","webpack:///../dist/lib/partition/SceneGraphNode.js","webpack:///../dist/lib/partition/PartitionBase.js","webpack:///../dist/lib/partition/SceneGraphPartition.js","webpack:///../dist/lib/pick/RaycastPicker.js","webpack:///../dist/lib/partition/NodeBase.js","webpack:///../dist/lib/partition/BasicPartition.js","webpack:///../dist/lib/View.js","webpack:///../dist/lib/image/ViewImage2D.js","webpack:///../dist/lib/partition/EntityNode.js","webpack:///../dist/lib/partition/CameraNode.js","webpack:///../dist/lib/partition/SkyboxNode.js","webpack:///../dist/lib/pick/JSPickingCollider.js","webpack:///./node_modules/tess2/index.js","webpack:///./node_modules/tess2/src/tess2.js","webpack:///./node_modules/awayjs-full/dist/index.js","webpack:///./node_modules/awayjs-full/dist/lib/player.js","webpack:///../dist/lib/adapters/AS2ColorAdapter.js","webpack:///../dist/lib/adapters/AS2KeyAdapter.js","webpack:///../dist/lib/adapters/AS2MCSoundProps.js","webpack:///../dist/lib/adapters/AS2MouseAdapter.js","webpack:///../dist/lib/adapters/AS2SymbolAdapter.js","webpack:///../dist/lib/adapters/AS2SystemAdapter.js","webpack:///../dist/lib/adapters/AS2SoundAdapter.js","webpack:///../dist/lib/adapters/AS2StageAdapter.js","webpack:///../dist/lib/adapters/AS2SharedObjectAdapter.js","webpack:///../dist/lib/adapters/AS2MovieClipAdapter.js","webpack:///../dist/lib/adapters/AS2TextFieldAdapter.js","webpack:///../dist/lib/factories/AS2SceneGraphFactory.js"],"names":["tslib_1.__extends","CoordinateSystem","AssetBase","EventBase","Box","EventDispatcher","Rectangle","ColorUtils","Matrix","Point","MathConsts","Float4Attributes","Float3Attributes","Byte4Attributes","Vector3D","AttributesBuffer","Sphere","Float2Attributes","AbstractMethodError","Short3Attributes","AttributesView","Float1Attributes","ColorTransform","AssetEvent","MappingMode","ErrorBase","ArgumentError","RangeError","PartialImplementationError","URLLoaderDataFormat","ByteArray","ParserBase","ParserUtils","URLRequest","XmlUtils","Matrix3D","Transform","TransformEvent","StyleEvent","PickingCollision","Graphics","ElementsType","TriangleElements","LineElements","Shape","PlaneClassification","MaterialEvent","DefaultMaterialManager","RenderableEvent","TraverserBase","PerspectiveProjection","Single2DTexture","Image2D","SamplerCube","AssetLibraryBundle","Loader","LoaderEvent","URLLoaderEvent","ParserEvent","GraphicsPath","GraphicsStrokeStyle","JointStyle","CapsStyle","DrawMode","Sampler2D","Style","SingleCubeTexture","ImageCube","BlendMode","RequestAnimationFrame","getTimer","AbstractionBase","ContextGLBlendFactor","ContextGLClearMask","ContextGLCompareMode","ContextGLDrawMode","ContextGLMipFilter","ContextGLProfile","ContextGLProgramType","ContextGLStencilAction","ContextGLTextureFilter","ContextGLTextureFormat","ContextGLTriangleFace","ContextGLVertexBufferFormat","ContextGLWrapMode","ContextMode","ElementsEvent","ElementsUtils","ByteArrayBase","Byte32Array","ImageEvent","MipmapGenerator","BitmapImage2D","VertexBufferProperties","CSS","MaterialBase","Quaternion","AnimationNodeBase","ShaderRegisterElement","Orientation3D","AnimationRegisterData","AnimationSetBase","AnimatorBase","ImageUtils","ShaderBase","GL_MaterialPassBase","StageManager","StageEvent","AGALMiniAssembler","MaterialGroupBase","GL_ElementsBase","GL_TriangleElements","ShaderRegisterCache","GL_RenderableBase","CompilerBase","LightSources","ParticleData","ShadingMethodEvent","TextureProjectorEvent","DirectionalLight","CascadeShadowMapper","NearDirectionalShadowMapper","PoissonLookup","PointLight","LightingShader","PassBase","StaticLightPicker","GL_MaterialBase","MovieClip","Sprite","DisplayObjectContainer","TextField","Billboard","MethodMaterial","DefaultGraphicsFactory","BitmapImageCube","AssetLibrary","Font","TesselatedFontTable","TextFormat","Timeline","LineScaleMode","Short2Attributes","PrimitivePlanePrefab","PrimitiveCubePrefab","PrimitiveSpherePrefab","PrimitiveCylinderPrefab","PrimitiveConePrefab","PrimitiveCapsulePrefab","PrimitiveTorusPrefab","PrefabBase","Skybox","CubeMapShadowMapper","DirectionalShadowMapper","OrthographicProjection","OrthographicOffCenterProjection","Camera","MethodMaterialMode","DiffuseGradientMethod","DiffuseWrapMethod","DiffuseLightMapMethod","DiffuseCelMethod","SpecularAnisotropicMethod","SpecularPhongMethod","SpecularCelMethod","SpecularFresnelMethod","NormalSimpleWaterMethod","Image2DParser","ShadowNearMethod","ShadowDitheredMethod","ShadowSoftMethod","ShadowHardMethod","Skeleton","SkeletonJoint","SkeletonPose","JointPose","SkeletonClipNode","VertexClipNode","VertexAnimationSet","SkeletonAnimationSet","SkeletonAnimator","VertexAnimator","EffectColorMatrixMethod","EffectColorTransformMethod","EffectEnvMapMethod","EffectLightMapMethod","EffectRimLightMethod","EffectAlphaMaskMethod","EffectFresnelEnvMapMethod","EffectFogMethod","BitmapFontTable","SpecularBasicMethod","MouseEvent","FrameScriptManager","TouchPoint","DisplayObjectEvent","BoundsType","AxisAlignedBoundingBox","BoundingSphere","NullBounds","Scene","DefaultRenderer","RendererEvent","CameraEvent","DisplayObject","HierarchicalProperties","AudioManager","ContextGLES","LoaderContainer","DefaultSceneGraphFactory"],"mappings":"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AAC,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,QAA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AAC;YAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACvH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACxH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACvH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACxH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACxH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACvH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACxH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACvH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACvH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACxH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACxH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACzH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACzH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACxH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC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,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IA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C,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;;QAEhC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,C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AAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;;;;AAI3B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;;;;AAI3B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;;;;AAI7B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;;;;AAI3B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;;;;AAI3B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;;;;AAI3B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;;;;AAI3B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;;;;AAI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EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAA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,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACpE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACzE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACjF,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;SAC9B;KACJ,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,UAAU,EAAE,cAAc,EAAE;QACrF,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;;QAErD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO;YAC5B,OAAO,cAAc,CAAC;QAC1B,IAAI,cAAc,CAAC;QACnB,IAAI,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE;;YAE9D,cAAc,CAAC,OAAO,CAAC;YACvB,cAAc,CAAC,QAAQ,CAAC;YACxB,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;;YAEnF,cAAc,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACzC,cAAc,CAAC,kBAAkB,GAAG,KAAK,CAAC;;YAE1C,cAAc,CAAC,gBAAgB,CAACsF,8BAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACjG,cAAc,CAAC,gBAAgB,CAACA,8BAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;SACtG;QACD,OAAO,cAAc,CAAC;KACzB,CAAC;;;;;;IAMF,gBAAgB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,UAAU,EAAE,cAAc,EAAE;QAC7E,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACtD,IAAI,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;QAC7C,IAAI,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC;QACjD,IAAI,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC;QAChD,IAAI,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;QACjD,IAAI,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnD,IAAI,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,WAAW,GAAG,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC;QACrD,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9D,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACvD,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrD,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACtD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC;QACN,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,MAAM,CAAC;QACX,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACxB,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACxB,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACxB,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QACvB,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QACvB,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QACvB,OAAO,KAAK,GAAG,WAAW,EAAE;YACxB,EAAE,GAAG,KAAK,GAAG,SAAS,CAAC;YACvB,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;YAC5B,KAAK,GAAG,eAAe,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAChC,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACpD,EAAE,GAAG,KAAK,GAAG,YAAY,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9B,KAAK,GAAG,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9B,EAAE,GAAG,KAAK,GAAG,aAAa,CAAC;YAC3B,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YAC3B,KAAK,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/B,KAAK,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/B,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,GAAG,CAAC,CAAC;YACP,CAAC,GAAG,CAAC,CAAC;YACN,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC;YACzB,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE;gBAC9B,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC9B,IAAI,MAAM,GAAG,CAAC,EAAE;;oBAEZ,IAAI,SAAS,GAAG,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBACtC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;oBAC3C,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;oBAC3C,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;oBAC/D,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;oBAC/D,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;oBAC/D,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;oBACzD,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;oBACzD,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;oBACzD,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;oBACzD,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;oBACzD,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;oBACzD,CAAC,EAAE,CAAC;iBACP;qBACI;;oBAED,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;iBAC7B;aACJ;YACD,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YACzB,eAAe,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,MAAM,IAAI,CAAC;gBACX,eAAe,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACjC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YACvB,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3B,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3B,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YACxB,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC5B,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC5B,KAAK,EAAE,CAAC;SACX;KACJ,CAAC;;;;;;IAMF,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE;QACvF,IAAI,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;QACxC,IAAI,eAAe,CAAC;QACpB,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC7B,IAAI,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC;QACnC,IAAI,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACvC,IAAI,WAAW,CAAC;QAChB,IAAI,KAAK,CAAC;QACV,IAAI,UAAU,CAAC;QACf,IAAI,IAAI,CAAC;QACT,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACnB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACnB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;QAEf,IAAI,WAAW,CAAC,MAAM,IAAI,GAAG;YACzB,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,eAAe,IAAI,IAAI;gBACvB,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;YACvD,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YAChC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC;YAChC,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC;YAChC,IAAI,WAAW,GAAG,CAAC,EAAE;gBACjB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;gBACtB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;gBACtB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aACd;iBACI;;gBAED,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;;gBAEtC,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC5B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;gBACtB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAClC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBACjC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBACjC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;gBAEjC,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC5B,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;;gBAEpD,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;gBACtB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACV,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAC5C,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAC5C,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAC5C,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;aAC/C;SACJ;KACJ,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,KAAK,EAAE;QAC/D,IAAI,KAAK,CAAC,IAAI,IAAI,mBAAmB,CAAC,mBAAmB,EAAE;YACvD,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;;YAErH,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,cAAc,EAAE;gBAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACjF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC;aAClD;SACJ;KACJ,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,KAAK,EAAE;QAC1D,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACnE,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE;;QAE3D,IAAI,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,kBAAkB,CAAC,cAAc,CAAC;YAC3G,OAAO;QACX,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC3D,aAAa,CAAC,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;QACxC,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,QAAQ,EAAE;YACpC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAChC;KACJ,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,CAACgB,0BAAY,CAAC,CAAC,CACY;;ACzhB5B;;;;;AAKA,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxCtG,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;;;;;;IAgB9C,SAAS,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE;QAC7C,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;QAC1C,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,UAAU,CAAC,EAAE;QACrD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE;;QAE/F,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAC5D,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI;YACpC,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,qBAAqB,GAAG,IAAIoG,mCAAqB,EAAE,CAAC;QAC9F,IAAI,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC,QAAQ;YAC/C,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;;YAExE,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KAC/E,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE;QAC9F,OAAO,EAAE,CAAC;KACb,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE;QAC3F,OAAO,MAAM,GAAG,eAAe,CAAC,QAAQ,GAAG,GAAG,GAAG,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;KACpF,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE;KAC7D,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE;QACjG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,KAAK,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACpD,aAAa,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACpD,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,GAAG,GAAG,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC;QACtD,IAAI,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACxD,IAAI,CAAC,uBAAuB,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC;QAC9D,IAAI,CAAC,uBAAuB,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,SAAS,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,GAAG,CAAC;YACP,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC9G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;gBACrC,SAAS,GAAG,aAAa,CAAC,sBAAsB,EAAE,CAAC;gBACnD,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;gBAChE,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAChF,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC;oBACtB,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;aACnE;YACD,IAAI,IAAI,MAAM,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;SACrG;;QAED,IAAI,MAAM,CAAC,mBAAmB,GAAG,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE;YACzD,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI;gBACjI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM;gBAC3F,MAAM,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;SACvI;;;;;;;QAOD,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE;QACjG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,GAAG,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC;QACtD,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACpD,IAAI,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACxD,IAAI,CAAC,uBAAuB,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC;QAC9D,IAAI,CAAC,uBAAuB,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,SAAS,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,GAAG,CAAC;YACP,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,OAAO,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACtH,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC;YAC7B,IAAI,IAAI,MAAM,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACzH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;gBACrC,SAAS,GAAG,aAAa,CAAC,sBAAsB,EAAE,CAAC;gBACnD,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;gBAChE,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;oBAC3E,MAAM,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;aACvI;SACJ;QACD,IAAI,MAAM,CAAC,mBAAmB,GAAG,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE;YACzD,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI;gBACjI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM;gBAC3F,MAAM,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;SACnI;QACD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,CAACC,8BAAgB,CAAC,CAAC,CACU;;AC5J9B;;;;;AAKA,IAAI,cAAc,GAAG,CAAC,UAAU,MAAM,EAAE;IACpCrG,SAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;;;;;;IAM1C,SAAS,cAAc,CAAC,kBAAkB,EAAE;QACxC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,IAAI,CAAC;QAC1D,KAAK,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QAC3B,KAAK,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAC/C,OAAO,KAAK,CAAC;KAChB;;;;IAID,cAAc,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;QACzC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACvD,CAAC;;;;;IAKF,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;QAChE,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE;QACxC,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI;YAClC,OAAO;QACX,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;;QAElC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,IAAI,GAAG,aAAa,CAAC,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,cAAc,EAAE;;YAErB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;SACpC;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;;QAEb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,EAAE,EAAE;QACvD,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE;YAC3D,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;YACzD,YAAY,GAAG,IAAI,CAAC;SACvB;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY;YACtD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAChF,IAAI,YAAY;YACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;KACjC,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;;;QAGvF,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC7B,IAAI,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;;QAE9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1C,OAAO;SACV;QACD,IAAI,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACzD,IAAI,CAAC,CAAC;QACN,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAC5C,MAAM,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,IAAI,mBAAmB,CAAC,QAAQ;YAClE,CAAC,GAAG,CAAC,CAAC;;YAEN,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,UAAU,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YACjB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;YAC5E,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC5C,UAAU,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACpF,IAAI,QAAQ,CAAC,OAAO,CAAC0C,iCAAgB,CAAC,EAAE;gBACpC,UAAU,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC9F,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC;oBAC7B,UAAU,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;aACnG;SACJ;KACJ,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtE,IAAI,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACzD,MAAM,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClF,IAAI,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,IAAI,mBAAmB,CAAC,QAAQ,EAAE;YACpE,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;gBAC1B,IAAI,QAAQ,CAAC,OAAO,CAACA,iCAAgB,CAAC,EAAE;oBACpC,UAAU,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC9F,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC;wBAC7B,UAAU,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACnG;aACJ;SACJ;;KAEJ,CAAC;;;;;IAKF,cAAc,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;KACjE,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,UAAU,EAAE,cAAc,EAAE;QACnF,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,IAAI,mBAAmB,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;YACxF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,cAAc,CAAC;;QAElI,OAAO,cAAc,CAAC;KACzB,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,CAAC4D,0BAAY,CAAC,CAAC,CACU;;ACxI1B,IAAI,QAAQ,GAAG,CAAC,UAAU,MAAM,EAAE;IAC9BtG,SAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE;QAChC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;QAC5C,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAC/B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE;;;;QAIpD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;QACnC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACpD,CAAC;IACF,OAAO,QAAQ,CAAC;CACnB,CAACG,sBAAS,CAAC,CAAC,CAAC;AAEd;;;AAGA,QAAQ,CAAC,MAAM,GAAG,kBAAkB,CAAC;;AC3BrC,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCH,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC5C,SAAS,gBAAgB,CAAC,KAAK,EAAE;QAC7B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACtB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACvB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAC1B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,oBAAoB,GAAG,IAAIM,sBAAS,EAAE,CAAC;QAC7C,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC;KAChB;IACD,gBAAgB,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;QAC5C,IAAI,CAAC,KAAK;YACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACjD,IAAI,gBAAgB,CAAC,UAAU,IAAI,IAAI;YACnC,gBAAgB,CAAC,UAAU,GAAG,IAAI,KAAK,EAAE,CAAC;QAC9C,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,gBAAgB,IAAI,IAAI,EAAE;YAC1B,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,EAAE,GAAG,IAAI,kBAAkB,EAAE,CAAC;YAClC,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC;YACnB,EAAE,CAAC,MAAM,GAAG,gBAAgB,CAAC;YAC7B,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACxC;QACD,OAAO,gBAAgB,CAAC;KAC3B,CAAC;IACF,gBAAgB,CAAC,4BAA4B,GAAG,UAAU,KAAK,EAAE;QAC7D,IAAI,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,CAAC;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK;gBACnB,OAAO,CAAC,CAAC,MAAM,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,gBAAgB,CAAC,sBAAsB,GAAG,UAAU,KAAK,EAAE;QACvD,IAAI,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,CAAC;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE;gBACrB,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzC,OAAO;aACV;SACJ;KACJ,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE;QAC/D,GAAG,EAAE,YAAY;YACb,IAAI,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE;QAC/D,GAAG,EAAE,YAAY;YACb,IAAI,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE;QAC3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU;gBACxB,OAAO;YACX,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,aAAa,GAAGiG,2BAAU,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE;gBACtC,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtF,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;aACrD;iBACI;gBACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;aACxD;YACD,IAAI,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;SAC3D;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE;QAC5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW;gBACzB,OAAO;YACX,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAGA,2BAAU,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE;gBACxC,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxF,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;aACvD;iBACI;gBACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;aAC1D;YACD,IAAI,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;SAC3D;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,6BAA6B,EAAE;QAC7E,GAAG,EAAE,YAAY;YACb,IAAI,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,4BAA4B,CAAC;SAC5C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,4BAA4B,EAAE;QAC5E,GAAG,EAAE,YAAY;YACb,IAAI,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,2BAA2B,CAAC;SAC3C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE;QAC7D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,qBAAqB,EAAE;QACrE,GAAG,EAAE,YAAY;YACb,IAAI,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAC;SACpC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE;QAC9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE;QAC/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,gBAAgB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC7C,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,CAAC;YAC5C,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;YACxC,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B;KACJ,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QACtD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAClC,IAAI,YAAY,CAAC;QACjB,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,IAAI,IAAI,CAAC,4BAA4B,IAAI,IAAI;YACzC,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,2BAA2B,IAAI,IAAI;YACxC,IAAI,CAAC,2BAA2B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/D;QACD,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;;QAEtB,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACxF,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,CAAClG,4BAAe,CAAC,CAAC,CAAC;AAEpB,IAAI,kBAAkB,GAAG,CAAC,YAAY;IAClC,SAAS,kBAAkB,GAAG;KAC7B;IACD,OAAO,kBAAkB,CAAC;CAC7B,EAAE,CAAC,CAAC;;ACnNL;;;;AAIA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCL,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;IAQ5C,SAAS,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE;QAC9C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC;QAC9D,KAAK,CAAC,OAAO,GAAG,IAAIwG,wBAAU,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAChF,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;IACD,gBAAgB,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QAChD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACzH,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;QAChE,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC;YACzB,MAAM,CAAC,cAAc,EAAE,CAAC;KAC/B,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,MAAM,EAAE;QAC7D,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,IAAI,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;KACzB,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACpF,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC;QAC7C,IAAI,QAAQ,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,QAAQ,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACtD,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACtD,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,eAAe,CAAC,kBAAkB,GAAG,IAAI,GAAG,eAAe,CAAC,kBAAkB,GAAG,MAAM;YACnH,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM;YACxD,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;YACpC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;;;QAGhE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE;YACpD,IAAI,MAAM,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YACvD,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5G,IAAI,SAAS,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;YACxD,IAAI,IAAI,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;gBACnE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;SAChC;QACD,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;QAChE,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC7C,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,UAAU,EAAE;QACzD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE;YACpD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;SACrG;KACJ,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,CAACC,iCAAmB,CAAC,CAAC,CACK;;ACrF5B;;;;AAIA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCzG,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM/C,SAAS,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC;QAC9D,KAAK,CAAC,OAAO,GAAG,IAAIwG,wBAAU,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAChF,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;IACD,mBAAmB,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QACnD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACzH,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,MAAM,EAAE;QAChE,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,IAAI,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;KACzB,CAAC;IACF,mBAAmB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;QACnE,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAChC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC;YACzB,MAAM,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,mBAAmB,GAAG,CAAC;YAC9B,MAAM,CAAC,qBAAqB,EAAE,CAAC;KACtC,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACvF,IAAI,IAAI,CAAC;QACT,IAAI,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC;QAC7C,IAAI,QAAQ,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,QAAQ,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACtD,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACtD,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;QAE9C,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,eAAe,CAAC,cAAc,GAAG,QAAQ,GAAG,eAAe,CAAC,cAAc,GAAG,QAAQ;YAClH,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM;YACxD,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;YACpC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;QAChE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE;YACpD,IAAI,MAAM,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YACvD,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5G,IAAI,SAAS,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;YACxD,IAAI,IAAI,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;gBACnE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;SAChC;QACD,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;QAChE,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,UAAU,EAAE;QAC5D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;QACvB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;QAEpB,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE;YACpD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;SACjD;KACJ,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAACC,iCAAmB,CAAC,CAAC,CACQ;;AC3F/B,IAAI,aAAa,GAAG,CAAC,UAAU,MAAM,EAAE;IACnCzG,SAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACzC,SAAS,aAAa,CAAC,IAAI,EAAE;QACzB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;KAC1C;IACD,OAAO,aAAa,CAAC;CACxB,CAACG,sBAAS,CAAC,CAAC,CAAC;AAEd,aAAa,CAAC,gBAAgB,GAAG,iBAAiB,CAAC;AACnD,aAAa,CAAC,eAAe,GAAG,gBAAgB,CAAC;;ACXjD;;;AAGA,IAAI,mBAAmB,GAAG,CAAC,YAAY;IACnC,SAAS,mBAAmB,GAAG;KAC9B;IACD,mBAAmB,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,IAAI,EAAE;QACnE,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC;SACf;;QAED,IAAI,GAAG,IAAI,CAAC;QACZ,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACjB,OAAO,IAAI,EAAE;YACT,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACjB,IAAI,IAAI,EAAE;gBACN,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACjB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aACpB;SACJ;QACD,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;QAEjB,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACzC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;;QAE3C,IAAI,MAAM,CAAC;QACX,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,IAAI;YACL,OAAO,KAAK,CAAC;QACjB,IAAI,CAAC,KAAK;YACN,OAAO,IAAI,CAAC;QAChB,OAAO,IAAI,IAAI,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;gBAC5B,CAAC,GAAG,IAAI,CAAC;gBACT,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aACpB;iBACI;gBACD,CAAC,GAAG,KAAK,CAAC;gBACV,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;aACtB;YACD,IAAI,CAAC,MAAM;gBACP,MAAM,GAAG,CAAC,CAAC;;gBAEX,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAClB,IAAI,GAAG,CAAC,CAAC;SACZ;QACD,IAAI,IAAI;YACJ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAChB,IAAI,KAAK;YACV,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACtB,OAAO,MAAM,CAAC;KACjB,CAAC;IACF,mBAAmB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,IAAI,EAAE;QAClE,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,EAAE,IAAI,CAAC;QACf,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC;SACf;;QAED,IAAI,GAAG,IAAI,CAAC;QACZ,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACjB,OAAO,IAAI,EAAE;YACT,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACjB,IAAI,IAAI,EAAE;gBACN,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACjB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aACpB;SACJ;QACD,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;QAEjB,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;;QAE1C,IAAI,MAAM,CAAC;QACX,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,CAAC;QACN,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI;YACL,OAAO,KAAK,CAAC;QACjB,IAAI,CAAC,KAAK;YACN,OAAO,IAAI,CAAC;QAChB,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;;;;YAInD,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;YAC7B,IAAI,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC;YAC9B,IAAI,GAAG,IAAI,GAAG,EAAE;gBACZ,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;gBACzB,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1B,IAAI,EAAE,IAAI,EAAE,EAAE;oBACV,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;wBAC1B,GAAG,GAAG,CAAC,CAAC;;wBAER,GAAG,GAAG,CAAC,CAAC,CAAC;iBAChB;qBACI,IAAI,EAAE,GAAG,EAAE,EAAE;oBACd,GAAG,GAAG,CAAC,CAAC;iBACX;qBACI;oBACD,GAAG,GAAG,CAAC,CAAC,CAAC;iBACZ;aACJ;iBACI,IAAI,GAAG,GAAG,GAAG,EAAE;gBAChB,GAAG,GAAG,CAAC,CAAC;aACX;iBACI;gBACD,GAAG,GAAG,CAAC,CAAC,CAAC;aACZ;YACD,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,CAAC,GAAG,IAAI,CAAC;gBACT,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aACpB;iBACI;gBACD,CAAC,GAAG,KAAK,CAAC;gBACV,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;aACtB;YACD,IAAI,CAAC,MAAM,EAAE;gBACT,MAAM,GAAG,CAAC,CAAC;gBACX,IAAI,GAAG,CAAC,CAAC;aACZ;iBACI;gBACD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACd,IAAI,GAAG,CAAC,CAAC;aACZ;SACJ;QACD,IAAI,IAAI;YACJ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAChB,IAAI,KAAK;YACV,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACtB,OAAO,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,EAAE,CAAC,CAC2B;;ACtI/B;;;;;;AAMA,IAAI,YAAY,GAAG,CAAC,UAAU,MAAM,EAAE;IAClCH,SAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;;;;IAIxC,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE;QACvD,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE;QACvC,IAAI,aAAa,KAAK,KAAK,CAAC,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,EAAE;QACxD,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG6E,8BAAgB,CAAC,QAAQ,CAAC,EAAE;QAChE,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,IAAI,GAAGQ,yBAAW,CAAC,IAAI,CAAC,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,kBAAkB,GAAG,IAAI,KAAK,EAAE,CAAC;QACvC,KAAK,CAAC,gBAAgB,GAAG,IAAI,KAAK,EAAE,CAAC;QACrC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC3B,KAAK,CAAC,cAAc,GAAG,IAAIvE,qBAAQ,EAAE,CAAC;QACtC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACjC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACnC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;;QAE3B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,aAAa,GAAG,IAAIR,sBAAS,EAAE,CAAC;QACtC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,0BAA0B,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/F,KAAK,CAAC,wBAAwB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;;QAE3F,KAAK,CAAC,gBAAgB,GAAG,IAAI,mBAAmB,EAAE,CAAC;;QAEnD,KAAK,CAAC,OAAO,GAAG,KAAK,IAAIoG,0BAAY,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/F,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAACC,wBAAU,CAAC,eAAe,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC3F,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAACA,wBAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC7F,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAACA,wBAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;;;;;QAK9F,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO;YACrB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC5C,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE;;;;QAIxD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,iBAAiB,CAAC;SACjC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE;QAC3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SAC/B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE;QAC1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE;QAC1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAItD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;SAChC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,IAAI,CAAC,YAAY,EAAE;oBACnB,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACzD,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;iBAC5D;qBACI;oBACD,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;oBACzB,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC5B;aACJ;YACD,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE;;;;QAI/C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK;gBAChB,OAAO;YACX,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAClB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE;;;;QAI/C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK;gBAChB,OAAO;YACX,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAClB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAInD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;gBACpB,OAAO;YACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;YACjC,IAAI,IAAI,CAAC,kBAAkB;gBACvB,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,KAAK,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACpB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACrC;YACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;QAIpD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK;gBACrB,OAAO;YACX,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC;YAClC,IAAI,IAAI,CAAC,kBAAkB;gBACvB,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,KAAK,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACpB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACrC;YACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE,UAAU,EAAE;;QAE9D,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE;YAC9D,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;;QAE9C,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;YAChE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;;QAEzC,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACtB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YACrD,IAAI,cAAc,GAAG,CAAC,IAAIC,+BAAiB,EAAE,CAAC,QAAQ,CAAC,iBAAiB,GAAG,WAAW,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;YACjI,IAAI,gBAAgB,GAAG,CAAC,IAAIA,+BAAiB,EAAE,CAAC,QAAQ,CAAC,mBAAmB,GAAG,WAAW,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;YACzI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;SAChE;;QAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;;QAE/C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;KAC9B,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;;QAEpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;KACvD,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE;;;;;;QAM3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK;gBAC1B,OAAO;YACX,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE;;;;;;QAM3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK;gBAC1B,OAAO;YACX,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE;;;;;;QAM3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK;gBAC1B,OAAO;YACX,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE;QACrD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAInD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACzC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAACD,wBAAU,CAAC,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5F,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAACA,wBAAU,CAAC,iBAAiB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC9F,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAACA,wBAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;;;;;;KAOzB,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE;KAC/C,CAAC;;;;;;;IAOF,YAAY,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE;QAChG,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE;QACzC,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,EAAE;QACnD,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE,EAAE,eAAe,GAAG,CAAC,CAAC,EAAE;;QAExD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS;YAChC,OAAO;;QAEX,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC;QAClE,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC;QAC9F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACrE,YAAY,CAAC,gBAAgB,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;;QAE9B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;SAC7G;;;QAGD,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;;QAE5E,IAAI,MAAM;YACN,MAAM,CAAC,iBAAiB,EAAE,CAAC;;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;YACxB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SACxC;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE;QAClH,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,eAAe,CAACnC,kCAAoB,CAAC,GAAG,EAAEA,kCAAoB,CAAC,IAAI,CAAC,CAAC;QACpF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAEE,kCAAoB,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC;;QAEjB,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;;YAE3C,KAAK,GAAG,KAAK,CAAC;SACjB;;QAED,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAEA,kCAAoB,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;KACnC,CAAC;;;;;;;;IAQF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE;QACtG,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE;QACzC,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,EAAE;QACnD,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE,EAAE,eAAe,GAAG,CAAC,CAAC,EAAE;QACxD,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa;YAC5E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/G,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;;;;;QAKvC,IAAI,CAAC,SAAS,CAAC,eAAe,CAACF,kCAAoB,CAAC,GAAG,EAAEA,kCAAoB,CAAC,IAAI,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;;;QAGvB,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC9B,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBACvD,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAChE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAClC;SACJ;QACD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;KACnC,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;KACrC,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,UAAU,EAAE;QACjD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAEE,kCAAoB,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3D,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqCF,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,YAAY,EAAE;QACzE,IAAI,CAAC,CAAC;QACN,IAAI,GAAG,CAAC;QACR,IAAI,aAAa,CAAC;QAClB,IAAI,UAAU,CAAC;QACf,IAAI,MAAM,CAAC;QACX,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAACQ,mCAAqB,CAAC,cAAc,EAAER,kCAAoB,CAAC,MAAM,EAAEK,oCAAsB,CAAC,IAAI,EAAEA,oCAAsB,CAAC,IAAI,EAAEA,oCAAsB,CAAC,IAAI,CAAC,CAAC;QAC3L,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;;;;;QAKjC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,OAAO,YAAY,EAAE;YACjB,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;YACrC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;;YAE3B,IAAI,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC,EAAE;gBAChE,aAAa,GAAG,YAAY,CAAC;;gBAE7B,GAAG;oBACC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC;iBACtC,QAAQ,aAAa,IAAI,aAAa,CAAC,UAAU,IAAI,UAAU,EAAE;aACrE;iBACI;gBACD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;oBAC5E,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,WAAW,CAAC;oBACnD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;;;;wBAIjC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;;;wBAGhC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAACG,mCAAqB,CAAC,cAAc,EAAER,kCAAoB,CAAC,MAAM,EAAEK,oCAAsB,CAAC,IAAI,EAAEA,oCAAsB,CAAC,IAAI,EAAEA,oCAAsB,CAAC,IAAI,CAAC,CAAC;wBAC3L,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;qBAC9C;yBACI;wBACD,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC;qBAC9E;oBACD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;iBAClC;;gBAED,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;gBACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBACtB,aAAa,GAAG,YAAY,CAAC;oBAC7B,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACjB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBACpC,GAAG;wBACC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;4BAC7B,IAAI,CAAC,IAAI,CAAC;gCACN,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;yBACzC;6BACI;4BACD,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;yBAC5C;wBACD,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC;qBACtC,QAAQ,aAAa,IAAI,aAAa,CAAC,UAAU,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE;oBACnJ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBAC7B;aACJ;YACD,YAAY,GAAG,aAAa,CAAC;SAChC;KACJ,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,KAAK,EAAE;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KACzC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,mBAAmB,EAAE;QAC/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAChC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,gBAAgB,IAAI,KAAK;gBAC9B,OAAO;YACX,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCH,YAAY,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;QACrD,IAAI,IAAI,CAAC,aAAa;YAClB,OAAO;QACX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe;YACrB,IAAI,CAAC,eAAe,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC5C,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;QACtD,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC7C,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE;QACxD,IAAI,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B,CAAC;;;;;;IAMF,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE;QAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACrJ,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;QACtD,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE;QACnD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;;QAErE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;;QAE9H,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;QAEnF,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KACjC,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE;QAC3D,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;;QAEnE,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC9B,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;QAC5D,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QAC9D,IAAI,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QACzC,YAAY,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QAChD,YAAY,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;;QAEtD,YAAY,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC/D,IAAI,UAAU,CAAC,gBAAgB,EAAE;YAC7B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACjD,IAAI,CAAC,uBAAuB,GAAG,YAAY,CAAC;SAC/C;aACI;YACD,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC;YAChD,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC;SAC9C;QACD,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;KACtE,CAAC;;;;;IAKF,YAAY,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,MAAM,EAAE;;KAEhE,CAAC;;;;;IAKF,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE;;KAE1D,CAAC;;;;;IAKF,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE;;KAE1D,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE;;QAElD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACnC,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,UAAU,EAAE,KAAK,EAAE;;;;;;;QAO/D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;;;;QAIxD,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;;;QAGnB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAACG,mCAAqB,CAAC,cAAc,EAAER,kCAAoB,CAAC,MAAM,EAAEK,oCAAsB,CAAC,GAAG,EAAEA,oCAAsB,CAAC,GAAG,EAAEA,oCAAsB,CAAC,GAAG,CAAC,CAAC;QACxL,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QAC7B,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAClD,IAAI,YAAY,CAAC;QACjB,IAAI,QAAQ,CAAC;QACb,IAAI,WAAW,CAAC;QAChB,IAAI,IAAI,CAAC;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,EAAE;;;gBAGR,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAACG,mCAAqB,CAAC,cAAc,EAAER,kCAAoB,CAAC,KAAK,EAAEK,oCAAsB,CAAC,kBAAkB,EAAEA,oCAAsB,CAAC,kBAAkB,EAAEA,oCAAsB,CAAC,IAAI,CAAC,CAAC;gBACtN,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;YACD,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;gBAClC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,EAAE;oBACrC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;;oBAExC,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE;;wBAEhC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;qBAC5C;iBACJ;aACJ;SACJ;;;QAGD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAACG,mCAAqB,CAAC,cAAc,EAAER,kCAAoB,CAAC,KAAK,EAAEK,oCAAsB,CAAC,IAAI,EAAEA,oCAAsB,CAAC,IAAI,EAAEA,oCAAsB,CAAC,IAAI,CAAC,CAAC;QAC1L,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAEL,kCAAoB,CAAC,UAAU,CAAC,CAAC;;KAEtE,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,UAAU,EAAE,YAAY,EAAE;QACnE,IAAI,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QACzC,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC/B,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAEA,kCAAoB,CAAC,UAAU,CAAC,CAAC;;QAEpE,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7B,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,WAAW,EAAE;QAC9D,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM;YACpD,OAAO,IAAI,CAAC;QAChB,IAAI,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;QACnC,IAAI,WAAW,CAAC;QAChB,IAAI,WAAW,CAAC;QAChB,IAAI,iBAAiB,CAAC;QACtB,IAAI,iBAAiB,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAChC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7B,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;YACjC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YAC/C,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC7C,IAAI,iBAAiB,IAAI,WAAW;gBAChC,OAAO,IAAI,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;oBACtC,OAAO,IAAI,CAAC;aACnB;SACJ;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,OAAO,YAAY,CAAC;CACvB,CAACzB,8BAAa,CAAC,CAAC,CAAC;AAElB,YAAY,CAAC,gBAAgB,GAAG,CAAC,CAAC;;ACtxBlC;;;;;AAKA,IAAI,aAAa,GAAG,CAAC,UAAU,MAAM,EAAE;IACnCjD,SAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;;;;;;IAMzC,SAAS,aAAa,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;QAC7C,KAAK,CAAC,cAAc,GAAG,IAAI6G,+BAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACjG,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;KAChB;;;;IAID,aAAa,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE;QAChD,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7F,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;YACtD,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACtD,CAAC;IACF,OAAO,aAAa,CAAC;CACxB,CAAC,YAAY,CAAC,CAAC,CAAC;AAEjB,aAAa,CAAC,qBAAqB,GAAG,MAAM,EAAE,CAAC;;ACnC/C;;;;;AAKA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtC7G,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM5C,SAAS,gBAAgB,CAAC,KAAK,EAAE;QAC7B,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;QAC7C,KAAK,CAAC,cAAc,GAAG,IAAI6G,+BAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;QACpG,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;KAChB;;;;IAID,gBAAgB,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE;QACnD,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7F,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;YACtD,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACtD,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,CAAC,YAAY,CAAC,CAAC,CAAC;AAEjB,gBAAgB,CAAC,qBAAqB,GAAG,MAAM,EAAE,CAAC;;AChClD;;;AAGA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1C7G,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAChD,SAAS,oBAAoB,CAAC,KAAK,EAAE;QACjC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,oBAAoB,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC;KACvF;;;;;IAKD,oBAAoB,CAAC,mBAAmB,GAAG,UAAU,eAAe,EAAE,UAAU,EAAE;QAC9E,oBAAoB,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC;QACnF,aAAa,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;QAC7E,gBAAgB,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC;KACtF,CAAC;IACF,OAAO,oBAAoB,CAAC;CAC/B,CAAC6G,+BAAiB,CAAC,CAAC,CAAC;AAEtB,oBAAoB,CAAC,qBAAqB,GAAG,IAAI,MAAM,EAAE,CAAC;;ACrB1D;;;AAGA,IAAI,gBAAgB,GAAG,CAAC,YAAY;IAChC,SAAS,gBAAgB,CAAC,KAAK,EAAE;QAC7B,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,GAAG,IAAI7C,0BAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,oBAAoB,GAAG,IAAI1D,sBAAS,EAAE,CAAC;KAC/C;IACD,gBAAgB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;QACtD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,oBAAoB,EAAE;QACpE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,mBAAmB,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;QAC9D,IAAI,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE;QACzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,QAAQ;gBACd,OAAO;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB;oBACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YACxC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE;QACzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,qBAAqB,EAAE;QACrE,GAAG,EAAE,YAAY;YACb,IAAI,IAAI,CAAC,mBAAmB;gBACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAC;SACpC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE;QAC5D,IAAI,GAAG,CAAC;QACR,IAAI,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO;SACV;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE;;YAE3B,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;YAClG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAClD;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACxE,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;QACvE,IAAI,GAAG,CAAC;QACR,IAAI,CAAC,CAAC;QACN,IAAI,IAAI,CAAC;QACT,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAC/C,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,QAAQ;YACd,OAAO;QACX,IAAI,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACzB,IAAI,GAAG,GAAG,CAAC,EAAE;YACT,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,YAAY,EAAE,CAAC,EAAE6E,yCAA2B,CAAC,OAAO,CAAC,CAAC;YAC/G,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAEA,yCAA2B,CAAC,OAAO,CAAC,CAAC;SAC5G;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YACtB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACtE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9G,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACd,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;gBACzB,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC;gBAC3D,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,CAAC,EAAEA,yCAA2B,CAAC,OAAO,CAAC,CAAC;gBACrG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAEA,yCAA2B,CAAC,OAAO,CAAC,CAAC;aAClG;YACD,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YAC3C,OAAO,CAAC,eAAe,CAACX,kCAAoB,CAAC,GAAG,EAAEA,kCAAoB,CAAC,IAAI,CAAC,CAAC;YAC7E,OAAO,CAAC,WAAW,CAACG,+BAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KACtC,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;SAClD;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG,KAAK,CAAC;QAC7E,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG,KAAK,CAAC;QAC7E,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC;QACrF,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM,GAAG,KAAK,CAAC;QACvF,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KACpC,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC7C,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,EAAE,CAAC,CACwB;;AC9I5B;;;;;;AAMA,IAAI,eAAe,GAAG,CAAC,UAAU,MAAM,EAAE;IACrC3E,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;;;;;;IAO3C,SAAS,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE;QAC1D,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE;QACvC,IAAI,aAAa,KAAK,KAAK,CAAC,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,EAAE;QACxD,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG6E,8BAAgB,CAAC,QAAQ,CAAC,EAAE;QAChE,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,IAAI,GAAGQ,yBAAW,CAAC,IAAI,CAAC,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;QAC3E,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;QACrB,KAAK,CAAC,kBAAkB,GAAG,IAAI,KAAK,EAAE,CAAC;QACvC,KAAK,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,KAAK;YACL,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC9B,KAAK,CAAC,cAAc,GAAG,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/D,KAAK,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvE,KAAK,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,KAAK,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YACjB,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;;YAEhC,KAAK,CAAC,kBAAkB,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QACtD,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC;YAClB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;;YAElC,KAAK,CAAC,kBAAkB,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;QACxD,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE;QACjE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,iBAAiB,CAAC;SACjC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE;QAC9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE;QAC1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK;gBACxB,OAAO;YACX,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE;;;;;QAK1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC;SAC3E;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;gBAC1B,KAAK,GAAG,IAAI,CAAC;YACjB,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,EAAE;gBACnC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;aAClC;iBACI,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK,EAAE;gBACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC;aAC3C;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC;gBACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;aAC1E;iBACI;gBACD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;gBAClC,IAAI,IAAI,CAAC,aAAa,EAAE;oBACpB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC7B;aACJ;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE;QAClD,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE;QAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE;YACrC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,OAAO;SACV;QACD,IAAI,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS;YACnC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEZ,gCAAkB,CAAC,KAAK,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;SAC9D;aACI;YACD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,oBAAoB;YACzB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;;QAEnC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;YACpJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACjF;aACI;YACD,IAAI,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;;gBAEtE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS;YACpC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;QAE7B,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;KACpC,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE;QACzG,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE;QACzC,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,EAAE;QACnD,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE,EAAE,eAAe,GAAG,CAAC,CAAC,EAAE;QACxD,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;KACtG,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,UAAU,EAAE,IAAI,EAAE;QACjE,IAAI,GAAG,EAAE,CAAC,CAAC;QACX,IAAI,KAAK,CAAC;QACV,IAAI,YAAY,CAAC;QACjB,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACnC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YAClC,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,iBAAiB,IAAI,YAAY,CAAC,gBAAgB,CAAC;gBACzF,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SAC/D;QACD,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAC/B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YAClC,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,iBAAiB,IAAI,YAAY,CAAC,gBAAgB,CAAC;gBACzF,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAClE;KACJ,CAAC;;;;;IAKF,eAAe,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,MAAM,EAAE;QAChE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACxC,CAAC;;;;;IAKF,eAAe,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE;QAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClC,CAAC;;;;;IAKF,eAAe,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE;QAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClC,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC5C,IAAI,CAAC,IAAI,CAAC,YAAY;YAClB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE;QAC5D,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC;QACxC,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YAC1E,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YAC1E,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;SACtK;aACI;YACD,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,KAAK,CAAC;KAC5C,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,IAAI,EAAE;QACnE,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,aAAa;YACjD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QAC1E,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QAC1E,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAClF,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;;;;QAItD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC5C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC7B,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACnF,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;aACpC;SACJ;KACJ,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,OAAO,EAAE;QAC5D,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,IAAImB,8BAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;KACvH,CAAC;IACF,OAAO,eAAe,CAAC;CAC1B,CAAC,YAAY,CAAC,CAAC,CACW;;ACzR3B;;;;AAIA,IAAI,eAAe,GAAG,CAAC,UAAU,MAAM,EAAE;IACrC5F,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC3C,SAAS,eAAe,CAAC,YAAY,EAAE,KAAK,EAAE;QAC1C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;QAC3D,KAAK,CAAC,WAAW,GAAG,IAAImC,qBAAQ,EAAE,CAAC;QACnC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;QACnC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE;QAC7D,GAAG,EAAE,YAAY;YACb,OAAO,eAAe,CAAC,YAAY,CAAC;SACvC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE;QAC9D,GAAG,EAAE,YAAY;YACb,OAAO,eAAe,CAAC;SAC1B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,eAAe,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;QACrD,MAAM,CAAC,iBAAiB,EAAE,CAAC;KAC9B,CAAC;IACF,eAAe,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE;;QAE/E,IAAI,SAAS,GAAG,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,oBAAoB,GAAG,eAAe,CAAC,gBAAgB,CAAC;QAC7H,IAAI,SAAS,GAAG,aAAa,CAAC,sBAAsB,EAAE,CAAC;QACvD,IAAI,SAAS,GAAG,aAAa,CAAC,sBAAsB,EAAE,CAAC;;QAEvD,IAAI,aAAa,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC1D,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;QACjD,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,IAAI,QAAQ,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACrD,IAAI,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACxD,IAAI,IAAI,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACjD,IAAI,cAAc,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC3D,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,MAAM,CAAC,gBAAgB,GAAG,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;QACnD,IAAI,EAAE,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACjD,aAAa,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,EAAE,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACjD,aAAa,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAChD,aAAa,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,MAAM,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACrD,aAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACvD,aAAa,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,MAAM,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACrD,aAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7C,OAAO,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,cAAc,GAAG,OAAO;YACnE,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,cAAc,GAAG,OAAO;YAChE,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,QAAQ;;;YAG7C,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;YACzD,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;;;;;;YAMjE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;YACzD,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,SAAS;;YAEvD,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,SAAS;YACnE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;YAC/D,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;YAC/D,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,CAAC,GAAG,SAAS;YAC9D,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,EAAE,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS;YACjE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS;;YAEjD,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY;YACtD,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY;YAClE,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ;;YAEpD,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,WAAW;YACvC,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,EAAE,GAAG,WAAW;YAC7C,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU;YAChD,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO;YAC1D,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW;;YAErD,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS;YAC1E,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS;;;YAGjD,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,WAAW,GAAG,OAAO;YAC5D,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;YAC7D,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS;;YAEvE,MAAM,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS;YAC7D,UAAU,GAAG,EAAE,GAAG,IAAI,GAAG,aAAa,GAAG,OAAO,CAAC;KACxD,CAAC;IACF,eAAe,CAAC,gBAAgB,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE;QACjF,OAAO,EAAE,CAAC;KACb,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACjD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;QAClF,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC;YAC5B,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpF,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/M,MAAM,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC7C,MAAM,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;QACrD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;KACrC,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;QACtF,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;QAElC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,QAAQ,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC;QAC3C,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC1E,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,4BAA4B,CAAC2C,kCAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7F,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAACH,+BAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;;YAEpG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAACA,+BAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;KACxG,CAAC;;;;;;;;;;;IAWF,eAAe,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC1D,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/D,CAAC;IACF,OAAO,eAAe,CAAC;CAC1B,CAACmC,6BAAe,CAAC,CAAC,CAAC;AAEpB,eAAe,CAAC,YAAY,GAAG,iBAAiB,CAAC;;AC/JjD;;;;AAIA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvC9G,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,iBAAiB,GAAG;QACzB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;QAClD,KAAK,CAAC,iBAAiB,GAAG,IAAImC,qBAAQ,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE;QAC/D,GAAG,EAAE,YAAY;YACb,OAAO,iBAAiB,CAAC,YAAY,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,eAAe,EAAE;QAChE,GAAG,EAAE,YAAY;YACb,OAAO,iBAAiB,CAAC;SAC5B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,iBAAiB,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;KAC1D,CAAC;;;;IAIF,iBAAiB,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE;QACjF,IAAI,IAAI,GAAG,EAAE,CAAC;;QAEd,IAAI,QAAQ,GAAG,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,oBAAoB,GAAG,eAAe,CAAC,gBAAgB,CAAC;;QAE5H,IAAI,aAAa,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC1D,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;QACjD,IAAI,aAAa,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC1D,MAAM,CAAC,kBAAkB,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;QACpD,IAAI,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACxD,IAAI,IAAI,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACnD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;YAC/D,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAAC;QAC9D,IAAI,MAAM,CAAC,sBAAsB,GAAG,CAAC,EAAE;YACnC,eAAe,CAAC,kBAAkB,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;YACpE,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI;gBAC7D,MAAM,GAAG,eAAe,CAAC,kBAAkB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;gBAChE,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;SAChC;aACI;YACD,IAAI,IAAI,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,iBAAiB,CAAC,gBAAgB,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE;QACnF,OAAO,EAAE,CAAC;KACb,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;QACxF,IAAI,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACtC,IAAI,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAChE,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7I,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,IAAI,GAAG,IAAIrB,qBAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAChB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAChB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAChB,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/G,IAAI,KAAK,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,KAAK,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,IAAIA,qBAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,EAAE,IAAIA,qBAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;;QAEpF,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC;YAC5B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACvE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAClC,OAAO,CAAC,4BAA4B,CAACgE,kCAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7F,OAAO,CAAC,4BAA4B,CAACA,kCAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACjG,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAACH,+BAAiB,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;YAE9E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAACA,+BAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;KACxG,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAACoC,iCAAmB,CAAC,CAAC,CAAC;AAExB,iBAAiB,CAAC,YAAY,GAAG,mBAAmB,CAAC;;ACrGrD,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxC/G,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,SAAS,kBAAkB,CAAC,IAAI,EAAE;QAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;KAC1C;IACD,OAAO,kBAAkB,CAAC;CAC7B,CAACG,sBAAS,CAAC,CAAC,CAAC;AAEd,kBAAkB,CAAC,kBAAkB,GAAG,mBAAmB,CAAC;;ACP5D,IAAI,gBAAgB,GAAG,CAAC,YAAY;IAChC,SAAS,gBAAgB,CAAC,kBAAkB,EAAE;QAC1C,IAAI,kBAAkB,KAAK,KAAK,CAAC,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,EAAE;QAClE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI6G,iCAAmB,CAACnC,8BAAgB,CAAC,QAAQ,CAAC,CAAC;KAC5E;IACD,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK;gBAC3B,OAAO;YACX,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACnE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;YACrE,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE;QACxD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE;QAC5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK;gBACzB,OAAO;YACX,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE;QAC9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK;gBAC3B,OAAO;YACX,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACnE,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE;QAC/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK;gBAC5B,OAAO;YACX,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;YACrE,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;QAC9D,IAAI,IAAI,CAAC,yBAAyB;YAC9B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC7C,IAAI,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;KACjC,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACvD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;QACxD,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,cAAc,GAAG,CAAC,IAAI+B,+BAAiB,EAAE,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QAC7H,IAAI,gBAAgB,GAAG,CAAC,IAAIA,+BAAiB,EAAE,CAAC,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QACrI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACnD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC;QACrC,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC;QACT,IAAI,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI;YAC/B,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;QAChD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QACrD,MAAM,IAAI1F,gCAAmB,EAAE,CAAC;KACnC,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;QACzD,IAAI,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,IAAIkC,wBAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1F,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;KAC1C,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE;QACrD,IAAI,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;KAC5E,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE;KACxD,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,oBAAoB,EAAE;QACpE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,mBAAmB,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;CAC3B,EAAE,CAAC,CACwB;;AChJ5B,IAAI,qBAAqB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC3CpD,SAAiB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACjD,SAAS,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE;QAChD,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;QAC1C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,EAAE;QACrE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;SACrD;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE;QAC/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACxB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,qBAAqB,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QAC3D,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC;QAC7C,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QAC7D,IAAI,CAAC,oBAAoB,GAAG,cAAc,CAAC,KAAK,CAAC;QACjD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC;QACT,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,YAAY,GAAG,sBAAsB;YACzF,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO;YAClE,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO;YACxD,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,cAAc,GAAG,sBAAsB;YAC9E,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ;YAC1D,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC/D,QAAQ,IAAI,CAAC,UAAU;YACnB,KAAK,UAAU;gBACX,IAAI,IAAI,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;gBACjD,MAAM;YACV,KAAK,KAAK;gBACN,IAAI,IAAI,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;gBACjD,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,IAAI,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;gBACjD,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;gBACnE,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;gBAC5D,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;gBAC5D,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;gBAC5D,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;gBACnE,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;gBAC5D,IAAI,IAAI,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;gBACjD,MAAM;YACV,KAAK,QAAQ;;gBAET,IAAI,IAAI,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;gBAClC,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,qBAAqB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;QAChF,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QACtF,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QACzF,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1D,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,OAAO,CAAC,4BAA4B,CAAC8E,kCAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChF,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;KACzF,CAAC;IACF,qBAAqB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE;QAC1D,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KACvC,CAAC;IACF,OAAO,qBAAqB,CAAC;CAChC,CAAC,gBAAgB,CAAC,CAAC,CACa;;ACjGjC,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtC9E,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM5C,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE;QACxC,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;QACtC,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE;QAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;;QAEnC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;QAE7C,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;QAEzC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;QAEhD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;QAE5C,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1F,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE;QACxD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK;gBACrB,OAAO;YACX,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE;QAC1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,gBAAgB,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QACrD,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,EAAE,GAAG,OAAO,CAAC;QACjB,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,IAAI,EAAE,GAAG,OAAO,CAAC;QACjB,IAAI,GAAG,GAAG,QAAQ,CAAC;QACnB,IAAI,EAAE,GAAG,OAAO,CAAC;QACjB,IAAI,EAAE,GAAG,OAAO,CAAC;QACjB,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,IAAI,aAAa,GAAG,OAAO,CAAC;QAC5B,IAAI,aAAa,GAAG,OAAO,CAAC;QAC5B,IAAI,WAAW,GAAG,OAAO,CAAC;QAC1B,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,EAAE,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,IAAI,EAAE,GAAG,OAAO,CAAC;QACjB,IAAI,EAAE,GAAG,OAAO,CAAC;QACjB,IAAI,EAAE,GAAG,OAAO,CAAC;QACjB,IAAI,EAAE,GAAG,OAAO,CAAC;QACjB,IAAI,CAAC,GAAG,OAAO,CAAC;QAChB,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,IAAI,KAAK,GAAG,QAAQ,CAAC;QACrB,IAAI,SAAS,GAAG,OAAO,CAAC;QACxB,IAAI,oBAAoB,GAAG,OAAO,CAAC;QACnC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,IAAI,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;QAC1B,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;;QAEvB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;QAErC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;;QAE/C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzB,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;QAC3E,KAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC8E,kCAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACzF,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;QACzD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;;QAEpD,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;SAC3C;KACJ,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACvD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;KAC1B,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAErB;AACA,gBAAgB,CAAC,gBAAgB,GAAG,EAAE,CAAC;;AClNvC,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvC9E,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM7C,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE;QACzC,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE;QAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE;QACzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK;gBACrB,OAAO;YACX,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE;QAC3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QACtD,IAAI,IAAI,CAAC;QACT,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,GAAG,gBAAgB;YACnB,0BAA0B,CAAC;QAC/B,IAAI,IAAI,uCAAuC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;YACzE,IAAI,IAAI,2BAA2B;gBAC/B,uCAAuC;gBACvC,qBAAqB,CAAC;YAC1B,EAAE,UAAU,CAAC;SAChB;QACD,IAAI,IAAI,sBAAsB,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QAC/B,OAAO,IAAI,CAAC;KACf,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;QAC5E,KAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC8E,kCAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACzF,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;;QAErD,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7C,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,gBAAgB,GAAG,CAAC,CAAC;KACxK,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAErB,iBAAiB,CAAC,gBAAgB,GAAG,EAAE,CAAC;;ACjFxC,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvC9E,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM7C,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE;QACzC,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE;QAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE;QACzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK;gBACrB,OAAO;YACX,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE;QAC3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QACtD,IAAI,IAAI,CAAC;QACT,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,GAAG,gBAAgB;YACnB,0BAA0B,CAAC;QAC/B,IAAI,IAAI,uCAAuC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;YACzE,IAAI,IAAI,2BAA2B,CAAC;YACpC,IAAI,IAAI,uCAAuC;gBAC3C,qBAAqB,CAAC;YAC1B,EAAE,UAAU,CAAC;SAChB;QACD,IAAI,IAAI,sBAAsB,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QAC/B,OAAO,IAAI,CAAC;KACf,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;QAC5E,KAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC8E,kCAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACzF,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;;QAErD,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7C,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,gBAAgB,GAAG,CAAC,CAAC;KACxK,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAErB,iBAAiB,CAAC,gBAAgB,GAAG,EAAE,CAAC;;ACnFxC,IAAI,YAAY,GAAG,CAAC,YAAY;IAC5B,SAAS,YAAY,GAAG;QACpB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;KAC7B;IACD,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,oBAAoB,EAAE;QAChE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,mBAAmB,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,MAAM,EAAE;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI;YAChC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;KAC5D,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;QACnD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,YAAY,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACpD,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE;QAC1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE;QACxD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE;QAC3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC;SAC5C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE;QAC1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;IAEH,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,UAAU,EAAE,KAAK,EAAE;QACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC;KAC3D,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;KAChC,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;KACxD,CAAC;IACF,OAAO,YAAY,CAAC;CACvB,EAAE,CAAC,CACoB;;ACnFxB,IAAI,YAAY,GAAG,CAAC,UAAU,MAAM,EAAE;IAClC9E,SAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;;;;;;;IAOxC,SAAS,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC1C,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE;QAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1D,KAAK,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;QACnD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SACjC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;QACnD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SACjC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE;;;;;QAKtD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;SACnC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;SACpC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,UAAU,EAAE,KAAK,EAAE;QACnE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;KACnE,CAAC;IACF,OAAO,YAAY,CAAC;CACvB,CAAC,YAAY,CAAC,CAAC,CACQ;;AC7DxB,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvCA,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAO7C,SAAS,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE;QAC5C,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;QAC1C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,cAAc,GAAG,IAAI,qBAAqB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE;QAC3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;SACvC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC;SACxC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,EAAE;QACjE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;SAC7C;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,cAAc,GAAG,KAAK,CAAC;SAC9C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC;CAC5B,CAAC,YAAY,CAAC,CAAC,CACa;;ACrC7B,IAAI,YAAY,GAAG,CAAC,UAAU,MAAM,EAAE;IAClCA,SAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;;;;;;IAMxC,SAAS,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE;QACpC,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE;QAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE;QACpD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAChC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;SACjC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE;QACtD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAClC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;CACvB,CAAC,YAAY,CAAC,CAAC,CACQ;;ACnCxB;;;AAGA,IAAI,sBAAsB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC5CA,SAAiB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAOlD,SAAS,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE;QACvD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC;QACjE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,OAAO,KAAK,CAAC;KAChB;IACD,sBAAsB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACxD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B,CAAC;;;;;;IAMF,sBAAsB,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QACxD,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAC3C,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAC7C,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAClD,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QACzE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,QAAQ,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,EAAE;YACX,QAAQ,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI0C,iCAAgB,CAAC,IAAI3B,6BAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3G,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACnC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC;YACpC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvN,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/D,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAClD;aACI;YACD,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC1N;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;KAC/C,CAAC;IACF,sBAAsB,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QACxD,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAIgC,uCAAsB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KACtK,CAAC;IACF,OAAO,sBAAsB,CAAC;CACjC,CAACkE,+BAAiB,CAAC,CAAC,CAAC;AAEtB,sBAAsB,CAAC,gBAAgB,GAAG,IAAI,MAAM,EAAE,CAAC;;ACvDvD;;;AAGA,IAAI,wBAAwB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC9CjH,SAAiB,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;IASpD,SAAS,wBAAwB,CAAC,WAAW,EAAE,cAAc,EAAE;QAC3D,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC;QACnE,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QACjC,OAAO,KAAK,CAAC;KAChB;IACD,wBAAwB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B,CAAC;;;;;;;IAOF,wBAAwB,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAC1D,IAAI,QAAQ,GAAG,wBAAwB,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI2C,6BAAY,EAAE,CAAC,CAAC;QACnK,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;QAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QACxC,IAAI,SAAS,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,SAAS,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACpC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACvB,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACvB,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACvB,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACrB,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACrB,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACrB,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAC3C,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACjC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;KAC/C,CAAC;IACF,wBAAwB,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAC1D,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAII,uCAAsB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KACxK,CAAC;IACF,OAAO,wBAAwB,CAAC;CACnC,CAACkE,+BAAiB,CAAC,CAAC,CAAC;AAEtB,wBAAwB,CAAC,aAAa,GAAG,IAAI,MAAM,EAAE,CAAC;;ACjDtD;;;AAGA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCjH,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAO/C,SAAS,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC;QAC9D,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;;;;IAOD,mBAAmB,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QACrD,IAAI,UAAU,GAAG,mBAAmB,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE;YACb,IAAI,QAAQ,GAAG,IAAI0C,iCAAgB,CAAC,IAAI3B,6BAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACjE,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACnC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC;YACpC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjH,UAAU,GAAG,mBAAmB,CAAC,WAAW,GAAG,IAAI,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/F;QACD,OAAO,UAAU,CAAC;KACrB,CAAC;IACF,mBAAmB,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QACrD,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5F,CAAC;IACF,mBAAmB,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;KAC5D,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAACkG,+BAAiB,CAAC,CAAC,CACU;;AC5C/B;;;;;;AAMA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCjH,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;IAK5C,SAAS,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE;QACzE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,CAAC,IAAI,IAAI,CAAC;QACzF,KAAK,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QACnD,OAAO,KAAK,CAAC;KAChB;;;;IAID,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;QAC1D,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;QAEjD,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3G,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;;QAE5H,IAAI,IAAI,CAAC,qBAAqB,CAAC,WAAW;YACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE;YACvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU;YACrC,IAAI,CAAC,qBAAqB,EAAE,CAAC;KACpC,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;QACxD,IAAI,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,GAAG,CAAC,EAAE;YACnD,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;SAC7E;aACI;YACD,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;YACrF,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;SACpF;KACJ,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;;QAExD,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;gBACtB,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;gBAC/E,IAAI,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,IAAI,CAAC,CAAC;oBACzD,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;aACxG;SACJ;QACD,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACjC,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC;YAC7C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;gBACtB,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;gBACjF,IAAI,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,IAAI,CAAC,CAAC;oBACzD,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;aAC1G;SACJ;QACD,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YACtB,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;YACnF,IAAI,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;SAC5G;QACD,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YACtB,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;YACrF,IAAI,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,GAAG,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;SAC9G;KACJ,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QACtD,IAAI,eAAe,CAAC;QACpB,IAAI,gBAAgB,CAAC;QACrB,IAAI,WAAW,CAAC;QAChB,IAAI,WAAW,CAAC;QAChB,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC;QAC/D,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC;;QAE9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,EAAE,CAAC,EAAE;YACtE,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;gBAC7C,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,CAAC,CAAC;gBAC9D,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;gBACxD,IAAI,CAAC,WAAW,IAAI,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI;oBACpH,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;gBAC1D,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;gBAC9D,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACxD,IAAI,CAAC,0BAA0B,IAAI,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI;oBACpF,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC;aAC7D;iBACI;gBACD,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,CAAC,CAAC;aACrE;YACD,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACtE,gBAAgB,GAAG,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACvE,IAAI,OAAO;gBACP,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClK,IAAI,OAAO;gBACP,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpK,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB;gBAC3C,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;SAC9D;QACD,cAAc,GAAG,CAAC,CAAC;QACnB,gBAAgB,GAAG,CAAC,CAAC;;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE;YAChE,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,qBAAqB;gBAChG,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE,CAAC,CAAC;;gBAEhE,WAAW,GAAG,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACxE,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACxE,gBAAgB,GAAG,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACzE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;YAC9D,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC1D,IAAI,YAAY,CAAC;YACjB,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;gBAC7C,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;gBACpD,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI;oBACzG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI;oBAC7F,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,MAAM,CAAC;aACxF;iBACI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE;gBACxD,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;gBACpD,IAAI,CAAC,WAAW,IAAI,MAAM,GAAG,YAAY,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,GAAG,IAAI,CAAC;aAC7H;iBACI;gBACD,YAAY,GAAG,WAAW,CAAC;gBAC3B,IAAI,CAAC,0BAA0B,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,GAAG,IAAI,CAAC;aAC5I;YACD,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;;gBAE7C,IAAI,CAAC,0BAA0B;oBAC3B,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI;wBACrE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,eAAe,GAAG,MAAM;wBAC/E,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,gBAAgB,GAAG,MAAM;wBAChF,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM;wBACpD,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM;wBAC7F,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC;aACjE;iBACI;gBACD,IAAI,CAAC,0BAA0B,IAAI,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI;oBACpF,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC;aAC7D;YACD,IAAI,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;YAClF,IAAI,OAAO;gBACP,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClK,IAAI,OAAO;gBACP,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpK,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;SAC5D;KACJ,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC3D,IAAI,SAAS,CAAC;QACd,IAAI,gBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,eAAe,GAAG,IAAI,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC;QACN,IAAI,MAAM,CAAC;QACX,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC;QAC/D,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC;QAC9D,IAAI,OAAO;YACP,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,GAAG,IAAI,KAAK,EAAE,CAAC;QACtE,IAAI,OAAO;YACP,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,GAAG,IAAI,KAAK,EAAE,CAAC;QACvE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE;YAC3C,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC;gBACN,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;SACnF;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE;YAC5D,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpF,IAAI,OAAO,EAAE;gBACT,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;gBACjD,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBACtE,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACtJ;YACD,IAAI,OAAO,EAAE;gBACT,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;gBACjD,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBACvE,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACvJ;SACJ;KACJ,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;QAC1D,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;;QAEpF,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE;YAClG,IAAI,CAAC,0BAA0B,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;YACvF,IAAI,CAAC,4BAA4B,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;SAChG;aACI;YACD,IAAI,CAAC,4BAA4B,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;SAChG;QACD,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;YAC7C,IAAI,CAAC,wBAAwB,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;YAC3F,IAAI,CAAC,0BAA0B,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;SACpG;aACI;YACD,IAAI,CAAC,0BAA0B,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;SACpG;KACJ,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,CAACkH,0BAAY,CAAC,CAAC,CACY;;ACpO5B;;;;;;;;AAQA,IAAI,cAAc,GAAG,CAAC,UAAU,MAAM,EAAE;IACpClH,SAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;;;;IAI1C,SAAS,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE;QACxD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;QAC1E,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;QACnC,OAAO,KAAK,CAAC;KAChB;IACD,cAAc,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;QACxD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;QACxD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;QACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;QACxD,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;QAC/F,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;QACvD,IAAI,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACjH,IAAI,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACpH,IAAI,oBAAoB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;QACtE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,IAAI6E,8BAAgB,CAAC,oBAAoB,CAAC;QACvH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAC;QACnE,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,cAAc,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,YAAY,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAGsC,0BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxF,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAGA,0BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,qBAAqB,GAAG,YAAY,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAGA,0BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnG,IAAI,CAAC,qBAAqB,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAGA,0BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrG,IAAI,CAAC,oBAAoB,GAAG,YAAY,GAAG,CAAC,IAAI,CAAC,mBAAmB,GAAGA,0BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjG,IAAI,CAAC,oBAAoB,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC,mBAAmB,GAAGA,0BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;;QAE1D,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpD,CAAC;;;;;;;IAOF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,aAAa,EAAE,IAAI,EAAE;QACrE,OAAO,IAAI,gBAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KAC1D,CAAC;;;;;;;;IAQF,cAAc,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QACzE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW;YAC9B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,YAAY,EAAE,CAAC;KAC3B,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAChD,IAAI,QAAQ,CAAC;QACb,IAAI,UAAU,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,CAAC;QACR,IAAI,MAAM,CAAC;QACX,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC;QACN,IAAI,MAAM,CAAC;QACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC;QAClC,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC;QACjE,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC;QACpD,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC9D,IAAI,MAAM,GAAG,GAAG,EAAE;YACd,IAAI,GAAG,CAAC,CAAC;YACT,MAAM,IAAI,GAAG,CAAC;SACjB;QACD,OAAO,IAAI,GAAG,aAAa,EAAE,EAAE,IAAI,EAAE;YACjC,IAAI,IAAI;gBACJ,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,wBAAwB,CAAC;YACxE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACvB,IAAI,GAAG,GAAG,IAAI,CAAC,oBAAoB;gBAC/B,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACpC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;gBACtB,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjC,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC;gBACjC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC;gBACrC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC;gBACrC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC;gBACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClB,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtI,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtI,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACvI,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;iBACpC;qBACI;oBACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3C,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3C,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3C,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACrD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACrD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACrD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;gBACtD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;gBACtD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;gBACtD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,oBAAoB,EAAE;;oBAEtC,CAAC,GAAG,GAAG,CAAC;oBACR,IAAI,GAAG,aAAa,CAAC;iBACxB;aACJ;SACJ;;QAED,IAAI,IAAI,CAAC,oBAAoB,GAAG,KAAK,EAAE;YACnC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC;gBACR,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SAC1C;QACD,KAAK,GAAG,CAAC,CAAC;QACV,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC;QAC7D,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;QAC9C,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC;QACxD,IAAI,MAAM,GAAG,GAAG,EAAE;YACd,IAAI,GAAG,CAAC,CAAC;YACT,MAAM,IAAI,GAAG,CAAC;SACjB;aACI;YACD,IAAI,GAAG,CAAC,CAAC;SACZ;QACD,OAAO,IAAI,GAAG,aAAa,EAAE,EAAE,IAAI,EAAE;YACjC,IAAI,IAAI;gBACJ,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC;YACpE,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;gBACtB,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACrC,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC;gBAClC,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC;gBACvC,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC;gBACvC,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC;gBACvC,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACvB,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACb,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACb,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACb,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;oBACtK,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;oBACtK,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;oBACvK,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;iBACpC;qBACI,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;oBAClC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;iBACpC;qBACI;oBACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC1C,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC1C,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC1C,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;gBACvD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;gBACvD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;gBACvD,IAAI,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;gBACjC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;gBACjD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC;gBACxD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC;gBACxD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC;gBACxD,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,eAAe,CAAC;gBAC5D,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE;;oBAEhC,CAAC,GAAG,GAAG,CAAC;oBACR,IAAI,GAAG,aAAa,CAAC;iBACxB;aACJ;SACJ;;QAED,IAAI,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE;YAC7B,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACb,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACxC;KACJ,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAChD,IAAI,KAAK,CAAC;QACV,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC;QAC7D,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC/D,IAAI,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;QACpE,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACxC,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACzC,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC;YACrB,OAAO;QACX,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc;YACzB,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;YAC9D,IAAI,OAAO;gBACP,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACzH,IAAI,OAAO;gBACP,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SAC9H;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;KACjH,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,CAACX,wBAAU,CAAC,CAAC,CACY;;AC1O1B;;;AAGA,IAAI,kBAAkB,GAAG,CAAC,YAAY;IAClC,SAAS,kBAAkB,GAAG;KAC7B;IACD,kBAAkB,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,IAAI,EAAE;QAClE,OAAO,IAAI,CAAC;KACf,CAAC;IACF,kBAAkB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,IAAI,EAAE;QACjE,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,EAAE,CAAC,CAC0B;;ACV9B;;;;AAIA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvCxG,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE;QAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC;QAC5D,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,IAAIwG,wBAAU,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAChF,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;IACD,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACnD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAIjF,uBAAU,CAACA,uBAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACrD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI6C,0BAAS,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAIA,0BAAS,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAGA,0BAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACpJ,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;QACjE,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;KACtC,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACrF,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;KACxI,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC5E,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KAC7C,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,UAAU,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAEM,kCAAoB,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC5B,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAAC+B,iCAAmB,CAAC,CAAC,CACM;;ACtD7B;;;AAGA,IAAI,sBAAsB,GAAG,CAAC,YAAY;IACtC,SAAS,sBAAsB,GAAG;KACjC;IACD,sBAAsB,CAAC,gBAAgB,GAAG,UAAU,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE;QACnF,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,IAAI,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,eAAe,GAAG,IAAI,KAAK,EAAE,CAAC;QAClC,IAAI,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,cAAc,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,cAAc,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;QACxC,IAAI,cAAc,CAAC;QACnB,IAAI,cAAc,CAAC;QACnB,IAAI,WAAW,CAAC;QAChB,IAAI,OAAO,CAAC;QACZ,IAAI,SAAS,CAAC;QACd,IAAI,OAAO,CAAC;QACZ,IAAI,QAAQ,CAAC;QACb,IAAI,GAAG,CAAC;QACR,IAAI,aAAa,CAAC;QAClB,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,IAAI,UAAU,GAAG,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,IAAI3F,qBAAQ,CAAC;QAC9B,IAAI,UAAU,GAAG,IAAIA,qBAAQ,CAAC;QAC9B,IAAI,YAAY,GAAG,IAAIA,qBAAQ,CAAC;QAChC,IAAI,MAAM,GAAG,IAAIL,kBAAK,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YAC/B,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAClC,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;YACnC,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE;;gBAEvD,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ,EAAE;oBAC/B,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBACtC,aAAa,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBAChC,eAAe,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBAClC,aAAa,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBAChC,cAAc,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBACjC,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBAC5B,aAAa,CAAC,IAAI,CAAC,IAAIiC,iCAAgB,CAAC,IAAI3B,6BAAgB,EAAE,CAAC,CAAC,CAAC;oBACjE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC1B;gBACD,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;;gBAE9D,IAAI,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,sBAAsB,CAAC,UAAU,EAAE;;oBAEvG,UAAU,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;oBAC5C,aAAa,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBAChC,eAAe,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBAClC,aAAa,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBAChC,cAAc,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBACjC,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;oBAC5B,aAAa,CAAC,IAAI,CAAC,IAAI2B,iCAAgB,CAAC,IAAI3B,6BAAgB,EAAE,CAAC,CAAC,CAAC;oBACjE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC1B;gBACD,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;;gBAEzB,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3B,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBAC/B,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3B,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC7B,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACnB,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAClC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,YAAY,GAAG,IAAIqG,6BAAY,EAAE,CAAC;gBACtC,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;gBACtD,YAAY,CAAC,gBAAgB,GAAG,aAAa,CAAC;gBAC9C,YAAY,CAAC,aAAa,GAAG,CAAC,CAAC;gBAC/B,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACjC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7B,cAAc,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC;gBAChD,IAAI,CAAC,CAAC;gBACN,IAAI,KAAK,CAAC;gBACV,IAAI,QAAQ,CAAC;gBACb,IAAI,WAAW,CAAC;gBAChB,IAAI,YAAY,CAAC;gBACjB,IAAI,OAAO,CAAC;gBACZ,IAAI,OAAO,CAAC;gBACZ,IAAI,OAAO,GAAG,cAAc,CAAC;gBAC7B,IAAI,eAAe,CAAC;gBACpB,IAAI,SAAS,CAAC;gBACd,IAAI,aAAa,CAAC;gBAClB,IAAI,YAAY,CAAC;gBACjB,IAAI,cAAc,CAAC;gBACnB,IAAI,aAAa,CAAC;gBAClB,IAAI,SAAS,CAAC;gBACd,IAAI,QAAQ,CAAC;gBACb,IAAI,OAAO,EAAE;oBACT,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;oBAC9B,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACjD,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;oBACrC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC7C,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;oBACtC,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC/C,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACxC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACrC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC9B,IAAI,UAAU,EAAE;wBACZ,IAAI,yBAAyB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC9C,IAAI,eAAe,GAAG,yBAAyB,CAAC,eAAe,CAAC;wBAChE,IAAI,kBAAkB,GAAG,yBAAyB,CAAC,kBAAkB,CAAC;wBACtE,IAAI,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC;wBACxD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;;;;;;;4BAO1B,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC;4BACzB,UAAU,CAAC,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;4BACzC,UAAU,CAAC,CAAC,GAAG,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;4BAC7C,UAAU,CAAC,CAAC,GAAG,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;4BAC7C,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC;4BAC/B,UAAU,CAAC,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;4BAC1C,UAAU,CAAC,CAAC,GAAG,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;4BAC9C,UAAU,CAAC,CAAC,GAAG,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;4BAC9C,YAAY,GAAG,CAAC,GAAG,aAAa,CAAC;4BACjC,YAAY,CAAC,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;4BAC9C,YAAY,CAAC,CAAC,GAAG,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;4BAClD,YAAY,CAAC,CAAC,GAAG,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;4BAClD,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC;4BACvB,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;4BAC9B,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;4BAClC,IAAI,eAAe,EAAE;gCACjB,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gCACzD,UAAU,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;gCACjE,YAAY,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;6BACtE;4BACD,IAAI,WAAW;gCACX,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;;4BAEhD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;4BACzD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;4BACvD,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;4BAC9D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;yBAChC;qBACJ;yBACI;wBACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;4BAC1B,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC;4BACzB,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC;4BAC/B,YAAY,GAAG,CAAC,GAAG,aAAa,CAAC;4BACjC,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC;;4BAEvB,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;4BACxG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;4BACzG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;4BAChH,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;yBACxD;qBACJ;iBACJ;qBACI;iBACJ;gBACD,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC;gBACrC,IAAI,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;oBAC1B,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;oBACd,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,aAAa,EAAE,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;iBAC1I;aACJ;SACJ;QACD,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;QACnC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;QACpC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YAC/B,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC5B,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACnC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC;YACpC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,QAAQ,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,QAAQ,CAACxE,sBAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC7C;KACJ,CAAC;IACF,OAAO,sBAAsB,CAAC;CACjC,EAAE,CAAC,CAAC;AAEL,sBAAsB,CAAC,UAAU,GAAG,KAAK,CAAC;;AC7L1C;;;AAGA,IAAI,yBAAyB,GAAG,CAAC,YAAY;IACzC,SAAS,yBAAyB,GAAG;KACpC;IACD,MAAM,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,iBAAiB,EAAE;QAC1E,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,uBAAuB,CAAC;SACvC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;YACrC,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,CAAC;SAC/C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,EAAE;QACtE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,mBAAmB,CAAC;SACnC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SACpC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,oBAAoB,EAAE;QAC7E,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,0BAA0B,CAAC;SAC1C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,yBAAyB,CAAC;CACpC,EAAE,CAAC,CACiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ArMtCrC;;;;;;;;;;;;;;;AAeO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAC5B,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CAuExF;;AsMtFD;;;;AAIA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvC5C,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;IAI7C,SAAS,iBAAiB,GAAG;QACzB,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC9B,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;QAC5B,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;KAChB;;;;IAID,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;KACjD,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;;QAErD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;SACzB;aACI;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAErB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;gBACxB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C;KACJ,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;SACzB;aACI;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;YAE9B,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;gBACxB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9C;KACJ,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,OAAO,EAAE;QACzD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KAC3C,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,OAAO,EAAE;QAC5D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC9C,CAAC;;;;;;IAMF,iBAAiB,CAAC,SAAS,CAAC,uBAAuB,GAAG,YAAY;QAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,IAAIqH,mCAAkB,CAACA,mCAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC;KACrF,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAM,EAAE;KACxD,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAACnH,sBAAS,CAAC,CAAC,CACgB;;ACrF7B;;;AAGA,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxCF,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;;IAI9C,SAAS,kBAAkB,GAAG;QAC1B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,kBAAkB,CAAC,SAAS,CAAC;SACvC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;gBACpB,OAAO;YACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK;gBACtB,OAAO;YACX,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,kBAAkB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAM,EAAE;QACtD,IAAI,CAAC,GAAG,MAAM,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,CAAC;KACb,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,kBAAkB,CAAC,SAAS,GAAG,4BAA4B,CAAC;;ACtF5D;;;AAGA,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxCA,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;;IAI9C,SAAS,kBAAkB,GAAG;QAC1B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,kBAAkB,CAAC,SAAS,CAAC;SACvC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;gBACpB,OAAO;YACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK;gBACtB,OAAO;YACX,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,kBAAkB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAM,EAAE;QACtD,IAAI,IAAI,GAAG,MAAM,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KAC3B,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,kBAAkB,CAAC,SAAS,GAAG,4BAA4B,CAAC;;ACpG5D;;;AAGA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvCA,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;IAI7C,SAAS,iBAAiB,CAAC,OAAO,EAAE;QAChC,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,EAAE;QAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACzB,IAAI,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,iBAAiB,CAAC,SAAS,CAAC;SACtC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE;;;;;QAK1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK;gBACtB,OAAO;YACX,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAM,EAAE;QACrD,IAAI,CAAC,GAAG,MAAM,CAAC;QACf,IAAI,GAAG,GAAG,MAAM,CAAC;QACjB,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI;YACnB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;KAClC,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC9C,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,iBAAiB,CAAC,SAAS,GAAG,2BAA2B,CAAC;;AClE1D;;;;AAIA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCA,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;IAI/C,SAAS,mBAAmB,GAAG;QAC3B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,mBAAmB,CAAC,SAAS,CAAC;SACxC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;gBACpB,OAAO;YACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;gBACpB,OAAO;YACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;YAEpB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;gBAC9B,IAAI,CAAC,uBAAuB,EAAE,CAAC;;gBAE/B,IAAI,CAAC,UAAU,EAAE,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE;;;;;;QAM5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK;gBACtB,OAAO;YACX,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,mBAAmB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAM,EAAE;QACvD,IAAI,CAAC,GAAG,MAAM,CAAC;QACf,IAAI,GAAG,GAAG,MAAM,CAAC;QACjB,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KAC3B,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,mBAAmB,CAAC,SAAS,GAAG,6BAA6B,CAAC;;AC3H9D,IAAI,kBAAkB,GAAG,CAAC,YAAY;IAClC,SAAS,kBAAkB,GAAG;KAC7B;IACD,OAAO,kBAAkB,CAAC;CAC7B,EAAE,CAAC,CAAC;AAEL;;;AAGA,kBAAkB,CAAC,WAAW,GAAG,YAAY,CAAC;;;;AAI9C,kBAAkB,CAAC,UAAU,GAAG,WAAW,CAAC;;ACJ5C;;;;AAIA,IAAI,cAAc,GAAG,CAAC,UAAU,MAAM,EAAE;IACpCA,SAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC1C,SAAS,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE;QACvC,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,QAAQ,CAAC,EAAE;QACrD,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;QACzD,KAAK,CAAC,cAAc,GAAG,IAAI,KAAK,EAAE,CAAC;QACnC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACjC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACnC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAClC,KAAK,CAAC,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAChD,KAAK,CAAC,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAChD,KAAK,CAAC,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC9C,KAAK,CAAC,eAAe,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAClD,KAAK,CAAC,iBAAiB,GAAG0E,kCAAoB,CAAC,UAAU,CAAC;QAC1D,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC;;QAE7C,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,CAAC,sBAAsB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;;QAExF,IAAI,UAAU,YAAYtB,wBAAO;YAC7B,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,IAAID,gCAAe,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,OAAO,cAAc,CAAC,SAAS,CAAC;SACnC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE;;;;;;;QAO3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK;gBAC3B,OAAO;YACX,IAAI,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC5B,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC/F,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAACA,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC5F,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;;QAKlE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,mBAAmB,CAAC;SACnC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,mBAAmB,IAAI,KAAK;gBACjC,OAAO;YACX,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,qBAAqB,EAAE;;;;;;;QAOnE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,oBAAoB,CAAC;SACpC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,oBAAoB,IAAI,KAAK;gBAClC,OAAO;YACX,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,sBAAsB,EAAE;;;;;;;QAOpE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,qBAAqB,CAAC;SACrC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,qBAAqB,IAAI,KAAK;gBACnC,OAAO;YACX,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE;QACpD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,KAAK,CAAC;SACrB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK;gBACnB,OAAO;YACX,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,kBAAkB,EAAE;;;;;;QAMhE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,iBAAiB,CAAC;SACjC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,iBAAiB,IAAI,KAAK;gBAC/B,OAAO;YACX,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK;gBAC5B,OAAO;YACX,IAAI,IAAI,CAAC,cAAc;gBACnB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,IAAI,CAAC,cAAc;gBACnB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK;gBAC3B,OAAO;YACX,IAAI,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK;gBAC5B,OAAO;YACX,IAAI,IAAI,CAAC,cAAc;gBACnB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,IAAI,CAAC,cAAc;gBACnB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK;gBAC7B,OAAO;YACX,IAAI,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK;gBAC3B,OAAO;YACX,IAAI,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,kBAAkB,EAAE;QAChE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;SACrC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;;;IAMH,cAAc,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE;QACzD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB,CAAC;;;;;;IAMF,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE;QAC1D,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACrC,CAAC;;;;;;IAMF,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE;QAClE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB,CAAC;;;;;IAKF,cAAc,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,MAAM,EAAE;QAC5D,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,CAACwE,6BAAY,CAAC,CAAC,CAAC;AAEjB,cAAc,CAAC,SAAS,GAAG,4BAA4B,CAAC;;ACxTxD;;;;AAIA,IAAI,OAAO,GAAG,CAAC,YAAY;IACvB,SAAS,OAAO,GAAG;KAClB;IACD,OAAO,OAAO,CAAC;CAClB,EAAE,CAAC,CACe;;ACNnB;;;;AAIA,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxC/F,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAO9C,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE;QACxC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;KAChB;IACD,kBAAkB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC/C,OAAO,IAAI,CAAC;KACf,CAAC;IACF,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;KAC9C,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACpC,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACtD,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;KACpC,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACjD,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;KAC/B,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC7E,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KAC3D,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QACnD,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACpF,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;KACzE,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACjG,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KACtF,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;QACrD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC7D,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;KAC3C,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,CAACuE,4BAAe,CAAC,CAAC,CACW;;ACpF9B;;;;AAIA,IAAI,sBAAsB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC5CvE,SAAiB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAClD,SAAS,sBAAsB,GAAG;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KAChD;;;;IAID,sBAAsB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACrG,OAAO,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;KACtF,CAAC;;;;IAIF,sBAAsB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE;QAC5H,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC9G,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAC/D,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,sBAAsB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE;QAC9H,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAChH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAC/D,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,sBAAsB,CAAC;CACjC,CAAC,kBAAkB,CAAC,CAAC,CACY;;ACjClC;;;AAGA,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxCA,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;;IAI9C,SAAS,kBAAkB,CAAC,YAAY,EAAE;QACtC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;QACnC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;QACnC,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC;QAChD,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,kBAAkB,CAAC,SAAS,CAAC;SACvC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,kBAAkB,CAAC;CAC7B,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEvB,kBAAkB,CAAC,SAAS,GAAG,4BAA4B,CAAC;;ACrC5D;;;;AAIA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCA,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAO/C,SAAS,mBAAmB,CAAC,UAAU,EAAE;QACrC,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,4BAA4B,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACnG,KAAK,CAAC,WAAW,GAAG,UAAU,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC3D,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAACqH,mCAAkB,CAAC,kBAAkB,EAAE,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC9G,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE;;;;QAI/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK;gBACzB,OAAO;YACX,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAACA,mCAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC/G,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAACA,mCAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC5G,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,mBAAmB,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QACzD,MAAM,IAAInG,gCAAmB,EAAE,CAAC;KACnC,CAAC;IACF,mBAAmB,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;QACvD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACrC,CAAC;IACF,mBAAmB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACxC,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAChD,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAACmG,mCAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;KAClH,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;QACjE,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAAC,iBAAiB,CAAC,CAAC,CACU;;AChE/B;;;;AAIA,IAAI,sBAAsB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC5CrH,SAAiB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAOlD,SAAS,sBAAsB,CAAC,UAAU,EAAE;QACxC,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;KAChD;IACD,sBAAsB,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAC5D,OAAO,IAAI,kBAAkB,EAAE,CAAC;KACnC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE;;;;QAI/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;SACnC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;SACpC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SACjC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;SACpC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;SACrC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,sBAAsB,CAAC;CACjC,CAAC,mBAAmB,CAAC,CAAC,CACW;;AC7DlC;;;AAGA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCA,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM5C,SAAS,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE;QACtD,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;QACtC,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,GAAG,CAAC,EAAE;QAChD,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;QAClD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAC/B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,gBAAgB,CAAC,SAAS,CAAC;SACrC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;QAIxD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;CAC3B,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAE3B,gBAAgB,CAAC,SAAS,GAAG,0BAA0B,CAAC;;AC1DxD;;;;;;AAMA,IAAI,qBAAqB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC3CA,SAAiB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;;;;;;IAMjD,SAAS,qBAAqB,CAAC,QAAQ,EAAE;QACrC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,qBAAqB,CAAC,SAAS,CAAC;SAC1C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;;QAK/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,qBAAqB,CAAC;CAChC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEvB,qBAAqB,CAAC,SAAS,GAAG,+BAA+B,CAAC;;ACrDlE;;;;;AAKA,IAAI,qBAAqB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC3CA,SAAiB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;IASjD,SAAS,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE;QAC5E,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,UAAU,CAAC,EAAE;QACrD,IAAI,cAAc,KAAK,KAAK,CAAC,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,EAAE;QAC1D,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;QAClD,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5B,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC;QACvC,IAAI,KAAK,CAAC,SAAS;YACf,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,qBAAqB,CAAC,SAAS,CAAC;SAC1C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;;;;QAOhE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,KAAK,IAAI,qBAAqB,CAAC,GAAG,IAAI,KAAK,IAAI,qBAAqB,CAAC,QAAQ;gBAC7E,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK;gBACxB,OAAO;YACX,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAI/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;QAIrE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK;gBAC7B,OAAO;YACX,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,qBAAqB,CAAC;CAChC,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAE3B;;;;AAIA,qBAAqB,CAAC,QAAQ,GAAG,UAAU,CAAC;;;;;AAK5C,qBAAqB,CAAC,GAAG,GAAG,KAAK,CAAC;AAClC,qBAAqB,CAAC,SAAS,GAAG,+BAA+B,CAAC;;AC3GlE;;;;AAIA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvCA,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;IAK7C,SAAS,iBAAiB,CAAC,UAAU,EAAE;QACnC,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE;QAC/C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC9B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,iBAAiB,CAAC,SAAS,CAAC;SACtC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC;CAC5B,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEvB,iBAAiB,CAAC,SAAS,GAAG,2BAA2B,CAAC;;AC5C1D;;;;;AAKA,IAAI,qBAAqB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC3CA,SAAiB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAOjD,SAAS,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE;QACpD,IAAI,cAAc,KAAK,KAAK,CAAC,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,EAAE;QAC1D,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACzB,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC;QACvC,IAAI,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,qBAAqB,CAAC,SAAS,CAAC;SAC1C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK;gBACtB,OAAO;YACX,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;;;QAMrE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK;gBAC7B,OAAO;YACX,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,qBAAqB,CAAC;CAChC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,qBAAqB,CAAC,SAAS,GAAG,+BAA+B,CAAC;;ACzElE;;;AAGA,IAAI,uBAAuB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC7CA,SAAiB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;;;;;;IAMnD,SAAS,uBAAuB,CAAC,MAAM,EAAE;QACrC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACjD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIlE,GAAG,EAAE,YAAY;YACb,OAAO,uBAAuB,CAAC,SAAS,CAAC;SAC5C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;QAI/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,uBAAuB,CAAC;CAClC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,uBAAuB,CAAC,SAAS,GAAG,iCAAiC,CAAC;;AC9CtE;;;;AAIA,IAAI,0BAA0B,GAAG,CAAC,UAAU,MAAM,EAAE;IAChDA,SAAiB,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;;;;IAItD,SAAS,0BAA0B,CAAC,cAAc,EAAE;QAChD,IAAI,cAAc,KAAK,KAAK,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC,EAAE;QACzD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC;QACvC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIrE,GAAG,EAAE,YAAY;YACb,OAAO,0BAA0B,CAAC,SAAS,CAAC;SAC/C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,0BAA0B,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;QAI1E,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,0BAA0B,CAAC;CACrC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,0BAA0B,CAAC,SAAS,GAAG,oCAAoC,CAAC;;AC1C5E;;;AAGA,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxCA,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM9C,SAAS,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE;QACvC,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,kBAAkB,CAAC,SAAS,CAAC;SACvC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;QAI1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK;gBACrB,OAAO;YACX,IAAI,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE;;;;QAIxD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,KAAK,CAAC;SACrB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK;gBACnB,OAAO;YACX,IAAI,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,kBAAkB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;KAClD,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,kBAAkB,CAAC,SAAS,GAAG,4BAA4B,CAAC;;AC1F5D;;;AAGA,IAAI,eAAe,GAAG,CAAC,UAAU,MAAM,EAAE;IACrCA,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;;;;;;IAO3C,SAAS,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE;QACzD,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE;QAChD,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,EAAE;QACnD,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QACjC,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QACjC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI1D,GAAG,EAAE,YAAY;YACb,OAAO,eAAe,CAAC,SAAS,CAAC;SACpC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;CAC1B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,eAAe,CAAC,SAAS,GAAG,yBAAyB,CAAC;;AC5EtD;;;;AAIA,IAAI,yBAAyB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC/CA,SAAiB,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAOrD,SAAS,yBAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE;QAC/E,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,YAAY,KAAK,KAAK,CAAC,EAAE,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE;QAClD,IAAI,iBAAiB,KAAK,KAAK,CAAC,EAAE,EAAE,iBAAiB,GAAG,CAAC,CAAC,EAAE;QAC5D,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;QACrD,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;QACnC,KAAK,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC7C,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIpE,GAAG,EAAE,YAAY;YACb,OAAO,yBAAyB,CAAC,SAAS,CAAC;SAC9C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAIvE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,mBAAmB,EAAE;;;;QAI5E,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,kBAAkB,CAAC;SAClC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,kBAAkB,IAAI,KAAK;gBAChC,OAAO;YACX,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,yBAAyB,CAAC;CACpC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEvB,yBAAyB,CAAC,SAAS,GAAG,mCAAmC,CAAC;;AC/D1E;;;;;AAKA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1CA,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;;;;;;;;IAQhD,SAAS,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE;QAC/D,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,UAAU,CAAC,EAAE;QACrD,IAAI,cAAc,KAAK,KAAK,CAAC,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,EAAE;QAC1D,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,IAAI,SAAS,IAAI,oBAAoB,CAAC,GAAG,IAAI,SAAS,IAAI,oBAAoB,CAAC,QAAQ;YACnF,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC1C,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC;QACvC,IAAI,KAAK,CAAC,SAAS;YACf,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI/D,GAAG,EAAE,YAAY;YACb,OAAO,oBAAoB,CAAC,SAAS,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;;;;QAO/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK;gBACxB,OAAO;YACX,IAAI,KAAK,IAAI,oBAAoB,CAAC,GAAG,IAAI,KAAK,IAAI,oBAAoB,CAAC,QAAQ;gBAC3E,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;QAIpE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK;gBAC7B,OAAO;YACX,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,oBAAoB,CAAC;CAC/B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB;;;AAGA,oBAAoB,CAAC,QAAQ,GAAG,UAAU,CAAC;;;;AAI3C,oBAAoB,CAAC,GAAG,GAAG,KAAK,CAAC;AACjC,oBAAoB,CAAC,SAAS,GAAG,8BAA8B,CAAC;;ACxGhE;;;;;AAKA,IAAI,6BAA6B,GAAG,CAAC,UAAU,MAAM,EAAE;IACnDA,SAAiB,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;;;;;;;;;IASzD,SAAS,6BAA6B,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9D,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,UAAU,CAAC,EAAE;QAC3C,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;QAC1C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,yBAAyB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9F,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAACsH,mCAAqB,CAAC,cAAc,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzG,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,6BAA6B,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIxE,GAAG,EAAE,YAAY;YACb,OAAO,6BAA6B,CAAC,SAAS,CAAC;SAClD;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,6BAA6B,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAIvE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,6BAA6B,CAAC,SAAS,EAAE,MAAM,EAAE;;;;;;;QAOnE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,KAAK,CAAC;SACrB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK;gBACnB,OAAO;YACX,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,6BAA6B,CAAC,SAAS,EAAE,WAAW,EAAE;;;;;;QAMxE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK;gBACxB,OAAO;YACX,IAAI,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAACA,mCAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC9G,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAACA,mCAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC3G,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,6BAA6B,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE;QACzE,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB,CAAC;IACF,6BAA6B,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAChE,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC,CAAC;IACF,OAAO,6BAA6B,CAAC;CACxC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,6BAA6B,CAAC,OAAO,GAAG,SAAS,CAAC;AAClD,6BAA6B,CAAC,QAAQ,GAAG,UAAU,CAAC;AACpD,6BAA6B,CAAC,GAAG,GAAG,KAAK,CAAC;AAC1C,6BAA6B,CAAC,GAAG,GAAG,KAAK,CAAC;AAC1C,6BAA6B,CAAC,SAAS,GAAG,uCAAuC,CAAC;;AChHlF;;;AAGA,IAAI,4BAA4B,GAAG,CAAC,UAAU,MAAM,EAAE;IAClDtH,SAAiB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;IAUxD,SAAS,4BAA4B,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE;QACzG,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE,EAAE,eAAe,GAAG,EAAE,CAAC,EAAE;QACzD,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE;QAChD,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE;QAChD,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE;QAChD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;QACrD,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACzC,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QACjC,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QACjC,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QACjC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIvE,GAAG,EAAE,YAAY;YACb,OAAO,4BAA4B,CAAC,SAAS,CAAC;SACjD;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,EAAE;;;;QAI7E,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAChC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,4BAA4B,CAAC,SAAS,EAAE,aAAa,EAAE;;;;QAIzE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK;gBAC1B,OAAO;YACX,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,4BAA4B,CAAC,SAAS,EAAE,aAAa,EAAE;;;;QAIzE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK;gBAC1B,OAAO;YACX,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,4BAA4B,CAAC,SAAS,EAAE,aAAa,EAAE;;;;QAIzE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK;gBAC1B,OAAO;YACX,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,4BAA4B,CAAC;CACvC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEvB,4BAA4B,CAAC,SAAS,GAAG,sCAAsC,CAAC;;ACzGhF;;;AAGA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1CA,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;IAShD,SAAS,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;QACzD,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC,EAAE;QAC3C,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,CAAC,EAAE;QAC3C,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,EAAE;QACxC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;QACzB,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI/D,GAAG,EAAE,YAAY;YACb,OAAO,oBAAoB,CAAC,SAAS,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,WAAW;YAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;gBACpB,OAAO;YACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;gBACvB,OAAO;YACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;gBACpB,OAAO;YACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;;;;;QAQ/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK;gBACxB,OAAO;YACX,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,oBAAoB,CAAC;CAC/B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,oBAAoB,CAAC,GAAG,GAAG,KAAK,CAAC;AACjC,oBAAoB,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3C,oBAAoB,CAAC,GAAG,GAAG,KAAK,CAAC;AACjC,oBAAoB,CAAC,SAAS,GAAG,8BAA8B,CAAC;;AC7GhE;;;AAGA,IAAI,qBAAqB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC3CA,SAAiB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;IASjD,SAAS,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE;QAC3E,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC;QAC/C,KAAK,CAAC,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC;QAC/C,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,qBAAqB,CAAC,SAAS,CAAC;SAC1C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE;QACnE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE;QACnE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,qBAAqB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAM,EAAE;QACzD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;KAC7C,CAAC;IACF,OAAO,qBAAqB,CAAC;CAChC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,qBAAqB,CAAC,SAAS,GAAG,+BAA+B,CAAC;;ACvDlE;;;AAGA,IAAI,uBAAuB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC7CA,SAAiB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;;;;;;IAMnD,SAAS,uBAAuB,CAAC,SAAS,EAAE,kBAAkB,EAAE;QAC5D,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC,EAAE;QAC/C,IAAI,kBAAkB,KAAK,KAAK,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI,CAAC,EAAE;QACjE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;QACjD,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAC/C,IAAI,KAAK,CAAC,mBAAmB;YACzB,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIlE,GAAG,EAAE,YAAY;YACb,OAAO,uBAAuB,CAAC,SAAS,CAAC;SAC5C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,eAAe,EAAE;;;;QAItE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,eAAe,EAAE;;;;QAItE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,eAAe,EAAE;;;;QAItE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,eAAe,EAAE;;;;QAItE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;QAI3E,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,mBAAmB,CAAC;SACnC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,mBAAmB,IAAI,KAAK;gBACjC,OAAO;YACX,IAAI,IAAI,CAAC,mBAAmB;gBACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,IAAI,CAAC,mBAAmB;gBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC/C,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,uBAAuB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACpD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC,CAAC;IACF,OAAO,uBAAuB,CAAC;CAClC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtB,uBAAuB,CAAC,SAAS,GAAG,iCAAiC,CAAC;;ACvHtE;;;AAGA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCA,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;IAK5C,SAAS,gBAAgB,CAAC,YAAY,EAAE;QACpC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QACrB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;QACnC,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;QACnC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAIvD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACvB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE;;;;;QAKzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;CAC3B,CAAC,iBAAiB,CAAC,CAAC,CACO;;ACzD5B;;;AAGA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCA,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC5C,SAAS,gBAAgB,GAAG;QACxB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KAChD;IACD,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,gBAAgB,CAAC,SAAS,CAAC;SACrC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;CAC3B,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAErB,gBAAgB,CAAC,SAAS,GAAG,0BAA0B,CAAC;;AClBxD;;;;;;AAMA,IAAI,qBAAqB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC3CA,SAAiB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;;;;;;IAMjD,SAAS,qBAAqB,CAAC,UAAU,EAAE;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,YAAYuH,8BAAgB,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACtF,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAChG,uBAAU,CAAC,UAAU,EAAE,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACjJ,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAInE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;SACxC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SACjC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;SACnC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;SACpC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,qBAAqB,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAC3D,OAAO,IAAI,gBAAgB,CAAC,IAAIgG,8BAAgB,EAAE,CAAC,CAAC;KACvD,CAAC;;;;IAIF,qBAAqB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,KAAK,EAAE;QACxE,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC,CAAC;IACF,OAAO,qBAAqB,CAAC;CAChC,CAAC,mBAAmB,CAAC,CAAC,CACU;;ACrEjC;;;;;;AAMA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCvH,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM/C,SAAS,mBAAmB,CAAC,UAAU,EAAE;QACrC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,YAAYwH,iCAAmB,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,wGAAwG,CAAC,CAAC;QAC9H,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,mBAAmB,CAAC,SAAS,CAAC;SACxC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,qBAAqB,EAAE;QACxE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC;SACrD;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,mBAAmB,CAAC;CAC9B,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAE1B,mBAAmB,CAAC,SAAS,GAAG,6BAA6B,CAAC;;ACvC9D;;;AAGA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1CxH,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;;;;;;IAMhD,SAAS,oBAAoB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE;QAC3D,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE;QAC9C,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC;QACpD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,CAAC;QACpE,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC9B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,EAAE,oBAAoB,CAAC,YAAY,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,aAAa;YACnC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI/D,GAAG,EAAE,YAAY;YACb,OAAO,oBAAoB,CAAC,SAAS,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE;;;;;QAKhE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,CAAC;iBACT,IAAI,KAAK,GAAG,EAAE;gBACf,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK;gBACzB,OAAO;YACX,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;SAC3B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,oBAAoB,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAC1D,oBAAoB,CAAC,mBAAmB,GAAG,IAAI4F,8BAAa,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5E,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7B,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC;gBACL,CAAC,IAAI,IAAI,CAAC;;gBAEV,CAAC,IAAI,IAAI,CAAC;YACd,IAAI,CAAC,GAAG,CAAC;gBACL,CAAC,IAAI,IAAI,CAAC;;gBAEV,CAAC,IAAI,IAAI,CAAC;YACd,IAAI,CAAC,GAAG,CAAC;gBACL,CAAC,GAAG,CAAC,CAAC;iBACL,IAAI,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,GAAG,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,GAAG,CAAC;gBACL,CAAC,GAAG,CAAC,CAAC;iBACL,IAAI,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,GAAG,CAAC,CAAC,CAAC;YACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC/F;QACD,oBAAoB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtG,oBAAoB,CAAC,aAAa,GAAG,IAAIzC,gCAAe,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;KACtG,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACjD,IAAI,EAAE,oBAAoB,CAAC,YAAY,IAAI,CAAC,EAAE;YAC1C,oBAAoB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC7C,oBAAoB,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;YACnD,oBAAoB,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7C;KACJ,CAAC;IACF,OAAO,oBAAoB,CAAC;CAC/B,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAErB,oBAAoB,CAAC,SAAS,GAAG,8BAA8B,CAAC;;ACjHhE;;;;AAIA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1CnD,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAChD,SAAS,oBAAoB,GAAG;QAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KAChD;IACD,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI/D,GAAG,EAAE,YAAY;YACb,OAAO,oBAAoB,CAAC,SAAS,CAAC;SACzC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,oBAAoB,CAAC;CAC/B,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAErB,oBAAoB,CAAC,SAAS,GAAG,8BAA8B,CAAC;;ACrBhE;;;;;;;AAOA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCA,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM5C,SAAS,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE;QAC7C,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,EAAE,CAAC,EAAE;QAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;QAClD,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,YAAYyH,yCAA2B,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAC;QACnI,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,gBAAgB,CAAC,SAAS,CAAC;SACrC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAC3B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;CAC3B,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAE1B,gBAAgB,CAAC,SAAS,GAAG,0BAA0B,CAAC;;ACjDxD;;;AAGA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCzH,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAO5C,SAAS,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE;QACvD,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE;QAC9C,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC;QACpD,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC9B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI3D,GAAG,EAAE,YAAY;YACb,OAAO,gBAAgB,CAAC,SAAS,CAAC;SACrC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE;QACzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE;;;;;QAK5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;iBACpB,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE;gBAC1B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG0H,0BAAa,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChE,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAIvD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACvB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;CAC3B,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAErB,gBAAgB,CAAC,SAAS,GAAG,0BAA0B,CAAC;;ACzExD;;;;;AAKA,IAAI,yBAAyB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC/C1H,SAAiB,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;;;;IAIrD,SAAS,yBAAyB,GAAG;QACjC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;KACpC;IACD,MAAM,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIpE,GAAG,EAAE,YAAY;YACb,OAAO,yBAAyB,CAAC,SAAS,CAAC;SAC9C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,yBAAyB,CAAC;CACpC,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAExB,yBAAyB,CAAC,SAAS,GAAG,mCAAmC,CAAC;;ACzB1E;;;;AAIA,IAAI,uBAAuB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC7CA,SAAiB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAOnD,SAAS,uBAAuB,CAAC,UAAU,EAAE;QACzC,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;KAChD;IACD,uBAAuB,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAC7D,OAAO,IAAI,mBAAmB,EAAE,CAAC;KACpC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SACjC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAIjE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;SACpC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;SACrC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SACjC;;;;QAID,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;SACnC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;SACpC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,uBAAuB,CAAC;CAClC,CAAC,mBAAmB,CAAC,CAAC,CACY;;AC7EnC;;;AAGA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvCA,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAO7C,SAAS,iBAAiB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE;QAC/D,IAAI,cAAc,KAAK,KAAK,CAAC,EAAE,EAAE,cAAc,GAAG,GAAG,CAAC,EAAE;QACxD,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,GAAG,CAAC,EAAE;QAChD,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;QAClD,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC;QACvC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAC/B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,iBAAiB,CAAC,SAAS,CAAC;SACtC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE;;;;QAI7D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK;gBACzB,OAAO;YACX,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;QAIjE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK;gBAC7B,OAAO;YACX,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC;CAC5B,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAE5B,iBAAiB,CAAC,SAAS,GAAG,2BAA2B,CAAC;;ACjE1D;;;AAGA,IAAI,qBAAqB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC3CA,SAAiB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;;;;;;IAMjD,SAAS,qBAAqB,CAAC,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE;QACxF,IAAI,cAAc,KAAK,KAAK,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC,EAAE;QACzD,IAAI,YAAY,KAAK,KAAK,CAAC,EAAE,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE;QAClD,IAAI,iBAAiB,KAAK,KAAK,CAAC,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,EAAE;QAChE,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;QAClD,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC;QACvC,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;QACnC,KAAK,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC7C,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,qBAAqB,CAAC,SAAS,CAAC;SAC1C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;QAIrE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK;gBAC7B,OAAO;YACX,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAInE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK;gBAC3B,OAAO;YACX,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,mBAAmB,EAAE;;;;QAIxE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,kBAAkB,CAAC;SAClC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,kBAAkB,IAAI,KAAK;gBAChC,OAAO;YACX,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,qBAAqB,CAAC;CAChC,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAE5B,qBAAqB,CAAC,SAAS,GAAG,+BAA+B,CAAC;;AClFlE;;;AAGA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCA,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;IAI/C,SAAS,mBAAmB,GAAG;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;KACpC;IACD,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI9D,GAAG,EAAE,YAAY;YACb,OAAO,mBAAmB,CAAC,SAAS,CAAC;SACxC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,OAAO,mBAAmB,CAAC;CAC9B,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAExB,mBAAmB,CAAC,SAAS,GAAG,6BAA6B,CAAC;;ACvB9D;;;;AAIA,IAAI,eAAe,GAAG,CAAC,UAAU,MAAM,EAAE;IACrCA,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;;;IAI3C,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE;QACrC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,OAAO,KAAK,CAAC;KAChB;;;;IAID,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACjD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC5C,OAAO,IAAI,CAAC;KACf,CAAC;IACF,eAAe,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACtD,OAAO,IAAI,CAAC;KACf,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;KACtD,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;KACtD,CAAC;;;;;;IAMF,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;QACzB,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;QAChC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC1B,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;QAC7B,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;QAC9B,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACrC,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC,CAAC;;;;;;IAMF,eAAe,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;KAC7D,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACjF,OAAO,EAAE,CAAC;KACb,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAC9F,OAAO,EAAE,CAAC;KACb,CAAC;;;;;;;;;IASF,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;KACjD,CAAC;;;;;;;;;;;IAWF,eAAe,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;KAC7E,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAChD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB,CAAC;IACF,OAAO,eAAe,CAAC;CAC1B,CAACuE,4BAAe,CAAC,CAAC,CACQ;;ACtH3B;;;AAGA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvCvE,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;IAI7C,SAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACnD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAIuB,uBAAU,CAACA,uBAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;KACJ,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAIC,4BAAW,CAAC,IAAI;gBACpD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;;gBAE5B,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;SACrC;aACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;KACJ,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAChG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAIA,4BAAW,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YACvM,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE;gBACjC,IAAI,SAAS,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;gBACxD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;gBACvC,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;oBACzE,MAAM,GAAG,SAAS,GAAG,MAAM;oBAC3B,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;aAC7E;SACJ;aACI;YACD,IAAI,oBAAoB,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;YACnE,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,KAAK,GAAG,CAAC,CAAC;YAClD,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,oBAAoB,GAAG,IAAI,CAAC;SACnE;QACD,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;SACzF;aACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC9E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACvE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAChE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;SACxC;KACJ,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC5E,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KACjD,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAAC,eAAe,CAAC,CAAC,CACU;;AC1F7B;;;AAGA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvCxB,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;IAI7C,SAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC;KAChB;;;;IAID,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACrD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;KACpC,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAChG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,CAAC;QACX,IAAI,MAAM,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QACrC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC;YAC9G,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;YAC9D,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU;YACrD,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;YAC7C,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;QAC7E,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAAC,iBAAiB,CAAC,CAAC,CACQ;;ACrC7B;;;AAGA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvCA,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;IAI7C,SAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,iBAAiB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;QACxD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAC1C,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAIwB,4BAAW,CAAC,IAAI;gBACpD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;;gBAE5B,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;SACrC;aACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;YACnC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;SAC/B;KACJ,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACrD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC5D,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QAChG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7G,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE;QACvH,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,CAAC;;QAEN,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;SAChC;aACI;YACD,CAAC,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC9C,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7C;QACD,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,eAAe,CAAC,cAAc,GAAG,IAAI;YACpF,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,eAAe,CAAC,OAAO,GAAG,MAAM,CAAC;QACxE,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC7B,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;QACpE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI;YAC9B,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;YAClG,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE;QACzH,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,CAAC;;QAEN,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;SAChC;aACI;YACD,CAAC,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC9C,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7C;QACD,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC,cAAc,GAAG,IAAI,GAAG,UAAU,GAAG,4BAA4B;YACzG,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC;QACjE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI;YAC9B,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;YAClG,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAChG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,YAAY,CAAC;QACjB,IAAI,SAAS,CAAC;;QAEd,IAAI,eAAe,CAAC,YAAY;YAC5B,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC9D,aAAa,CAAC,qBAAqB,CAAC,YAAY,GAAG,aAAa,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC;QACjG,IAAI,oBAAoB,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACnE,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAIA,4BAAW,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;SAC7M;aACI;YACD,IAAI,oBAAoB,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;YACnE,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC,KAAK,GAAG,CAAC,CAAC;YAC5D,IAAI,IAAI,MAAM,GAAG,YAAY,GAAG,IAAI,GAAG,oBAAoB,GAAG,IAAI,CAAC;SACtE;QACD,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC9E,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAC7F,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvB,IAAI,IAAI,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,GAAG,oBAAoB,GAAG,IAAI;gBACxF,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC;SAC9E;aACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpB,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,oBAAoB,GAAG,IAAI;gBAClF,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI;gBACjG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI;gBAClF,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC;SAC9E;aACI;YACD,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI;gBAChH,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI;gBAC5G,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI;gBACxF,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC;SAC9E;QACD,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChE,aAAa,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;KACf,CAAC;;;;;;IAMF,iBAAiB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,QAAQ,EAAE,eAAe,EAAE;QAC5E,OAAO,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,eAAe,CAAC,YAAY,GAAG,MAAM,CAAC;KACjI,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;SAC5B;aACI;YACD,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACvB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;gBACjD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;gBACrD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;aACxD;iBACI;gBACD,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC/B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;aAClC;YACD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SACvB;KACJ,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAChE,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9C,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC5E,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;;QAE9C,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACvC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACvB,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAAC,eAAe,CAAC,CAAC,CACU;;AClO7B;;;AAGA,IAAI,eAAe,GAAG,CAAC,UAAU,MAAM,EAAE;IACrCxB,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;;;;;IAM3C,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE;QACrC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,UAAU,CAAC,iBAAiB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACpK,OAAO,KAAK,CAAC;KAChB;;;;IAID,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACnD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACvB,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC1D,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;KAClC,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QAC9F,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAClE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KAClG,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC9C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAClC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SAC7C;KACJ,CAAC;;;;;;;;;IASF,eAAe,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAC1F,OAAO,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,kBAAkB,GAAG,MAAM;YACtF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YAChD,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACrE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,kBAAkB,GAAG,MAAM;YAC9D,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,kBAAkB,GAAG,MAAM;YACnF,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM;YAC/C,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;;YAErE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;;YAErE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,kBAAkB,GAAG,MAAM;YACnF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YAChD,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;;YAErE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACnF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACrE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACrE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;KACxD,CAAC;IACF,OAAO,eAAe,CAAC;CAC1B,CAAC,sBAAsB,CAAC,CAAC,CACC;;ACnF3B;;;;;;AAMA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1CA,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;;;;;;IAMhD,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;QAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;IACD,oBAAoB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACxD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI+C,uCAAsB,CAAC,iBAAiB,EAAE,CAAC,CAAC;KACrH,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACnG,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACnG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE;QAC1H,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,CAAC;;QAEN,IAAI,IAAI,CAAC,cAAc;YACnB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;aAC5B;YACD,CAAC,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC9C,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7C;QACD,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,CAAC,cAAc,GAAG,QAAQ;YAC5F,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,eAAe,CAAC,OAAO,GAAG,MAAM;YACnE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,eAAe,CAAC,OAAO,GAAG,MAAM;YACnE,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9D,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI;YAC9B,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC;;YAEzE,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC;YAC1G,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACnD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC/E,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KAC9C,CAAC;IACF,OAAO,oBAAoB,CAAC;CAC/B,CAAC,iBAAiB,CAAC,CAAC,CACW;;ACxEhC;;;;;AAKA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1C/C,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;;;;IAIhD,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;QAC1C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,oBAAoB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACxD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI+C,uCAAsB,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAClH,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3B,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;;YAEvC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;KACrC,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACnG,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,eAAe,CAAC,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3K,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS;YAC1B,KAAK,qBAAqB,CAAC,QAAQ;gBAC/B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;gBACjG,MAAM;YACV,KAAK,qBAAqB,CAAC,GAAG;gBAC1B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;gBACjG,MAAM;SACb;QACD,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACnD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC/E,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KAC9C,CAAC;IACF,OAAO,oBAAoB,CAAC;CAC/B,CAAC,sBAAsB,CAAC,CAAC,CACM;;AC9DhC;;;;AAIA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtC/C,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;IAI5C,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;QACtC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;;;;IAID,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC3D,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QAC/F,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACnG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE;QACtH,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,CAAC;;QAEN,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;SAChC;aACI;YACD,CAAC,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC9C,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7C;QACD,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,CAAC,cAAc,GAAG,QAAQ;YAC5F,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM;YAClE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM;YAClE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;YAChC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;QAC9D,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI;YAC9B,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAChF,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC;YAC1G,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC/C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;YAChC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACtC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;SACvD;KACJ,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,CAAC,iBAAiB,CAAC,CAAC,CACO;;ACvE5B;;;;;AAKA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1CA,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;;;;IAIhD,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;QAC1C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,oBAAoB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI+C,uCAAsB,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAClH,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3B,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;;YAEvC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;KACrC,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACnG,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,eAAe,CAAC,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC;YACvK,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;KACpE,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACnD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC9B,CAAC;IACF,oBAAoB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC/E,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KAC/C,CAAC;IACF,OAAO,oBAAoB,CAAC;CAC/B,CAAC,eAAe,CAAC,CAAC,CACa;;AC/ChC;;;AAGA,IAAI,sBAAsB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC5C/C,SAAiB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;;;;;;;IAOlD,SAAS,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE;QAC5C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,sBAAsB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACrG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,YAAY,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC3D,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACxC,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACxC,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACxC,IAAI,cAAc,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;QAChD,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI;YACjE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI,CAAC;QACpE,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,sBAAsB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACrD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACjC,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACnC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;;YAE7C,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;YAE5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;YAE5B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;;YAE9B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;;YAE9B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;SACjC;KACJ,CAAC;IACF,OAAO,sBAAsB,CAAC;CACjC,CAAC,eAAe,CAAC,CAAC,CACe;;ACtElC;;;;AAIA,IAAI,yBAAyB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC/CA,SAAiB,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;;;;IAIrD,SAAS,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE;QAC/C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,yBAAyB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACxG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,YAAY,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC3D,IAAI,YAAY,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC3D,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;;QAEnD,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI;YACtE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC;QACvE,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,yBAAyB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACxD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACtC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;SAChC;KACJ,CAAC;IACF,OAAO,yBAAyB,CAAC;CACpC,CAAC,eAAe,CAAC,CAAC,CACkB;;AChDrC;;;AAGA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvCA,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;IAI7C,SAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACrD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;QAC5B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;SACjC;aACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;KACJ,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAChD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAChC,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC5E,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KACjD,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAChG,IAAI,aAAa,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC5D,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;QAC9C,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACtD,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;QAE9C,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,eAAe,CAAC,eAAe,GAAG,QAAQ,GAAG,eAAe,CAAC,cAAc,GAAG,QAAQ;YACnH,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtD,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,eAAe,CAAC,cAAc,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM;YACpF,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,eAAe,CAAC,eAAe,GAAG,QAAQ;YACvF,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC;YACzE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,aAAa;YAC9C,MAAM,GAAG,KAAK,GAAG,MAAM;YACvB,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;QAC1D,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC;gBACpG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;SACzD;QACD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,aAAa,GAAG,MAAM;YAC/D,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC/D,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC5C,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;KACf,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACxD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC/E,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAAC,eAAe,CAAC,CAAC,CACU;;ACtF7B;;;AAGA,IAAI,cAAc,GAAG,CAAC,UAAU,MAAM,EAAE;IACpCA,SAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;;;;IAI1C,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;QACpC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QAClD,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;KAClC,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;YAChC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC/C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC5E,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SACvB;KACJ,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAC7F,IAAI,QAAQ,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,OAAO,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACtD,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACtD,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QACzC,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,eAAe,CAAC,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM;YAC5F,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM;YAC3D,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM;YACxC,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;YACzD,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM;YACnD,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC/D,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,CAAC,eAAe,CAAC,CAAC,CACO;;AC5D1B;;;;AAIA,IAAI,wBAAwB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC9CA,SAAiB,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IACpD,SAAS,wBAAwB,GAAG;QAChC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KAChD;;;;IAID,wBAAwB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACvG,IAAI,YAAY,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC3D,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC;QACjD,IAAI,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;QAC7C,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACtD,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;QAE9C,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ;YACzE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtD,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM;YAC/D,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ;YAClE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC;YACzE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,aAAa;YAC9C,MAAM,GAAG,KAAK,GAAG,MAAM;YACvB,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;;QAE1D,IAAI,IAAI,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ;YAC/E,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM;YAC1E,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM;YAC1E,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM;YACzE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACxE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;;YAEvE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;QAC/E,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC;gBACpG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;SAC3E;;QAED,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM;YAC5D,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC/D,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC5C,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;KACf,CAAC;IACF,wBAAwB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QAC/D,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;KAC/C,CAAC;IACF,OAAO,wBAAwB,CAAC;CACnC,CAAC,iBAAiB,CAAC,CAAC,CACe;;AC3DpC;;;;;AAKA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCA,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;IAI/C,SAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE;QACzC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,mBAAmB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3B,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;;YAEvC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;KACrC,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAClG,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,eAAe,CAAC,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3K,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS;YAC1B,KAAK,oBAAoB,CAAC,QAAQ;gBAC9B,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;gBACnE,MAAM;YACV,KAAK,oBAAoB,CAAC,GAAG;gBACzB,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;gBACnE,MAAM;SACb;QACD,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAClD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B,CAAC;IACF,mBAAmB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC9E,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KAC9C,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAAC,eAAe,CAAC,CAAC,CACY;;ACrD/B;;;;;AAKA,IAAI,4BAA4B,GAAG,CAAC,UAAU,MAAM,EAAE;IAClDA,SAAiB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;;;;IAIxD,SAAS,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE;QAClD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;IACD,4BAA4B,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QAChE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KAC/E,CAAC;;;;IAIF,4BAA4B,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QAChE,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,IAAImC,qBAAQ,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KAClI,CAAC;;;;IAIF,4BAA4B,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QACvE,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC,CAAC;;;;IAIF,4BAA4B,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QAC9F,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,OAAO,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACpD,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QACjD,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,eAAe,CAAC,gBAAgB,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;QACnG,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,4BAA4B,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAC3G,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACpD,aAAa,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;;;QAGrD,IAAI,QAAQ,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;;;QAGzC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7F,IAAI,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ;YAC1D,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,6BAA6B,CAAC,QAAQ;YAC3D,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,GAAG,GAAG,WAAW,CAAC;aAChF,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,6BAA6B,CAAC,GAAG;YAC3D,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,GAAG,GAAG,WAAW,CAAC;aAChF,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,6BAA6B,CAAC,GAAG,EAAE;YAC7D,IAAI,IAAI,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY;gBACvE,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,YAAY;gBAC7D,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,GAAG,GAAG,WAAW,CAAC;SAChF;aACI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,6BAA6B,CAAC,OAAO,EAAE;YACjE,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;YACtE,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;YACnE,IAAI,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;YACvD,IAAI,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;YAC5D,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;YACtE,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;YAC3E,IAAI,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;YAC5D,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;SAChE;;YAEG,MAAM,IAAIV,sBAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACtE,aAAa,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,4BAA4B,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QACvF,IAAI,QAAQ,GAAGU,qBAAQ,CAAC,kBAAkB,CAAC;QAC3C,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAClE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KAC7C,CAAC;;;;IAIF,4BAA4B,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACtF,CAAC;IACF,OAAO,4BAA4B,CAAC;CACvC,CAAC,eAAe,CAAC,CAAC,CACqB;;ACpHxC;;;AAGA,IAAI,2BAA2B,GAAG,CAAC,UAAU,MAAM,EAAE;IACjDnC,SAAiB,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;IACvD,SAAS,2BAA2B,GAAG;QACnC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KAChD;;;;IAID,2BAA2B,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QAC/D,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;KACzI,CAAC;;;;IAIF,2BAA2B,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;;QAE1G,IAAI,IAAI,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACnD,IAAI,KAAK,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACpD,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,aAAa,CAAC;QAClB,IAAI,eAAe,CAAC;QACpB,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACrC,aAAa,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QAC1D,aAAa,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACtD,eAAe,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QAC5D,aAAa,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACjD,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC;QACjD,IAAI,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC;QAC/C,IAAI,IAAI,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;QAC/D,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ;YACzE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACvD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACvD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtC,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtD,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ;YAC/D,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI;YACjE,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ;YAC9E,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ;YAC5D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC;YAC7F,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,eAAe,GAAG,cAAc;YACpE,MAAM,GAAG,eAAe,GAAG,MAAM,CAAC;QACtC,IAAI,IAAI,CAAC,cAAc,EAAE;;YAErB,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ;gBACzE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACvD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACvD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtC,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ;gBAC/D,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI;gBACjE,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ;gBAC9E,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ;gBAC5D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC;gBAClF,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;;YAEtD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ;gBACzE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACvD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACvD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtC,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;gBACtD,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ;gBAC/D,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI;gBACjE,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ;gBAC9E,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ;gBAC5D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC;gBAClF,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;SACzD;QACD,IAAI,IAAI,MAAM,GAAG,eAAe,GAAG,QAAQ,GAAG,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ;YAC3F,MAAM,GAAG,eAAe,GAAG,QAAQ,GAAG,eAAe,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM;YAChF,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe,GAAG,QAAQ,CAAC;QACtF,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC5C,aAAa,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACrD,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;;QAEvD,IAAI,IAAI,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;QAC/D,OAAO,IAAI,CAAC;KACf,CAAC;IACF,2BAA2B,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QAClE,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,eAAe,CAAC;QACzD,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,eAAe,CAAC;YAC7D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,eAAe,CAAC;SAChE;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KACxC,CAAC;IACF,OAAO,2BAA2B,CAAC;CACtC,CAAC,iBAAiB,CAAC,CAAC,CACkB;;AC5GvC;;;AAGA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCA,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;IAI/C,SAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE;QACzC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,mBAAmB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACvD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;QAC5B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;KAC5B,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAClD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;YAChC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC/C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;SACxC;KACJ,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAClG,IAAI,YAAY,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC3D,IAAI,aAAa,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC5D,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;QAC7C,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,eAAe,CAAC,eAAe,GAAG,QAAQ,GAAG,eAAe,CAAC,cAAc,GAAG,QAAQ;YACnH,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtC,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YAC9D,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM;YAC/D,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM;YAC/D,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YAC9D,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM;YACpE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;QACnE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,oBAAoB,CAAC,GAAG,EAAE;YACpD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ;gBACtE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;SAC9E;aACI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,oBAAoB,CAAC,QAAQ,EAAE;YAC9D,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ;gBACtE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;SAC9E;aACI;YACD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ;gBAC7E,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM;gBAC1D,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;SAC9E;QACD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAAC,eAAe,CAAC,CAAC,CACY;;ACxE/B;;;AAGA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCA,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;IAI5C,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;QACtC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;IACD,gBAAgB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC7C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB;YAChD,OAAO,IAAI,CAAC;QAChB,OAAO,KAAK,CAAC;KAChB,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACpD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;SACjC;KACJ,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,GAAG,YAAY;QAC5D,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC/C,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAChC,CAAC;IACF,gBAAgB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC3E,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KACjD,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAC/F,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACjH,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe,CAAC,OAAO,GAAG,QAAQ;YAC7F,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;QACrD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,CAAC,eAAe,CAAC,CAAC,CACS;;AC1D5B;;;AAGA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1CA,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;;;;IAIhD,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;QAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;;;;IAID,oBAAoB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;KAC/C,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAIlE,GAAG,EAAE,YAAY;YACb,OAAO,KAAK,CAAC;SAChB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,oBAAoB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACnG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,OAAO,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACtD,IAAI,QAAQ,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QACjD,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC;YACxG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,eAAe,CAAC,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS;YAC7E,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC;YAC1E,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YAChE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,eAAe,CAAC,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS;YAC7E,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC;YAC1E,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YAChE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM;YAC9C,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO;YACvE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;QACzD,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,oBAAoB,CAAC;CAC/B,CAAC,gBAAgB,CAAC,CAAC,CACY;;AC3DhC;;;AAGA,IAAI,sBAAsB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC5CA,SAAiB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;;;;IAIlD,SAAS,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;;;;IAID,sBAAsB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACvB,CAAC;;;;IAIF,sBAAsB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACxF,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;SACjC;KACJ,CAAC;;;;IAIF,sBAAsB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACxD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC,CAAC;;;;IAIF,sBAAsB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACrD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;KAC3C,CAAC;;;;IAIF,sBAAsB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QACjF,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KAC5D,CAAC;;;;IAIF,sBAAsB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACrG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,OAAO,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACtD,IAAI,QAAQ,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QACjD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,eAAe,CAAC,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;QACvF,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QAC5F,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,eAAe,CAAC,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;QACvF,IAAI,IAAI,CAAC,mBAAmB;YACxB,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QAClG,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;YAChE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO;YAChE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe,CAAC,OAAO,GAAG,SAAS;YAC1F,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;QAChE,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,sBAAsB,CAAC;CACjC,CAAC,gBAAgB,CAAC,CAAC,CACc;;ACtFlC;;;;;;AAMA,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxCA,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;;IAI9C,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE;QACxC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,kBAAkB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACtD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;KAClC,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACtD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACjD,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAC1B,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACtC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QACzC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7B,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACnC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACvB,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAImC,qBAAQ,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KAC/J,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC7D,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACpF,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,OAAO,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACpD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;;QAE/C,IAAI,CAAC,mBAAmB,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACnF,IAAI,CAAC,sBAAsB,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;YACnE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;YAChE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACpE,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACtC,aAAa,CAAC,qBAAqB,EAAE,CAAC;SACzC;QACD,IAAI,IAAI,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;YACnE,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,eAAe,CAAC,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;gBAC3G,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;SAC1F;QACD,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACjG,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC;QAC/D,IAAI,MAAM,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACrD,IAAI,OAAO,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACtD,IAAI,gBAAgB,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC/D,IAAI,cAAc,GAAG,KAAK,CAAC,gBAAgB,GAAG,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;QAC/H,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAChD,IAAI,MAAM,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACvD,aAAa,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACxD,aAAa,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;;QAEhD,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QACrF,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;YACvC,IAAI,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;;YAElD,IAAI,IAAI,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC,kBAAkB,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC1G,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;;YAErD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI;gBAC/D,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM;gBACpD,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;SAC9D;QACD,aAAa,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM;YAC/D,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO;YAClE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;QACvE,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC;YACvG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QACxE,aAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvI,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC;QAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACxG,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrD,IAAI,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACjD,YAAY,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACzD,IAAI,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,oBAAoB,CAAC;QAC/E,aAAa,IAAI,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC;YAChC,YAAY,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;KACzC,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;KAChF,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,CAAC,kBAAkB,CAAC,CAAC,CACQ;;AC5I9B;;;AAGA,IAAI,eAAe,GAAG,CAAC,UAAU,MAAM,EAAE;IACrCnC,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;;;IAI3C,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE;QACrC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,YAAY,YAAY2H,wBAAU,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE;QACzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACnD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACpC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC;QAChD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KACjG,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACnD,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACjD,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAC1B,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACtC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QACzC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5B,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5B,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAC7B,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;SAChC;QACD,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACnC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;YACb,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACvB,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3B,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;YAC5B,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC/B;QACD,IAAI,CAAC,sBAAsB,GAAG,IAAIxF,qBAAQ,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KAClJ,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;QAInE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,iBAAiB,CAAC;SACjC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,eAAe,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC1D,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,QAAQ,EAAE,eAAe,EAAE;QAC5E,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;KACtI,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAC9F,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC3K,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;YACxG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;QACrD,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC1E,IAAI,CAAC,IAAI,CAAC,SAAS;YACf,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACxG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KAC9C,CAAC;;;;;;;;;;;IAWF,eAAe,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE;QAC3I,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;KAC9E,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC9C,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrD,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,IAAI,IAAI,CAAC,SAAS;YACd,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;;YAEvG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjJ,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC;YAClD,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAChC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAChC,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;;YAEjC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;YAC1C,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9C;QACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;QACxD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;KAC9E,CAAC;;;;;;;IAOF,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,QAAQ,EAAE,eAAe,EAAE;QACjF,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;QAChC,OAAO,EAAE,CAAC;KACb,CAAC;;;;;;;IAOF,eAAe,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,QAAQ,EAAE,eAAe,EAAE;QAClF,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAC9C,IAAI,OAAO,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAC/C,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/C,IAAI,YAAY,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACpD,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACjC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACjC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;;QAEnD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,eAAe,CAAC,oBAAoB,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI;YAC5F,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;YAClD,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO;YAC5D,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;;QAE/E,OAAO,IAAI,CAAC;KACf,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE;QAC/F,MAAM,IAAIjB,gCAAmB,EAAE,CAAC;KACnC,CAAC;;;;;;;;IAQF,eAAe,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE;QAC9F,MAAM,IAAIA,gCAAmB,EAAE,CAAC;KACnC,CAAC;IACF,OAAO,eAAe,CAAC;CAC1B,CAAC,eAAe,CAAC,CAAC,CACQ;;ACzM3B;;;AAGA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzClB,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;IAI/C,SAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE;QACzC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;;;;IAID,mBAAmB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACvD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;KACpF,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACvD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;KACjD,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAClD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;QAChG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC9E,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KAC9C,CAAC;;;;;;;;;;IAUF,mBAAmB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE;QACtG,IAAI,IAAI,GAAG,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC;YAC1E,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;YACpD,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACxE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;KACxE,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;QAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,8BAA8B,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;QAC/F,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE;QAC/I,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC;QACzC,IAAI,OAAO,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACtD,IAAI,CAAC,8BAA8B,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KACtG,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE;QACnG,IAAI,MAAM,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAChD,IAAI,OAAO,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACjD,IAAI,aAAa,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;KAC1F,CAAC;;;;;;;;IAQF,mBAAmB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE;QACjH,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACzC,IAAI,KAAK,GAAG,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QACjD,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QAChD,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,aAAa,GAAG,eAAe,CAAC,kBAAkB,CAAC;QACvD,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,GAAG,aAAa,GAAG,MAAM;YACzE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,CAAC;QACzE,IAAI,KAAK,GAAG,UAAU,CAAC;QACvB,OAAO,KAAK,GAAG,CAAC,EAAE;YACd,IAAI,KAAK,IAAI,UAAU,EAAE;gBACrB,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;aACpF;iBACI;gBACD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,UAAU;oBAC7C,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;aAC/E;;YAED,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,eAAe;gBACtD,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;YACxE,IAAI,KAAK,IAAI,UAAU,EAAE;;gBAErB,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO;oBACjF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC;oBACvE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;oBACpD,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;aACrF;iBACI;gBACD,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;aAChF;YACD,IAAI,KAAK,GAAG,CAAC;gBACT,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YAChJ,IAAI,KAAK,GAAG,CAAC;gBACT,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YACjK,IAAI,KAAK,GAAG,CAAC;gBACT,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YAChJ,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;gBACjD,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;aAChK;YACD,IAAI,KAAK,GAAG,CAAC;gBACT,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YAChJ,IAAI,KAAK,GAAG,CAAC;gBACT,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YACjK,IAAI,KAAK,GAAG,CAAC;gBACT,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YAChJ,KAAK,IAAI,CAAC,CAAC;SACd;QACD,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACvC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,IAAI,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;QAClF,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAAC,eAAe,CAAC,CAAC,CACY;;AC/J/B;;;;AAIA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCA,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;IAI/C,SAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE;QACzC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;;;;IAID,mBAAmB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACvD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrD,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;QAC/D,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KACvC,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE;QACnG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAChD,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACnC,IAAI,aAAa,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QACpD,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QACjD,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI;YACzD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC;YAC5F,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;YAC5D,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;YAC7E,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM;YAClF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC;YAC3E,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;YAC5D,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;YAC7E,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM;YACrF,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;YAC9C,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM;YACzD,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;YAC5D,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM;YAC7D,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM;YACzD,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM;YAClF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC;YAC3E,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;YAC5D,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;YAC7E,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM;YAClF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC;YAC3E,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;YAC5D,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;;YAE7E,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM;YACrF,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM;YAC1G,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;YAC5D,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM;YACzD,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM;YACrF,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;YAC9C,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YAC7D,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;YAC5D,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;QACtE,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAC3C,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;QAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;QAC/D,IAAI,KAAK,GAAG,IAAI,CAAC,8BAA8B,CAAC;QAChD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KAC9B,CAAC;;;;IAIF,mBAAmB,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE;QAC/I,IAAI,IAAI,CAAC;QACT,IAAI,OAAO,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACtD,IAAI,CAAC,8BAA8B,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QACxD,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,SAAS,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QAC1D,aAAa,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC;YACzF,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI;YAC5D,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtE,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM;YAC/E,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC;YACtF,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI;YAC5D,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtE,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM;YAC/E,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC;YACtF,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI;YAC5D,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtE,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM;YAC/E,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC;YACtF,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI;YAC5D,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACtE,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM;YACtE,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO;;YAExC,MAAM,GAAG,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;YAC/E,MAAM,GAAG,eAAe,GAAG,IAAI,GAAG,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;YACxE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,OAAO;YAC9E,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACrE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YAChE,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;QAC/E,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC5C,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAAC,eAAe,CAAC,CAAC,CACY;;AC5H/B;;;AAGA,IAAI,eAAe,GAAG,CAAC,UAAU,MAAM,EAAE;IACrCA,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;;;IAI3C,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;;;;IAID,eAAe,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE;QAC/F,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAChD,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACnC,IAAI,QAAQ,GAAG,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QACpD,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAChD,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC;YAChG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;YAC5D,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;QACtF,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE;QAC9F,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAChD,IAAI,MAAM,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAChD,IAAI,MAAM,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAChD,IAAI,cAAc,GAAG,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QAC1D,QAAQ,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,QAAQ,GAAG,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QACpD,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAChD,IAAI,IAAI,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,eAAe,CAAC,qBAAqB,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;YAC3F,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ;YACtE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;YAChE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ;YAClD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC;YACpF,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;YACxE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;YACjE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC;QAC/E,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAC3C,QAAQ,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE;QAC3I,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC;YACzF,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI;YAC5D,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;KACnF,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;KAC3D,CAAC;IACF,OAAO,eAAe,CAAC;CAC1B,CAAC,eAAe,CAAC,CAAC,CACQ;;AClE3B;;;;;;;AAOA,IAAI,eAAe,GAAG,CAAC,UAAU,MAAM,EAAE;IACrCA,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;;;IAI3C,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE;QACrC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;;;;IAID,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACnD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrD,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KAC/B,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACnD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;KAClC,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAC9F,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACnG,IAAI,OAAO,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACtD,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QACjD,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,eAAe,CAAC,kBAAkB,GAAG,MAAM;YACtE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM;YACrD,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM;YACrD,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;YAClC,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI;YACpD,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM;YAClE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI;YAC9D,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;QACvE,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;;QAE1E,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC;QAC9B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC;QACvE,IAAI,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,CAAC,CAAC;QACrC,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,CAAC,CAAC;QACrC,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrD,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,YAAY,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;QAClC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;KACvE,CAAC;IACF,OAAO,eAAe,CAAC;CAC1B,CAAC,kBAAkB,CAAC,CAAC,CACK;;ACxE3B;;;AAGA,IAAI,eAAe,GAAG,CAAC,UAAU,MAAM,EAAE;IACrCA,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;;;IAI3C,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;;;;IAID,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACnD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAClG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KAC3E,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC9C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;QAC7F,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QAC9C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;KAC5D,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE;;QAE/F,IAAI,MAAM,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QAChD,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACnC,IAAI,OAAO,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACjD,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;KACpF,CAAC;;;;;;;;;;IAUF,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE;QACnH,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,CAAC;YAC/E,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI;YAC5D,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;YACzE,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;KACnF,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;QACxD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;QACxF,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,gCAAgC,CAAC;QAClD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QACzD,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SAC7B;KACJ,CAAC;;;;IAIF,eAAe,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE;QAC3I,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC;QACzC,IAAI,OAAO,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACtD,IAAI,CAAC,gCAAgC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;KACtG,CAAC;;;;;;;;;IASF,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE;QACzH,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACtD,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,EAAE;YAC9B,IAAI,GAAG,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;SAC7B;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,EAAE;gBACR,IAAI,IAAI,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;gBACrD,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS;oBAC9E,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,CAAC;oBAC5E,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI;oBAC5D,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;aAC1F;iBACI;gBACD,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;oBACnF,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;aAC7F;SACJ;QACD,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,IAAI,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QACtF,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,eAAe,CAAC;CAC1B,CAAC,eAAe,CAAC,CAAC,CACQ;;AC5H3B;;;;AAIA,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxCA,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;;IAI9C,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE;QACxC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,OAAO,KAAK,CAAC;KAChB;IACD,kBAAkB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;YACvB,OAAO,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACtD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAClD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;SACjC;aACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;KACJ,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC7D,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACrC,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACjG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACrE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAClE,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;YAC9D,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;SAC5H;QACD,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;QACrE,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE;QACxH,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,CAAC;QACN,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;SAChC;aACI;YACD,CAAC,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC9C,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7C;QACD,IAAI,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC;QACjD,IAAI,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC;;QAE/C,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI;YAC9D,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI;YAChC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI;YACjD,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAEf,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM;gBAClH,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;SACzE;aACI;YACD,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;SAClF;;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC7B,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;QACpE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI;YAC9B,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;YAClG,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE;QAC1H,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,CAAC;;QAEN,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;SAChC;aACI;YACD,CAAC,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC9C,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7C;QACD,IAAI,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC;QAC/C,IAAI,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC;QACjD,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI;YAC9D,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;YAC7C,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI;YACjD,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI;YAChD,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe;YAClF,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI,CAAC;QAC7D,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI;YAC9B,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;YAClG,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACjG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,eAAe,CAAC,YAAY;YAC5B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,eAAe,CAAC,YAAY,GAAG,MAAM,CAAC;QACnI,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAEf,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;YACxH,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAChE;;QAED,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI;YACtH,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACvF,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,kBAAkB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACjD,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACpC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACjF,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpF,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC7E,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;SACxC;KACJ,CAAC;IACF,kBAAkB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QAC7E,IAAI,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KACjD,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,CAAC,eAAe,CAAC,CAAC,CACW;;AC3K9B;;;;;AAKA,IAAI,wBAAwB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC9CA,SAAiB,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;;;;IAIpD,SAAS,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;;;;IAID,wBAAwB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QAC5D,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;KACtD,CAAC;;;;IAIF,wBAAwB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE;QAC9H,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,CAAC;QACN,IAAI,IAAI,CAAC,cAAc;YACnB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;aAC5B;YACD,CAAC,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC9C,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7C;;QAED,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,eAAe,CAAC,cAAc,GAAG,QAAQ;YACrE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ;YAC3D,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,eAAe,CAAC,eAAe,GAAG,QAAQ,CAAC;;QAEpF,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;YACpC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;;YAEhC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;;YAE7C,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;YAChC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;;YAEhC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;;YAE7C,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;QAClD,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAEf,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM;gBAClH,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;SACzE;;YAEG,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;;QAEnF,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;QAChE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI;YAC9B,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC;YAC1G,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,wBAAwB,CAAC;CACnC,CAAC,kBAAkB,CAAC,CAAC,CACc;;ACrEpC;;;AAGA,IAAI,gBAAgB,GAAG,CAAC,UAAU,MAAM,EAAE;IACtCA,SAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM5C,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;QACtC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,UAAU,CAAC,iBAAiB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACrK,OAAO,KAAK,CAAC;KAChB;;;;IAID,gBAAgB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC/C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAClC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACtC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;SACjD;KACJ,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC3D,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC,CAAC;;;;;;;;;IASF,gBAAgB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAC5F,OAAO,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,MAAM;YACvF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,MAAM;YACpF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YAChD,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,MAAM;YACpF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;KAC7E,CAAC;;;;IAIF,gBAAgB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QAC/F,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACnE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KAClG,CAAC;IACF,OAAO,gBAAgB,CAAC;CAC3B,CAAC,sBAAsB,CAAC,CAAC,CACE;;AC7D5B;;;AAGA,IAAI,oBAAoB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC1CA,SAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;;;;IAIhD,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;QAC1C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,UAAU,CAAC,iBAAiB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACxK,OAAO,KAAK,CAAC;KAChB;;;;IAID,oBAAoB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC/D,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;KACpC,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACnD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SACvB;KACJ,CAAC;;;;IAIF,oBAAoB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACnG,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC;QACpE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KAClG,CAAC;;;;;;;;;;IAUF,oBAAoB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACnG,IAAI,IAAI,CAAC;QACT,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC,eAAe,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,QAAQ;YACnK,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACrF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,oBAAoB,GAAG,MAAM;YACrF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACrF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACrF,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;YACrE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;QAC1E,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,oBAAoB,CAAC;CAC/B,CAAC,sBAAsB,CAAC,CAAC,CACM;;AClEhC;;;AAGA,IAAI,kBAAkB,GAAG,CAAC,UAAU,MAAM,EAAE;IACxCA,SAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;;;IAI9C,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;KACpD;;;;IAID,kBAAkB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE;QACxH,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,CAAC;QACN,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;SAChC;aACI;YACD,CAAC,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC9C,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7C;QACD,IAAI,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC;QACjD,IAAI,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC;;QAE/C,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;;YAE/D,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;YAC7C,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM;YACrD,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;;YAErD,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,eAAe,CAAC,OAAO,GAAG,MAAM;YACnE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;YAChC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM;;YAE7C,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI;YAClD,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAEf,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM;gBAClH,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;SACzE;;YAEG,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;;QAEnF,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC7B,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;QACpE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI;YAC9B,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC;YAC1G,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,CAAC,kBAAkB,CAAC,CAAC,CACQ;;AC/D9B,IAAI,cAAc,GAAG,CAAC,YAAY;IAC9B,SAAS,cAAc,GAAG;KACzB;IACD,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC,CAAC;AAEL;;;AAGA,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;;;;AAI9B,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC;;;;AAI/B,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC;;ACmDnCwG,wBAAU,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AACtEA,wBAAU,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AACtEA,wBAAU,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AACtEA,wBAAU,CAAC,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAClEA,wBAAU,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AAC5EA,wBAAU,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AAC5EA,wBAAU,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AACpEA,wBAAU,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AAC5EA,wBAAU,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,CAAC;AAChFA,wBAAU,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,CAAC;AACtFA,wBAAU,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AACtEA,wBAAU,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAChEA,wBAAU,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,CAAC;AACpFA,wBAAU,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AAC1EA,wBAAU,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,6BAA6B,CAAC,CAAC;AAC5FA,wBAAU,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,4BAA4B,CAAC,CAAC;AAC1FA,wBAAU,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AAC1EA,wBAAU,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AACpEA,wBAAU,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AAC5EA,wBAAU,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,CAAC;AAChFA,wBAAU,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;AACxEA,wBAAU,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AAC1EA,wBAAU,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AAC1EA,wBAAU,CAAC,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAClEA,wBAAU,CAAC,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAClEA,wBAAU,CAAC,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAClEA,wBAAU,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,CAAC;AACpFA,wBAAU,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;AACxEA,wBAAU,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AACpEA,wBAAU,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AAC5EA,wBAAU,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;;;;;AAKxE,IAAI,UAAU,GAAG,CAAC,UAAU,MAAM,EAAE;IAChCxG,SAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;;;;;;IAMtC,SAAS,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE;QAC9C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC;QAC9D,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;QACrB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;QAC5B,KAAK,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;QAC7B,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC;QACjC,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC/B,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC5B,KAAK,CAAC,uBAAuB,GAAG,CAAC,CAAC;QAClC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,KAAK,CAAC,uBAAuB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzF,KAAK,CAAC,4BAA4B,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACnG,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACzC,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI;YACrB,KAAK,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;;;;QAIhD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,KAAK,CAAC;SACrB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK;gBACnB,OAAO;YACX,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;QAI1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK;gBAC7B,OAAO;YACX,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE;;;;;QAKvD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;;;YAGlB,IAAI,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAACuB,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC/F,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAACA,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC5F,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;;QAK9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;SAC5C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,qBAAqB,EAAE;;;;;;;QAO/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;SAC7C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,sBAAsB,EAAE;;;;;;;QAOhE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;SAC9C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAC7C,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,YAAYqG,+BAAc,CAAC,EAAE;YACxH,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACvB;YACD,IAAI,CAAC,OAAO,GAAG,IAAIA,+BAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7E;aACI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YAC3B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACvB;YACD,IAAI,CAAC,OAAO,GAAG,IAAIpB,wBAAU,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;KACJ,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,MAAM,EAAE;QACvD,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;QAEtD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;KACxC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;QAI1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,GAAG,IAAI,CAAC;SACtF;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,KAAK,EAAE;gBACP,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI;oBACjC,IAAI,CAAC,oBAAoB,GAAG,IAAI,0BAA0B,EAAE,CAAC;gBACjE,IAAI,CAAC,oBAAoB,CAAC,cAAc,GAAG,KAAK,CAAC;aACpD;iBACI,IAAI,CAAC,KAAK,EAAE;gBACb,IAAI,IAAI,CAAC,oBAAoB;oBACzB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aACxC;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,sBAAsB,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,qBAAqB,CAAC;SACrC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,qBAAqB,IAAI,KAAK;gBACnC,OAAO;YACX,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACnD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aACpC;YACD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC/D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAC9B;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,MAAM,EAAE,iBAAiB,EAAE;QAC1E,IAAI,iBAAiB,KAAK,KAAK,CAAC,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,EAAE;QAChE,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,KAAK,IAAI,CAAC,CAAC;YACX,OAAO;QACX,IAAI,CAAC,iBAAiB;YAClB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAClC,MAAM,CAAC,mBAAmB,CAACa,mCAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE;QAC9E,IAAI,iBAAiB,KAAK,KAAK,CAAC,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,EAAE;QAChE,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;QACrC,MAAM,CAAC,gBAAgB,CAACA,mCAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAClG,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,iBAAiB,EAAE;YACnB,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;gBACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC5F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;aAC5F;iBACI;gBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;aACI;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACpF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SACpF;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB,CAAC;;;;;;IAMF,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE;QACrD,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACrC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,sBAAsB,CAAC;SACtC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;;;;IAOH,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9C,CAAC;;;;;;IAMF,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE;QACtD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC;YACpD,OAAO,IAAI,CAAC;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC;KACpF,CAAC;;;;;;IAMF,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE;QAC9D,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC5C,CAAC;;;;;IAKF,UAAU,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,MAAM,EAAE;QACxD,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACxC,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,KAAK,EAAE;QACzD,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,MAAM,IAAI,IAAI;YACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC5C,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAIxD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK;gBAC3B,OAAO;YACX,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC5B;YACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAC9B;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,eAAe,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK;gBAC5B,OAAO;YACX,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC7B;YACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACxD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAC9B;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,cAAc,EAAE;;;;QAIxD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK;gBAC3B,OAAO;YACX,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC5B;YACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAC9B;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,eAAe,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK;gBAC5B,OAAO;YACX,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC7B;YACD,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACxD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAC9B;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,gBAAgB,EAAE;;;;QAI1D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK;gBAC7B,OAAO;YACX,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;YACD,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAC9B;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACvC,IAAI,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC9F,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;YACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB,CAAC;;;;;IAKF,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,UAAU,EAAE;QACnD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ;gBACtB,KAAK,CAAC,SAAS,EAAE,CAAC;SACzB;KACJ,CAAC;;;;;;;;IAQF,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QACrE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ;gBACtB,KAAK,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SACrD;KACJ,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC3C,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ;gBACtB,KAAK,CAAC,WAAW,EAAE,CAAC;SAC3B;KACJ,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;QAEzD,MAAM,CAAC,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;QAClF,IAAI,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,YAAY;YACnD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,CAAC;QACN,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAC5B,IAAI,KAAK,CAAC;QACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;gBACxE,gBAAgB,GAAG,KAAK,CAAC;SAChC;QACD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC;QAChF,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;QACnG,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,gBAAgB,CAAC;QACjG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAC1B,IAAI,MAAM,CAAC,mBAAmB,GAAG,CAAC,EAAE;gBAChC,MAAM,CAAC,qBAAqB,EAAE,CAAC;aAClC;iBACI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE;gBACnD,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC;oBAC5C,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC;aAC3C;SACJ;KACJ,CAAC;;;;;;IAMF,UAAU,CAAC,SAAS,CAAC,yBAAyB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE;QACtE,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,OAAO,CAAC,eAAe;YACvB,MAAM,CAAC,sBAAsB,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,sBAAsB,EAAE;YAChE,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,sBAAsB;gBAC9B,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC;SAC3C;QACD,IAAI,OAAO,CAAC,YAAY;YACpB,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,aAAa;YACrB,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,SAAS;YACjB,MAAM,CAAC,mBAAmB,EAAE,CAAC;KACpC,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,yBAAyB,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACvF,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;KACf,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACzF,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ;YACzD,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ;YAC3D,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;KACf,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,+BAA+B,GAAG,UAAU,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE;QAC3H,OAAO,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KACpH,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,gCAAgC,GAAG,UAAU,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE;QAC7H,OAAO,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KACtH,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,+BAA+B,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QAChH,OAAO,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KACzG,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,gCAAgC,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;QACjH,OAAO,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KAC1G,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QAClF,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;KAC3E,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QACpF,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,eAAe,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC9G,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS;YACnC,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB;YAClG,aAAa,CAAC,qBAAqB,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QAC5E,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ;YACzD,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,YAAY;YACjB,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ;YACzD,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ;YAC3D,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC/E,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1D,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;gBAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB;oBAC1E,aAAa,CAAC,qBAAqB,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;aACjF;SACJ;QACD,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ;YACvE,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QAC9E,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC3D,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;YAC1G,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY;gBACvC,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS;gBACpC,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;SAC9E;QACD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,6BAA6B,GAAG,UAAU,aAAa,EAAE,eAAe,EAAE;QAC3F,IAAI,IAAI,GAAG,EAAE,CAAC;;QAEd,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACjE,IAAI,IAAI,MAAM,GAAG,eAAe,CAAC,YAAY,GAAG,MAAM,GAAG,eAAe,CAAC,YAAY,GAAG,MAAM,GAAG,eAAe,CAAC,OAAO,GAAG,MAAM;gBAC7H,MAAM,GAAG,eAAe,CAAC,YAAY,GAAG,QAAQ,GAAG,eAAe,CAAC,YAAY,GAAG,IAAI,GAAG,eAAe,CAAC,YAAY,GAAG,MAAM;gBAC9H,MAAM,GAAG,eAAe,CAAC,YAAY,GAAG,MAAM,GAAG,eAAe,CAAC,YAAY,GAAG,MAAM,GAAG,eAAe,CAAC,OAAO,GAAG,MAAM;gBACzH,MAAM,GAAG,eAAe,CAAC,YAAY,GAAG,QAAQ,GAAG,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC;SAC9F;;QAED,IAAI,IAAI,CAAC,YAAY;YACjB,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC7G,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC3D,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;;YAE1G,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY;gBACvC,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS;gBACpC,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;SAC9E;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC7D,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;YAC3G,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY;gBACxC,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS;gBACrC,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;SAC9E;QACD,IAAI,IAAI,CAAC,YAAY;YACjB,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;;QAExE,IAAI,QAAQ,CAAC;;QAEb,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,EAAE;YACvD,QAAQ,GAAG,aAAa,CAAC,yBAAyB,EAAE,CAAC;YACrD,aAAa,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjD,IAAI,IAAI,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,eAAe,CAAC,YAAY,GAAG,MAAM,CAAC;SAC5E;;QAED,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1D,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;gBAC7F,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY;oBAC1B,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;gBAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS;oBACvB,aAAa,CAAC,uBAAuB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;aAC9E;SACJ;;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,EAAE;YACvD,IAAI,IAAI,MAAM,GAAG,eAAe,CAAC,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;YACzE,aAAa,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;SACnD;;QAED,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ;YACvE,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QACrH,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE;QACnD,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KACnJ,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE;QACpD,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACvC,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE;QACnD,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACtC,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAC7C,IAAI,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACxD,IAAI,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC;QAC5C,IAAI,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC;QAC5C,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,EAAE;YAC7D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;YACvG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACrF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAChF,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC;gBAC3E,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC;aAClE;SACJ;aACI;YACD,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SAC3B;QACD,IAAI,uBAAuB,IAAI,IAAI,CAAC,oBAAoB,IAAI,iBAAiB,IAAI,IAAI,CAAC,cAAc,IAAI,iBAAiB,IAAI,IAAI,CAAC,cAAc,EAAE;YAC9I,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;KACJ,CAAC;;;;;;IAMF,UAAU,CAAC,SAAS,CAAC,6BAA6B,GAAG,UAAU,oBAAoB,EAAE;QACjF,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACzF,CAAC;;;;;;IAMF,UAAU,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,cAAc,EAAE;QACrE,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;KACrE,CAAC;;;;;;IAMF,UAAU,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,cAAc,EAAE;QAChE,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG4F,0BAAY,CAAC,MAAM,CAAC,IAAI,CAAC;YAChE,EAAE,WAAW,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,GAAGA,0BAAY,CAAC,MAAM,CAAC,IAAI,CAAC;YAC/D,EAAE,WAAW,CAAC;;QAElB,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;KACnF,CAAC;IACF,OAAO,UAAU,CAAC;CACrB,CAACU,sBAAQ,CAAC,CAAC,CACU;;ACrzBtB;;;;AAIA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvC7H,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;IAM7C,SAAS,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE;QAC/C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC;QAC9D,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;QACjC,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;QACnC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE;;;;QAI5D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,2BAA2B,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,qBAAqB,GAAG,CAAC,CAAC;SACnU;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,eAAe,EAAE;;;;QAIhE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC;SAC3M;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE;QAC9D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;SAC3C;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;;QAKrE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;SAClD;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,EAAE;;;;;;;QAOtE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC;SACnD;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,sBAAsB,EAAE;;;;;;;QAOvE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;SACpD;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACrD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,kBAAkB,CAAC,UAAU,EAAE;YAC5D,IAAI,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,qBAAqB;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC;oBACtD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;SACzD;QACD,IAAI,IAAI,CAAC,KAAK;YACV,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;;;QAGjD,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,kBAAkB,CAAC,WAAW;YAC/H,IAAI,CAAC,cAAc,EAAE,CAAC;aACrB,IAAI,IAAI,CAAC,KAAK;YACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;;QAE5B,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,kBAAkB,CAAC,UAAU;YAC/F,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC1B,IAAI,IAAI,CAAC,gBAAgB;YAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;;QAEjC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,kBAAkB,CAAC,UAAU;YACpF,IAAI,CAAC,wBAAwB,EAAE,CAAC;aAC/B,IAAI,IAAI,CAAC,qBAAqB;YAC/B,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACzC,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,uBAAuB,GAAG,YAAY;QAC9D,IAAI,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;;QAEpE,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAC1D,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAACoE,0BAAS,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;SACzF;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,kBAAkB,GAAG,CAAC,CAAC;;;YAG3B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACxB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;gBAClE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAACA,0BAAS,CAAC,MAAM,CAAC,CAAC;gBACpE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;gBAC9F,kBAAkB,GAAG,CAAC,CAAC;aAC1B;;YAED,KAAK,IAAI,CAAC,GAAG,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBACzE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;gBAClE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAACA,0BAAS,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,GAAGM,kCAAoB,CAAC,UAAU,CAAC;aAC3F;SACJ;QACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,qBAAqB,EAAE;;YAErD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;;YAEhC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,GAAGA,kCAAoB,CAAC,UAAU,CAAC;gBACrE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAACN,0BAAS,CAAC,KAAK,CAAC,CAAC;aACnD;SACJ;aACI,IAAI,IAAI,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,IAAIA,0BAAS,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC;;YAEzN,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,YAAY,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,IAAIA,0BAAS,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAGA,0BAAS,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACnK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;SAC9E;KACJ,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;QAC1D,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9F,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,IAAI0D,+BAAiB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QACvE,IAAI,CAAC,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;QACzE,IAAI,CAAC,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;QACzE,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QACvE,IAAI,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;KAC9E,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QAC5D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,wBAAwB,GAAG,YAAY;QAC/D,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC;QACT,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,oBAAoB,CAAC;QACzE,IAAI,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC;QACrE,IAAI,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC;QACrE,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,2BAA2B,CAAC;YAC7E,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,qBAAqB,CAAC;SAC5E;QACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,KAAK,EAAE,CAAC;QACzC,OAAO,cAAc,GAAG,YAAY,IAAI,gBAAgB,GAAG,cAAc,IAAI,WAAW,GAAG,cAAc,EAAE;YACvG,IAAI,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACzE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,IAAI,IAAI,CAAC;YAChE,IAAI,CAAC,uBAAuB,GAAG,cAAc,CAAC;YAC9C,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;YAC1C,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YACpD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;YACtD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;YAC1D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,cAAc,IAAI,IAAI,CAAC,oBAAoB,CAAC;YAC5C,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAC;YACxC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC;SACtC;KACJ,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,0BAA0B,GAAG,YAAY;QACjE,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAC3B,OAAO;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACrC,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa;YAC9D,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa;YAC9D,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc;YAChE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY;YAC5D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACrB,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACrD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAClB,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACvF,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,kBAAkB,CAAC,WAAW,EAAE;YAC7D,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;YAC5D,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;SAC/D;aACI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,kBAAkB,CAAC,UAAU,EAAE;YACjE,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE;gBACrB,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;aACjE;iBACI;gBACD,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;aACnC;YACD,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;SAC/D;;QAED,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,YAAY,CAAC;QACjB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,GAAG,EAAE;YACZ,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;gBACjD,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,YAAY,IAAI,IAAI,EAAE;oBACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB;wBAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;;wBAE9C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;iBAChD;aACJ;YACD,CAAC,EAAE,CAAC;SACP;KACJ,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACnD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;KAE9C,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAACC,6BAAe,CAAC,CAAC,CACU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AthBjS7B;;;;;;;;;;;;;;;;AAgBA,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;IACrC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;;AAExE,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAC5B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CACxF;;AAQA;;AAUA;;AAOA;;AAIA;;AAIA;;AASA;;AA4BA;;AAIA;;AAWA;;AAEM,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IACzB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI;QACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC9E;IACD,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;YAC/B;QACJ,IAAI;YACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpD;gBACO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;KACpC;IACD,OAAO,EAAE,CAAC;CACb;;AAMA;;AAEM,SAAS,OAAO,CAAC,CAAC,EAAE;IACvB,OAAO,IAAI,YAAY,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;CAqBlE;;AuhBxJP,IAAI,wBAAwB,GAAG,CAAC,UAAU,MAAM,EAAE;IAC9C/H,SAAiB,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IACpD,SAAS,wBAAwB,GAAG;QAChC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KAChD;IACD,wBAAwB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,QAAQ,EAAE;QACrE,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,EAAE;QAC7C,OAAO,IAAIgI,uBAAS,CAAC,QAAQ,CAAC,CAAC;KAClC,CAAC;IACF,wBAAwB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE;QAChE,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE;QACzC,IAAI,MAAM;YACN,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;QACjC,OAAO,IAAIC,oBAAM,EAAE,CAAC;KACvB,CAAC;IACF,wBAAwB,CAAC,SAAS,CAAC,4BAA4B,GAAG,YAAY;QAC1E,OAAO,IAAIC,oCAAsB,EAAE,CAAC;KACvC,CAAC;IACF,wBAAwB,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QAC7D,OAAO,IAAIC,uBAAS,EAAE,CAAC;KAC1B,CAAC;IACF,wBAAwB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,QAAQ,EAAE;QACrE,OAAO,IAAIC,uBAAS,CAAC,QAAQ,CAAC,CAAC;KAClC,CAAC;IACF,wBAAwB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,UAAU,EAAE,KAAK,EAAE;QAC7E,OAAO,IAAIC,gCAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KAChD,CAAC;IACF,OAAO,wBAAwB,CAAC;CACnC,CAACC,uCAAsB,CAAC,CAAC,CACU;;ACjCpC,IAAI,SAAS,GAAG,CAAC,YAAY;IACzB,SAAS,SAAS,GAAG;KACpB;IACD,OAAO,SAAS,CAAC;CACpB,EAAE,CAAC,CAAC;AAEL,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAClC,SAAS,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACjC,SAAS,CAAC,4BAA4B,GAAG,CAAC,CAAC;AAC3C,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAClC,SAAS,CAAC,oBAAoB,GAAG,MAAM,CAAC;AACxC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;AAC3B,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;AACtB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;AACnB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;AACnB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACpB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACpB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACpB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACrB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACrB,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;AACtB,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;AACtB,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;AACpB,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;AACrB,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;AACrB,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB,SAAS,CAAC,YAAY,GAAG,EAAE,CAAC;AAC5B,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;AACtB,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;AACtB,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;AACtB,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;;AChCtB,IAAI,QAAQ,GAAG,CAAC,YAAY;IACxB,SAAS,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE;QAClC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,mBAAmB,CAAC;QAC3C,IAAI,CAAC,iBAAiB,GAAG,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,KAAK,EAAE,CAAC;QACjC,IAAI,SAAS,IAAI,EAAE,EAAE;YACjB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;KACpC;IACD,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACrC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACrC,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,QAAQ,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,aAAa;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACrC,CAAC;IACF,OAAO,QAAQ,CAAC;CACnB,EAAE,CAAC,CACgB;;ACjBpB;;;AAGA,IAAI,SAAS,GAAG,CAAC,UAAU,MAAM,EAAE;IAC/BtI,SAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;;;;;;IAMrC,SAAS,SAAS,CAAC,OAAO,EAAE;QACxB,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,EAAE;QAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE6B,gCAAmB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;;QAExE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;QAC9B,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC;QAC1B,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;QAC7B,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC/B,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QACtB,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC3B,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;QACrB,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QACtB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;;QAEvB,KAAK,CAAC,0BAA0B,GAAG;YAC/B,CAAC,EAAE,SAAS,CAAC,KAAK;YAClB,CAAC,EAAE,SAAS,CAAC,KAAK;YAClB,CAAC,EAAE,SAAS,CAAC,KAAK;YAClB,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,KAAK;YACpB,GAAG,EAAE,SAAS,CAAC,KAAK;YACpB,GAAG,EAAE,SAAS,CAAC,KAAK;YACpB,GAAG,EAAE,SAAS,CAAC,KAAK;YACpB,GAAG,EAAE,SAAS,CAAC,IAAI;YACnB,GAAG,EAAE,SAAS,CAAC,IAAI;YACnB,GAAG,EAAE,SAAS,CAAC,MAAM;SACxB,CAAC;QACF,KAAK,CAAC,6BAA6B,GAAG;YAClC,CAAC,EAAE,SAAS,CAAC,IAAI;YACjB,CAAC,EAAE,SAAS,CAAC,IAAI;SACpB,CAAC;QACF,KAAK,CAAC,0BAA0B,GAAG;YAC/B,CAAC,EAAE,SAAS,CAAC,KAAK;YAClB,CAAC,EAAE,SAAS,CAAC,KAAK;YAClB,CAAC,EAAE,SAAS,CAAC,KAAK;YAClB,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;YAC9B,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,KAAK;YACpB,GAAG,EAAE,SAAS,CAAC,KAAK;YACpB,GAAG,EAAE,SAAS,CAAC,KAAK;YACpB,GAAG,EAAE,SAAS,CAAC,KAAK;YACpB,GAAG,EAAE,SAAS,CAAC,IAAI;YACnB,GAAG,EAAE,SAAS,CAAC,IAAI;SACtB,CAAC;QACF,KAAK,CAAC,QAAQ,GAAG,OAAO,IAAI,IAAI,wBAAwB,EAAE,CAAC;QAC3D,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,IAAI,CAACuC,0BAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,GAAG,CAAC,CAAC;QACvC,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,YAAY,CAAC,IAAI,CAACA,0BAAS,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QAClC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;KAChB;;;;;;IAMD,SAAS,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;QAC1C,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,SAAS,IAAI,KAAK,CAAC;KAC7B,CAAC;;;;;;IAMF,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QACrC,OAAO,CAACpC,wBAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;KACnD,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,kBAAkB,EAAE;;;;QAIpE,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACvC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/D,IAAI,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE;gBACvB,IAAI,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/C,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC;;;gBAG9B,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,MAAM;oBACX,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;aAChE;iBACI,IAAI,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE;gBAC5B,IAAI,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/C,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC;;;;gBAI9B,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,MAAM;oBACX,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;aAClE;iBACI,IAAI,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE;gBAC5B,UAAU,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzF,UAAU,CAAC,uBAAuB,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,MAAM;oBACX,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,kBAAkB,CAAC,MAAM,GAAG,sBAAsB,CAAC,CAAC;gBACpG,IAAI,UAAU,CAAC,uBAAuB,IAAI,CAAC,EAAE;oBACzC,IAAI,gBAAgB,GAAG,IAAIuG,gCAAe,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBACpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;wBACtB,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChE,UAAU,CAAC,IAAI,GAAG,gBAAgB,CAAC;oBACnC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;oBACxD,IAAI,IAAI,CAAC,MAAM;wBACX,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpE;aACJ;YACD,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU;gBACrC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC1C;KACJ,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,kBAAkB,EAAE;;;KAG9E,CAAC;;;;;;IAMF,SAAS,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,kBAAkB,EAAE,KAAK,EAAE;QAC/E,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,IAAI,KAAK,EAAE;YACP,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;;;YAG1D,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SAChD;QACD,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;QACrB,OAAO,OAAO,CAAC;KAClB,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAC/C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;;;;;;;YAQtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,QAAQ,IAAI,CAAC,YAAY;gBACrB,KAAK,SAAS,CAAC,OAAO,CAAC;gBACvB,KAAK,SAAS,CAAC,IAAI;oBACf,IAAI,CAAC,cAAc,CAAC,0CAA0C,CAAC,CAAC;oBAChE,MAAM;gBACV,KAAK,SAAS,CAAC,YAAY;oBACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC5B,MAAM;aACb;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa;gBAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;;;YAG1B,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE;gBACrC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,YAAY;oBACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC1rB,OAAOxG,uBAAU,CAAC,YAAY,CAAC;aAClC;iBACI;gBACD,OAAOA,uBAAU,CAAC,aAAa,CAAC;aACnC;SACJ;aACI;YACD,QAAQ,IAAI,CAAC,YAAY;gBACrB,KAAK,SAAS,CAAC,OAAO,CAAC;gBACvB,KAAK,SAAS,CAAC,IAAI;oBACf,IAAI,IAAI,CAAC,MAAM;wBACX,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;oBACrF,MAAM;aACb;;YAED,OAAOA,uBAAU,CAAC,YAAY,CAAC;SAClC;KACJ,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,UAAU,EAAE;;QAEvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAC1D,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACtC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,OAAO,EAAE,CAAC;SACf;KACJ,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QAC7C,IAAI,KAAK,CAAC;QACV,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,EAAE,CAAC;QACP,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,CAAC;;QAER,IAAI,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;;QAE3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAClD,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACrC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACtC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACnC,IAAI,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC9D;QACD,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE;YACtC,IAAI,CAAC,cAAc,CAAC,gEAAgE,CAAC,CAAC;YACtF,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACtD,OAAO;SACV;;;QAGD,IAAI,gBAAgB,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,0CAA0C,CAAC,CAAC;YAChE,IAAI,CAAC,cAAc,GAAG,IAAID,sBAAS,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,CAAC;SACpC;aACI;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;SACpC;;;;;;QAMD,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QAChB,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,GAAG,CAAC;QACvD,IAAI,gBAAgB,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,0CAA0C,CAAC,CAAC;SACnE;QACD,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,GAAG,cAAc,GAAG,IAAI,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,IAAI,CAAC,eAAe,GAAG,0BAA0B,GAAG,IAAI,CAAC,YAAY,GAAG,4BAA4B,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QAClR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;;YAEpD,QAAQ,IAAI;gBACR,KAAK,EAAE;oBACH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACjD,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpD,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACzC,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxC,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxC,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC7C,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACzC,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;aACb;SACJ;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAChF,QAAQ,IAAI;gBACR,KAAK,EAAE;oBACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxC,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC7C,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpC,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACrC,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;;;;;gBAKV,KAAK,EAAE;oBACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC1C,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC1C,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC1C,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAChD,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAChD,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;oBACxD,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACjD,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC1C,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACtC,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;aACb;SACJ;QACD,IAAI,QAAQ,IAAI,KAAK,EAAE;YACnB,QAAQ,IAAI;gBACR,KAAK,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACvC,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxC,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC7C,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACvC,MAAM;gBACV,KAAK,EAAE;oBACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACtC,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACvC,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC3C,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAChD,MAAM;gBACV,KAAK,GAAG,CAAC;;;gBAGT,KAAK,GAAG;oBACJ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxC,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACvC,MAAM;gBACV;oBACI,IAAI,IAAI,CAAC,MAAM;wBACX,OAAO,CAAC,GAAG,CAAC,4CAA4C,GAAG,IAAI,CAAC,aAAa,GAAG,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC;oBAClH,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,GAAG,CAAC;oBACpC,MAAM;aACb;SACJ;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,aAAa;gBAC7C,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC,CAAC;YAC/G,IAAI,KAAK,CAAC,aAAa,EAAE;gBACrB,IAAI,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;gBACrC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE;oBACvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;aACjF;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACrB;QACD,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa;YACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QAC/C,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC;QAC7B,IAAI,IAAI,IAAI,CAAC,EAAE;YACX,IAAI,CAAC,cAAc,IAAI,UAAU,CAAC;YAClC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;aACI,IAAI,IAAI,IAAI,GAAG,EAAE;YAClB,IAAI,CAAC,cAAc,IAAI,UAAU,CAAC;YAClC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;aACI,IAAI,IAAI,IAAI,GAAG,EAAE;YAClB,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;aACI,IAAI,IAAI,IAAI,GAAG,EAAE;YAClB,IAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC;YACpC,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;aACI,IAAI,IAAI,IAAI,EAAE,EAAE;YACjB,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;aACI,IAAI,IAAI,IAAI,EAAE,EAAE;YACjB,IAAI,CAAC,cAAc,IAAI,UAAU,CAAC;YAClC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;aACI,IAAI,IAAI,IAAI,EAAE,EAAE;YACjB,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC;YACnC,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;aACI,IAAI,IAAI,IAAI,EAAE,EAAE;YACjB,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC;YACjC,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;KACJ,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,OAAO,EAAE;QACzD,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAClC,IAAI,QAAQ,GAAG0G,yBAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,QAAQ,IAAI,SAAS,EAAE;YACvB,QAAQ,GAAG,IAAIC,kBAAI,EAAE,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;SAClB;QACD,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QAC3D,IAAI,mBAAmB,CAAC;QACxB,IAAI,eAAe,CAAC;QACpB,IAAI,cAAc,CAAC;QACnB,IAAI,eAAe,CAAC;QACpB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,MAAM,CAAC;QACX,IAAI,MAAM,CAAC;QACX,IAAI,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,EAAE;YACrC,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;;;;;;;YAOrC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,EAAEC,iCAAmB,CAAC,SAAS,CAAC,CAAC;YACzF,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;YACvE,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;YAC3E,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YACxD,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;;YAEzD,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,EAAE,CAAC,EAAE;;gBAE1C,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;gBACxD,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;gBACjD,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;gBAC/C,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC;;gBAE/C,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAM,EAAE;;oBAE1C,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;oBAClD,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;oBACnD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;oBAChD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC;;;;;;;;;;;;;;;;oBAgBjD,IAAI,QAAQ,IAAI,EAAE,EAAE;wBAChB,UAAU,GAAG,EAAE,CAAC;wBAChB,IAAI,SAAS,GAAG,IAAI5G,sBAAS,CAAC,OAAO,CAAC,CAAC;wBACvC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACxD;yBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;wBACrB,UAAU,GAAG,CAAC,CAAC;wBACf,IAAI,SAAS,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;wBACvC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACxD;yBACI;wBACD,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC;qBAC1C;iBACJ;gBACD,IAAI,SAAS,EAAE;oBACX,IAAI,YAAY,GAAG,IAAIf,6BAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;oBAC1E,YAAY,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;;oBAE/D,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;iBACzG;aACJ;SACJ;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;KACrD,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,OAAO,EAAE;QACrD,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAClC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QACpE,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,aAAa,GAAG,IAAI4H,wBAAU,EAAE,CAAC;QACrC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;;QAEpC,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,UAAU,IAAI,IAAI,EAAE;YACpB,aAAa,CAAC,UAAU,GAAG,eAAe,CAAC;YAC3C,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC;SACzC;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QACnE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;;QAErB,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAC3D,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,EAAE,KAAK,EAAE;YAC9C,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QACvD,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;QACpC,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACxE,aAAa,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,aAAa,CAAC,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;QAErD,aAAa,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;;QAElD,IAAI,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,YAAY,IAAI,CAAC,EAAE;YACnB,aAAa,CAAC,KAAK,GAAG,OAAO,CAAC;SACjC;aACI,IAAI,YAAY,IAAI,CAAC,EAAE;YACxB,aAAa,CAAC,KAAK,GAAG,QAAQ,CAAC;SAClC;aACI,IAAI,YAAY,IAAI,CAAC,EAAE;YACxB,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC;SACnC;QACD,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,aAAa,CAAC,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,aAAa,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,aAAa,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,aAAa,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9C,aAAa,CAAC,QAAQ,GAAG,GAAG,CAAC;QAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;;QAE3B,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;KACnF,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,OAAO,EAAE;QACpD,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAClC,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QACnD,IAAI,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAC7D,YAAY,CAAC,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC9D,IAAI,eAAe,IAAI,CAAC;YACpB,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC;;QAE1C,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/D,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;QAChE,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QAC3D,IAAI,aAAa,GAAG,EAAE,CAAC;;QAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,cAAc,EAAE,OAAO,EAAE,EAAE;YACvD,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;;YAEzD,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE,WAAW,EAAE,EAAE;gBACjE,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;gBAC3E,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;;gBAEvD,IAAI,UAAU,GAAG,CAAC,EAAE;oBAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;;oBAE5D,aAAa,IAAI,QAAQ,CAAC;iBAC7B;aACJ;SACJ;QACD,YAAY,CAAC,UAAU,GAAG,WAAW,CAAC;QACtC,YAAY,CAAC,IAAI,GAAG,aAAa,CAAC;;;QAGlC,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAChE,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9C,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;;;;;QAM1C,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;;QAEhD,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,IAAI,GAAG,YAAY,GAAG,aAAa,CAAC,CAAC;KACzF,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,OAAO,EAAE;QAChE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QACnE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;;QAEnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,IAAI,GAAG,oBAAoB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;KACpG,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,OAAO,EAAE;QAC7D,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QACpD,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;QACtC,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QAC5D,IAAI,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC;QACR,KAAK,IAAI,gBAAgB,GAAG,CAAC,EAAE,gBAAgB,GAAG,aAAa,EAAE,gBAAgB,EAAE,EAAE;YACjF,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,IAAI5F,uCAAsB,CAAC,kBAAkB,EAAE,CAAC,CAAC;;;YAGhH,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC7B,SAAS,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC;YAClC,aAAa,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;SAC9C;QACD,IAAI,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;QAC5C,IAAI,CAAC,oBAAoB,IAAI,UAAU,CAAC;QACxC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,EAAE;YACrD,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;SAClC;aACI,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;;;YAG5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;oBACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzF;aACJ;SACJ;QACD,IAAI,OAAO,CAAC;QACZ,IAAI,KAAK,CAAC;QACV,IAAI,QAAQ,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;;;QAGpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;YAClD,OAAO,GAAG,IAAIiB,0BAAS,EAAE,CAAC;YAC1B,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACtC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;YAC7C,IAAI,CAAC,QAAQ,EAAE;gBACX,KAAK,GAAG,IAAI,CAAC;aAChB;YACD,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,KAAK,GAAG,IAAIC,sBAAK,EAAE,CAAC;gBAC1B,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/D;YACD,IAAI,IAAI,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;gBACzC,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;gBACzC,IAAI,KAAK,EAAE;oBACP,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC3B,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAIzD,mBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;iBACzD;aACJ;iBACI,IAAI,IAAI,IAAI,CAAC,EAAE;gBAChB,IAAI,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACzC,IAAI,KAAK,EAAE;oBACP,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC3B,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAIA,mBAAM,CAAC,MAAM,CAAC,CAAC;iBAC7C;aACJ;iBACI,IAAI,IAAI,IAAI,CAAC,EAAE;gBAChB,IAAI,SAAS,GAAG,IAAIA,mBAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;gBACrK,IAAI,KAAK,EAAE;oBACP,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC3B,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;iBACpC;aACJ;iBACI,IAAI,IAAI,IAAI,CAAC,EAAE;gBAChB,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;gBACxC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;gBACxC,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;gBAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;gBAC7C,IAAI,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACzC,IAAI,KAAK,EAAE;oBACP,OAAO,CAAC,SAAS,GAAG,IAAIF,sBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACvD,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;oBAC1B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC3B,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAIE,mBAAM,CAAC,MAAM,CAAC,CAAC;iBAC7C;aACJ;YACD,IAAI,KAAK,EAAE;;gBAEP,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC;oBAC3C,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;aAC9B;;YAED,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;SACzC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACpE,MAAM,CAAC,iBAAiB,GAAG,IAAIM,qBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACnF,MAAM,CAAC,iBAAiB,GAAG,IAAIA,qBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACnF,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,IAAI,GAAG,oBAAoB,GAAG,QAAQ,CAAC,IAAI,GAAG,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,iBAAiB,GAAG,aAAa,CAAC,CAAC;KAC3L,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,OAAO,EAAE;;QAErD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAClD,IAAI,QAAQ,CAAC;;QAEb,IAAI,IAAI,IAAI,CAAC,EAAE;YACX,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,GAAG,CAAC;YACR,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;;YAEjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAImB,uBAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACrG;aACI;;YAED,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,IAAI,GAAG,IAAIH,sBAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;;;YAGjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACtF;;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1D,IAAI,CAAC,8BAA8B,EAAE,CAAC;;QAEtC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;KACrF,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,OAAO,EAAE;QACpD,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,IAAI,SAAS,CAAC;QACd,IAAI,YAAY,GAAG,IAAI8G,sBAAQ,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;;;;;;;;;QAS9B,IAAI,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,EAAE,CAAC,EAAE,EAAE;YACvC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;YACrE,IAAI,SAAS,IAAI,IAAI,EAAE;gBACnB,YAAY,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;aAClD;iBACI;;;gBAGD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;aAC7D;SACJ;QACD,IAAI,yBAAyB,GAAG,oBAAoB,CAAC;QACrD,IAAI,oCAAoC,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACnF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oCAAoC,EAAE,CAAC,EAAE,EAAE;YACvD,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;YACrE,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAC5D,yBAAyB,IAAI,aAAa,CAAC;YAC3C,IAAI,SAAS,IAAI,IAAI,EAAE;gBACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE;oBAC9B,YAAY,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;aACtD;iBACI;gBACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;;;oBAGhC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;iBAC7D;aACJ;SACJ;QACD,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,oBAAoB,GAAG,oCAAoC,CAAC,GAAG,0CAA0C,GAAG,yBAAyB,GAAG,aAAa,CAAC,CAAC;;QAEpL,IAAI,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACnE,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACrD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;;;YAG1B,IAAI,WAAW,GAAG,CAAC;gBACf,QAAQ,GAAG,WAAW,CAAC;;gBAEvB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;;YAEtD,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;;YAEvD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YAChD,IAAI,OAAO,GAAG,CAAC,EAAE;gBACb,IAAI,4BAA4B,GAAG,IAAI9G,sBAAS,CAAC,OAAO,CAAC,CAAC;gBAC1D,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,4BAA4B,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxE,IAAI,UAAU,CAAC;;gBAEf,QAAQ,aAAa;oBACjB,KAAK,CAAC;wBACF,UAAU,GAAG,IAAI,UAAU,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;wBACrE,MAAM;oBACV,KAAK,CAAC;wBACF,UAAU,GAAG,IAAI,WAAW,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;wBACtE,MAAM;oBACV,KAAK,CAAC;wBACF,UAAU,GAAG,IAAI,WAAW,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;wBACtE,MAAM;iBACb;gBACD,QAAQ,QAAQ;oBACZ,KAAK,CAAC;wBACF,YAAY,CAAC,kBAAkB,GAAG,UAAU,CAAC;wBAC7C,YAAY,CAAC,YAAY,GAAG,OAAO,GAAG,aAAa,CAAC;wBACpD,MAAM;oBACV,KAAK,CAAC;wBACF,YAAY,CAAC,qBAAqB,GAAG,UAAU,CAAC;wBAChD,MAAM;oBACV,KAAK,CAAC;wBACF,YAAY,CAAC,YAAY,GAAG,UAAU,CAAC;wBACvC,MAAM;oBACV,KAAK,CAAC;wBACF,YAAY,CAAC,qBAAqB,GAAG,UAAU,CAAC;wBAChD,MAAM;oBACV,KAAK,CAAC;wBACF,YAAY,CAAC,oBAAoB,GAAG,UAAU,CAAC;wBAC/C,MAAM;oBACV,KAAK,CAAC;wBACF,YAAY,CAAC,gBAAgB,GAAG,UAAU,CAAC;wBAC3C,MAAM;oBACV,KAAK,CAAC;wBACF,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC;wBAC9C,MAAM;oBACV,KAAK,CAAC;wBACF,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC;wBAC9C,MAAM;oBACV,KAAK,CAAC;wBACF,YAAY,CAAC,iCAAiC,GAAG,UAAU,CAAC;wBAC5D,MAAM;oBACV,KAAK,CAAC;wBACF,YAAY,CAAC,gCAAgC,GAAG,UAAU,CAAC;wBAC3D,MAAM;oBACV,KAAK,EAAE;wBACH,YAAY,CAAC,oBAAoB,GAAG,UAAU,CAAC;wBAC/C,MAAM;oBACV,KAAK,EAAE;wBACH,YAAY,CAAC,qBAAqB,GAAG,UAAU,CAAC;wBAChD,MAAM;oBACV,KAAK,EAAE;wBACH,YAAY,CAAC,qBAAqB,GAAG,UAAU,CAAC;wBAChD,MAAM;iBACb;aACJ;YACD,WAAW,EAAE,CAAC;SACjB;QACD,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,gBAAgB,CAAC;QACrB,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;YAC1B,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;YAClD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YAChD,QAAQ,QAAQ;gBACZ,KAAK,CAAC;oBACF,gBAAgB,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC5D,YAAY,CAAC,mCAAmC,GAAG,IAAI,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBACjG,MAAM;gBACV,KAAK,CAAC;oBACF,gBAAgB,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC5D,YAAY,CAAC,6BAA6B,GAAG,IAAI,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBAC3F,MAAM;gBACV,KAAK,CAAC;oBACF,gBAAgB,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC5D,YAAY,CAAC,6BAA6B,GAAG,IAAI,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBAC3F,MAAM;gBACV,KAAK,CAAC;oBACF,gBAAgB,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC5D,YAAY,CAAC,wBAAwB,GAAG,IAAI,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBACtF,MAAM;gBACV,KAAK,CAAC;oBACF,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;;oBAElD,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,EAAE;wBAC7B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;qBACtF;oBACD,MAAM;gBACV,KAAK,CAAC;oBACF,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;oBAClD,IAAI,kBAAkB,GAAG,EAAE,CAAC;oBAC5B,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,EAAE;wBAC7B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;qBACtG;oBACD,YAAY,CAAC,yBAAyB,GAAG,kBAAkB,CAAC;oBAC5D,MAAM;gBACV,KAAK,CAAC;oBACF,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;oBAClD,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,EAAE;wBAC7B,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;wBAC1D,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;;wBAExD,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;qBAC5F;oBACD,MAAM;aACb;SACJ;QACD,YAAY,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAChE,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,IAAI,GAAG,cAAc,GAAG,OAAO,GAAG,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KAClI,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,OAAO,EAAE;QACnD,IAAI,QAAQ,GAAG,IAAIU,yBAAQ,EAAE,CAAC;;QAE9B,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;;QAE1D,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC/D,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,YAAY,GAAG,WAAW,CAAC,gBAAgB,CAAC;QAChD,IAAI,cAAc,GAAG,IAAI,CAAC;;QAE1B,cAAc,GAAG,IAAI,CAAC;QACtB,KAAK,IAAI,eAAe,GAAG,CAAC,EAAE,eAAe,GAAG,WAAW,EAAE,eAAe,EAAE,EAAE;YAC5E,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,MAAM,EAAE,MAAM,CAAC;YACnB,IAAI,SAAS,CAAC;YACd,IAAI,OAAO,CAAC;YACZ,IAAI,aAAa,CAAC;YAClB,gBAAgB,GAAG,CAAC,CAAC;YACrB,eAAe,GAAG,CAAC,CAAC;YACpB,YAAY,GAAG,WAAW,CAAC,gBAAgB,CAAC;YAC5C,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YAC/C,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC;YAC/C,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;;YAEvE,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAM,EAAE;gBAC1C,IAAI,GAAG,GAAG,CAAC,CAAC;gBACZ,IAAI,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;;gBAE1C,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;gBAClD,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;gBACnD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;gBAChD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACjD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACZ,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACf,IAAI,KAAK,GAAG,EAAE,CAAC;oBACf,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,EAAE;wBAC3C,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACvC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACvC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACvC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;wBACjB,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;wBACjB,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;qBACpB;iBACJ;qBACI,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACpB,IAAI,OAAO,GAAG,EAAE,CAAC;oBACjB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO;wBACzC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;iBAChE;qBACI,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACpB,IAAI,GAAG,GAAG,EAAE,CAAC;oBACb,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO;wBACzC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBACvD;qBACI,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACpB,IAAI,OAAO,GAAG,EAAE,CAAC;oBACjB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO;wBACzC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC3D;qBACI,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACpB,SAAS,GAAG,KAAK,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO;wBACzC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;iBACtE;qBACI,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACpB,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO;wBACzC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC3D;qBACI,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACpB,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC;iBAC1C;qBACI,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACpB,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC;iBAC1C;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC;oBAC9C,UAAU,GAAG,EAAE,CAAC;oBAChB,IAAI,SAAS,GAAG,IAAIV,sBAAS,CAAC,OAAO,CAAC,CAAC;oBACvC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;iBACxD;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC;oBAC9C,UAAU,GAAG,EAAE,CAAC;oBAChB,IAAI,SAAS,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBACvC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;iBACxD;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC;oBAC9C,UAAU,GAAG,EAAE,CAAC;oBAChB,IAAI,SAAS,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBACvC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;iBACxD;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC;oBACzC,IAAI,aAAa,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC/E,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;oBACzD,cAAc,GAAG,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;oBAChE,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;oBACzD,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;iBAC3D;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,mBAAmB,CAAC;;oBAE/C,UAAU,GAAG,CAAC,CAAC;oBACf,IAAI,QAAQ,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBACtC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;iBACvD;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC;oBAC9C,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;oBACzD,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;iBAC3D;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC;oBAC9C,UAAU,GAAG,CAAC,CAAC;oBACf,IAAI,SAAS,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBACvC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;iBACxD;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,yBAAyB,CAAC;oBACrD,UAAU,GAAG,CAAC,CAAC;oBACf,IAAI,SAAS,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBACvC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;iBACxD;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,yBAAyB,CAAC;oBACrD,UAAU,GAAG,CAAC,CAAC;oBACf,IAAI,SAAS,GAAG,IAAIA,sBAAS,CAAC,OAAO,CAAC,CAAC;oBACvC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;iBACxD;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,aAAa,GAAG,EAAE,CAAC;oBACnB,IAAI,GAAG,GAAG,CAAC,CAAC;oBACZ,IAAI,IAAI,GAAG,CAAC,CAAC;oBACb,QAAQ,CAAC,eAAe,GAAG,IAAIxB,sBAAS,EAAE,CAAC;oBAC3C,QAAQ,CAAC,kBAAkB,GAAG,IAAIA,sBAAS,EAAE,CAAC;oBAC9C,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,EAAE;wBAC3C,IAAI,GAAG,IAAI,CAAC;4BACR,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BACjE,IAAI,GAAG,IAAI,CAAC;4BACb,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BACjE,IAAI,GAAG,IAAI,CAAC;4BACb,QAAQ,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BACrE,IAAI,GAAG,IAAI,CAAC;4BACb,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BACtE,IAAI,GAAG,IAAI,CAAC;4BACb,QAAQ,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BACpE,IAAI,GAAG,IAAI,CAAC;4BACb,QAAQ,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BACpE,IAAI,GAAG,IAAI,CAAC;4BACb,QAAQ,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BACxE,IAAI,GAAG,IAAI,CAAC;4BACb,QAAQ,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;;4BAE1E,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;wBAC1D,GAAG,EAAE,CAAC;qBACT;iBACJ;qBACI,IAAI,QAAQ,IAAI,EAAE,EAAE;oBACrB,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC;;oBAEvC,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC1C,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;oBAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;oBACtD,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;oBACxD,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;oBAC7C,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBACrC,IAAI,QAAQ,CAAC;oBACb,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,EAAE;wBAC3C,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;wBAC3C,IAAI,QAAQ,IAAI,GAAG,EAAE;4BACjB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;yBACrF;6BACI,IAAI,QAAQ,IAAI,GAAG,EAAE;4BACtB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;yBACrF;6BACI,IAAI,QAAQ,IAAI,GAAG,EAAE;4BACtB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;yBACxJ;qBACJ;oBACD,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACnB,QAAQ,CAAC,YAAY,GAAGuI,8BAAa,CAAC,MAAM,CAAC;iBAChD;qBACI;oBACD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;oBAC/C,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC;iBAC1C;aACJ;YACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,YAAY,IAAI,WAAW,CAAC,kBAAkB,EAAE;;gBAEhD,IAAI,YAAY,GAAG,IAAI9H,6BAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;gBAC1E,YAAY,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC/D,IAAI,cAAc,GAAG,IAAI2B,iCAAgB,CAAC,YAAY,CAAC,CAAC;gBACxD,IAAI,QAAQ,CAAC,eAAe,EAAE;oBAC1B,cAAc,CAAC,aAAa,GAAG,aAAa,CAAC;oBAC7C,cAAc,CAAC,aAAa,GAAG,IAAIpC,sBAAS,EAAE,CAAC;oBAC/C,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;oBAChE,cAAc,CAAC,kBAAkB,GAAG,IAAIA,sBAAS,EAAE,CAAC;oBACpD,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;oBACxE,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;oBAC/D,cAAc,CAAC,YAAY,CAAC,IAAIW,6BAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;oBAChEsE,8BAAa,CAAC,4BAA4B,CAAC,cAAc,EAAE,cAAc,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC7G;qBACI;oBACD,cAAc,CAAC,YAAY,CAAC,IAAItE,6BAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;oBAChE,IAAI,UAAU,IAAI,EAAE,EAAE;wBAClB,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAIL,6BAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;qBACpF;yBACI,IAAI,UAAU,IAAI,EAAE,EAAE;wBACvB,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAIC,4BAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;qBAC1F;oBACD,IAAI,UAAU,IAAI,EAAE;wBAChB,cAAc,CAAC,MAAM,CAAC,IAAII,6BAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;iBACjE;gBACD,QAAQ,CAAC,QAAQ,CAAC,IAAI2B,sBAAK,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC7C,IAAI,IAAI,CAAC,MAAM;oBACX,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;aAC5D;iBACI,IAAI,YAAY,IAAI,WAAW,CAAC,yBAAyB,EAAE;gBAC5D,IAAI,YAAY,GAAG,IAAI7B,6BAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;gBAC1E,YAAY,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC/D,IAAI,cAAc,GAAG,IAAI2B,iCAAgB,CAAC,YAAY,CAAC,CAAC;gBACxD,cAAc,CAAC,YAAY,CAAC,IAAIoG,6BAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;gBACtE,IAAI,UAAU,IAAI,CAAC,EAAE;oBACjB,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAIjI,4BAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;iBAC1F;gBACD,QAAQ,CAAC,QAAQ,CAAC,IAAI+B,sBAAK,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC7C,IAAI,IAAI,CAAC,MAAM;oBACX,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;aACvD;iBACI,IAAI,YAAY,IAAI,WAAW,CAAC,gBAAgB,EAAE;gBACnD,IAAI,iBAAiB,GAAG,IAAIF,iCAAgB,CAAC,IAAI3B,6BAAgB,EAAE,CAAC,CAAC;gBACrE,IAAI,OAAO;oBACP,iBAAiB,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC5E,IAAI,OAAO;oBACP,iBAAiB,CAAC,iBAAiB,GAAG,KAAK,CAAC;gBAChD,iBAAiB,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC5C,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtC,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACtC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC9B,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC3C,iBAAiB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC7C,IAAI,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC,IAAI,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE;oBAChD,SAAS,GAAG,IAAI,CAAC;oBACjB,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;oBAC5B,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;iBAC/B;gBACD,IAAI,SAAS;oBACT,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC9C,QAAQ,CAAC,QAAQ,CAAC,IAAI6B,sBAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAChD,IAAI,IAAI,CAAC,MAAM;oBACX,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;aAChD;iBACI,IAAI,YAAY,IAAI,WAAW,CAAC,mBAAmB,EAAE;gBACtD,IAAI,YAAY,GAAG,IAAI7B,6BAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;gBAC1E,YAAY,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC9D,IAAI,iBAAiB,GAAG,IAAI2B,iCAAgB,CAAC,YAAY,CAAC,CAAC;gBAC3D,iBAAiB,CAAC,YAAY,CAAC,IAAIzB,6BAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;;;;;;gBAMnE,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;;;;;gBAMtC,IAAI,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC,IAAI,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE;oBAChD,SAAS,GAAG,IAAI,CAAC;oBACjB,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;oBAC5B,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;iBAC/B;gBACD,IAAI,SAAS;oBACT,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC9C,cAAc,GAAG,iBAAiB,CAAC;aACtC;iBACI,IAAI,YAAY,IAAI,WAAW,CAAC,kBAAkB,EAAE;gBACrD,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI2B,sBAAK,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzD,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC;gBACpC,KAAK,CAAC,KAAK,GAAG,eAAe,GAAG,CAAC,CAAC;aACrC;iBACI,IAAI,YAAY,IAAI,WAAW,CAAC,aAAa,EAAE;gBAChD,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAIA,sBAAK,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzD,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC;gBAChC,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC;gBAC9B,IAAI,IAAI,CAAC,MAAM;oBACX,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;aAC1F;SACJ;QACD,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACpC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;KACtD,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,OAAO,EAAE;QACpD,IAAI,IAAI,CAAC;QACT,IAAI,MAAM,CAAC;QACX,IAAI,QAAQ,CAAC;QACb,IAAI,eAAe,CAAC;QACpB,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,CAAC;;QAER,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAClD,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;;QAE5D,QAAQ,QAAQ;YACZ,KAAK,CAAC;gBACF,MAAM,GAAG,IAAImG,kCAAoB,CAAC,IAAI,EAAEtG,6BAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC5L,MAAM;YACV,KAAK,CAAC;gBACF,MAAM,GAAG,IAAIuG,iCAAmB,CAAC,IAAI,EAAEvG,6BAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5M,MAAM;YACV,KAAK,CAAC;gBACF,MAAM,GAAG,IAAIwG,mCAAqB,CAAC,IAAI,EAAExG,6BAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBAClJ,MAAM;YACV,KAAK,CAAC;gBACF,MAAM,GAAG,IAAIyG,qCAAuB,CAAC,IAAI,EAAEzG,6BAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;oBACrB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;oBACrB,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;oBACrB,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;gBACvB,MAAM;YACV,KAAK,CAAC;gBACF,MAAM,GAAG,IAAI0G,iCAAmB,CAAC,IAAI,EAAE1G,6BAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC1L,MAAM;YACV,KAAK,CAAC;gBACF,MAAM,GAAG,IAAI2G,oCAAsB,CAAC,IAAI,EAAE3G,6BAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBACxK,MAAM;YACV,KAAK,CAAC;gBACF,MAAM,GAAG,IAAI4G,kCAAoB,CAAC,IAAI,EAAE5G,6BAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBACpK,MAAM;YACV;gBACI,MAAM,GAAG,IAAI6G,wBAAU,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gBAC9C,MAAM;SACb;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;SACzD;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAChC,QAAQ,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;SACxG;KACJ,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,OAAO,EAAE;QACpD,IAAI,IAAI,CAAC;QACT,IAAI,GAAG,CAAC;QACR,IAAI,GAAG,CAAC;QACR,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QACtE,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,UAAU,GAAG,iBAAiB,CAAC;QACnC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE,CAAC;QACnD,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;QAC7B,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrB,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;SAC5B;aACI;;YAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAChC;;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACpD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAChE,GAAG,CAAC,iBAAiB,GAAG,IAAIxI,qBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC3F;aACI;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SAC9B;;QAED,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,IAAI,GAAG,oBAAoB,GAAG,UAAU,CAAC,CAAC;KAC9F,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,OAAO,EAAE;QACzD,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QACtE,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACvC,IAAI,QAAQ,CAAC;QACb,IAAI,MAAM,CAAC;QACX,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC0B,yBAAQ,CAAC,EAAE;YACzB,QAAQ,GAAG,KAAK,CAAC;SACpB;aACI;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,GAAG,KAAK,CAAC;SAClB;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;QACtC,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QAC5D,IAAI,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC;QACR,KAAK,IAAI,gBAAgB,GAAG,CAAC,EAAE,gBAAgB,GAAG,aAAa,EAAE,gBAAgB,EAAE,EAAE;YACjF,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,IAAIO,uCAAsB,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAChH,SAAS,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC;YAClC,aAAa,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;SAC9C;QACD,IAAI,MAAM,CAAC;QACX,IAAI,QAAQ,EAAE;YACV,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC/C;aACI;YACD,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YACtC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACpC;QACD,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;QAChC,IAAI,UAAU,GAAG,iBAAiB,CAAC;QACnC,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxB,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;SAC5B;aACI;;YAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACnC;QACD,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,EAAE;YACrD,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;SAClC;aACI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;;;YAG3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE;gBAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC7F;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACpD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACrE,MAAM,CAAC,iBAAiB,GAAG,IAAIjC,qBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAC5C;aACI;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SAC9B;QACD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,QAAQ;gBACR,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,IAAI,GAAG,oBAAoB,GAAG,UAAU,GAAG,kBAAkB,GAAG,MAAM,CAAC,IAAI,GAAG,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,iBAAiB,GAAG,aAAa,CAAC,CAAC;;gBAEvN,OAAO,CAAC,GAAG,CAAC,wCAAwC,GAAG,IAAI,GAAG,oBAAoB,GAAG,UAAU,GAAG,oBAAoB,GAAG,QAAQ,CAAC,IAAI,GAAG,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,iBAAiB,GAAG,aAAa,CAAC,CAAC;SACpO;KACJ,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,OAAO,EAAE;QACzD,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,IAAIyI,oBAAM,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,IAAIrF,kCAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,IAAInB,uCAAsB,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC1I,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,IAAI,GAAG,yBAAyB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;KAC9F,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,OAAO,EAAE;QAChD,IAAI,KAAK,CAAC;QACV,IAAI,eAAe,CAAC;QACpB,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QACtE,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACvD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC5D,IAAI,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,UAAU,GAAG,CAAC,uBAAuB,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC7E,IAAI,iBAAiB,GAAG,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;QACpJ,IAAI,SAAS,IAAI,CAAC,EAAE;YAChB,KAAK,GAAG,IAAI4E,wBAAU,EAAE,CAAC;YACzB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACnC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACrC,IAAI,gBAAgB,GAAG,CAAC,EAAE;gBACtB,IAAI,gBAAgB,IAAI,CAAC,EAAE;oBACvB,eAAe,GAAG,IAAI6B,iCAAmB,EAAE,CAAC;iBAC/C;aACJ;YACD,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;SAClC;QACD,IAAI,SAAS,IAAI,CAAC,EAAE;YAChB,KAAK,GAAG,IAAIjC,8BAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,gBAAgB,GAAG,CAAC,EAAE;gBACtB,IAAI,gBAAgB,IAAI,CAAC,EAAE;oBACvB,eAAe,GAAG,IAAIkC,qCAAuB,EAAE,CAAC;iBACnD;aACJ;SACJ;QACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACrC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC5C,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;;QAElC,IAAI,eAAe,EAAE;YACjB,IAAI,eAAe,YAAYD,iCAAmB,EAAE;gBAChD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;oBACrB,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aAC3E;iBACI;gBACD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;oBACrB,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aAC3E;YACD,KAAK,CAAC,YAAY,GAAG,eAAe,CAAC;YACrC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;SAC7B;QACD,IAAI,UAAU,GAAG,iBAAiB,CAAC;QACnC,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvB,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;SAC5B;aACI;;YAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,IAAI,GAAG,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,mBAAmB,GAAG,UAAU,GAAG,yBAAyB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;KACnM,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,OAAO,EAAE;QACjD,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QACtE,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,UAAU,CAAC;QACf,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QACrD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC7D,QAAQ,cAAc;YAClB,KAAK,IAAI;gBACL,UAAU,GAAG,IAAItG,kCAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC3D,MAAM;YACV,KAAK,IAAI;gBACL,UAAU,GAAG,IAAIwG,mCAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC7D,MAAM;YACV,KAAK,IAAI;gBACL,UAAU,GAAG,IAAIC,4CAA+B,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACvI,MAAM;YACV;gBACI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO;SACd;QACD,IAAI,MAAM,GAAG,IAAIC,oBAAM,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;QAChC,IAAI,UAAU,GAAG,iBAAiB,CAAC;QACnC,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxB,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;SAC5B;aACI;;YAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACnC;QACD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,CAAC,iBAAiB,GAAG,IAAI9I,qBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,IAAI,GAAG,uBAAuB,GAAG,UAAU,GAAG,mBAAmB,GAAG,UAAU,CAAC,CAAC;KACjI,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,OAAO,EAAE;QACtD,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACxD,IAAI,WAAW,GAAG,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,gBAAgB,GAAG,IAAI,KAAK,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAChC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;YACrE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACrC;QACD,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC,CAAC;YAC/F,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,OAAO;SACV;QACD,IAAI,SAAS,GAAG,IAAIgH,+BAAiB,CAAC,WAAW,CAAC,CAAC;QACnD,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,IAAI,GAAG,qBAAqB,GAAG,gBAAgB,CAAC,CAAC;KAC7G,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,OAAO,EAAE;;;QAGnD,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,CAAC;QACR,IAAI,QAAQ,CAAC;QACb,IAAI,WAAW,CAAC;QAChB,IAAI,cAAc,CAAC;QACnB,IAAI,aAAa,CAAC;QAClB,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAC9C,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;;QAErD,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC3D,cAAc,GAAG,CAAC,CAAC;QACnB,OAAO,cAAc,GAAG,WAAW,EAAE;YACjC,IAAI,WAAW,CAAC;YAChB,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACtD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,cAAc,IAAI,CAAC,CAAC;SACvB;QACD,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,KAAK,CAAC,EAAE;YACZ,WAAW,IAAI,8CAA8C,GAAG,IAAI,GAAG,MAAM,CAAC;YAC9E,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;gBACvB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;aACjE;iBACI;gBACD,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,IAAI,GAAG+B,oCAAkB,CAAC,UAAU,CAAC;aAC5C;SACJ;aACI,IAAI,IAAI,KAAK,CAAC,EAAE;YACjB,IAAI,OAAO,GAAG,IAAI1G,gCAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YACrC,GAAG,CAAC,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC;YACpC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;gBACvB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACzC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC/B,WAAW,IAAI,+CAA+C,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,oBAAoB,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;aACtI;iBACI;gBACD,GAAG,CAAC,IAAI,GAAG0G,oCAAkB,CAAC,UAAU,CAAC;gBACzC,WAAW,IAAI,8CAA8C,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,oBAAoB,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;aACrI;SACJ;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvC,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI7F,0BAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAChC,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,OAAO,EAAE;QACtD,IAAI,GAAG,CAAC;QACR,IAAI,YAAY,CAAC;QACjB,IAAI,WAAW,CAAC;QAChB,IAAI,SAAS,CAAC;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAClD,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAClE,IAAI,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,WAAW,GAAG,kBAAkB,CAAC;QACrC,IAAI,WAAW,IAAI,CAAC,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,wBAAwB,GAAG,WAAW,GAAG,6DAA6D,CAAC,CAAC;YACvI,OAAO;SACV;QACD,IAAI,IAAI,IAAI,CAAC,EAAE;YACX,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC;gBACtB,WAAW,GAAG,CAAC,CAAC;iBACf,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC;gBAC3B,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,WAAW,GAAG,CAAC,EAAE;gBACjB,IAAI,IAAI,IAAI,CAAC,EAAE;oBACX,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACnC,IAAI,WAAW,IAAI,CAAC,EAAE;wBAClB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBAC1C,GAAG,CAAC,IAAI,GAAG6F,oCAAkB,CAAC,UAAU,CAAC;wBACzC,WAAW,IAAI,6CAA6C,GAAG,IAAI,GAAG,MAAM,CAAC;qBAChF;yBACI;wBACD,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC9D,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;wBACzC,WAAW,IAAI,8CAA8C,GAAG,IAAI,GAAG,MAAM,CAAC;qBACjF;iBACJ;qBACI,IAAI,IAAI,IAAI,CAAC,EAAE;oBAChB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACvE,IAAI,WAAW,IAAI,CAAC,EAAE;wBAClB,GAAG,CAAC,IAAI,GAAGA,oCAAkB,CAAC,UAAU,CAAC;wBACzC,WAAW,IAAI,8CAA8C,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,GAAG,oBAAoB,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;qBACzK;yBACI;wBACD,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;wBAC/B,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;wBACzC,WAAW,IAAI,+CAA+C,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,GAAG,oBAAoB,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;qBAC1K;iBACJ;gBACD,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjD,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChD,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtD,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI7F,0BAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChG,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACpC,GAAG,CAAC,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC7C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,YAAY,EAAE;oBACd,GAAG,CAAC,aAAa,CAAC,OAAO,GAAG,IAAIb,gCAAe,CAAC,YAAY,CAAC,CAAC;oBAC9D,WAAW,IAAI,2BAA2B,GAAG,YAAY,CAAC,IAAI,CAAC;iBAClE;gBACD,IAAI,WAAW,EAAE;oBACb,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,IAAIA,gCAAe,CAAC,WAAW,CAAC,CAAC;oBAC5D,WAAW,IAAI,0BAA0B,GAAG,WAAW,CAAC,IAAI,CAAC;iBAChE;gBACD,IAAI,SAAS,EAAE;oBACX,GAAG,CAAC,cAAc,CAAC,OAAO,GAAG,IAAIA,gCAAe,CAAC,SAAS,CAAC,CAAC;oBAC5D,WAAW,IAAI,4BAA4B,GAAG,SAAS,CAAC,IAAI,CAAC;iBAChE;gBACD,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACxC,GAAG,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAChD,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAClD,GAAG,CAAC,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACjD,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACnD,KAAK,IAAI,cAAc,GAAG,CAAC,EAAE,cAAc,GAAG,WAAW,EAAE,cAAc,EAAE,EAAE;oBACzE,IAAI,WAAW,CAAC;oBAChB,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;oBACtD,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;oBAC5D,QAAQ,WAAW;wBACf,KAAK,GAAG;4BACJ,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;4BACtD,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;4BAClC,WAAW,IAAI,yBAAyB,GAAG,YAAY,CAAC,IAAI,CAAC;4BAC7D,MAAM;wBACV,KAAK,GAAG;4BACJ,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;4BACtD,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;4BAChC,WAAW,IAAI,yBAAyB,GAAG,YAAY,CAAC,IAAI,CAAC;4BAC7D,MAAM;wBACV,KAAK,CAAC;4BACF,IAAI,WAAW,GAAG,IAAIe,kCAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;4BAE5E,GAAG,CAAC,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC;4BACxC,WAAW,IAAI,wCAAwC,GAAG,WAAW,CAAC,IAAI,CAAC;4BAC3E,MAAM;;;;;wBAKV,KAAK,EAAE;4BACH,IAAI,OAAO,GAAG,IAAIf,gCAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BACtE,GAAG,CAAC,aAAa,GAAG,IAAI2G,uCAAqB,CAAC,OAAO,CAAC,CAAC;4BACvD,WAAW,IAAI,0DAA0D,GAAG,OAAO,CAAC,IAAI,CAAC;4BACzF,MAAM;wBACV,KAAK,EAAE;4BACH,GAAG,CAAC,aAAa,GAAG,IAAIC,mCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAC7D,WAAW,IAAI,sBAAsB,CAAC;4BACtC,MAAM;wBACV,KAAK,EAAE;4BACH,IAAI,OAAO,GAAG,IAAI5G,gCAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BACtE,GAAG,CAAC,aAAa,GAAG,IAAI6G,uCAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;4BACxH,WAAW,IAAI,mDAAmD,GAAG,OAAO,CAAC,IAAI,CAAC;4BAClF,MAAM;wBACV,KAAK,EAAE;4BACH,GAAG,CAAC,aAAa,GAAG,IAAIC,kCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;4BACpG,WAAW,IAAI,qBAAqB,CAAC;4BACrC,MAAM;wBACV,KAAK,EAAE;;;;;;4BAMH,MAAM;wBACV,KAAK,GAAG;4BACJ,GAAG,CAAC,cAAc,GAAG,IAAIC,2CAAyB,EAAE,CAAC;4BACrD,WAAW,IAAI,8BAA8B,CAAC;4BAC9C,MAAM;wBACV,KAAK,GAAG;4BACJ,GAAG,CAAC,cAAc,GAAG,IAAIC,qCAAmB,EAAE,CAAC;4BAC/C,WAAW,IAAI,wBAAwB,CAAC;4BACxC,MAAM;wBACV,KAAK,GAAG;4BACJ,GAAG,CAAC,cAAc,GAAG,IAAIC,mCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;4BACzG,WAAW,IAAI,sBAAsB,CAAC;4BACtC,MAAM;wBACV,KAAK,GAAG;4BACJ,GAAG,CAAC,cAAc,GAAG,IAAIC,uCAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;4BACjI,WAAW,IAAI,0BAA0B,CAAC;4BAC1C,MAAM;wBACV,KAAK,GAAG;4BACJ,MAAM;wBACV,KAAK,GAAG;4BACJ,IAAI,OAAO,GAAG,IAAIlH,gCAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BACtE,GAAG,CAAC,YAAY,GAAG,IAAImH,yCAAuB,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;4BAC7F,WAAW,IAAI,2DAA2D,GAAG,OAAO,CAAC,IAAI,CAAC;4BAC1F,MAAM;qBACb;oBACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBAC9B;aACJ;SACJ;aACI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE;;YAEjC,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACnC,WAAW,IAAI,KAAK,CAAC;YACrB,IAAI,cAAc,GAAG,IAAInH,gCAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7E,IAAI,IAAI,IAAI,CAAC,EAAE;gBACX,cAAc,CAAC,WAAW,GAAG3B,4BAAW,CAAC,MAAM,CAAC;aACnD;iBACI,IAAI,IAAI,IAAI,CAAC,EAAE;gBAChB,cAAc,CAAC,WAAW,GAAGA,4BAAW,CAAC,MAAM,CAAC;aACnD;YACD,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC/C,SAAS,CAAC,aAAa,CAAC,OAAO,GAAG,cAAc,CAAC;YACjD,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;YAC3B,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;;YAG/C,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7C,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM;gBACX,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC7B,OAAO;SACV;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAChC,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,OAAO,EAAE;QAClD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;;QAE7C,IAAI,IAAI,IAAI,CAAC,EAAE;YACX,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;YAClF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAIS,uBAAU,CAAC,GAAG,CAAC,EAAE,IAAIsI,8BAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACjI;aACI;YACD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YACrD,IAAI,IAAI,GAAG,IAAIzI,sBAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;;;;;;YAMjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAIyI,8BAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SAClH;;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1D,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;KAC7F,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,OAAO,EAAE;;QAEtD,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QAC7C,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;;YAE7C,IAAI,IAAI,IAAI,CAAC,EAAE;gBACX,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;gBACjD,IAAI,GAAG,CAAC;gBACR,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAItI,uBAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aACxG;iBACI;gBACD,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;gBACjD,IAAI,IAAI,GAAG,IAAIH,sBAAS,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAEE,wBAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aACvH;SACJ;;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1D,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,CAAC;KAClG,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,OAAO,EAAE;QAC5D,IAAI,KAAK,CAAC;QACV,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,gCAAgC,GAAG,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC;KACvF,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,OAAO,EAAE;QAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK;YACN,OAAO;QACX,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,KAAK,CAAC,IAAI,GAAG,YAAY,GAAG,KAAK,GAAG,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;KACnI,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,OAAO,EAAE;QAClD,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QAC5E,IAAI,YAAY,CAAC;QACjB,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC9D,QAAQ,WAAW;YACf,KAAK,CAAC;gBACF,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClD,YAAY,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;gBACtC,IAAI,YAAY;oBACZ,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACxC,MAAM;SACb;QACD,IAAI,YAAY,EAAE;YACd,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACzD,YAAY,CAAC,iBAAiB,GAAG,IAAIlB,qBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjG,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;SACnD;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;KAC7D,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,OAAO,EAAE;QACnD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;SACzF;KACJ,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,OAAO,EAAE;QACpD,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAChD,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,gCAAgC,GAAG,EAAE,GAAG,cAAc,GAAG,eAAe,CAAC,CAAC;KAC7F,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;QAClE,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACzD,IAAI,YAAY,CAAC;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClE,IAAI,QAAQ,CAAC;QACb,IAAI,aAAa,CAAC;QAClB,QAAQ,UAAU;;;;;;;;;;YAUd,KAAK,IAAI;gBACL,YAAY,GAAG,IAAI0J,kCAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxE,MAAM;;;;;;YAMV,KAAK,IAAI;gBACL,YAAY,GAAG,IAAIC,sCAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClE,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC7C,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvC,MAAM;YACV,KAAK,IAAI;gBACL,YAAY,GAAG,IAAIC,kCAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9D,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC7C,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvC,MAAM;YACV,KAAK,IAAI;gBACL,YAAY,GAAG,IAAIC,kCAAgB,CAAC,KAAK,CAAC,CAAC;gBAC3C,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM;SACb;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC;KACvB,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,OAAO,WAAW;QAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACzD,IAAI,QAAQ,GAAG,IAAIC,yBAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,UAAU,EAAE,aAAa,EAAE,EAAE;YACrE,IAAI,KAAK,CAAC;YACV,IAAI,GAAG,CAAC;;YAER,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACxC,KAAK,GAAG,IAAIC,8BAAa,EAAE,CAAC;YAC5B,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YAChE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC;;YAErC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,QAAQ,CAAC,IAAI,GAAG,wBAAwB,GAAG,aAAa,CAAC,CAAC;KAC5G,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,OAAO,WAAW;QAChE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,IAAI,GAAG,IAAIC,6BAAY,EAAE,CAAC;QAC9B,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,UAAU,EAAE,aAAa,EAAE,EAAE;YACrE,IAAI,UAAU,CAAC;YACf,IAAI,aAAa,CAAU;YAC3B,UAAU,GAAG,IAAIC,0BAAS,EAAE,CAAC;YAC7B,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;YACvD,IAAI,aAAa,IAAI,CAAC,EAAE;gBACpB,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC3C,IAAI,GAAG,GAAG,IAAI5I,qBAAQ,CAAC,QAAQ,CAAC,CAAC;gBACjC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACvC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;aAC/C;SACJ;;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,gCAAgC,GAAG,IAAI,CAAC,IAAI,GAAG,wBAAwB,GAAG,aAAa,CAAC,CAAC;KAC5G,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,OAAO,WAAW;QACrE,IAAI,SAAS,CAAC;QACd,IAAI,OAAO,CAAC;QACZ,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,IAAI6I,iCAAgB,EAAE,CAAC;QAClC,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,UAAU,EAAE,aAAa,EAAE,EAAE;YACrE,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YAChD,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SACxD;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,+DAA+D,CAAC,CAAC;YAChG,OAAO;SACV;;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,IAAI,CAAC,IAAI,GAAG,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACrH,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,OAAO,WAAW,QAAQ,EAAE;QACjF,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC,EAAE;QAC9C,IAAI,eAAe,CAAU;QAC7B,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,IAAI,OAAO,CAAC;QACZ,IAAI,OAAO,CAAC;QACZ,IAAI,QAAQ,CAAC;QACb,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,IAAIC,+BAAc,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC;QACZ,IAAI,KAAK,CAAC;QACV,IAAI,WAAW,GAAG,IAAI,KAAK,EAAE,CAAS;QACtC,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QACnD,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACzC,IAAI,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAC3E,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QAC7D,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QAC1D,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,WAAW,EAAE,aAAa,EAAE;YACpE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC9D,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,SAAS,CAAC;QACd,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,UAAU,EAAE,aAAa,EAAE,EAAE;YACrE,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACpD,QAAQ,GAAG,IAAIzI,yBAAQ,EAAE,CAAC;YAC1B,eAAe,GAAG,CAAC,CAAC;YACpB,OAAO,eAAe,GAAG,cAAc,EAAE;gBACrC,aAAa,GAAG,CAAC,CAAC;gBAClB,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;gBAChD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACjD,OAAO,aAAa,GAAG,WAAW,EAAE;oBAChC,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;wBACjC,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAChE,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;wBACpB,GAAG,GAAG,CAAC,CAAC;wBACR,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,EAAE;4BAC3C,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BACvC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BACvC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BACvC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;4BACjB,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;4BACjB,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;yBACpB;wBACD,QAAQ,GAAG,IAAIE,iCAAgB,CAAC,IAAI3B,6BAAgB,EAAE,CAAC,CAAC;wBACxD,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;wBAC7B,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;wBAC7B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;wBACtC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC1B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBAC3B,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC;wBACnC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC;wBACpC,eAAe,EAAE,CAAC;wBAClB,QAAQ,CAAC,QAAQ,CAAC,IAAI6B,sBAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;qBAC1C;;wBAEG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC;oBAC3C,aAAa,EAAE,CAAC;iBACnB;aACJ;YACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,IAAI,CAAC,IAAI,GAAG,4BAA4B,GAAG,QAAQ,CAAC,IAAI,GAAG,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAClK,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,OAAO,WAAW;QACtE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACzE,IAAI,cAAc,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC;QACb,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,UAAU,EAAE,aAAa,EAAE,EAAE;YACrE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;YACpE,IAAI,QAAQ,YAAYqI,+BAAc;gBAClC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC3B,IAAI,QAAQ,YAAYD,iCAAgB;gBACzC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;YAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,uEAAuE,CAAC,CAAC;YACxG,OAAO;SACV;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAI,qBAAqB,GAAG,IAAIE,mCAAkB,EAAE,CAAC;YACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;gBACxC,qBAAqB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,qBAAqB,CAAC;YACnD,IAAI,IAAI,CAAC,MAAM;gBACX,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,IAAI,GAAG,kBAAkB,GAAG,qBAAqB,CAAC,UAAU,CAAC,MAAM,GAAG,uBAAuB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;SAClM;aACI,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,IAAI,uBAAuB,GAAG,IAAIC,qCAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE;gBAC1C,uBAAuB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,uBAAuB,CAAC;YACrD,IAAI,IAAI,CAAC,MAAM;gBACX,OAAO,CAAC,GAAG,CAAC,wCAAwC,GAAG,IAAI,GAAG,kBAAkB,GAAG,uBAAuB,CAAC,UAAU,CAAC,MAAM,GAAG,uBAAuB,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;SACxM;KACJ,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,OAAO,WAAW;QAC/D,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACnD,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAClE,IAAI,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC;QAClF,IAAI,cAAc,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE;YACvC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAClF,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QAC1D,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,YAAY,CAAC;QACjB,IAAI,IAAI,IAAI,CAAC;YACT,YAAY,GAAG,IAAIC,iCAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC3F,IAAI,IAAI,IAAI,CAAC;YACd,YAAY,GAAG,IAAIC,+BAAc,CAAC,kBAAkB,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,IAAI,IAAI,CAAC;gBACT,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC;iBACzC,IAAI,IAAI,IAAI,CAAC;gBACd,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC;SACjD;QACD,IAAI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;KACxD,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,OAAO,EAAE;QAC3D,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACzD,IAAI,kBAAkB,CAAC;QACvB,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClE,QAAQ,UAAU;;YAEd,KAAK,GAAG;gBACJ,kBAAkB,GAAG,IAAIC,yCAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxI,MAAM;YACV,KAAK,GAAG;gBACJ,kBAAkB,GAAG,IAAIC,4CAA0B,EAAE,CAAC;gBACtD,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBACxC,kBAAkB,CAAC,cAAc,GAAG,IAAIjK,2BAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC9N,MAAM;YACV,KAAK,GAAG;gBACJ,kBAAkB,GAAG,IAAIkK,oCAAkB,CAAC,IAAItH,kCAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1H,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/B,IAAI,QAAQ,GAAG,CAAC,EAAE;iBACjB;gBACD,MAAM;YACV,KAAK,GAAG;gBACJ,kBAAkB,GAAG,IAAIuH,sCAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzH,MAAM;;;;;;;;YAQV,KAAK,GAAG;gBACJ,kBAAkB,GAAG,IAAIC,sCAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChH,MAAM;YACV,KAAK,GAAG;gBACJ,kBAAkB,GAAG,IAAIC,uCAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC1G,MAAM;;;;;;;;;;;;YAYV,KAAK,GAAG;gBACJ,kBAAkB,GAAG,IAAIC,2CAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1G,MAAM;YACV,KAAK,GAAG;gBACJ,kBAAkB,GAAG,IAAIC,iCAAe,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC5G,MAAM;SACb;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC;KAC7B,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;QAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QACrD,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACvD,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,EAAE,WAAW,EAAE,EAAE;gBAC9E,IAAI,KAAK,CAAC;gBACV,IAAI,QAAQ,CAAC;gBACb,IAAI,SAAS,CAAC;gBACd,IAAI,QAAQ,CAAC;gBACb,IAAI,QAAQ,CAAC;;gBAEb,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;gBAC/C,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC9B,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;gBACnD,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;gBACjD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,QAAQ,EAAE;oBACtD,OAAO,CAAC,GAAG,CAAC,0CAA0C,GAAG,WAAW,GAAG,qCAAqC,CAAC,CAAC;oBAC9G,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACxC,OAAO,UAAU,CAAC;iBACrB;gBACD,QAAQ,SAAS;oBACb,KAAK,SAAS,CAAC,SAAS;wBACpB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;wBACtD,MAAM;oBACV,KAAK,SAAS,CAAC,IAAI;wBACf,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;wBAC1C,MAAM;oBACV,KAAK,SAAS,CAAC,KAAK;wBAChB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;wBAC3C,MAAM;oBACV,KAAK,SAAS,CAAC,KAAK;wBAChB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;wBACzC,MAAM;oBACV,KAAK,SAAS,CAAC,IAAI,CAAC;oBACpB,KAAK,SAAS,CAAC,KAAK;wBAChB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;wBAClD,MAAM;oBACV,KAAK,SAAS,CAAC,MAAM;wBACjB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;wBACnD,MAAM;oBACV,KAAK,SAAS,CAAC,MAAM,CAAC;oBACtB,KAAK,SAAS,CAAC,KAAK;wBAChB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;wBACjD,MAAM;oBACV,KAAK,SAAS,CAAC,OAAO;wBAClB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;wBAC3C,MAAM;oBACV,KAAK,SAAS,CAAC,OAAO;wBAClB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;wBAC5C,MAAM;oBACV;wBACI,QAAQ,GAAG,+BAA+B,GAAG,SAAS,CAAC;wBACvD,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,QAAQ,CAAC;wBACzC,MAAM;iBACb;gBACD,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBAChC,IAAI,IAAI,CAAC,MAAM;oBACX,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC,CAAC;aAChF;SACJ;QACD,OAAO,UAAU,CAAC;KACrB,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,QAAQ,EAAE;QACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QACrD,IAAI,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACvD,IAAI,QAAQ,EAAE;YACV,IAAI,GAAG,CAAC;YACR,IAAI,GAAG,CAAC;YACR,IAAI,IAAI,CAAC;YACT,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,EAAE,WAAW,EAAE,EAAE;gBAC9E,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;gBAC9C,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,QAAQ,EAAE;oBACjD,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,WAAW,GAAG,qCAAqC,CAAC,CAAC;oBAC7G,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACxC,OAAO,KAAK,CAAC;iBAChB;gBACD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACf,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACrB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;iBAClD;qBACI;oBACD,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,GAAG,CAAC;iBACvC;aACJ;SACJ;aACI;YACD,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC3C;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,GAAG,EAAE;QACtD,IAAI,QAAQ,CAAC;QACb,IAAI,SAAS,CAAC;QACd,IAAI,QAAQ,CAAC;QACb,QAAQ,IAAI;YACR,KAAK,SAAS,CAAC,IAAI,CAAC;YACpB,KAAK,SAAS,CAAC,IAAI;gBACf,QAAQ,GAAG,CAAC,CAAC;gBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBACzC,MAAM;YACV,KAAK,SAAS,CAAC,KAAK;gBAChB,QAAQ,GAAG,CAAC,CAAC;gBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBAC1C,MAAM;YACV,KAAK,SAAS,CAAC,KAAK;gBAChB,QAAQ,GAAG,CAAC,CAAC;gBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBACxC,MAAM;YACV,KAAK,SAAS,CAAC,KAAK;gBAChB,QAAQ,GAAG,CAAC,CAAC;gBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;gBACjD,MAAM;YACV,KAAK,SAAS,CAAC,MAAM;gBACjB,QAAQ,GAAG,CAAC,CAAC;gBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;gBAClD,MAAM;YACV,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,KAAK,CAAC;YACrB,KAAK,SAAS,CAAC,KAAK;gBAChB,QAAQ,GAAG,CAAC,CAAC;gBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;gBAChD,MAAM;YACV,KAAK,SAAS,CAAC,OAAO;gBAClB,QAAQ,GAAG,CAAC,CAAC;gBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBAC1C,MAAM;YACV,KAAK,SAAS,CAAC,OAAO;gBAClB,QAAQ,GAAG,CAAC,CAAC;gBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;gBAC3C,MAAM;YACV,KAAK,SAAS,CAAC,SAAS;gBACpB,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACjD,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,MAAM;gBACjB,QAAQ,GAAG,CAAC,CAAC;gBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;gBAC3C,MAAM;YACV,KAAK,SAAS,CAAC,UAAU;gBACrB,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YACjC,KAAK,SAAS,CAAC,aAAa;gBACxB,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;YACpC,KAAK,SAAS,CAAC,eAAe;gBAC1B,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;YACnC;gBACI,IAAI,QAAQ,EAAE;oBACV,QAAQ,GAAG,CAAC,CAAC;oBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;iBAC9C;qBACI;oBACD,QAAQ,GAAG,CAAC,CAAC;oBACb,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;iBAC7C;SACR;QACD,IAAI,QAAQ,GAAG,GAAG,EAAE;YAChB,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,SAAS,GAAG,GAAG,GAAG,QAAQ,CAAC;YAC/B,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE;gBACnD,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;SACf;aACI,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE;YAC7B,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SACvD;aACI;YACD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC9C;KACJ,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC1C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QACrD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;;QAEvD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACpD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QACtD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,IAAI,CAAC,YAAY,GAAG,iBAAiB,GAAG,IAAI,CAAC,UAAU,GAAG,wBAAwB,GAAG,IAAI,CAAC,eAAe,GAAG,0BAA0B,GAAG,IAAI,CAAC,YAAY,GAAG,4BAA4B,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;SACrQ;;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAClE,IAAI,CAAC,cAAc,CAAC,wDAAwD,CAAC,CAAC;KACrF,CAAC;;IAEF,SAAS,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,QAAQ,WAAW;QACvE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,YAAY5D,oBAAM;YAC7C,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qBAAqB;YAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC;QACxD,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QAC3C,IAAI,QAAQ,CAAC;QACb,IAAI,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qBAAqB,GAAG,IAAI,KAAK,EAAE,CAAC;QACvF,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC;QACzB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE;YACzC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;YAChD,qBAAqB,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;SAC1E;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC;KACvD,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC;KACpF,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,SAAS,EAAE;QAClD,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,KAAK,CAAC,EAAE;QAChD,IAAI,SAAS;YACT,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;KAC1C,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAC5C,OAAO,IAAI9F,qBAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACpD,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;QACnD,IAAI,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACtB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;QACnD,IAAI,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAClB,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;;QAElB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SACnB;QACD,OAAO,OAAO,CAAC;KAClB,CAAC;IACF,OAAO,SAAS,CAAC;CACpB,CAACJ,uBAAU,CAAC,CAAC,CAAC;AAEf,SAAS,CAAC,oBAAoB,GAAG,MAAM,CAAC;AACxC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;AAC3B,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;AACtB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;AACnB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;AACnB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACpB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACpB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACpB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACrB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACrB,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;AACtB,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;AACtB,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;AACpB,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;AACrB,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;AACrB,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB,SAAS,CAAC,YAAY,GAAG,EAAE,CAAC;AAC5B,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;AACtB,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;AACtB,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;AACtB,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;AACtB,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC;AAC1B,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;AAC7B,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;AAC/B,SAAS,CAAC,oBAAoB,GAAG;IAC7B,CAAC,EAAE,SAAS,CAAC,MAAM;IACnB,CAAC,EAAE,SAAS,CAAC,OAAO;IACpB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,OAAO;IACpB,CAAC,EAAE,SAAS,CAAC,OAAO;IACpB,CAAC,EAAE,SAAS,CAAC,OAAO;IACpB,EAAE,EAAE,SAAS,CAAC,OAAO;IACrB,EAAE,EAAE,SAAS,CAAC,KAAK;CACtB,CAAC;AACF,SAAS,CAAC,mBAAmB,GAAG;IAC5B,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;CACrB,CAAC;AACF,SAAS,CAAC,cAAc,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACnE,SAAS,CAAC,uBAAuB,GAAG;IAChC,CAAC,EAAE,SAAS,CAAC,OAAO;IACpB,CAAC,EAAE,SAAS,CAAC,OAAO;IACpB,CAAC,EAAE,SAAS,CAAC,OAAO;IACpB,CAAC,EAAE,SAAS,CAAC,OAAO;CACvB,CAAC;AACF,SAAS,CAAC,mBAAmB,GAAG;IAC5B,CAAC,EAAE,SAAS,CAAC,OAAO;IACpB,CAAC,EAAE,SAAS,CAAC,MAAM;IACnB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;CACrB,CAAC;AACF,SAAS,CAAC,kBAAkB,GAAG;IAC3B,CAAC,EAAE,SAAS,CAAC,UAAU;IACvB,CAAC,EAAE,SAAS,CAAC,UAAU;CAC1B,CAAC;AACF,SAAS,CAAC,kBAAkB,GAAG;IAC3B,CAAC,EAAE,SAAS,CAAC,UAAU;IACvB,CAAC,EAAE,SAAS,CAAC,UAAU;CAC1B,CAAC;AACF,SAAS,CAAC,mBAAmB,GAAG;IAC5B,GAAG,EAAE,SAAS,CAAC,UAAU;IACzB,GAAG,EAAE,SAAS,CAAC,UAAU;IACzB,GAAG,EAAE,SAAS,CAAC,UAAU;IACzB,GAAG,EAAE,SAAS,CAAC,UAAU;IACzB,GAAG,EAAE,SAAS,CAAC,UAAU;IACzB,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC,IAAI;IACnB,GAAG,EAAE,SAAS,CAAC,IAAI;IACnB,GAAG,EAAE,SAAS,CAAC,IAAI;IACnB,GAAG,EAAE,SAAS,CAAC,IAAI;CACtB,CAAC;AACF,SAAS,CAAC,cAAc,GAAG,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,uBAAuB,CAAC,CAAC;AAClO,SAAS,CAAC,mBAAmB,GAAG;IAC5B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,KAAK;CACrB,CAAC;AACF,SAAS,CAAC,wBAAwB,GAAG;IACjC,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,IAAI;CACpB,CAAC;AACF,SAAS,CAAC,eAAe,GAAG;IACxB,CAAC,EAAE,SAAS,CAAC,eAAe;IAC5B,CAAC,EAAE,SAAS,CAAC,eAAe;IAC5B,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,eAAe;IAC5B,CAAC,EAAE,SAAS,CAAC,eAAe;IAC5B,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,eAAe;IAC5B,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,EAAE,EAAE,SAAS,CAAC,KAAK;IACnB,EAAE,EAAE,SAAS,CAAC,eAAe;IAC7B,EAAE,EAAE,SAAS,CAAC,MAAM;IACpB,EAAE,EAAE,SAAS,CAAC,aAAa;IAC3B,EAAE,EAAE,SAAS,CAAC,aAAa;IAC3B,EAAE,EAAE,SAAS,CAAC,aAAa;CAC9B,CAAC;AACF,SAAS,CAAC,gBAAgB,GAAG;IACzB,GAAG,EAAE,SAAS,CAAC,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;CACjC,CAAC;AACF,SAAS,CAAC,qBAAqB,GAAG;IAC9B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,KAAK;CACrB,CAAC;;AAEF,SAAS,CAAC,kBAAkB,GAAG;IAC3B,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,EAAE,EAAE,SAAS,CAAC,eAAe;IAC7B,EAAE,EAAE,SAAS,CAAC,IAAI;IAClB,EAAE,EAAE,SAAS,CAAC,eAAe;IAC7B,EAAE,EAAE,SAAS,CAAC,IAAI;CACrB,CAAC;AACF,SAAS,CAAC,qBAAqB,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM;IACnD,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,IAAI;IACjB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,EAAE,EAAE,SAAS,CAAC,eAAe;IAC7B,EAAE,EAAE,SAAS,CAAC,IAAI;IAClB,EAAE,EAAE,SAAS,CAAC,eAAe;IAC7B,EAAE,EAAE,SAAS,CAAC,IAAI;IAClB,EAAE,EAAE,SAAS,CAAC,eAAe;IAC7B,EAAE,EAAE,SAAS,CAAC,MAAM;IACpB,EAAE,EAAE,SAAS,CAAC,KAAK;IACnB,EAAE,EAAE,SAAS,CAAC,eAAe;IAC7B,EAAE,EAAE,SAAS,CAAC,eAAe;IAC7B,EAAE,EAAE,SAAS,CAAC,MAAM;IACpB,EAAE,EAAE,SAAS,CAAC,KAAK;IACnB,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AAC1B,SAAS,CAAC,mBAAmB,GAAG;IAC5B,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,CAAC,EAAE,SAAS,CAAC,KAAK;IAClB,GAAG,EAAE,SAAS,CAAC,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC,KAAK;IACpB,GAAG,EAAE,SAAS,CAAC,KAAK;IACpB,GAAG,EAAE,SAAS,CAAC,KAAK;IACpB,GAAG,EAAE,SAAS,CAAC,KAAK;IACpB,GAAG,EAAE,SAAS,CAAC,IAAI;IACnB,GAAG,EAAE,SAAS,CAAC,IAAI;IACnB,GAAG,EAAE,SAAS,CAAC,MAAM;CACxB,CAAC;AACF,SAAS,CAAC,iBAAiB,GAAG;IAC1B,CAAC,EAAE,SAAS,CAAC,KAAK;CACrB,CAAC;AACF,SAAS,CAAC,gBAAgB,GAAG;IACzB,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,aAAa;IAC1B,CAAC,EAAE,SAAS,CAAC,KAAK;CACrB,CAAC;AACF,SAAS,CAAC,kBAAkB,GAAG;IAC3B,CAAC,EAAE,SAAS,CAAC,MAAM;IACnB,CAAC,EAAE,SAAS,CAAC,SAAS;IACtB,CAAC,EAAE,SAAS,CAAC,SAAS;IACtB,CAAC,EAAE,SAAS,CAAC,SAAS;IACtB,CAAC,EAAE,SAAS,CAAC,SAAS;CACzB,CAAC;AACF,SAAS,CAAC,4BAA4B,GAAG;IACrC,CAAC,EAAE,SAAS,CAAC,MAAM;CACtB,CAAC;AACF,SAAS,CAAC,qBAAqB,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AACzD,IAAI,WAAW,GAAG,CAAC,YAAY;IAC3B,SAAS,WAAW,GAAG;KACtB;IACD,OAAO,WAAW,CAAC;CACtB,EAAE,CAAC,CAAC;AACL,WAAW,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACjC,WAAW,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACnC,WAAW,CAAC,aAAa,GAAG,CAAC,CAAC;AAC9B,WAAW,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACpC,WAAW,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACnC,WAAW,CAAC,yBAAyB,GAAG,CAAC,CAAC;AAC1C,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;AAC5B,IAAI,aAAa,GAAG,CAAC,YAAY;IAC7B,SAAS,aAAa,GAAG;KACxB;IACD,aAAa,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;QAChD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KACrB,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE,QAAQ,EAAE;QACnD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;KACrE,CAAC;IACF,OAAO,aAAa,CAAC;CACxB,EAAE,CAAC,CAAC;;;;AAIL,IAAI,QAAQ,GAAG,CAAC,YAAY;IACxB,SAAS,QAAQ,GAAG;KACnB;IACD,QAAQ,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE;QACvC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,QAAQ,CAAC;KACzC,CAAC;IACF,OAAO,QAAQ,CAAC;CACnB,EAAE,CAAC,CAAC;AACL,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;AACpB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;AACpB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;AACpB,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;AACrB,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;AACrB,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;AACtB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;;AC7zFxB;;;AAGA,IAAI,YAAY,GAAG,CAAC,UAAU,MAAM,EAAE;IAClC/B,SAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;;;;;;IAMxC,SAAS,YAAY,CAAC,kBAAkB,EAAE;QACtC,IAAI,kBAAkB,KAAK,KAAK,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI,CAAC,EAAE;QACjE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE6B,gCAAmB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;QACxE,KAAK,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAC/C,OAAO,KAAK,CAAC;KAChB;;;;;;IAMD,YAAY,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;QAC7C,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,SAAS,IAAI,KAAK,CAAC;KAC7B,CAAC;;;;;;IAMF,YAAY,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QACxC,IAAI,EAAE,CAAC;QACP,IAAI;;YAEA,EAAE,GAAGG,wBAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,EAAE,EAAE;gBACJ,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAChB,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,MAAM;oBACxB,OAAO,IAAI,CAAC;aACnB;SACJ;QACD,OAAO,GAAG,EAAE;YACR,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,kBAAkB,EAAE;QACvE,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACvC,IAAI,KAAK,CAAC;YACV,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,KAAK,CAAC,OAAO,CAAC4D,8BAAa,CAAC,EAAE;gBAC9B,IAAI,GAAG,CAAC;gBACR,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBAC5C,GAAG,CAAC,OAAO,GAAG,IAAIzC,gCAAe,CAAC,KAAK,CAAC,CAAC;aAC5C;SACJ;KACJ,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,kBAAkB,EAAE;;KAEjF,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;;;;;;YAM5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;SAClC;;;;;;QAMD,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE;;;YAGrB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY;gBAC7D,IAAI,CAAC,uBAAuB,EAAE,CAAC;iBAC9B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;;;gBAGpE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC9D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,UAAU;gBAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACxB;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE;gBACxC,IAAI,GAAG,CAAU;gBACjB,IAAI,GAAG,CAAU;gBACjB,IAAI,GAAG,CAAU;gBACjB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;gBACzC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;gBACvC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC1C,QAAQ,GAAG;oBACP,KAAK,MAAM,CAAC;oBACZ,KAAK,MAAM,CAAC;oBACZ,KAAK,MAAM;;;;;;wBAMP,SAAS;oBACb,KAAK,MAAM;wBACP,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;wBACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrC,MAAM;oBACV,KAAK,MAAM;wBACP,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;wBACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;wBAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;wBACtC,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAC;wBACjC,MAAM;oBACV,KAAK,MAAM;wBACP,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG8E,oBAAM,CAAC,SAAS,CAAC;wBACtC,MAAM;oBACV,KAAK,MAAM;wBACP,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,MAAM;oBACV,KAAK,MAAM;wBACP,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,MAAM;oBACV,KAAK,MAAM;wBACP,IAAI,CAAC,WAAW,EAAE,CAAC;wBACnB,MAAM;oBACV,KAAK,MAAM;wBACP,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC7B,MAAM;oBACV,KAAK,MAAM;wBACP,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;wBAC/C,MAAM;oBACV,KAAK,MAAM;wBACP,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;wBAC/B,MAAM;oBACV,KAAK,MAAM;wBACP,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC5B,MAAM;oBACV;;wBAEI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;wBACrC,MAAM;iBACb;;;;gBAID,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;oBAC1B,IAAI,CAAC,8BAA8B,EAAE,CAAC;oBACtC,MAAM;iBACT;aACJ;SACJ;;;;QAID,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACtE,OAAOlG,uBAAU,CAAC,aAAa,CAAC;SACnC;aACI;YACD,IAAI,IAAI,CAAC;;YAET,KAAK,IAAI,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBACpC,IAAI,GAAG,CAAC;gBACR,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5D,IAAI,GAAG,EAAE;;oBAEL,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBACnC;aACJ;YACD,OAAOA,uBAAU,CAAC,YAAY,CAAC;SAClC;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,UAAU,EAAE;;QAE1D,IAAI,CAAC,SAAS,GAAG,IAAImG,oCAAsB,EAAE,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAC1D,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAC/C,IAAI,GAAG,CAAC;QACR,GAAG,GAAG,IAAI,UAAU,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;YAChD,IAAI,GAAG,CAAU;YACjB,IAAI,GAAG,CAAU;YACjB,IAAI,GAAG,CAAU;YACjB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACzC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YACvC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC1C,QAAQ,GAAG;gBACP,KAAK,MAAM;oBACP,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACpC,MAAM;gBACV,KAAK,MAAM;oBACP,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpC,MAAM;gBACV,KAAK,MAAM;oBACP,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpC,MAAM;gBACV,KAAK,MAAM;oBACP,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,MAAM;gBACV,KAAK,MAAM;oBACP,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACpB,MAAM;gBACV,KAAK,MAAM;oBACP,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBACtC,MAAM;gBACV,KAAK,MAAM;oBACP,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBACzC,MAAM;gBACV;oBACI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;oBAC9B,MAAM;aACb;SACJ;QACD,OAAO,GAAG,CAAC;KACd,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,GAAG,WAAW;QAC1D,IAAI,GAAG,CAAC;QACR,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,EAAE;YAClC,IAAI,GAAG,CAAU;YACjB,IAAI,GAAG,CAAU;YACjB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACzC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YACvC,QAAQ,GAAG;gBACP,KAAK,MAAM;oBACP,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACnC,MAAM;gBACV;;oBAEI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;oBACrC,MAAM;aACb;SACJ;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAIjG,uBAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC;KACd,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QACjD,IAAI,CAAC,CAAU;QACf,IAAI,GAAG,CAAU;QACjB,IAAI,KAAK,CAAU;QACnB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,GAAG,CAAC,CAAC;QACN,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACjC,OAAO,CAAC,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SAChC;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAC/C,IAAI,CAAC,CAAU;QACf,IAAI,GAAG,CAAU;QACjB,IAAI,KAAK,CAAU;QACnB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU;QACtD,CAAC,GAAG,CAAC,CAAC;QACN,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,OAAO,CAAC,GAAG,GAAG,EAAE;YACZ,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAU;YAC1C,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACxC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACxC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;;YAEhC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU;KAC7D,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;QACtD,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YACpE,CAAC,EAAE,CAAC;SACP;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC7C,IAAI,CAAC,CAAU;QACf,IAAI,GAAG,CAAU;QACjB,IAAI,KAAK,CAAU;QACnB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC,GAAG,CAAC,CAAC;QACN,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,OAAO,CAAC,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;SAC7D;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;QACvD,IAAI,GAAG,CAAC;QACR,IAAI,KAAK,CAAU;QACnB,IAAI,CAAC,CAAU;QACf,IAAI,KAAK,CAAU;QACnB,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC3C,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU;QAClC,CAAC,GAAG,CAAC,CAAC;QACN,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM;YACnB,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KAC5C,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,GAAG,EAAE;QACzD,IAAI,EAAE,CAAC;QACP,IAAI,GAAG,CAAC;QACR,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAU;;QAElB,KAAK,GAAG,IAAInB,qBAAQ,CAAC;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,EAAE;YAClC,IAAI,GAAG,CAAU;YACjB,IAAI,GAAG,CAAU;YACjB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACzC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YACvC,QAAQ,GAAG;gBACP,KAAK,MAAM;oBACP,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAChC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC;oBAC7B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBAClC,MAAM;gBACV,KAAK,MAAM;oBACP,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBACrC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBACrC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBACrC,MAAM;gBACV;oBACI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;oBACrC,MAAM;aACb;SACJ;;;;QAID,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YACtE,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACrC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,GAAG,EAAE;;gBAEL,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;aACtC;YACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SAC1C;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;QAC3D,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE;QACvC,IAAI,GAAG,CAAC,IAAI,IAAImH,oBAAM,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,CAAU;YACf,IAAI,GAAG,CAAC;YACR,IAAI,QAAQ,CAAC;YACb,IAAI,GAAG,CAAC;YACR,IAAI,MAAM,CAAC;YACX,IAAI,GAAG,CAAC;YACR,IAAI,QAAQ,CAAC;YACb,IAAI,KAAK,CAAC;YACV,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;;YAEvG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;gBACvC,OAAO,IAAI,CAAC;YAChB,QAAQ,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3C,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,mBAAmB;gBACxB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5C,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACxC;YACD,GAAG,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU;YACnD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACvC;YACD,IAAI,GAAG,CAAC,GAAG,EAAE;;;;gBAIT,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAClC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/B,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtC;aACJ;YACD,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,IAAI,KAAK,CAAC;gBACV,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACzB,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;aACzC;;YAED,MAAM,GAAG,IAAIA,oBAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI9F,qBAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxD,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;;YAG3B,GAAG,GAAG,IAAIO,iCAAgB,CAAC,IAAI3B,6BAAgB,EAAE,CAAC,CAAC;YACnD,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,QAAQ,CAAC,QAAQ,CAAC,IAAI6B,sBAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;;YAGlC,IAAI,KAAK,EAAE;gBACP,IAAI,GAAG,CAAC,SAAS,EAAE;;;oBAGf,GAAG,GAAG,IAAIT,qBAAQ,EAAE,CAAC;oBACrB,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACnC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACrB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACrB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACrB,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBACtC;gBACD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClB,GAAG,GAAG,IAAIA,qBAAQ,EAAE,CAAC;gBACrB,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjD,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;aACrC;;;YAGD,IAAI,GAAG,CAAC,SAAS,EAAE;gBACf,GAAG,GAAG,IAAIA,qBAAQ,EAAE,CAAC;gBACrB,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACnC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;aACrC;;;YAGD,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC;SACjB;;QAED,OAAO,IAAI,CAAC;KACf,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;;QAEjE,IAAI,CAAC,CAAS;QACd,IAAI,CAAC,CAAS;QACd,IAAI,CAAC,CAAS;QACd,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;YAChC,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;YACrB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,GAAG,CAAC,GAAG,EAAE;gBACT,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;aACtB;YACD,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SACrB;QACD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;YACzB,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SAClB;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,QAAQ,EAAE,KAAK,EAAE;;;;QAIlE,IAAI,CAAC,CAAS;QACd,IAAI,CAAC,CAAS;QACd,IAAI,CAAC,CAAS;QACd,IAAI,CAAC,CAAS;QACd,IAAI,GAAG,CAAS;QAChB,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;;QAE5B,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAU;QAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE;YACzB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,UAAU;QACtC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpB,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC7B,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBACrC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;wBACzB,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;wBACnB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACpB,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;qBACzB;iBACJ;gBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;SACJ;;QAED,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAU;QAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC7B,SAAS;YACb,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAU;YACrC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;YACpB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBACtB,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC;gBACtB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACZ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACZ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACZ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACZ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACZ,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACrB;SACJ;QACD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACpB,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;gBACpB,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBACtB,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;wBACjE,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBACtB,IAAI,KAAK,IAAI,CAAC,EAAE;;4BAEZ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BACpB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACvB;wBACD,IAAI,CAAC,IAAI,CAAC;4BACN,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;6BACd,IAAI,CAAC,IAAI,CAAC;4BACX,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;;4BAEf,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;wBACnB,CAAC,GAAG,GAAG,CAAC;qBACX;iBACJ;aACJ;SACJ;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,uBAAuB,GAAG,YAAY;QACzD,IAAI,GAAG,CAAC;QACR,GAAG,GAAG,IAAIkG,gCAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;YACtB,GAAG,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,IAAItF,uCAAsB,CAAC,iBAAiB,EAAE,CAAC;QAC7G,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrD,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QACvD,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC;YACtB,GAAG,CAAC,IAAI,GAAG8G,oCAAkB,CAAC,UAAU,CAAC;QAC7C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;QACnD,IAAI,GAAG,CAAS;QAChB,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC;YAChD,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;KACd,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAC/C,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;;QAEhC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;QAEZ,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;;QAEb,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;QAEZ,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;KACf,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC3C,IAAI,GAAG,CAAS;QAChB,IAAI,GAAG,CAAS;QAChB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAS;QACpC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QACzC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QACvC,QAAQ,GAAG;YACP,KAAK,MAAM;gBACP,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC;gBACrC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC;gBACrC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC;gBACrC,MAAM;YACV,KAAK,MAAM;gBACP,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBACtC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBACtC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBACtC,MAAM;YACV;gBACI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACrC,MAAM;SACb;QACD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;KACnC,CAAC;IACF,OAAO,YAAY,CAAC;CACvB,CAAC9H,uBAAU,CAAC,CAAC,CAAC;AAEf;;;AAGA,IAAI,MAAM,GAAG,CAAC,YAAY;IACtB,SAAS,MAAM,GAAG;KACjB;IACD,OAAO,MAAM,CAAC;CACjB,EAAE,CAAC,CAAC;AAEL;;;AAGA,IAAI,UAAU,GAAG,CAAC,YAAY;IAC1B,SAAS,UAAU,GAAG;KACrB;IACD,OAAO,UAAU,CAAC;CACrB,EAAE,CAAC,CAAC;AAEL;;;AAGA,IAAI,QAAQ,GAAG,CAAC,YAAY;IACxB,SAAS,QAAQ,GAAG;KACnB;IACD,OAAO,QAAQ,CAAC;CACnB,EAAE,CAAC,CAAC;AAEL;;;AAGA,IAAI,SAAS,GAAG,CAAC,YAAY;IACzB,SAAS,SAAS,GAAG;KACpB;IACD,OAAO,SAAS,CAAC;CACpB,EAAE,CAAC,CAAC;AAEL;;;AAGA,IAAI,QAAQ,GAAG,CAAC,YAAY;IACxB,SAAS,QAAQ,GAAG;KACnB;IACD,OAAO,QAAQ,CAAC;CACnB,EAAE,CAAC,CACgB;;AC5qBpB;;;;;AAKA,IAAI,SAAS,GAAG,CAAC,UAAU,MAAM,EAAE;IAC/B/B,SAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;;;;;;IAMrC,SAAS,SAAS,GAAG;QACjB,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE6B,gCAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAChE,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;KAChB;;;;;;IAMD,SAAS,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;QAC1C,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,SAAS,IAAI,KAAK,CAAC;KAC7B,CAAC;;;;;;IAMF,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QACrC,IAAI;YACA,IAAI,OAAO,GAAGG,wBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;;gBAEhE,OAAO,IAAI,CAAC;aACf;YACD,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,CAAC,EAAE;YACN,OAAO,KAAK,CAAC;SAChB;KACJ,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,kBAAkB,EAAE;QACpE,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE;YAClC,IAAI,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;YAClD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;YACpD,IAAI,GAAG,GAAG,IAAIqG,gCAAc,CAAC,KAAK,CAAC,CAAC;YACpC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;YACrB,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;YACzB,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC7B,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAIrE,0BAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;SACjD;aACI;YACD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC;SACpD;KACJ,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,kBAAkB,EAAE;QAC3E,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC;KACpD,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAC/C,IAAI,KAAK,CAAC;QACV,QAAQ,IAAI,CAAC,WAAW;YACpB,KAAK,cAAc,CAAC,SAAS;gBACzB,IAAI;oBACA,IAAI,CAAC,IAAI,GAAG9B,qBAAQ,CAAC,kBAAkB,CAACA,qBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5F,IAAI,SAAS,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnE,IAAI,SAAS,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC/D,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;;oBAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;wBAC1B,IAAI,CAAC,UAAU,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;qBACvE;oBACD,IAAI,SAAS,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnE,IAAI,CAAC,MAAM,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC7D,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;oBAC9C,IAAI,SAAS,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClE,IAAI,WAAW,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtE,IAAI,SAAS,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;;;oBAG/D,IAAI,CAAC,KAAK,GAAG,IAAIuG,kBAAI,EAAE,CAAC;oBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;;oBAE5B,IAAI,IAAI,GAAGvG,qBAAQ,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC1D,IAAI,IAAI,IAAI,GAAG;wBACX,SAAS,IAAI,OAAO,CAAC;oBACzB,IAAI,MAAM,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAC9D,IAAI,MAAM,IAAI,GAAG;wBACb,SAAS,IAAI,SAAS,CAAC;oBAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE4J,6BAAe,CAAC,SAAS,CAAC,CAAC;oBACxF,IAAI,IAAI,GAAG5J,qBAAQ,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC1D,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAClD,IAAI,MAAM,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBAChE,IAAI,CAAC,gBAAgB,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxD,IAAI,MAAM,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBAChE,IAAI,CAAC,gBAAgB,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACvD,IAAI,UAAU,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;oBACxE,IAAI,UAAU,IAAI,EAAE;wBAChB,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;iBACnE;gBACD,OAAO,KAAK,EAAE;oBACV,OAAOH,uBAAU,CAAC,YAAY,CAAC;iBAClC;gBACD,MAAM;YACV,KAAK,cAAc,CAAC,WAAW;gBAC3B,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAIE,uBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACvE,IAAI,CAAC,8BAA8B,EAAE,CAAC;iBACzC;qBACI;oBACD,OAAOF,uBAAU,CAAC,YAAY,CAAC;iBAClC;gBACD,MAAM;YACV,KAAK,cAAc,CAAC,WAAW;gBAC3B,IAAI,OAAO,CAAC;gBACZ,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;gBACtD,IAAI,EAAE,CAAC;gBACP,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBAC1B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACzB,CAAC,GAAG,QAAQ,CAACG,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBACxD,CAAC,GAAG,QAAQ,CAACA,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBACxD,KAAK,GAAG,QAAQ,CAACA,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;oBAChE,MAAM,GAAG,QAAQ,CAACA,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAClE,IAAI,GAAG,QAAQ,CAACA,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;oBACjE,IAAI,GAAG,QAAQ,CAACA,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;oBACjE,IAAI,GAAG,QAAQ,CAACA,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;oBAClE,IAAI,GAAG,QAAQ,CAACA,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC9D,IAAI,GAAG,QAAQ,CAACA,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC9D,EAAE,GAAGA,qBAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAChD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;iBACxF;gBACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC;gBACjD,MAAM;YACV,KAAK,cAAc,CAAC,cAAc;gBAC9B,OAAOH,uBAAU,CAAC,YAAY,CAAC;SACtC;QACD,OAAOA,uBAAU,CAAC,aAAa,CAAC;KACnC,CAAC;IACF,OAAO,SAAS,CAAC;CACpB,CAACA,uBAAU,CAAC,CAAC,CAAC;AAEf,IAAI,cAAc,GAAG,CAAC,YAAY;IAC9B,SAAS,cAAc,GAAG;KACzB;IACD,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC,CAAC;AACL,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;AAC7B,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC;AAC/B,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC;AAC/B,cAAc,CAAC,cAAc,GAAG,CAAC,CAAC;;ACzKlC,IAAI,QAAQ,CAAC;;;;AAIb,IAAI,UAAU,GAAG,CAAC,UAAU,MAAM,EAAE;IAChC/B,SAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;;;;;;IAMtC,SAAS,UAAU,CAAC,QAAQ,EAAE;QAC1B,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,EAAE;QAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE6B,gCAAmB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;QACxE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QACxB,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,OAAO,KAAK,CAAC;KAChB;;;;;;IAMD,UAAU,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;QAC3C,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,QAAQ,GAAG,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC;QAC9D,IAAI,QAAQ,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,yDAAyD,GAAG,SAAS,CAAC,CAAC;SACtF;QACD,OAAO,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC;KACzD,CAAC;;;;;;IAMF,UAAU,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAGG,wBAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI;;;;;;;;;YASA,OAAO,IAAI,CAAC;SACf;QACD,OAAO,CAAC,EAAE;YACN,OAAO,KAAK,CAAC;SAChB;KACJ,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,kBAAkB,EAAE;KACxE,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,kBAAkB,EAAE;KAC/E,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;QAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;;QAEhD,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,QAAQ,EAAE;;YAEV,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,eAAe,GAAG,EAAE,CAAC;YACzB,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC;YAChD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;;YAG5B,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC3B,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,SAAS,IAAI,MAAM,EAAE;oBACrB,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACxC,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC7B,IAAI,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACnC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;wBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACnC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;4BACpB,IAAI,QAAQ,IAAI,YAAY,EAAE;gCAC1B,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;6BAClC;iCACI,IAAI,QAAQ,IAAI,eAAe,EAAE;gCAClC,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;6BACxC;4BACD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;yBAC7E;qBACJ;iBACJ;aACJ;YACD,IAAI,SAAS,IAAI,EAAE,EAAE;gBACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,GAAG,gCAAgC,CAAC,CAAC;aACvF;YACD,IAAI,eAAe,IAAI,EAAE,EAAE;gBACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,GAAG,uCAAuC,CAAC,CAAC;aAC9F;YACD,IAAI,QAAQ,GAAGwG,yBAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,QAAQ,IAAI,SAAS,EAAE;gBACvB,QAAQ,GAAG,IAAIC,kBAAI,EAAE,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC;aAClB;YACD,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC;YAC1B,IAAI,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,EAAEC,iCAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SACtG;QACD,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC;YACpB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG;qBACT,GAAG,IAAI,CAAC,UAAU,GAAG;gBAC1B,GAAG,IAAI,CAAC,UAAU,GAAG;QAC7B,CAAC;SACA;QACD,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO3G,uBAAU,CAAC,YAAY,CAAC;KAClC,CAAC;IACF,OAAO,UAAU,CAAC;CACrB,CAACA,uBAAU,CAAC,CAAC,CACQ;;ACrItB;;;AAGA,IAAI,SAAS,GAAG,CAAC,UAAU,MAAM,EAAE;IAC/B/B,SAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;;;;;;IAMrC,SAAS,SAAS,CAAC,WAAW,EAAE,iBAAiB,EAAE;QAC/C,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,KAAK,CAAC,EAAE;QACpD,IAAI,iBAAiB,KAAK,KAAK,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI,CAAC,EAAE;QAC/D,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE6B,gCAAmB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;QACxE,KAAK,CAAC,UAAU,GAAG,IAAI,MAAM,EAAE,CAAC;;QAEhC,KAAK,CAAC,aAAa,GAAG,IAAIqJ,mCAAkB,EAAE,CAAC;QAC/C,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;QAC9B,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QACjC,KAAK,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC7C,OAAO,KAAK,CAAC;KAChB;;;;;;IAMD,SAAS,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;QAC1C,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,SAAS,IAAI,KAAK,CAAC;KAC7B,CAAC;;;;;;IAMF,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QACrC,OAAO,CAAClJ,wBAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;KACpD,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,kBAAkB,EAAE;QACpE,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;YACrC,OAAO;QACX,IAAI,QAAQ,GAAG,IAAIqG,gCAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC;YACtB,QAAQ,CAAC,IAAI,GAAGwB,oCAAkB,CAAC,UAAU,CAAC;;QAElD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,kBAAkB,EAAE;;QAE3E,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG9G,uCAAsB,CAAC,kBAAkB,EAAE,CAAC;SACvE;aACI;YACD,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAIsF,gCAAc,CAACtF,uCAAsB,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACvF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG8G,oCAAkB,CAAC,UAAU,CAAC;SAC9D;;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAC/C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;;;YAG5B,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;SAC/B;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;;;;;;gBAOrB,IAAI,CAAC,OAAO,GAAG,IAAI5B,oBAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACvC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;oBACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAGlF,uCAAsB,CAAC,kBAAkB,EAAE,CAAC;iBACvE;qBACI;oBACD,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAIsF,gCAAc,CAACtF,uCAAsB,CAAC,iBAAiB,EAAE,CAAC,CAAC;oBACvF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG8G,oCAAkB,CAAC,UAAU,CAAC;iBAC9D;;;;gBAID,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC7B;iBACI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACtB,IAAI,CAAC,OAAO,EAAE,CAAC;aAClB;iBACI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACzB,IAAI,CAAC,UAAU,EAAE,CAAC;aACrB;iBACI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;iBACI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACrD,OAAO9H,uBAAU,CAAC,YAAY,CAAC;aAClC;iBACI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;;gBAE5B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAIa,sBAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;gBAEhE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,aAAa,EAAE;;oBAEpB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC5C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,8BAA8B,EAAE,CAAC;aACzC;SACJ;QACD,OAAOb,uBAAU,CAAC,aAAa,CAAC;KACnC,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,UAAU,EAAE;;QAEvD,IAAI,CAAC,SAAS,GAAG,IAAImG,oCAAsB,EAAE,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAC1D,CAAC;;;;;IAKF,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;QAE5C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;QAEzC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;QAE9C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;QACjD,IAAI,GAAG,CAAC;QACR,IAAI,IAAI,CAAC;QACT,IAAI,QAAQ,CAAS;QACrB,IAAI,UAAU,CAAS;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5C,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;YACrC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,kBAAkB;gBACvB,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;gBACtF,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAChD,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;aACxC;iBACI;gBACD,GAAG,GAAG,IAAI,CAAC;aACd;YACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;;YAE9B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC;gBAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAIjG,uBAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SACvD;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;;YAEpD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KACjC,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACtC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;SAClE;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QACzC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,CAAU;QAC9E,IAAI,CAAC,CAAU;QACf,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAE,UAAU;QACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;;YAEhC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACvC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACvC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;;YAEvC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACxC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACxC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACxB;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACnC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1E;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B,CAAC;;;;;;;IAOF,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,WAAW,WAAW,OAAO,WAAW;QAC7E,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACjC;;YAEG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC,CAAC;;;;;;;IAOF,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,WAAW,WAAW,OAAO,WAAW;QAC9E,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO;gBACpE,OAAO,CAAC,CAAC;SAChB;QACD,OAAO,CAAC,CAAC,CAAC;KACb,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC1C,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC;QACb,IAAI,QAAQ,CAAC;QACb,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACvC,IAAI,SAAS,CAAC;QACd,IAAI,SAAS,CAAC;QACd,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAU;;QAEtC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;YAClC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,SAAS,GAAG,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACnC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAChC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAChC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAChC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAChC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAChC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;;;YAG5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC7D,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1J,CAAC,GAAG,CAAC,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;gBAC1B,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrD,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzD,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5D;YACD,QAAQ,GAAG,IAAIS,iCAAgB,CAAC,IAAI3B,6BAAgB,EAAE,CAAC,CAAC;YACxD,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;YAE/B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;YAE3B,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACnC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC;YACpC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI;gBAC3B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;YACnC,QAAQ,GAAG,IAAIyB,yBAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,QAAQ,CAAC,IAAII,sBAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,EAAE;;;;gBAIP,IAAI,QAAQ,EAAE;oBACV,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC/B,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;iBAC7C;gBACD,IAAI,GAAG,IAAIqI,+BAAc,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBAC7B,QAAQ,GAAG,IAAI,CAAC;aACnB;YACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;SACjD;;QAED,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SAC7C;;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;gBACzD,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI;gBAChD,CAAC,EAAE,CAAC;SACX;QACD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,SAAS,CAAC;CACpB,CAAClJ,uBAAU,CAAC,CAAC,CAAC;AAEf,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;;ACrXlB;;;;;AAKA,IAAI,aAAa,GAAG,CAAC,UAAU,MAAM,EAAE;IACnC/B,SAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;;;;;;IAMzC,SAAS,aAAa,CAAC,sBAAsB,EAAE,yBAAyB,EAAE;QACtE,IAAI,sBAAsB,KAAK,KAAK,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI,CAAC,EAAE;QACzE,IAAI,yBAAyB,KAAK,KAAK,CAAC,EAAE,EAAE,yBAAyB,GAAG,CAAC,CAAC,EAAE;QAC5E,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE6B,gCAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAChE,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QACtB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,aAAa,GAAG,IAAImE,uBAAU,EAAE,CAAC;QACvC,IAAI,EAAE,GAAG,IAAIA,uBAAU,EAAE,CAAC;QAC1B,IAAI,EAAE,GAAG,IAAIA,uBAAU,EAAE,CAAC;QAC1B,EAAE,CAAC,aAAa,CAAClF,qBAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,EAAE,CAAC,aAAa,CAACA,qBAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,sBAAsB,EAAE;YACxB,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACrC,EAAE,CAAC,aAAa,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;YACpE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;SACzD;QACD,OAAO,KAAK,CAAC;KAChB;;;;;;IAMD,aAAa,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;QAC9C,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,SAAS,IAAI,SAAS,CAAC;KACjC,CAAC;;;;;;IAMF,aAAa,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QACzC,OAAO,KAAK,CAAC;KAChB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QACnD,IAAI,KAAK,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,QAAQ,KAAK;gBACT,KAAK,aAAa,CAAC,aAAa;oBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,MAAM;gBACV,KAAK,EAAE;;oBAEH,MAAM;gBACV,KAAK,aAAa,CAAC,aAAa;oBAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE;wBACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;oBAC3D,MAAM;gBACV,KAAK,aAAa,CAAC,kBAAkB;oBACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,MAAM;gBACV,KAAK,aAAa,CAAC,gBAAgB;oBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;oBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,EAAE,CAAC;oBAC9B,MAAM;gBACV,KAAK,aAAa,CAAC,gBAAgB;oBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpC,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACjD,MAAM;gBACV,KAAK,aAAa,CAAC,gBAAgB;oBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpC,MAAM;gBACV,KAAK,aAAa,CAAC,6BAA6B;oBAC5C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChD,MAAM;gBACV,KAAK,aAAa,CAAC,eAAe;oBAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,MAAM;gBACV,KAAK,aAAa,CAAC,YAAY;oBAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,MAAM;gBACV,KAAK,aAAa,CAAC,gBAAgB;oBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,MAAM;gBACV,KAAK,aAAa,CAAC,WAAW;oBAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,MAAM;gBACV;oBACI,IAAI,CAAC,IAAI,CAAC,WAAW;wBACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAC1C;YACD,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,KAAK,GAAG,IAAIkK,iCAAgB,EAAE,CAAC;gBACpC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAOjJ,uBAAU,CAAC,YAAY,CAAC;aAClC;SACJ;QACD,OAAOA,uBAAU,CAAC,aAAa,CAAC;KACnC,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3F,CAAC;;;;;;IAMF,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,SAAS,EAAE;QACzD,IAAI,SAAS,CAAC;QACd,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,CAAS;QAClB,IAAI,CAAC,CAAS;QACd,IAAI,SAAS,GAAG,IAAIjB,qBAAQ,EAAE,CAAC;QAC/B,IAAI,WAAW,GAAG,IAAIkF,uBAAU,EAAE,CAAC;QACnC,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACtC,IAAI,QAAQ,GAAG,IAAI8E,6BAAY,EAAE,CAAC;QAClC,IAAI,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE;YACtC,CAAC,GAAG,CAAC,CAAC;YACN,IAAI,GAAG,IAAIC,0BAAS,EAAE,CAAC;YACvB,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC9B,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;YACxB,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9B,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9B,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9B,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnC,IAAI,KAAK,GAAG,CAAC;gBACT,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,KAAK,GAAG,CAAC;gBACT,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,KAAK,GAAG,CAAC;gBACT,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,KAAK,GAAG,CAAC;gBACT,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,IAAI,KAAK,GAAG,EAAE;gBACV,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,IAAI,KAAK,GAAG,EAAE;gBACV,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;YAC1G,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,SAAS,CAAC,WAAW,GAAG,CAAC,EAAE;gBAC3B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;gBAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aAChE;iBACI;gBACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;aACpC;YACD,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACzC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACxB;QACD,OAAO,QAAQ,CAAC;KACnB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACjD,IAAI,EAAE,CAAC;QACP,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,KAAK,IAAI,GAAG;YACZ,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnC,GAAG;YACC,IAAI,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAC5B,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,GAAG,EAAE;gBACX,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,EAAE,IAAI,aAAa,CAAC,aAAa;oBACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;aAC3B;YACD,IAAI,EAAE,IAAI,GAAG;gBACT,IAAI,CAAC,OAAO,EAAE,CAAC;SACtB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC9C,IAAI,EAAE,CAAC;QACP,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,KAAK,IAAI,GAAG;YACZ,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnC,GAAG;YACC,IAAI,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YACzB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,GAAG,EAAE;gBACX,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,EAAE,IAAI,aAAa,CAAC,aAAa;oBACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;aAC3B;YACD,IAAI,EAAE,IAAI,GAAG;gBACT,IAAI,CAAC,OAAO,EAAE,CAAC;SACtB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACjD,IAAI,EAAE,CAAC;QACP,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,KAAK,IAAI,GAAG;YACZ,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnC,GAAG;YACC,IAAI,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAChC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,GAAG,EAAE;gBACX,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,EAAE,IAAI,aAAa,CAAC,aAAa;oBACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;aAC3B;YACD,IAAI,EAAE,IAAI,GAAG;gBACT,IAAI,CAAC,OAAO,EAAE,CAAC;SACtB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QAC7C,IAAI,EAAE,CAAC;QACP,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,CAAC;QACV,IAAI,UAAU,CAAS;QACvB,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,IAAI,KAAK,IAAI,GAAG;YACZ,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnC,GAAG;YACC,IAAI,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;gBAChD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACnC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,GAAG,EAAE;gBACX,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,EAAE,IAAI,aAAa,CAAC,aAAa;oBACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;aAC3B;YACD,IAAI,EAAE,IAAI,GAAG;gBACT,IAAI,CAAC,OAAO,EAAE,CAAC;SACtB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAChE,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAC/C,IAAI,EAAE,CAAC;QACP,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE;gBACrD,IAAI,KAAK,IAAI,aAAa,CAAC,aAAa;oBACpC,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1B,IAAI,KAAK,IAAI,EAAE;oBACX,OAAO,KAAK,CAAC;aACpB;;gBAEG,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,KAAK,IAAI,aAAa,CAAC,aAAa;gBACpC,OAAO,KAAK,CAAC;SACpB;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACjD,IAAI,EAAE,CAAC;QACP;YACI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;eACrB,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QAC7C,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI;YAClC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KAC/B,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC9C,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,IAAI,IAAI,EAAE;YACZ,EAAE,IAAI,CAAC,KAAK,CAAC;YACb,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SAC3B;aACI,IAAI,EAAE,IAAI,IAAI;YACf,EAAE,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM;YACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5B,OAAO,EAAE,CAAC;KACb,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QAC7C,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC;YACR,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;KACZ,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAChD,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,CAAC,CAAC;YACR,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC;KACZ,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAChD,IAAI,GAAG,GAAG,IAAIjK,qBAAQ,EAAE,CAAC;QACzB,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,IAAI,EAAE,IAAI,GAAG;YACT,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG;YAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;KACd,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QAClD,IAAI,IAAI,GAAG,IAAIkF,uBAAU,EAAE,CAAC;QAC5B,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,IAAI,EAAE,IAAI,GAAG;YACT,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;;QAE9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG;YAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;;QAE3C,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,EAAE,IAAI,IAAI;YACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG;YACC,IAAI,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,IAAI;gBACV,GAAG,IAAI,EAAE,CAAC;SACjB,QAAQ,EAAE,IAAI,IAAI,EAAE;QACrB,OAAO,GAAG,CAAC;KACd,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAC/C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC7C,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,QAAQ,EAAE;QACzD,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,QAAQ,GAAG,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;KAC/M,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,uBAAuB,GAAG,YAAY;QAC1D,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;KAChH,CAAC;IACF,OAAO,aAAa,CAAC;CACxB,CAACjE,uBAAU,CAAC,CAAC,CAAC;AAEf,aAAa,CAAC,aAAa,GAAG,YAAY,CAAC;AAC3C,aAAa,CAAC,kBAAkB,GAAG,aAAa,CAAC;AACjD,aAAa,CAAC,gBAAgB,GAAG,WAAW,CAAC;AAC7C,aAAa,CAAC,gBAAgB,GAAG,WAAW,CAAC;AAC7C,aAAa,CAAC,gBAAgB,GAAG,WAAW,CAAC;AAC7C,aAAa,CAAC,6BAA6B,GAAG,uBAAuB,CAAC;AACtE,aAAa,CAAC,eAAe,GAAG,WAAW,CAAC;AAC5C,aAAa,CAAC,YAAY,GAAG,QAAQ,CAAC;AACtC,aAAa,CAAC,gBAAgB,GAAG,WAAW,CAAC;AAC7C,aAAa,CAAC,WAAW,GAAG,OAAO,CAAC;AACpC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC;;;;AAInC,IAAI,aAAa,GAAG,CAAC,YAAY;IAC7B,SAAS,aAAa,GAAG;KACxB;IACD,OAAO,aAAa,CAAC;CACxB,EAAE,CAAC,CAAC;AAEL;;;AAGA,IAAI,UAAU,GAAG,CAAC,YAAY;IAC1B,SAAS,UAAU,GAAG;KACrB;IACD,OAAO,UAAU,CAAC;CACrB,EAAE,CAAC,CAAC;AAEL;;;AAGA,IAAI,SAAS,GAAG,CAAC,YAAY;IACzB,SAAS,SAAS,GAAG;KACpB;IACD,OAAO,SAAS,CAAC;CACpB,EAAE,CAAC,CAAC;AAEL;;;AAGA,IAAI,aAAa,GAAG,CAAC,YAAY;IAC7B,SAAS,aAAa,GAAG;KACxB;IACD,OAAO,aAAa,CAAC;CACxB,EAAE,CAAC,CACqB;;AC5fzB;;;;;;AAMA,IAAI,aAAa,GAAG,CAAC,UAAU,MAAM,EAAE;IACnC/B,SAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;;;;IAIzC,SAAS,aAAa,CAAC,sBAAsB,EAAE,yBAAyB,EAAE;QACtE,IAAI,sBAAsB,KAAK,KAAK,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI,CAAC,EAAE;QACzE,IAAI,yBAAyB,KAAK,KAAK,CAAC,EAAE,EAAE,yBAAyB,GAAG,CAAC,CAAC,EAAE;QAC5E,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE6B,gCAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAChE,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QACtB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,aAAa,GAAG,IAAImE,uBAAU,EAAE,CAAC;QACvC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAClF,qBAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAClE,IAAI,sBAAsB,EAAE;YACxB,IAAI,IAAI,GAAG,IAAIkF,uBAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;YACtE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,KAAK,CAAC;KAChB;;;;;;IAMD,aAAa,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;QAC9C,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,SAAS,IAAI,WAAW,CAAC;KACnC,CAAC;;;;;;IAMF,aAAa,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QACzC,OAAO,KAAK,CAAC;KAChB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QACnD,IAAI,KAAK,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,QAAQ,KAAK;gBACT,KAAK,aAAa,CAAC,aAAa;oBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,MAAM;gBACV,KAAK,aAAa,CAAC,aAAa;oBAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE;wBACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;oBAC3D,MAAM;gBACV,KAAK,aAAa,CAAC,kBAAkB;oBACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,MAAM;gBACV,KAAK,aAAa,CAAC,gBAAgB;oBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpC,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7C,MAAM;gBACV,KAAK,aAAa,CAAC,gBAAgB;oBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpC,MAAM;gBACV,KAAK,aAAa,CAAC,YAAY;oBAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,MAAM;gBACV,KAAK,aAAa,CAAC,UAAU;oBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,MAAM;gBACV;oBACI,IAAI,CAAC,IAAI,CAAC,WAAW;wBACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAC1C;YACD,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,IAAI,CAAC,aAAa,GAAG,IAAImF,qCAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACnE,IAAI,CAAC,OAAO,GAAG,IAAIlD,oBAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC9C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAIrF,sBAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;;;gBAIpK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,OAAOb,uBAAU,CAAC,YAAY,CAAC;aAClC;SACJ;QACD,OAAOA,uBAAU,CAAC,aAAa,CAAC;KACnC,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,UAAU,EAAE;;QAE3D,IAAI,CAAC,SAAS,GAAG,IAAImG,oCAAsB,EAAE,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAC1D,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,sBAAsB,GAAG,YAAY;QACzD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,EAAE,CAAC,EAAE;YACtC,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;YAC7C,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE;gBAC/B,IAAI,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;gBACvF,IAAI,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;gBAC5D,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc;oBACjC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;aACzC;SACJ;KACJ,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,QAAQ,EAAE,OAAO,EAAE;QACzE,IAAI,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC;QACjC,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACtD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,MAAM,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC9B,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACzB,IAAI,MAAM,IAAI,CAAC;gBACX,EAAE,KAAK,CAAC;SACf;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC9C,IAAI,EAAE,CAAC;QACP,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,CAAC;QACR,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,KAAK,IAAI,GAAG;YACZ,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI0C,yBAAQ,EAAE,CAAC;QAChC,GAAG;YACC,IAAI,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,KAAK,GAAG,IAAIC,8BAAa,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACvC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;;YAE9B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YACnC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,GAAG,EAAE;gBACX,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,EAAE,IAAI,aAAa,CAAC,aAAa;oBACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;aAC3B;YACD,IAAI,EAAE,IAAI,GAAG;gBACT,IAAI,CAAC,OAAO,EAAE,CAAC;SACtB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAChE,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC;QACP,IAAI,YAAY,CAAC;QACjB,IAAI,OAAO,CAAC;QACZ,IAAI,OAAO,CAAU;QACrB,IAAI,KAAK,IAAI,GAAG;YACZ,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,GAAG,EAAE;YACd,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACzB,QAAQ,EAAE;gBACN,KAAK,aAAa,CAAC,aAAa;oBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,MAAM;gBACV,KAAK,aAAa,CAAC,iBAAiB;oBAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;oBAC9C,MAAM;gBACV,KAAK,aAAa,CAAC,oBAAoB;oBACnC,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;oBAC5C,MAAM;gBACV,KAAK,aAAa,CAAC,mBAAmB;oBAClC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,UAAU;oBACpD,MAAM;gBACV,KAAK,aAAa,CAAC,sBAAsB;oBACrC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;oBACvC,MAAM;gBACV,KAAK,aAAa,CAAC,eAAe;oBAC9B,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;oBAC/B,MAAM;gBACV,KAAK,aAAa,CAAC,cAAc;oBAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,aAAa,CAAC,iBAAiB;oBAChC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACzB,MAAM;aACb;SACJ;QACD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI;YAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;KAC3C,CAAC;;;;;;;;IAQF,aAAa,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,YAAY,EAAE,OAAO,EAAE,OAAO,WAAW;QAC3F,IAAI,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC;QAC9B,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAS;QACvC,IAAI,QAAQ,CAAC;QACb,IAAI,MAAM,CAAC;QACX,IAAI,QAAQ,CAAC;QACb,IAAI,GAAG,CAAC;QACR,IAAI,QAAQ,GAAG,IAAInI,iCAAgB,CAAC,IAAI3B,6BAAgB,EAAE,CAAC,CAAC;QAC5D,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,cAAc,CAAS;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3B,EAAE,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;YACxB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACZ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACZ,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAClD,cAAc,GAAG,CAAC,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;gBAC3C,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBAC3C,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE;oBACjB,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzC,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3C,SAAS,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;oBACrC,SAAS,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;oBACrC,SAAS,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;;oBAErC,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;oBACnC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;oBAChC,EAAE,cAAc,CAAC;iBACpB;aACJ;YACD,KAAK,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE;gBACnD,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpB,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;aACzB;YACD,EAAE,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;YACzB,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;YACvB,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;SACxB;QACD,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/C,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACjC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACvC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;;QAEvC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;QAE3B,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC;QACpC,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACnC,OAAO,QAAQ,CAAC;KACnB,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,OAAO,WAAW;QAC3D,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;KAC1C,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,OAAO,EAAE;QACpD,IAAI,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;KAClC,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,YAAY,EAAE;QAC1D,IAAI,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvB,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;QAEzC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;KAC3C,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,YAAY,EAAE;QACtD,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,IAAI,EAAE,IAAI,GAAG;YACT,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG;YAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;KAChC,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAC/C,IAAI,EAAE,CAAC;QACP,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE;gBACrD,IAAI,KAAK,IAAI,aAAa,CAAC,aAAa;oBACpC,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1B,IAAI,KAAK,IAAI,EAAE;oBACX,OAAO,KAAK,CAAC;aACpB;;gBAEG,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,KAAK,IAAI,aAAa,CAAC,aAAa;gBACpC,OAAO,KAAK,CAAC;SACpB;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACjD,IAAI,EAAE,CAAC;QACP;YACI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;eACrB,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QAC7C,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI;YAClC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KAC/B,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC9C,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,IAAI,IAAI,EAAE;YACZ,EAAE,IAAI,CAAC,KAAK,CAAC;YACb,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SAC3B;aACI,IAAI,EAAE,IAAI,IAAI;YACf,EAAE,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM;YACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5B,OAAO,EAAE,CAAC;KACb,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QAC7C,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC;YACR,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;KACZ,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAChD,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,CAAC,CAAC;YACR,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC;KACZ,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAChD,IAAI,GAAG,GAAG,IAAID,qBAAQ,EAAE,CAAC;QACzB,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,IAAI,EAAE,IAAI,GAAG;YACT,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9B,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG;YAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;KACd,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QAClD,IAAI,IAAI,GAAG,IAAIkF,uBAAU,EAAE,CAAC;QAC5B,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,IAAI,EAAE,IAAI,GAAG;YACT,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;;QAE/B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG;YAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,IAAIA,uBAAU,EAAE,CAAC;QAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC;KAClB,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;;QAE3C,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,EAAE,IAAI,IAAI;YACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG;YACC,IAAI,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,IAAI;gBACV,GAAG,IAAI,EAAE,CAAC;SACjB,QAAQ,EAAE,IAAI,IAAI,EAAE;QACrB,OAAO,GAAG,CAAC;KACd,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAC/C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC7C,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,QAAQ,EAAE;QACzD,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,QAAQ,GAAG,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;KAC/M,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,uBAAuB,GAAG,YAAY;QAC1D,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;KAChH,CAAC;IACF,OAAO,aAAa,CAAC;CACxB,CAACjE,uBAAU,CAAC,CAAC,CAAC;AAEf,aAAa,CAAC,aAAa,GAAG,YAAY,CAAC;AAC3C,aAAa,CAAC,kBAAkB,GAAG,aAAa,CAAC;AACjD,aAAa,CAAC,gBAAgB,GAAG,WAAW,CAAC;AAC7C,aAAa,CAAC,gBAAgB,GAAG,WAAW,CAAC;AAC7C,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC;AACnC,aAAa,CAAC,YAAY,GAAG,QAAQ,CAAC;AACtC,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC;AAClC,aAAa,CAAC,iBAAiB,GAAG,QAAQ,CAAC;AAC3C,aAAa,CAAC,oBAAoB,GAAG,UAAU,CAAC;AAChD,aAAa,CAAC,eAAe,GAAG,MAAM,CAAC;AACvC,aAAa,CAAC,mBAAmB,GAAG,SAAS,CAAC;AAC9C,aAAa,CAAC,cAAc,GAAG,KAAK,CAAC;AACrC,aAAa,CAAC,sBAAsB,GAAG,YAAY,CAAC;AACpD,aAAa,CAAC,iBAAiB,GAAG,QAAQ,CAAC;AAC3C,IAAI,YAAY,GAAG,CAAC,YAAY;IAC5B,SAAS,YAAY,GAAG;KACvB;IACD,OAAO,YAAY,CAAC;CACvB,EAAE,CAAC,CAAC;AAEL,IAAI,SAAS,GAAG,CAAC,YAAY;IACzB,SAAS,SAAS,GAAG;KACpB;IACD,OAAO,SAAS,CAAC;CACpB,EAAE,CAAC,CAAC;AAEL,IAAI,YAAY,GAAG,CAAC,YAAY;IAC5B,SAAS,YAAY,GAAG;KACvB;IACD,OAAO,YAAY,CAAC;CACvB,EAAE,CAAC,CACoB;;ACrhBxB;;;AAGA,IAAI,SAAS,GAAG,CAAC,UAAU,MAAM,EAAE;IAC/B/B,SAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;;;;;;IAMrC,SAAS,SAAS,CAAC,KAAK,EAAE;QACtB,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE6B,gCAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAChE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC7B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE;;;;;QAKhD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACvB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;;;IAMH,SAAS,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;QAC1C,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,SAAS,IAAI,KAAK,CAAC;KAC7B,CAAC;;;;;;IAMF,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QACrC,IAAI,OAAO,GAAGG,wBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,OAAO,EAAE;YACT,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACrC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SACxC;QACD,OAAO,IAAI,IAAI,IAAI,CAAC;KACvB,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,kBAAkB,EAAE;QACpE,IAAI,kBAAkB,CAAC,EAAE,IAAI,KAAK,EAAE;YAChC,IAAI,GAAG,GAAGA,wBAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACtB;aACI;YACD,IAAI,KAAK,CAAC;YACV,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACvC,OAAO;aACV;YACD,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,KAAK,CAAC,OAAO,CAAC4D,8BAAa,CAAC,EAAE;gBAC9B,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;gBAC9B,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAC;gBACtC,EAAE,CAAC,OAAO,GAAG,IAAIzC,gCAAe,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC1B,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;iBAC1B;aACJ;SACJ;KACJ,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,kBAAkB,EAAE;QAC3E,IAAI,kBAAkB,CAAC,EAAE,IAAI,KAAK,EAAE;YAChC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;aACI;YACD,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;YAC9B,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;KAC9B,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QAC/C,IAAI,IAAI,CAAC;QACT,IAAI,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;;;YAGtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;SAClE;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAClE,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;YACzC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACjE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;;;YAItB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,OAAOpB,uBAAU,CAAC,aAAa,CAAC;aACnC;SACJ;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE;YACvC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACrC,OAAOA,uBAAU,CAAC,aAAa,CAAC;aACnC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAOA,uBAAU,CAAC,YAAY,CAAC;SAClC;QACD,OAAOA,uBAAU,CAAC,aAAa,CAAC;KACnC,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,UAAU,EAAE;;QAEvD,IAAI,CAAC,SAAS,GAAG,IAAImG,oCAAsB,EAAE,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAC1D,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;QAC7C,QAAQ,KAAK,CAAC,CAAC,CAAC;YACZ,KAAK,QAAQ;gBACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;wBACT,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;oBACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAClC,IAAI,IAAI,CAAC,aAAa;wBAClB,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;iBAC9D;gBACD,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC7B;KACJ,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;QACxC,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE;YAChE,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YAC5C,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,IAAI,cAAc,CAAC;YACnB,IAAI,iBAAiB,CAAC;YACtB,IAAI,QAAQ,CAAC;YACb,IAAI,MAAM,CAAC;YACX,IAAI,CAAC,CAAC;YACN,IAAI,EAAE,CAAC;YACP,IAAI,UAAU,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;gBAChC,UAAU,GAAG,IAAIG,gCAAc,CAACtF,uCAAsB,CAAC,iBAAiB,EAAE,CAAC,CAAC;;gBAE5E,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC;oBACtB,UAAU,CAAC,IAAI,GAAG8G,oCAAkB,CAAC,UAAU,CAAC;gBACpD,MAAM,GAAG,IAAI5B,oBAAM,CAAC,UAAU,CAAC,CAAC;gBAChC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC3B,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;gBAC1C,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC;gBAC1C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,EAAE,CAAC;oBAClC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC7D,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC;oBACnB,SAAS;;gBAEb,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;;oBAE9B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;iBAC9C;qBACI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;oBAErB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;iBAChC;qBACI;;;oBAGD,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;iBACpB;gBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE;oBAC1B,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;;oBAE3D,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE;oBAC3B,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE;wBACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC;iBAC5D;;gBAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;aAChC;SACJ;KACJ,CAAC;;;;;;IAMF,SAAS,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,aAAa,EAAE,QAAQ,EAAE;QAC5E,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC;QACT,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,QAAQ,CAAC;QACb,IAAI,QAAQ,CAAC;QACb,IAAI,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE;YAC/B,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACpC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE;gBAC3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACnE,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACnE,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;aAC1E;SACJ;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,QAAQ,GAAG,IAAIvF,iCAAgB,CAAC,IAAI3B,6BAAgB,EAAE,CAAC,CAAC;YACxD,QAAQ,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;YAC3D,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC7B,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAChC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC7B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,QAAQ,CAAC,QAAQ,CAAC,IAAI6B,sBAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC1C;KACJ,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,WAAW,OAAO,EAAE;QAC7G,IAAI,KAAK,CAAC;QACV,IAAI,MAAM,CAAC;QACX,IAAI,YAAY,CAAC;QACjB,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE;YAChD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;YACpE,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACtF,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;aAChE;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,IAAI;oBACA,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;oBAChD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACxB;gBACD,OAAO,CAAC,EAAE;oBACN,QAAQ,WAAW;wBACf,KAAK,CAAC;4BACF,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BACf,MAAM;wBACV,KAAK,CAAC;4BACF,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;4BAChB,MAAM;wBACV,KAAK,CAAC;4BACF,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACtB;iBACJ;aACJ;SACJ;aACI;YACD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;SAC7D;QACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvB,CAAC;;;;;IAKF,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC;QAC5D,IAAI,KAAK;YACL,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3C,CAAC;;;;;IAKF,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;QAC/C,IAAI,CAAC,IAAI,CAAC,cAAc;YACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvD,IAAI,KAAK;YACL,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;KAClC,CAAC;;;;;IAKF,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;QACvD,IAAI,CAAC,qBAAqB,GAAG,IAAI,aAAa,EAAE,CAAC;QACjD,IAAI,KAAK;YACL,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;KACtE,CAAC;;;;;IAKF,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;;QAE/C,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,GAAG,CAAC;YACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBACnC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACxB;YACD,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACf,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACf,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;SAC/C;aACI;YACD,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;SAC/C;KACJ,CAAC;;;;;IAKF,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QAC3C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,GAAG,CAAC;YACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBACnC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACxB;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD;aACI;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1E;KACJ,CAAC;;;;;IAKF,SAAS,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE;QACrD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,GAAG,CAAC;YACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBACnC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACxB;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1E;aACI;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3G;KACJ,CAAC;;;;;IAKF,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;QAC7C,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACvB,IAAI,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC1B;QACD,IAAI,OAAO,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChB,SAAS;aACZ;YACD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACtF,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;gBAC3C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACjF,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;gBAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/C,CAAC;;;;IAIF,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;QACtD,IAAI,KAAK,GAAG,CAAC;YACT,OAAO,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;;YAE1B,OAAO,KAAK,CAAC;KACpB,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;QAC3C,IAAI,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,KAAK,CAAC;QACV,IAAI,KAAK,CAAC;QACV,IAAI,CAAC,CAAC;QACN,IAAI,mBAAmB,CAAC;QACxB,IAAI,WAAW,CAAC;QAChB,IAAI,QAAQ,CAAC;QACb,IAAI,YAAY,CAAC;QACjB,IAAI,KAAK,CAAC;QACV,IAAI,aAAa,CAAC;QAClB,IAAI,QAAQ,CAAC;QACb,IAAI,KAAK,CAAC;QACV,IAAI,KAAK,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACjD,KAAK,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;YAElE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;gBACjB,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,YAAY,GAAG,KAAK,GAAG,aAAa,GAAG,QAAQ,CAAC;YAChD,QAAQ,GAAG,CAAC,CAAC;YACb,WAAW,GAAG,KAAK,CAAC;YACpB,QAAQ,GAAG,KAAK,CAAC;YACjB,KAAK,GAAG,CAAC,CAAC;YACV,KAAK,GAAG,EAAE,CAAC;YACX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBAC/B,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;oBAC/D,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;wBAC3E,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBACtD,IAAI,CAAC,IAAI,CAAC,EAAE;wBACR,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACjC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;qBAC1E;yBACI;wBACD,QAAQ,KAAK,CAAC,CAAC,CAAC;4BACZ,KAAK,IAAI;gCACL,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oCACpH,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gCACxE,MAAM;4BACV,KAAK,IAAI;gCACL,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;oCACtH,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oCAC5E,WAAW,GAAG,IAAI,CAAC;iCACtB;gCACD,MAAM;4BACV,KAAK,IAAI;gCACL,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oCACpC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;gCACxC,IAAI,QAAQ,IAAI,CAAC;oCACb,WAAW,GAAG,KAAK,CAAC;gCACxB,MAAM;4BACV,KAAK,IAAI;gCACL,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;oCACtH,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oCAC3E,QAAQ,GAAG,IAAI,CAAC;iCACnB;gCACD,MAAM;4BACV,KAAK,IAAI,CAAC;4BACV,KAAK,GAAG;gCACJ,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oCACpC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gCAC7B,MAAM;4BACV,KAAK,QAAQ;gCACT,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gCACrC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;yBACzC;qBACJ;iBACJ;aACJ;YACD,IAAI,KAAK,IAAI,EAAE,EAAE;gBACb,IAAI,WAAW,EAAE;oBACb,mBAAmB,GAAG,IAAImJ,qCAAmB,EAAE,CAAC;oBAChD,mBAAmB,CAAC,KAAK,GAAG,aAAa,CAAC;oBAC1C,mBAAmB,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACxC,IAAI,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;oBACtC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;oBAC3B,YAAY,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;oBACvD,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,qBAAqB;wBAC3B,IAAI,CAAC,qBAAqB,GAAG,IAAI,KAAK,EAAE,CAAC;oBAC7C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBACjD;gBACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI9J,uBAAU,CAAC,KAAK,CAAC,CAAC,CAAC;aAChE;iBACI,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAChC,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;gBAC9B,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBAChC,IAAI,KAAK,IAAI,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,wEAAwE,GAAG,IAAI,CAAC,UAAU,GAAG,0CAA0C,CAAC,CAAC;gBACzJ,IAAI,EAAE,GAAG,IAAIoG,gCAAc,CAAC,KAAK,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;oBACvB,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;iBACpB;qBACI;oBACD,EAAE,CAAC,IAAI,GAAGwB,oCAAkB,CAAC,UAAU,CAAC;iBAC3C;gBACD,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,YAAY,CAAC;gBACtC,IAAI,WAAW,EAAE;oBACb,EAAE,CAAC,cAAc,CAAC,KAAK,GAAG,aAAa,CAAC;oBACxC,EAAE,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;iBACzC;gBACD,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;aAC9B;SACJ;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE;QACpD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,CAAC;QACN,IAAI,SAAS,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG;YAC3B,QAAQ,KAAK,CAAC,CAAC,CAAC;gBACZ,KAAK,SAAS,CAAC;gBACf,KAAK,SAAS,CAAC;gBACf,KAAK,KAAK,CAAC;gBACX,KAAK,QAAQ,CAAC;gBACd,KAAK,SAAS;oBACV,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACV,KAAK,KAAK;oBACN,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACV,KAAK,IAAI,CAAC;gBACV,KAAK,IAAI,CAAC;gBACV,KAAK,IAAI;oBACL,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;gBACb;oBACI,SAAS,GAAG,IAAI,CAAC;oBACjB,MAAM;aACb;YACD,IAAI,SAAS;gBACT,MAAM;SACb;;QAED,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3B,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,GAAG,IAAI,GAAG,CAAC;SACd;;QAED,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,GAAG,CAAC;KACd,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,MAAM,EAAE;;;QAG5C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI5H,uBAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,EAAE,EAAE;QAC9C,IAAI,WAAW,CAAC;QAChB,IAAI,MAAM,CAAC;QACX,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,CAAC;QACN,IAAI,YAAY,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YAC3C,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1B,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;gBACjC,IAAI,EAAE,CAAC,EAAE,EAAE;oBACP,IAAI,MAAM,CAAC,QAAQ;wBACf,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC3B,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC;iBAC3B;qBACI,IAAI,EAAE,CAAC,OAAO,EAAE;oBACjB,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACrB,EAAE,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;oBACtC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;oBAC1B,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;oBACpB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI+B,0BAAS,CAAC,IAAI,CAAC,CAAC;oBACvC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC;wBACrB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;;wBAEpB,EAAE,CAAC,IAAI,GAAG6F,oCAAkB,CAAC,UAAU,CAAC;oBAC5C,IAAI,EAAE,CAAC,cAAc,EAAE;;;;;wBAKnB,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC;wBACzB,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;qBACzC;yBACI,IAAI,IAAI,CAAC,qBAAqB,EAAE;wBACjC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;4BACpD,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;4BAC7C,IAAI,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,UAAU,EAAE;gCAC1C,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC;gCACzB,EAAE,CAAC,cAAc,GAAG,YAAY,CAAC,mBAAmB,CAAC;gCACrD,EAAE,CAAC,cAAc,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;gCAC7C,EAAE,CAAC,cAAc,CAAC,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;gCAChD,MAAM;6BACT;yBACJ;qBACJ;iBACJ;gBACD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3B,EAAE,CAAC,CAAC;aACP;SACJ;QACD,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;YACX,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACzC,CAAC;IACF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QAC7C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC;YAChC,OAAO;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;KACnD,CAAC;IACF,OAAO,SAAS,CAAC;CACpB,CAAC9H,uBAAU,CAAC,CAAC,CAAC;AAEf,IAAI,WAAW,GAAG,CAAC,YAAY;IAC3B,SAAS,WAAW,GAAG;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;KAC7B;IACD,OAAO,WAAW,CAAC;CACtB,EAAE,CAAC,CAAC;AAEL,IAAI,KAAK,GAAG,CAAC,YAAY;IACrB,SAAS,KAAK,GAAG;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,EAAE,CAAC;KACrC;IACD,OAAO,KAAK,CAAC;CAChB,EAAE,CAAC,CAAC;AAEL,IAAI,aAAa,GAAG,CAAC,YAAY;IAC7B,SAAS,aAAa,GAAG;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;KAC5B;IACD,OAAO,aAAa,CAAC;CACxB,EAAE,CAAC,CAAC;AAEL,IAAI,YAAY,GAAG,CAAC,YAAY;IAC5B,SAAS,YAAY,GAAG;QACpB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAClB;IACD,OAAO,YAAY,CAAC;CACvB,EAAE,CAAC,CAAC;AAEL,IAAI,cAAc,GAAG,CAAC,YAAY;IAC9B,SAAS,cAAc,GAAG;QACtB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAClB;IACD,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC,CAAC;AAEL,IAAI,QAAQ,GAAG,CAAC,YAAY;IACxB,SAAS,QAAQ,GAAG;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;KAC/B;IACD,OAAO,QAAQ,CAAC;CACnB,EAAE,CAAC,CAAC;AAEL;;;AAGA,IAAI,EAAE,GAAG,CAAC,YAAY;;;;;;;IAOlB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QACd,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5B,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5B,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KACf;IACD,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;;;;QAIrC,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;SACnB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;;;;QAIrC,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;SACnB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;QAC7B,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KACnC,CAAC;;;;IAIF,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;QAChC,OAAO,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;KAClC,CAAC;IACF,OAAO,EAAE,CAAC;CACb,EAAE,CAAC,CAAC;AAEL,IAAI,MAAM,GAAG,CAAC,YAAY;;;;;;;;;IAStB,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;QAC5B,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5B,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5B,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5B,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;QACpC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IACD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;QAC7C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;;;;;QAKD,GAAG,EAAE,UAAU,GAAG,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE;;;;;QAKzC,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;SACnB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE;;;;;QAKzC,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;SACnB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE;;;;;QAKzC,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;SACnB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;QACjC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KAChD,CAAC;IACF,OAAO,MAAM,CAAC;CACjB,EAAE,CAAC,CACc;;AC/1BlB;;;AAGA,IAAI,OAAO,GAAG,CAAC,YAAY;IACvB,SAAS,OAAO,GAAG;KAClB;;;;;;;;;;IAUD,OAAO,CAAC,gBAAgB,GAAG,YAAY;QACnCwB,mBAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;KAC7C,CAAC;IACF,OAAO,OAAO,CAAC;CAClB,EAAE,CAAC,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1DtF;;;;AAIA,IAAI,YAAY,GAAG,CAAC,YAAY;;;;IAI5B,SAAS,YAAY,GAAG;QACpB,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAIzC,qBAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAIkL,wBAAU,CAACA,wBAAU,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,IAAIA,wBAAU,CAACA,wBAAU,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,IAAIA,wBAAU,CAACA,wBAAU,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,GAAG,IAAIA,wBAAU,CAACA,wBAAU,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAIA,wBAAU,CAACA,wBAAU,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAIA,wBAAU,CAACA,wBAAU,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,IAAIA,wBAAU,CAACA,wBAAU,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,iBAAiB,GAAG,IAAIA,wBAAU,CAACA,wBAAU,CAAC,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,qBAAqB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACrF,IAAI,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,oBAAoB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,CAAC,kBAAkB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;KAClF;IACD,YAAY,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,SAAS,EAAE;QAC5D,IAAI,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;YAC7D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAC1D,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACnE,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACnE,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClE,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClE,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClE,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9D,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/D,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACpE,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClE,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAChE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACzC;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,SAAS,EAAE;QAC9D,IAAI,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;YAC7D,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7D,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACtE,SAAS,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACtE,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrE,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrE,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrE,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAClE,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACjE,SAAS,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACvE,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrE,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACnE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;SAC5E;KACJ,CAAC;IACF,YAAY,CAAC,WAAW,GAAG,YAAY;QACnC,IAAI,IAAI,CAAC,SAAS;YACd,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC,CAAC;KAChD,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,cAAc,EAAE;;QAE/D,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACnD,IAAI,IAAI,CAAC,wBAAwB;gBAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC5F,IAAI,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SACjE;;QAED,IAAI,cAAc,IAAI,IAAI,CAAC,WAAW;YAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC;QACV,IAAI,UAAU,CAAC;;QAEf,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9B,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;;YAE1B,OAAO,UAAU,EAAE;;gBAEf,IAAI,UAAU,CAAC,gBAAgB,EAAE,EAAE;oBAC/B,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACnC;gBACD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;aAClC;;;YAGDC,gCAAkB,CAAC,aAAa,EAAE,CAAC;SACtC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B,CAAC;;;;;;;;;;;;;;;;IAgBF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;QAClD,IAAI,IAAI;YACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;QACpD,IAAI,IAAI;YACJ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KACjE,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,YAAY,EAAE,OAAO,EAAE;QAC7E,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE;QACxC,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC;QAC3B,aAAa,CAAC,cAAc,GAAG,EAAE,CAAC;QAClC,aAAa,CAAC,cAAc,GAAG,YAAY,GAAG,CAAC;QAC/C,IAAI,WAAW,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;;QAEjD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,GAAG,EAAE,CAAC;QACN,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE;;YAEvG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzC,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtC,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;aACvC;YACD,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACvE,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5C,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SAC/C;aACI;;YAED,IAAI,UAAU,IAAI,CAAC,EAAE;gBACjB,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzC,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtC,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtC,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;gBACzC,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;gBACzC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;gBAC1B,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;aAC7B;iBACI;gBACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;oBAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;oBAClB,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;oBACzC,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;oBACtC,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;oBACtC,IAAI,CAAC,IAAI,aAAa,EAAE;wBACpB,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;qBAC9C;yBACI;wBACD,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;wBACzC,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;wBACzC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;wBAC1B,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;qBAC7B;iBACJ;aACJ;SACJ;;;;;;;;;;;;;;;;;;;;;;QAsBD,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE;YACvG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SACnC;aACI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE;YAC5G,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;SACjC;aACI,IAAI,SAAS,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SACnC;aACI;YACD,OAAO,CAAC,GAAG,CAAC,qCAAqC,GAAG,SAAS,CAAC,CAAC;SAClE;KACJ,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,YAAY,EAAE,OAAO,EAAE;QAClF,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE;QACxC,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,cAAc,GAAG,YAAY,GAAG,CAAC;QAC/C,IAAI,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;QAEjD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,UAAU,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrD,IAAI,SAAS,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,WAAW,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC;QAC3B,aAAa,CAAC,cAAc,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE;YACtC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,QAAQ,CAAC,UAAU,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;gBAChD,QAAQ,CAAC,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC7C,QAAQ,CAAC,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC7C,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;gBACpC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;aAC9C;YACA;YACD,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SACxE;aACI;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,IAAI,WAAW,EAAE;oBAClB,IAAI,QAAQ,GAAG,EAAE,CAAC;oBAClB,QAAQ,CAAC,UAAU,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;oBAChD,QAAQ,CAAC,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC7C,QAAQ,CAAC,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC7C,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;oBACpC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;iBAC9C;qBACI;oBACD,aAAa,CAAC,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;oBAClD,aAAa,CAAC,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;oBAClD,GAAG,EAAE,CAAC;iBACT;aACJ;YACA;SACJ;QACD,IAAI,SAAS,IAAI,CAAC,EAAE;YAChB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SACnC;aACI,IAAI,SAAS,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;SACjC;aACI,IAAI,SAAS,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SACnC;aACI,IAAI,SAAS,IAAI,GAAG,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SACnC;aACI,IAAI,SAAS,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;SACjC;KACJ,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE;QAC5E,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC,EAAE;;QAE/C,IAAI,WAAW,EAAE;YACb,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC;YACrC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YACpC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YAClC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;YACtC,KAAK,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5G,KAAK,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SAC/G;QACD,IAAI,SAAS,IAAI,IAAI;YACjB,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;;QAEjC,IAAI,SAAS,EAAE;;YAEX,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAChC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;;YAExC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;;YAExB,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;;YAExE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;;YAElE,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;SAC/C;aACI;;YAED,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YAClC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;YAChC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;SAC1B;;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC,CAAC;;;;IAIF,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;QAClD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;KACzE,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE;QACjD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACjD,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;QAClD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KAClD,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;KACnD,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;QACpD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;KACzD,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;QAClD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KAClD,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;QAChD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KAChD,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;QACnD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;KACnD,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,KAAK,EAAE;QACtD,IAAI,IAAI,CAAC;QACT,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvF,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvF,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,IAAI,KAAK,CAAC;gBACV,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBAC1B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAIC,wBAAU,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;iBAC7G;aACJ;YACD,IAAI,IAAI,CAAC,aAAa;gBAClB,SAAS;YACb,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;gBACrG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACxB;iBACI;gBACD,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;oBACpC,MAAM;aACb;SACJ;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,OAAO,YAAY,CAAC;CACvB,EAAE,CAAC,CACoB;;AniBrZxB;;;;;;;;;;;;;;;;AAgBA,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;IACrC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;;AAExE,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAC5B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CACxF;;AAQA;;AAUA;;AAOA;;AAIA;;AAIA;;AASA;;AA4BA;;AAIA;;AAWA;;AAEM,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IACzB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI;QACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC9E;IACD,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;YAC/B;QACJ,IAAI;YACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpD;gBACO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;KACpC;IACD,OAAO,EAAE,CAAC;CACb;;AAMA;;AAEM,SAAS,OAAO,CAAC,CAAC,EAAE;IACvB,OAAO,IAAI,YAAY,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;CAqBlE;;AoiBzJP;;;AAGA,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,EAAE;IACvClM,SAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE;QACrC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;QACpD,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QACtB,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC/B,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,KAAK,CAAC,oCAAoC,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpH,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAACmM,gCAAkB,CAAC,2BAA2B,EAAE,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3H,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QAC7C,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE;QAC/D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;SACpC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;QAIzD,GAAG,EAAE,YAAY;YACb,IAAI,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;;IAKH,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;KACpC,CAAC;;;;;IAKF,iBAAiB,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAChC,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QACnD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAACA,gCAAkB,CAAC,2BAA2B,EAAE,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC5H,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;QACxD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B;KACJ,CAAC;;;;;;;IAOF,iBAAiB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE;QACnE,OAAO,IAAI,CAAC;KACf,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,WAAW,EAAE,YAAY,EAAE;QACjF,OAAO,IAAI,CAAC;KACf,CAAC;;;;;IAKF,iBAAiB,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QACnD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;QAC5D,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KACtD,CAAC;;;;IAIF,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,SAAS,EAAE;;KAElE,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,4BAA4B,GAAG,UAAU,KAAK,EAAE;;KAE3E,CAAC;IACF,iBAAiB,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QACpD,IAAI,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,IAAIC,wBAAU,CAAC,gBAAgB;YAC/C,IAAI,CAAC,OAAO,GAAG,IAAIC,oCAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACvD,IAAI,IAAI,CAAC,WAAW,IAAID,wBAAU,CAAC,MAAM;YAC1C,IAAI,CAAC,OAAO,GAAG,IAAIE,4BAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/C,IAAI,IAAI,CAAC,WAAW,IAAIF,wBAAU,CAAC,IAAI;YACxC,IAAI,CAAC,OAAO,GAAG,IAAIG,wBAAU,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,CAAChI,4BAAe,CAAC,CAAC,CACU;;AChH7B;;;AAGA,IAAI,cAAc,GAAG,CAAC,UAAU,MAAM,EAAE;IACpCvE,SAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC1C,SAAS,cAAc,GAAG;QACtB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;QAClD,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC9B,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,WAAW,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;KAChB;;;;;IAKD,cAAc,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,SAAS,EAAE;;QAE5D,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC;YACrB,OAAO;QACX,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;KACtD,CAAC;;;;;;IAMF,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;aACI;YACD,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC;YAC5E,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACnC,IAAI,KAAK,GAAG,GAAG,CAAC;YAChB,OAAO,KAAK,EAAE;gBACV,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK;oBAChC,MAAM;YACd,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,GAAG,GAAG,EAAE;gBACb,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;aAC7C;iBACI;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACjC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;QACD,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QAC/D,IAAI,GAAG,IAAI,CAAC;QACZ,GAAG;YACC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC;SACnC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;KAC1C,CAAC;;;;;;IAMF,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;aACI;YACD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;QACD,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC;QACZ,GAAG;YACC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC;SACnC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;KAC1C,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,CAAC,iBAAiB,CAAC,CAAC,CAES;;AC3F9B;;;AAGA,IAAI,aAAa,GAAG,CAAC,YAAY;IAC7B,SAAS,aAAa,CAAC,IAAI,EAAE;QACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,MAAM,EAAE,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACrB;IACD,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE;QACnD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,KAAK,CAAC;SACrB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE;QACvD,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7J,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,MAAM,EAAE;QACzD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;KAC3C,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,SAAS,EAAE;QACpD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;KACjD,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,MAAM,EAAE;QACzD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;KACzC,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE;QACrD,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ;YACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;KACpD,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE;QACjD,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE;YAC3B,IAAI,IAAI,CAAC,MAAM;gBACX,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAClC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC7B;KACJ,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE;QACpD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,QAAQ;YACf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;KACnD,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE;QAChD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;KACJ,CAAC;;;;;;IAMF,aAAa,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACjD,IAAI,MAAM,CAAC;;QAEX,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;;QAE9C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KAC1B,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;;KAE7C,CAAC;;;;;IAKF,aAAa,CAAC,mBAAmB,GAAG,UAAU,eAAe,EAAE,UAAU,EAAE;QACvE,aAAa,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC;KAC/E,CAAC;IACF,OAAO,aAAa,CAAC;CACxB,EAAE,CAAC,CAAC;AAEL,aAAa,CAAC,qBAAqB,GAAG,IAAI,MAAM,EAAE,CAAC;;ACpFnD;;;AAGA,IAAI,mBAAmB,GAAG,CAAC,UAAU,MAAM,EAAE;IACzCA,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC/C,SAAS,mBAAmB,CAAC,IAAI,EAAE;QAC/B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;QAC5C,KAAK,CAAC,mBAAmB,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;KAChB;IACD,mBAAmB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,SAAS,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACnD,CAAC;;;;;;IAMF,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE;QAC9D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO,IAAI,CAAC;SACf;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW;YAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACvE,CAAC;IACF,mBAAmB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE;QAC3D,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,WAAW;YAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;KACxE,CAAC;IACF,mBAAmB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,WAAW;YAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;KACvE,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAAC,aAAa,CAAC,CAAC,CAAC;AAElB;;;AAGA,IAAI,kBAAkB,GAAG,CAAC,YAAY;IAClC,SAAS,kBAAkB,GAAG;QAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,MAAM,EAAE,CAAC;KACxC;;;;;;;IAOD,kBAAkB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE;QAC5D,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KACtH,CAAC;;;;;;IAMF,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,MAAM,EAAE;QAC9D,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAC3C,CAAC;IACF,OAAO,kBAAkB,CAAC;CAC7B,EAAE,CAAC,CAC0B;;AClE9B;;;;;;;AAOA,IAAI,aAAa,GAAG,CAAC,UAAU,MAAM,EAAE;IACnCA,SAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;;;;;;;IAOzC,SAAS,aAAa,CAAC,oBAAoB,EAAE;QACzC,IAAI,oBAAoB,KAAK,KAAK,CAAC,EAAE,EAAE,oBAAoB,GAAG,KAAK,CAAC,EAAE;QACtE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;;;;QAI9B,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC9B,KAAK,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QACnD,OAAO,KAAK,CAAC;KAChB;;;;;;IAMD,aAAa,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE;QAChD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;KAC1F,CAAC;;;;IAIF,aAAa,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE;QAC9E,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;;QAElC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;;QAE9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM;YACtB,OAAO,IAAI,CAAC;;QAEhB,IAAI,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;;QAE/C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,OAAO,SAAS,CAAC;KACpB,CAAC;;;;;;;;;;;;;;;;;IAiBF,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,QAAQ,EAAE;QACxD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;KACpC,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,MAAM,EAAE;QAClD,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACnD,OAAO,IAAI,CAAC;QAChB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;gBACxB,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,MAAM;oBAClC,OAAO,IAAI,CAAC;SACvB;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,OAAO,EAAE,OAAO,EAAE;QAC9D,OAAO,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KAC7M,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE;;QAE1D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;;;QAKvD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACtD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE;gBAC5G,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC;gBAClG,IAAI,IAAI,CAAC,aAAa,EAAE;oBACpB,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC;oBACxD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;;oBAEpC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,qBAAqB;wBAClD,MAAM;iBACb;qBACI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE;;;;;;oBAMnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;oBAC1C,MAAM;iBACT;aACJ;SACJ;QACD,IAAI,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,gBAAgB,EAAE;QACjE,IAAI,YAAY,GAAG,gBAAgB,CAAC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,IAAIc,qBAAQ,EAAE,CAAC,CAAC;QAC7F,IAAI,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC;QAC3C,IAAI,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QAC1C,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACzC,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACzC,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;KAC5C,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;;KAE7C,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnC,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,SAAS,EAAE;QAC1D,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;YAC7F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;KACjD,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;QACtD,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YAC3K,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;KACjD,CAAC;IACF,aAAa,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,KAAK,EAAE;QAC1D,IAAI,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YAC/K,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;KACjD,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,MAAM,EAAE;;KAEjE,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE;;KAE3D,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE;;KAE3D,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE;;KAEvD,CAAC;IACF,OAAO,aAAa,CAAC;CACxB,CAACmC,8BAAa,CAAC,CAAC,CACQ;;ACxLzB;;;AAGA,IAAI,QAAQ,GAAG,CAAC,YAAY;;;;IAIxB,SAAS,QAAQ,GAAG;QAChB,IAAI,CAAC,OAAO,GAAG,IAAIsJ,wBAAU,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;KACxB;IACD,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE;QACtD,GAAG,EAAE,YAAY;YACb,OAAO,KAAK,CAAC;SAChB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;QAIhD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;;;;;IAQH,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE;QAC1D,OAAO,IAAI,CAAC;KACf,CAAC;;;;;;;IAOF,QAAQ,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,WAAW,EAAE,YAAY,EAAE;QACxE,OAAO,IAAI,CAAC;KACf,CAAC;;;;;IAKF,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAC1C,OAAO,IAAI,CAAC;KACf,CAAC;;;;;IAKF,QAAQ,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QAC7C,OAAO,IAAI,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;;KAEtD,CAAC;;;;;IAKF,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;QACpC,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B,CAAC;;;;;IAKF,QAAQ,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,SAAS,EAAE;QACtD,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC;YACrB,OAAO;QACX,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE;gBACzC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;SACvD;KACJ,CAAC;;;;;;IAMF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC;QACjD,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC;QACZ,GAAG;YACC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC;SACnC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;KAC1C,CAAC;;;;;;IAMF,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC;QACZ,GAAG;YACC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC;SACnC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;KAC1C,CAAC;IACF,OAAO,QAAQ,CAAC;CACnB,EAAE,CAAC,CACgB;;ACvHpB;;;AAGA,IAAI,cAAc,GAAG,CAAC,UAAU,MAAM,EAAE;IACpCvM,SAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC1C,SAAS,cAAc,CAAC,IAAI,EAAE;QAC1B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;QAC5C,KAAK,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,cAAc,CAAC;CACzB,CAAC,aAAa,CAAC,CAAC,CACS;;ACT1B,IAAI,IAAI,GAAG,CAAC,YAAY;;;;;;;;;;;IAWpB,SAAS,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;QACnC,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,EAAE;QAC7C,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE;QACvC,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,4BAA4B,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACnG,IAAI,CAAC,0BAA0B,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/F,IAAI,CAAC,yBAAyB,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7F,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAIwM,mBAAK,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI5C,oBAAM,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI6C,gCAAe,EAAE,CAAC;;;KAGrD;IACD,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE;;QAE5C,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KACrF,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE;QACvD,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,YAAY,IAAI,SAAS;YACzB,OAAO;;QAEX,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,IAAI,YAAY,EAAE;YACd,YAAY,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACtC;QACD,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;YACxC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;SAC7B;KACJ,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC;KAC3E,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE,QAAQ,EAAE;QACrD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,QAAQ,CAAC;KAC/E,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;QAC5C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;QAC5C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE;QACjD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,aAAa,EAAE;QACrD,OAAO,aAAa,CAAC,SAAS,CAAC,2BAA2B,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACpI,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,aAAa,EAAE;QACrD,OAAO,aAAa,CAAC,SAAS,CAAC,2BAA2B,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACpI,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,aAAa,EAAE;QAC1D,IAAI,aAAa,CAAC;QAClB,IAAI,gBAAgB,GAAG,IAAI,KAAK,EAAE,CAAC;QACnC,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,2BAA2B,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5J,gBAAgB,CAAC,IAAI,CAAC,IAAIP,wBAAU,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACrG;QACD,OAAO,gBAAgB,CAAC;KAC3B,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;;;;QAI9C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK;gBACxB,OAAO;YACX,IAAI,IAAI,CAAC,UAAU,EAAE;;gBAEjB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBACpC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBACtC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAACQ,8BAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACrG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAACA,8BAAa,CAAC,eAAe,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACnG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aAC3E;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAACA,8BAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAClG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAACA,8BAAa,CAAC,eAAe,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAChG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;;YAEtE,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC9E,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC7E,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACtE,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC;SAC7D;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE;;;;QAIrD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAChC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,gBAAgB,IAAI,KAAK;gBAC9B,OAAO;YACX,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC9D,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC7D,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;SACzD;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE;;;;;QAKrD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAChC;;;;;QAKD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,CAAC;iBACT,IAAI,KAAK,GAAG,CAAC;gBACd,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,IAAI,CAAC,gBAAgB,IAAI,KAAK;gBAC9B,OAAO;YACX,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SACrE;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;;QAK5C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;;;;QAID,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK;gBACtB,OAAO;YACX,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAACC,yBAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACzG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAACA,yBAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAClG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;;;;;QAK3C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;;;;QAID,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK;gBACrB,OAAO;YACX,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;aAC/C;YACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACzE;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;;;;;QAK/C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;;;;QAI3C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SAChC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;SACjC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;QAI5C,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SACjC;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;SAClC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE;;;;QAIjD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK;gBAC1B,OAAO;YACX,IAAI,KAAK,IAAI,IAAI;gBACb,IAAI,CAAC,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;;gBAExC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SACjC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;;;;QAIvC,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;;;;QAIvC,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SAC5B;QACD,GAAG,EAAE,UAAU,KAAK,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC;SAC7B;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;;QAKxD,GAAG,EAAE,YAAY;YACb,OAAO,CAAC,CAAC;;SAEZ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;;QAEnB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC7K;QACD,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAClK;;QAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa;gBACxD,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/F,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC3D;;;QAGD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAChC,CAAC;;;;IAIF,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QACrC,IAAI,IAAI,GAAGrI,qBAAQ,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACrB,CAAC;;;;IAIF,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACjC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;;QAE1B,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;;;QAGxC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;;QAE1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B,CAAC;;;;IAIF,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,KAAK,EAAE;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B,CAAC;;;;IAIF,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,KAAK,EAAE;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B,CAAC;;;;IAIF,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,OAAO,EAAE;QACxC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC;KACZ,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACrD,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;KACxM,CAAC;;;;;;;;;;;;;;;IAeF,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;QACxC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;;YAE1B,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC9F;KACJ,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;;QAEpD,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;KAC1E,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,SAAS,EAAE;QACrD,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW;YAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KACjD,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,aAAa,EAAE;QACrD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;KACpE,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,aAAa,EAAE;QACvD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;KAC/D,CAAC;IACF,OAAO,IAAI,CAAC;CACf,EAAE,CAAC,CACY;;AC/ahB;;;AAGA,IAAI,WAAW,GAAG,CAAC,UAAU,MAAM,EAAE;IACjCtE,SAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BvC,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;QAC3E,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,EAAE;QACnD,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,UAAU,CAAC,EAAE;QACrD,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE;QACjD,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;QACzF,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE;;;;;QAKtD,GAAG,EAAE,YAAY;YACb,OAAO,WAAW,CAAC,SAAS,CAAC;SAChC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;;QAE3C,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAIyM,gCAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3F,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC;;QAE5C,IAAI,UAAU,GAAG,IAAIvJ,kCAAqB,EAAE,CAAC;QAC7C,UAAU,CAAC,gBAAgB,GAAGjD,6BAAgB,CAAC,YAAY,CAAC;QAC5D,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;QACvB,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;QACvB,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACtC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;KAC7C,CAAC;;;;;;;;;;;;;;;;;;;;IAoBF,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QACxC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;KAEvC,CAAC;IACF,WAAW,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;QACnG,IAAI,MAAM,YAAY2M,2BAAa,EAAE;YACjC,IAAI,IAAI,GAAG,IAAI1E,oCAAsB,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtB,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAClD;YACD,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,cAAc,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,KAAK;gBACX,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAIsE,mBAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;;YAE7D,IAAI,CAAC,IAAI,CAAC,OAAO;gBACb,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;;YAEjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7E,OAAO;SACV;QACD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KACpG,CAAC;;;;;;;IAOF,WAAW,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;QACtD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACxF;KACJ,CAAC;IACF,OAAO,WAAW,CAAC;CACtB,CAAC5G,8BAAa,CAAC,CAAC,CAAC;AAElB,WAAW,CAAC,SAAS,GAAG,qBAAqB,CAAC;;AC/I9C;;;AAGA,IAAI,UAAU,GAAG,CAAC,UAAU,MAAM,EAAE;IAChC5F,SAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE;QAC1C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;QAChE,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QACtB,KAAK,CAAC,aAAa,GAAG,IAAIc,qBAAQ,EAAE,CAAC;QACrC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,OAAO,KAAK,CAAC;KAChB;IACD,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;QAC5C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B,CAAC;;;;;;;IAOF,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC3B,OAAO,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC;;KAEf,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,iBAAiB,EAAE,kBAAkB,EAAE;QACtF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/H,OAAO,KAAK,CAAC;QACjB,IAAI,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACvD,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,2BAA2B,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;QACrH,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QAC5H,IAAI,CAAC,gBAAgB,CAAC,MAAM;YACxB,gBAAgB,CAAC,MAAM,GAAG,IAAIA,qBAAQ,EAAE,CAAC;QAC7C,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzI,IAAI,gBAAgB,GAAG,CAAC;YACpB,OAAO,KAAK,CAAC;QACjB,gBAAgB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACrD,gBAAgB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QACvD,gBAAgB,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QACzD,gBAAgB,CAAC,uBAAuB,GAAG,gBAAgB,IAAI,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;KACf,CAAC;;;;;IAKF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,aAAa,EAAE,CAAC;KAClE,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,SAAS,EAAE;QACxD,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC1D,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,4BAA4B,GAAG,UAAU,KAAK,EAAE;QACjE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClD,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,EAAE;;QAE/F,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,GAAG,IAAI,CAAC;YACzE,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,GAAG,IAAI,CAAC;YACzE,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;YAC7B,IAAI,QAAQ,CAAC;YACb,IAAI,WAAW,CAAC;YAChB,IAAI,QAAQ,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAChC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC9B,QAAQ,GAAG,KAAK,CAAC;gBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;oBAClC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;wBAClF,QAAQ,GAAG,IAAI,CAAC;wBAChB,MAAM;qBACT;iBACJ;gBACD,IAAI,CAAC,QAAQ;oBACT,OAAO,KAAK,CAAC;aACpB;SACJ;QACD,OAAO,IAAI,CAAC;KACf,CAAC;IACF,OAAO,UAAU,CAAC;CACrB,CAAC,iBAAiB,CAAC,CAAC,CACC;;AC9FtB;;;AAGA,IAAI,UAAU,GAAG,CAAC,UAAU,MAAM,EAAE;IAChCd,SAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,UAAU,GAAG;QAClB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KAChD;;;;IAID,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,SAAS,EAAE;;KAE3D,CAAC;IACF,OAAO,UAAU,CAAC;CACrB,CAAC,UAAU,CAAC,CAAC,CACQ;;AChBtB;;;;;AAKA,IAAI,UAAU,GAAG,CAAC,UAAU,MAAM,EAAE;IAChCA,SAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,UAAU,GAAG;QAClB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC;KAChD;;;;;;;IAOD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW;YACzB,OAAO,KAAK,CAAC;;QAEjB,OAAO,IAAI,CAAC;KACf,CAAC;;;;;IAKF,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QAC/C,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,OAAO,UAAU,CAAC;CACrB,CAAC,UAAU,CAAC,CAAC,CACQ;;AChCtB;;;;;;;;AAQA,IAAI,iBAAiB,GAAG,CAAC,YAAY;;;;;;IAMjC,SAAS,iBAAiB,CAAC,oBAAoB,EAAE;QAC7C,IAAI,oBAAoB,KAAK,KAAK,CAAC,EAAE,EAAE,oBAAoB,GAAG,KAAK,CAAC,EAAE;QACtE,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;KACrD;;;;;;;;IAQD,iBAAiB,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE;QAClG,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC;;;;;;;;QAQnC,OAAO,KAAK,CAAC;KAChB,CAAC;;;;;;;;;IASF,iBAAiB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;QACvH,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;QACtC,IAAI,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAC/C,IAAI,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;QACjD,IAAI,CAAC,CAAC;QACN,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACf,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAClB,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAClB,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAClB,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAClB,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC;QAC7B,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;QAC/B,IAAI,sBAAsB,GAAG,CAAC,CAAC,CAAC;QAChC,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACnC,IAAI,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;QACnD,IAAI,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;QAClD,IAAI,OAAO,CAAC;QACZ,IAAI,gBAAgB,CAAC,OAAO,EAAE;YAC1B,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACrE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;SAC1B;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;;YAE3C,IAAI,OAAO,EAAE;gBACT,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;gBAChC,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;gBACpC,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;aACvC;iBACI;gBACD,EAAE,GAAG,KAAK,GAAG,SAAS,CAAC;gBACvB,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;gBAC7B,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;aAChC;;YAED,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YACpB,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YACpB,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YACpB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAChB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAChB,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAChB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAChB,IAAI,MAAM,IAAI,CAAC,EAAE;gBACb,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxB,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxB,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAChB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;gBAEhB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChD,EAAE,IAAI,EAAE,CAAC;gBACT,EAAE,IAAI,EAAE,CAAC;gBACT,EAAE,IAAI,EAAE,CAAC;aACZ;iBACI;gBACD,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;aACV;;YAED,KAAK,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,IAAI,GAAG,CAAC,EAAE;;gBAE5D,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;gBACtC,UAAU,GAAG,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjF,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC;;gBAEvB,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;gBACxC,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;gBACxC,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;;gBAExC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBACzC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBACzC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBACzC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;gBACd,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;gBACd,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;gBACd,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;gBACrC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;gBACrC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;gBACxC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;gBACtC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC;oBACL,SAAS;gBACb,IAAI,CAAC,GAAG,CAAC;oBACL,SAAS;gBACb,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,gBAAgB,EAAE;oBAC5D,sBAAsB,GAAG,KAAK,GAAG,CAAC,CAAC;oBACnC,gBAAgB,CAAC,gBAAgB,GAAG,CAAC,CAAC;oBACtC,gBAAgB,CAAC,QAAQ,GAAG,IAAIc,qBAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBACrD,gBAAgB,CAAC,MAAM,GAAG,IAAIA,qBAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBACnD,IAAI,gBAAgB,CAAC,GAAG,EAAE;wBACtB,IAAI,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;wBACjE,IAAI,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;wBAC3C,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;wBACvC,IAAI,GAAG,GAAG,IAAIA,qBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wBACrD,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;wBACvC,IAAI,GAAG,GAAG,IAAIA,qBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wBACrD,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;wBACvC,IAAI,GAAG,GAAG,IAAIA,qBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wBACrD,gBAAgB,CAAC,EAAE,GAAG,IAAIL,kBAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;qBACzG;oBACD,gBAAgB,CAAC,YAAY,GAAG,sBAAsB,CAAC;;oBAEvD,IAAI,CAAC,IAAI,CAAC,qBAAqB;wBAC3B,OAAO,IAAI,CAAC;iBACnB;aACJ;SACJ;QACD,IAAI,sBAAsB,IAAI,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,OAAO,KAAK,CAAC;KAChB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsJF,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;QAC/G,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;QACtC,OAAO,KAAK,CAAC;KAChB,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,EAAE,CAAC,CACyB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrU7B,yC;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;;AAEA;AACA,mBAAmB;AACnB,mBAAmB;AACnB,qBAAqB;;AAErB;AACA,wBAAwB;AACxB;AACA,eAAe;AACf,oBAAoB;AACpB,aAAa;AACb,eAAe;AACf,E;;AAEA;AACA,mBAAmB;AACnB,mBAAmB;AACnB,qBAAqB;;AAErB;AACA,oBAAoB;AACpB,aAAa;AACb,sBAAsB;AACtB,sBAAsB;AACtB;;AAEA;AACA,mBAAmB;AACnB,kBAAkB;AAClB,oBAAoB;AACpB,oBAAoB;AACpB,kBAAkB;AAClB,oBAAoB;;AAEpB;AACA,2BAA2B;AAC3B,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA,eAAe,uBAAuB,EAAE;AACxC,gBAAgB,oBAAoB,EAAE;AACtC,aAAa,qBAAqB,EAAE;AACpC,cAAc,kBAAkB,EAAE;AAClC,eAAe,uBAAuB,EAAE;AACxC,gBAAgB,oBAAoB,EAAE;AACtC,eAAe,uBAAuB,EAAE;AACxC,gBAAgB,oBAAoB,EAAE;AACtC,eAAe,uBAAuB,EAAE;AACxC,gBAAgB,oBAAoB,EAAE;AACtC,eAAe,uBAAuB,EAAE;AACxC,gBAAgB,oBAAoB,EAAE;AACtC,eAAe,yCAAyC,EAAE;AAC1D,gBAAgB,sCAAsC,EAAE;AACxD,eAAe,yCAAyC,EAAE;AAC1D,gBAAgB,sCAAsC,EAAE;AACxD;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,mBAAmB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iBAAiB;;AAErD;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B;AACA,+BAA+B;AAC/B;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,4BAA4B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,uBAAuB,4BAA4B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,uBAAuB,4BAA4B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,QAAQ,SAAS,QAAQ,EAAE,kBAAkB;AAC9E,iCAAiC,QAAQ,SAAS,QAAQ,EAAE,kBAAkB;AAC9E,iCAAiC,QAAQ,SAAS,QAAQ,QAAQ,SAAS,QAAQ,EAAE,iBAAiB,gBAAgB;;AAEtH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB,UAAU,UAAU;AACxC;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB,UAAU,UAAU;AACxC;AACA;;AAEA;;AAEA,kCAAkC,QAAQ,SAAS,QAAQ,EAAE,kBAAkB;AAC/E,kCAAkC,QAAQ,SAAS,QAAQ,EAAE,kBAAkB;AAC/E,kCAAkC,QAAQ,SAAS,QAAQ,QAAQ,SAAS,QAAQ,EAAE,kBAAkB,gBAAgB;;AAExH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB,UAAU,UAAU;AACxC;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB,UAAU,UAAU;AACxC;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,GAAG;;AAEH;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,uBAAuB;AACxC;;AAEA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;;AAEA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB,qBAAqB;AACrB,yBAAyB;AACzB;AACA,sBAAsB;AACtB,wBAAwB;AACxB,qBAAqB;AACrB;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,6B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA,qCAAqC;;AAErC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,+CAA+C;AAC/C;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8DAA8D;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,aAAa;AACnC;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,oBAAoB;AACzE;AACA;AACA,0CAA0C,oBAAoB;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,aAAa;AACnC;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA,sBAAsB,aAAa;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;;AAEA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA,mBAAmB;AACnB;;AAEA;;AAEA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;;AAE/B;AACA;;AAEA;AACA,uCAAuC;;AAEvC,mBAAmB;AACnB,iBAAiB;AACjB,oBAAoB;;AAEpB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,0CAA0C,OAAO;AACjD,0CAA0C,OAAO;AACjD;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,aAAa;AACpC,eAAe,OAAO;AACtB;AACA,0BAA0B,eAAe,gBAAgB;AACzD,0BAA0B,eAAe,gBAAgB;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA,wDAAwD,OAAO;AAC/D,wDAAwD,OAAO;AAC/D;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,gCAAgC;AACzC;AACA,SAAS,gCAAgC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,kBAAkB;AAC9C;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,kBAAkB;AAC/C;;AAEA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;;AAGA;AACA,6BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,kBAAkB;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6BAA6B,kBAAkB;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6BAA6B,kBAAkB;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;;AAEA,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,KAAK;AA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","file":"js/awayjs-full.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t9: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"js/\" + chunkId + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 28);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 4793825f4b3ff07789d8","export * from \"@awayjs/core\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/lib/core.js\n// module id = 0\n// module chunks = 9","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\n\n\n// WEBPACK FOOTER //\n// ../../../../../node_modules/tslib/tslib.es6.js","var ErrorBase = (function () {\r\n function ErrorBase(message, id, _name) {\r\n if (message === void 0) { message = ''; }\r\n if (id === void 0) { id = 0; }\r\n if (_name === void 0) { _name = ''; }\r\n this._errorID = 0; //Contains the reference number associated with the specific error message.\r\n this._messsage = ''; //Contains the message associated with the Error object.\r\n this._name = ''; // Contains the name of the Error object.\r\n this._messsage = message;\r\n this._name = name;\r\n this._errorID = id;\r\n }\r\n Object.defineProperty(ErrorBase.prototype, \"message\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return this._messsage;\r\n },\r\n /**\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this._messsage = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ErrorBase.prototype, \"name\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return this._name;\r\n },\r\n /**\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this._name = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ErrorBase.prototype, \"errorID\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n return this._errorID;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ErrorBase;\r\n}());\r\nexport { ErrorBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/errors/ErrorBase.js","import * as tslib_1 from \"tslib\";\r\nimport { ErrorBase } from \"../errors/ErrorBase\";\r\n/**\r\n * AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden\r\n * by a concrete subclass.\r\n */\r\nvar AbstractMethodError = (function (_super) {\r\n tslib_1.__extends(AbstractMethodError, _super);\r\n /**\r\n * Create a new AbstractMethodError.\r\n * @param message An optional message to override the default error message.\r\n * @param id The id of the error.\r\n */\r\n function AbstractMethodError(message, id) {\r\n if (message === void 0) { message = null; }\r\n if (id === void 0) { id = 0; }\r\n return _super.call(this, message || \"An abstract method was called! Either an instance of an abstract export class was created, or an abstract method was not overridden by the subclass.\", id) || this;\r\n }\r\n return AbstractMethodError;\r\n}(ErrorBase));\r\nexport { AbstractMethodError };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/errors/AbstractMethodError.js","var EventBase = (function () {\r\n function EventBase(type) {\r\n /**\r\n * Type of event\r\n * @property type\r\n * @type String\r\n */\r\n this.type = undefined;\r\n /**\r\n * Reference to target object\r\n * @property target\r\n * @type Object\r\n */\r\n this.target = undefined;\r\n this.type = type;\r\n }\r\n /**\r\n * Clones the current event.\r\n * @return An exact duplicate of the current event.\r\n */\r\n EventBase.prototype.clone = function () {\r\n return new EventBase(this.type);\r\n };\r\n return EventBase;\r\n}());\r\nexport { EventBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/EventBase.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"../events/EventBase\";\r\n/**\r\n * @export class away.events.AssetEvent\r\n */\r\nvar AssetEvent = (function (_super) {\r\n tslib_1.__extends(AssetEvent, _super);\r\n /**\r\n *\r\n */\r\n function AssetEvent(type, asset, prevName) {\r\n if (prevName === void 0) { prevName = null; }\r\n var _this = _super.call(this, type) || this;\r\n _this._asset = asset;\r\n _this._prevName = prevName || _this._asset.name;\r\n return _this;\r\n }\r\n Object.defineProperty(AssetEvent.prototype, \"asset\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._asset;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetEvent.prototype, \"prevName\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._prevName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n AssetEvent.prototype.clone = function () {\r\n return new AssetEvent(this.type, this._asset, this._prevName);\r\n };\r\n return AssetEvent;\r\n}(EventBase));\r\nexport { AssetEvent };\r\n/**\r\n * Dispatched when the content of an asset is invalidated\r\n */\r\nAssetEvent.INVALIDATE = \"invalidate\";\r\n/**\r\n * Dispatched when an asset is diposed\r\n */\r\nAssetEvent.DISPOSE = \"dispose\";\r\n/**\r\n * Dispatched when an asset is cleared\r\n */\r\nAssetEvent.CLEAR = \"clear\";\r\n/**\r\n *\r\n */\r\nAssetEvent.RENAME = 'rename';\r\n/**\r\n *\r\n */\r\nAssetEvent.ENTER_FRAME = 'enterFrame';\r\n/**\r\n *\r\n */\r\nAssetEvent.EXIT_FRAME = 'exitFrame';\r\n/**\r\n *\r\n */\r\nAssetEvent.ASSET_CONFLICT_RESOLVED = 'assetConflictResolved';\r\n/**\r\n * Dispatched when the loading of an asset and all of its dependencies is complete.\r\n */\r\nAssetEvent.ASSET_COMPLETE = \"assetComplete\";\r\n/**\r\n *\r\n */\r\nAssetEvent.TEXTURE_SIZE_ERROR = 'textureSizeError';\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/AssetEvent.js","/**\r\n * Base export class for dispatching events\r\n*\r\n* @export class away.events.EventDispatcher\r\n*\r\n*/\r\nvar EventDispatcher = (function () {\r\n function EventDispatcher(target) {\r\n if (target === void 0) { target = null; }\r\n this.listenerObjects = new Array();\r\n this.target = target || this;\r\n }\r\n /**\r\n * Add an event listener\r\n * @method addEventListener\r\n * @param {String} Name of event to add a listener for\r\n * @param {Function} Callback function\r\n */\r\n EventDispatcher.prototype.addEventListener = function (type, listener) {\r\n var l = this.listenerObjects[type];\r\n if (l === undefined)\r\n l = this.listenerObjects[type] = new ListenerObject();\r\n l.addEventListener(listener);\r\n };\r\n /**\r\n * Remove an event listener\r\n * @method removeEventListener\r\n * @param {String} Name of event to remove a listener for\r\n * @param {Function} Callback function\r\n */\r\n EventDispatcher.prototype.removeEventListener = function (type, listener) {\r\n var l = this.listenerObjects[type];\r\n if (l) {\r\n l.removeEventListener(listener);\r\n if (l.numListeners == 0)\r\n delete this.listenerObjects[type];\r\n }\r\n };\r\n /**\r\n * Dispatch an event\r\n * @method dispatchEvent\r\n * @param {Event} Event to dispatch\r\n */\r\n EventDispatcher.prototype.dispatchEvent = function (event) {\r\n var l = this.listenerObjects[event.type];\r\n if (l) {\r\n event.target = this.target;\r\n l.dispatchEvent(event);\r\n }\r\n };\r\n /**\r\n * check if an object has an event listener assigned to it\r\n * @method hasListener\r\n * @param {String} Name of event to remove a listener for\r\n * @param {Function} Callback function\r\n */\r\n EventDispatcher.prototype.hasEventListener = function (type, listener) {\r\n if (this.listenerObjects[type] === undefined)\r\n return false;\r\n if (listener != null)\r\n return this.listenerObjects[type].getEventListenerIndex(listener) !== -1;\r\n return this.listenerObjects[type].numListeners > 0;\r\n };\r\n return EventDispatcher;\r\n}());\r\nexport { EventDispatcher };\r\nvar ListenerObject = (function () {\r\n function ListenerObject() {\r\n this.index = 0;\r\n this.listeners = new Array();\r\n this.numListeners = 0;\r\n }\r\n ListenerObject.prototype.addEventListener = function (listener) {\r\n //check if listener already added\r\n if (this.getEventListenerIndex(listener) !== -1)\r\n return;\r\n this.listeners.push(listener);\r\n this.numListeners++;\r\n };\r\n ListenerObject.prototype.removeEventListener = function (listener) {\r\n //check if listener exists\r\n var index = this.getEventListenerIndex(listener);\r\n if (index === -1)\r\n return;\r\n this.listeners.splice(index, 1);\r\n if (index <= this.index)\r\n this.index--;\r\n this.numListeners--;\r\n };\r\n ListenerObject.prototype.dispatchEvent = function (event) {\r\n var len = this.numListeners;\r\n for (this.index = 0; this.index < len && this.index < this.numListeners; this.index++)\r\n this.listeners[this.index](event);\r\n };\r\n /**\r\n * get Event Listener Index in array. Returns -1 if no listener is added\r\n * @method getEventListenerIndex\r\n * @param {String} Name of event to remove a listener for\r\n * @param {Function} Callback function\r\n */\r\n ListenerObject.prototype.getEventListenerIndex = function (listener) {\r\n for (var index = 0; index < this.numListeners; index++)\r\n if (listener == this.listeners[index])\r\n return index;\r\n return -1;\r\n };\r\n return ListenerObject;\r\n}());\r\nexport { ListenerObject };\r\nexport default EventDispatcher;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/EventDispatcher.js","import * as tslib_1 from \"tslib\";\r\nimport { AbstractMethodError } from \"../errors/AbstractMethodError\";\r\nimport { AssetEvent } from \"../events/AssetEvent\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\nvar AssetBase = (function (_super) {\r\n tslib_1.__extends(AssetBase, _super);\r\n function AssetBase(name) {\r\n if (name === void 0) { name = null; }\r\n var _this = _super.call(this) || this;\r\n _this._id = AssetBase.ID_COUNT++;\r\n if (name == null)\r\n name = 'null';\r\n _this._name = name;\r\n _this._originalName = name;\r\n _this.updateFullPath();\r\n return _this;\r\n }\r\n Object.defineProperty(AssetBase.prototype, \"adaptee\", {\r\n get: function () {\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetBase.prototype, \"adapter\", {\r\n /**\r\n * adapter is used to provide MovieClip to scripts taken from different platforms\r\n * setter typically managed by factory. getter defaults to AwayJS class\r\n */\r\n get: function () {\r\n return this._adapter || this;\r\n },\r\n set: function (value) {\r\n this._adapter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetBase.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n throw new AbstractMethodError();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetBase.prototype, \"originalName\", {\r\n /**\r\n * The original name used for this asset in the resource (e.g. file) in which\r\n * it was found. This may not be the same as name, which may\r\n * have changed due to of a name conflict.\r\n */\r\n get: function () {\r\n return this._originalName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetBase.prototype, \"id\", {\r\n /**\r\n * A unique id for the asset, used to identify assets in an associative array\r\n */\r\n get: function () {\r\n return this._id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetBase.prototype, \"name\", {\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n var prev;\r\n prev = this._name;\r\n this._name = val;\r\n if (this._name == null)\r\n this._name = 'null';\r\n this.updateFullPath();\r\n this.dispatchEvent(new AssetEvent(AssetEvent.RENAME, this, prev));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n AssetBase.prototype.invalidate = function () {\r\n this.dispatchEvent(new AssetEvent(AssetEvent.INVALIDATE, this));\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n AssetBase.prototype.dispose = function () {\r\n this.dispatchEvent(new AssetEvent(AssetEvent.DISPOSE, this));\r\n };\r\n AssetBase.prototype.clear = function () {\r\n this.dispatchEvent(new AssetEvent(AssetEvent.CLEAR, this));\r\n };\r\n Object.defineProperty(AssetBase.prototype, \"assetNamespace\", {\r\n get: function () {\r\n return this._namespace;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetBase.prototype, \"assetFullPath\", {\r\n get: function () {\r\n return this._full_path;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AssetBase.prototype.assetPathEquals = function (name, ns) {\r\n return (this._name == name && (!ns || this._namespace == ns));\r\n };\r\n AssetBase.prototype.isAsset = function (assetClass) {\r\n return this.assetType == assetClass.assetType;\r\n };\r\n AssetBase.prototype.resetAssetPath = function (name, ns, overrideOriginal) {\r\n if (ns === void 0) { ns = null; }\r\n if (overrideOriginal === void 0) { overrideOriginal = true; }\r\n this._name = name ? name : 'null';\r\n this._namespace = ns ? ns : AssetBase.DEFAULT_NAMESPACE;\r\n if (overrideOriginal)\r\n this._originalName = this._name;\r\n this.updateFullPath();\r\n };\r\n AssetBase.prototype.updateFullPath = function () {\r\n this._full_path = [this._namespace, this._name];\r\n };\r\n return AssetBase;\r\n}(EventDispatcher));\r\nexport { AssetBase };\r\nAssetBase.ID_COUNT = 0;\r\nAssetBase.DEFAULT_NAMESPACE = 'default';\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/AssetBase.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase } from \"../library/AssetBase\";\r\nvar AttributesBuffer = (function (_super) {\r\n tslib_1.__extends(AttributesBuffer, _super);\r\n /**\r\n *\r\n */\r\n function AttributesBuffer(stride, count) {\r\n if (stride === void 0) { stride = 0; }\r\n if (count === void 0) { count = 0; }\r\n var _this = _super.call(this) || this;\r\n _this._count = 0;\r\n _this._newCount = 0;\r\n _this._stride = 0;\r\n _this._newStride = 0;\r\n _this._viewVOs = new Array();\r\n _this._stride = _this._newStride = stride;\r\n _this._count = _this._newCount = count;\r\n _this._buffer = new ArrayBuffer(_this._stride * _this._count);\r\n _this._bufferView = new Uint8Array(_this._buffer, 0, _this._buffer.byteLength);\r\n return _this;\r\n }\r\n Object.defineProperty(AttributesBuffer.prototype, \"assetType\", {\r\n /**\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return AttributesBuffer.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesBuffer.prototype, \"stride\", {\r\n get: function () {\r\n if (this._lengthDirty)\r\n this._updateLength();\r\n return this._stride;\r\n },\r\n set: function (value) {\r\n if (this._newStride == value)\r\n return;\r\n this._newStride = value;\r\n this.resize();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesBuffer.prototype, \"newCount\", {\r\n get: function () {\r\n return this._newCount;\r\n },\r\n set: function (value) {\r\n if (this._newCount == value)\r\n return;\r\n this._newCount = value;\r\n this.resize();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesBuffer.prototype, \"count\", {\r\n get: function () {\r\n return this._count;\r\n },\r\n set: function (value) {\r\n if (this._count == value)\r\n return;\r\n this._count = value;\r\n this.resize();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesBuffer.prototype, \"buffer\", {\r\n get: function () {\r\n if (this._lengthDirty)\r\n this._updateLength();\r\n this._contentDirty = false;\r\n return this._buffer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesBuffer.prototype, \"bufferView\", {\r\n get: function () {\r\n if (this._lengthDirty)\r\n this._updateLength();\r\n this._contentDirty = false;\r\n return this._bufferView;\r\n },\r\n set: function (value) {\r\n this._bufferView = value;\r\n this._buffer = this._bufferView.buffer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesBuffer.prototype, \"length\", {\r\n get: function () {\r\n return this._count * this.stride;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n AttributesBuffer.prototype.invalidate = function () {\r\n if (this._contentDirty)\r\n return;\r\n _super.prototype.invalidate.call(this);\r\n this._contentDirty = true;\r\n };\r\n /**\r\n *\r\n * @private\r\n */\r\n AttributesBuffer.prototype.resize = function () {\r\n if (this._lengthDirty)\r\n return;\r\n this.clear();\r\n this._lengthDirty = true;\r\n //dispose buffer if stride is 0\r\n if (!this._newStride) {\r\n this._buffer = null;\r\n this._bufferView = null;\r\n }\r\n };\r\n AttributesBuffer.prototype.clone = function () {\r\n var attributesBuffer = new AttributesBuffer(this._stride, this._count);\r\n attributesBuffer.bufferView.set(this.bufferView);\r\n var len = this._viewVOs.length;\r\n for (var i = 0; i < len; i++)\r\n this._viewVOs[i].view._internalClone(attributesBuffer);\r\n return attributesBuffer;\r\n };\r\n AttributesBuffer.prototype.getView = function (index) {\r\n if (index < this._viewVOs.length)\r\n return this._viewVOs[index].view;\r\n return null;\r\n };\r\n AttributesBuffer.prototype._setAttributes = function (viewIndex, arrayBufferView, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n var array = (arrayBufferView instanceof Uint8Array) ? arrayBufferView : new Uint8Array(arrayBufferView.buffer);\r\n var viewVO = this._viewVOs[viewIndex];\r\n var vLength = viewVO.length;\r\n var vOffset = viewVO.offset;\r\n var vCount = array.length / vLength;\r\n //make sure there is enough space in the buffer\r\n if (this.newCount < vCount + offset)\r\n this.newCount = vCount + offset;\r\n if (this._lengthDirty)\r\n this._updateLength();\r\n //fast path for separate buffers\r\n if (this._viewVOs.length == 1) {\r\n this._bufferView.set(array);\r\n }\r\n else {\r\n for (var i = 0; i < vCount; i++)\r\n this._bufferView.set(array.subarray(i * vLength, (i + 1) * vLength), (i + offset) * this._stride + vOffset);\r\n }\r\n this.invalidate();\r\n };\r\n AttributesBuffer.prototype._addView = function (view) {\r\n var viewVO = new ViewVO(view);\r\n var len = this._viewVOs.length;\r\n viewVO.offset = len ? this._viewVOs[len - 1].offset + this._viewVOs[len - 1].length : 0;\r\n this._viewVOs.push(viewVO);\r\n if (this._newStride < viewVO.offset + viewVO.length) {\r\n this._newStride = viewVO.offset + viewVO.length;\r\n this.resize();\r\n }\r\n view._index = len;\r\n };\r\n AttributesBuffer.prototype._removeView = function (view) {\r\n var viewIndex = view._index;\r\n var viewVO = this._viewVOs.splice(viewIndex, 1)[0];\r\n var len = this._viewVOs.length;\r\n viewVO.dispose();\r\n for (var i = viewIndex; i < len; i++) {\r\n viewVO = this._viewVOs[i];\r\n viewVO.offset = i ? this._viewVOs[i - 1].offset + this._viewVOs[i - 1].length : 0;\r\n viewVO.view._index = i;\r\n }\r\n this._newStride = viewVO.offset + viewVO.length;\r\n this.resize();\r\n };\r\n AttributesBuffer.prototype._getOffset = function (viewIndex) {\r\n return this._viewVOs[viewIndex].offset;\r\n };\r\n AttributesBuffer.prototype._updateLength = function () {\r\n this._lengthDirty = false;\r\n var i;\r\n var j;\r\n var len = this._viewVOs.length;\r\n var newLength = this._newStride * this._newCount;\r\n if (!this._buffer || this._buffer.byteLength != newLength) {\r\n var newBuffer = new ArrayBuffer(newLength);\r\n var newView = new Uint8Array(newBuffer, 0, newBuffer.byteLength);\r\n var viewVO;\r\n var vLength;\r\n var vOffset;\r\n var vOldOffset;\r\n if (this._stride != this._newStride) {\r\n for (i = 0; i < len; i++) {\r\n viewVO = this._viewVOs[i];\r\n vLength = viewVO.length;\r\n vOffset = viewVO.offset;\r\n vOldOffset = viewVO.oldOffset;\r\n for (j = 0; j < this._count; j++)\r\n if (vOldOffset != null)\r\n newView.set(new Uint8Array(this._buffer, j * this._stride + vOldOffset, vLength), j * this._newStride + vOffset);\r\n viewVO.oldOffset = viewVO.offset;\r\n }\r\n this._stride = this._newStride;\r\n }\r\n else {\r\n newView.set(new Uint8Array(this._buffer, 0, Math.min(newLength, this._buffer.byteLength))); //TODO: bypass quantisation of bytearray on instantiation\r\n }\r\n this._buffer = newBuffer;\r\n this._bufferView = newView;\r\n }\r\n this._count = this._newCount;\r\n };\r\n return AttributesBuffer;\r\n}(AssetBase));\r\nexport { AttributesBuffer };\r\nAttributesBuffer.assetType = \"[assets AttributesBuffer]\";\r\nvar ViewVO = (function () {\r\n function ViewVO(view) {\r\n this.view = view;\r\n this.length = view.size * view.dimensions;\r\n }\r\n ViewVO.prototype.dispose = function () {\r\n this.view = null;\r\n };\r\n ViewVO.prototype.clone = function () {\r\n return new ViewVO(this.view);\r\n };\r\n return ViewVO;\r\n}());\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/AttributesBuffer.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesBuffer } from \"../attributes/AttributesBuffer\";\r\nimport { AssetBase } from \"../library/AssetBase\";\r\nvar AttributesView = (function (_super) {\r\n tslib_1.__extends(AttributesView, _super);\r\n function AttributesView(arrayClass, dimensions, attributesBufferCount, unsigned) {\r\n if (attributesBufferCount === void 0) { attributesBufferCount = 0; }\r\n if (unsigned === void 0) { unsigned = false; }\r\n var _this = _super.call(this) || this;\r\n _this._arrayClass = arrayClass;\r\n _this._size = arrayClass.BYTES_PER_ELEMENT;\r\n _this._dimensions = dimensions;\r\n _this._attributesBuffer = (attributesBufferCount instanceof AttributesBuffer) ? attributesBufferCount : new AttributesBuffer(_this._dimensions * _this._size, attributesBufferCount);\r\n _this._attributesBuffer._addView(_this);\r\n _this._unsigned = unsigned;\r\n return _this;\r\n }\r\n Object.defineProperty(AttributesView.prototype, \"assetType\", {\r\n /**\r\n *\r\n *\r\n */\r\n get: function () {\r\n return AttributesView.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesView.prototype, \"attributesBuffer\", {\r\n get: function () {\r\n return this._attributesBuffer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesView.prototype, \"size\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n return this._size;\r\n },\r\n set: function (value) {\r\n if (this._size == value)\r\n return;\r\n this._size = value;\r\n this._attributesBuffer._removeView(this);\r\n this._attributesBuffer._addView(this);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesView.prototype, \"dimensions\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n return this._dimensions;\r\n },\r\n set: function (value) {\r\n if (this._dimensions == value)\r\n return;\r\n this._dimensions = value;\r\n //reset view\r\n this._attributesBuffer._removeView(this);\r\n this._attributesBuffer._addView(this);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesView.prototype, \"unsigned\", {\r\n get: function () {\r\n return this._unsigned;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesView.prototype, \"count\", {\r\n get: function () {\r\n return this._attributesBuffer.count;\r\n },\r\n set: function (value) {\r\n this._attributesBuffer.count = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesView.prototype, \"offset\", {\r\n get: function () {\r\n return this._attributesBuffer._getOffset(this._index);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesView.prototype, \"length\", {\r\n get: function () {\r\n return this._attributesBuffer.count * this._dimensions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AttributesView.prototype, \"stride\", {\r\n get: function () {\r\n return this._attributesBuffer.stride / this._size;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AttributesView.prototype.set = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n this._attributesBuffer._setAttributes(this._index, (values instanceof Array) ? new (this._arrayClass)(values) : values, offset);\r\n };\r\n AttributesView.prototype.get = function (count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n return new (this._arrayClass)(this._attributesBuffer.buffer, offset * this._attributesBuffer.stride + this.offset, count * this.stride - this.offset / this.size);\r\n };\r\n AttributesView.prototype._internalClone = function (attributesBuffer) {\r\n return (this._cloneCache = new AttributesView(this._arrayClass, this._dimensions, attributesBuffer, this._unsigned));\r\n };\r\n AttributesView.prototype.clone = function (attributesBuffer) {\r\n if (attributesBuffer === void 0) { attributesBuffer = null; }\r\n if (attributesBuffer)\r\n this._internalClone(attributesBuffer);\r\n if (!this._cloneCache)\r\n this._attributesBuffer.clone();\r\n var cloneCache = this._cloneCache;\r\n this._cloneCache = null;\r\n return cloneCache;\r\n };\r\n AttributesView.prototype.invalidate = function () {\r\n _super.prototype.invalidate.call(this);\r\n this._attributesBuffer.invalidate();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n AttributesView.prototype.dispose = function () {\r\n if (!this._attributesBuffer)\r\n return;\r\n this._attributesBuffer._removeView(this);\r\n this._attributesBuffer = null;\r\n };\r\n return AttributesView;\r\n}(AssetBase));\r\nexport { AttributesView };\r\nAttributesView.assetType = \"[attributes AttributesView]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/AttributesView.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView } from \"../attributes/AttributesView\";\r\nvar Byte4Attributes = (function (_super) {\r\n tslib_1.__extends(Byte4Attributes, _super);\r\n function Byte4Attributes(attributesBufferLength, unsigned) {\r\n if (unsigned === void 0) { unsigned = true; }\r\n return _super.call(this, unsigned ? Uint8Array : Int8Array, 4, attributesBufferLength, unsigned) || this;\r\n }\r\n Object.defineProperty(Byte4Attributes.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Byte4Attributes.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Byte4Attributes.prototype.set = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n _super.prototype.set.call(this, values, offset);\r\n };\r\n Byte4Attributes.prototype.get = function (count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n return _super.prototype.get.call(this, count, offset);\r\n };\r\n Byte4Attributes.prototype._internalClone = function (attributesBuffer) {\r\n return (this._cloneCache = new Byte4Attributes(attributesBuffer, this._arrayClass == Uint8Array));\r\n };\r\n Byte4Attributes.prototype.clone = function (attributesBuffer) {\r\n if (attributesBuffer === void 0) { attributesBuffer = null; }\r\n return _super.prototype.clone.call(this, attributesBuffer);\r\n };\r\n return Byte4Attributes;\r\n}(AttributesView));\r\nexport { Byte4Attributes };\r\nByte4Attributes.assetType = \"[attributes Byte4Attributes]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/Byte4Attributes.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView } from \"../attributes/AttributesView\";\r\nvar Float1Attributes = (function (_super) {\r\n tslib_1.__extends(Float1Attributes, _super);\r\n function Float1Attributes(attributesBufferLength) {\r\n return _super.call(this, Float32Array, 1, attributesBufferLength) || this;\r\n }\r\n Object.defineProperty(Float1Attributes.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Float1Attributes.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Float1Attributes.prototype.set = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n _super.prototype.set.call(this, values, offset);\r\n };\r\n Float1Attributes.prototype.get = function (count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n return _super.prototype.get.call(this, count, offset);\r\n };\r\n Float1Attributes.prototype._internalClone = function (attributesBuffer) {\r\n return (this._cloneCache = new Float1Attributes(attributesBuffer));\r\n };\r\n Float1Attributes.prototype.clone = function (attributesBuffer) {\r\n if (attributesBuffer === void 0) { attributesBuffer = null; }\r\n return _super.prototype.clone.call(this, attributesBuffer);\r\n };\r\n return Float1Attributes;\r\n}(AttributesView));\r\nexport { Float1Attributes };\r\nFloat1Attributes.assetType = \"[attributes Float1Attributes]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/Float1Attributes.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView } from \"../attributes/AttributesView\";\r\nvar Float2Attributes = (function (_super) {\r\n tslib_1.__extends(Float2Attributes, _super);\r\n function Float2Attributes(attributesBufferLength) {\r\n return _super.call(this, Float32Array, 2, attributesBufferLength) || this;\r\n }\r\n Object.defineProperty(Float2Attributes.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Float2Attributes.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Float2Attributes.prototype.set = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n _super.prototype.set.call(this, values, offset);\r\n };\r\n Float2Attributes.prototype.get = function (count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n return _super.prototype.get.call(this, count, offset);\r\n };\r\n Float2Attributes.prototype._internalClone = function (attributesBuffer) {\r\n return (this._cloneCache = new Float2Attributes(attributesBuffer));\r\n };\r\n Float2Attributes.prototype.clone = function (attributesBuffer) {\r\n if (attributesBuffer === void 0) { attributesBuffer = null; }\r\n return _super.prototype.clone.call(this, attributesBuffer);\r\n };\r\n return Float2Attributes;\r\n}(AttributesView));\r\nexport { Float2Attributes };\r\nFloat2Attributes.assetType = \"[attributes Float2Attributes]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/Float2Attributes.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView } from \"../attributes/AttributesView\";\r\nvar Float3Attributes = (function (_super) {\r\n tslib_1.__extends(Float3Attributes, _super);\r\n function Float3Attributes(attributesBufferLength) {\r\n return _super.call(this, Float32Array, 3, attributesBufferLength) || this;\r\n }\r\n Object.defineProperty(Float3Attributes.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Float3Attributes.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Float3Attributes.prototype.set = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n _super.prototype.set.call(this, values, offset);\r\n };\r\n Float3Attributes.prototype.get = function (count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n return _super.prototype.get.call(this, count, offset);\r\n };\r\n Float3Attributes.prototype._internalClone = function (attributesBuffer) {\r\n return (this._cloneCache = new Float3Attributes(attributesBuffer));\r\n };\r\n Float3Attributes.prototype.clone = function (attributesBuffer) {\r\n if (attributesBuffer === void 0) { attributesBuffer = null; }\r\n return _super.prototype.clone.call(this, attributesBuffer);\r\n };\r\n return Float3Attributes;\r\n}(AttributesView));\r\nexport { Float3Attributes };\r\nFloat3Attributes.assetType = \"[attributes Float3Attributes]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/Float3Attributes.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView } from \"../attributes/AttributesView\";\r\nvar Float4Attributes = (function (_super) {\r\n tslib_1.__extends(Float4Attributes, _super);\r\n function Float4Attributes(attributesBufferLength) {\r\n return _super.call(this, Float32Array, 4, attributesBufferLength) || this;\r\n }\r\n Object.defineProperty(Float4Attributes.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Float4Attributes.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Float4Attributes.prototype.set = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n _super.prototype.set.call(this, values, offset);\r\n };\r\n Float4Attributes.prototype.get = function (count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n return _super.prototype.get.call(this, count, offset);\r\n };\r\n Float4Attributes.prototype._internalClone = function (attributesBuffer) {\r\n return (this._cloneCache = new Float4Attributes(attributesBuffer));\r\n };\r\n Float4Attributes.prototype.clone = function (attributesBuffer) {\r\n if (attributesBuffer === void 0) { attributesBuffer = null; }\r\n return _super.prototype.clone.call(this, attributesBuffer);\r\n };\r\n return Float4Attributes;\r\n}(AttributesView));\r\nexport { Float4Attributes };\r\nFloat4Attributes.assetType = \"[attributes Float4Attributes]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/Float4Attributes.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView } from \"../attributes/AttributesView\";\r\nvar Short2Attributes = (function (_super) {\r\n tslib_1.__extends(Short2Attributes, _super);\r\n function Short2Attributes(attributesBufferLength, unsigned) {\r\n if (unsigned === void 0) { unsigned = true; }\r\n return _super.call(this, unsigned ? Uint16Array : Int16Array, 2, attributesBufferLength, unsigned) || this;\r\n }\r\n Object.defineProperty(Short2Attributes.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Short2Attributes.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Short2Attributes.prototype.set = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n _super.prototype.set.call(this, values, offset);\r\n };\r\n Short2Attributes.prototype.get = function (count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n return _super.prototype.get.call(this, count, offset);\r\n };\r\n Short2Attributes.prototype._internalClone = function (attributesBuffer) {\r\n return (this._cloneCache = new Short2Attributes(attributesBuffer, this._arrayClass == Uint16Array));\r\n };\r\n Short2Attributes.prototype.clone = function (attributesBuffer) {\r\n if (attributesBuffer === void 0) { attributesBuffer = null; }\r\n return _super.prototype.clone.call(this, attributesBuffer);\r\n };\r\n return Short2Attributes;\r\n}(AttributesView));\r\nexport { Short2Attributes };\r\nShort2Attributes.assetType = \"[attributes Short2Attributes]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/Short2Attributes.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView } from \"../attributes/AttributesView\";\r\nvar Short3Attributes = (function (_super) {\r\n tslib_1.__extends(Short3Attributes, _super);\r\n function Short3Attributes(attributesBufferLength, unsigned) {\r\n if (unsigned === void 0) { unsigned = true; }\r\n return _super.call(this, unsigned ? Uint16Array : Int16Array, 3, attributesBufferLength, unsigned) || this;\r\n }\r\n Object.defineProperty(Short3Attributes.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Short3Attributes.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Short3Attributes.prototype.set = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n _super.prototype.set.call(this, values, offset);\r\n };\r\n Short3Attributes.prototype.get = function (count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n return _super.prototype.get.call(this, count, offset);\r\n };\r\n Short3Attributes.prototype._internalClone = function (attributesBuffer) {\r\n return (this._cloneCache = new Short3Attributes(attributesBuffer, this._arrayClass == Uint16Array));\r\n };\r\n Short3Attributes.prototype.clone = function (attributesBuffer) {\r\n if (attributesBuffer === void 0) { attributesBuffer = null; }\r\n return _super.prototype.clone.call(this, attributesBuffer);\r\n };\r\n return Short3Attributes;\r\n}(AttributesView));\r\nexport { Short3Attributes };\r\nShort3Attributes.assetType = \"[attributes Short3Attributes]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/Short3Attributes.js","var StreamingAudioChannel = (function () {\r\n function StreamingAudioChannel() {\r\n var _this = this;\r\n this._isPlaying = false;\r\n this._isLooping = false;\r\n this._startTime = 0;\r\n this._sourceOpenDelegate = function (event) { return _this._sourceOpen(event); };\r\n this._updateEndDelegate = function (event) { return _this._updateEnd(event); };\r\n this._audio = new Audio();\r\n this._audio.ontimeupdate = function (event) { return _this._onTimeUpdate(event); };\r\n this._updateSource();\r\n }\r\n StreamingAudioChannel.stopAllSounds = function () {\r\n var len = StreamingAudioChannel._channels.length;\r\n for (var j = 0; j < len; j++) {\r\n StreamingAudioChannel._channels[j].stop();\r\n }\r\n StreamingAudioChannel._channels.length = 0;\r\n };\r\n Object.defineProperty(StreamingAudioChannel.prototype, \"duration\", {\r\n get: function () {\r\n return this._duration;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(StreamingAudioChannel.prototype, \"currentTime\", {\r\n get: function () {\r\n return this._audio.currentTime - this._startTime;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(StreamingAudioChannel.prototype, \"volume\", {\r\n get: function () {\r\n return this._volume;\r\n },\r\n set: function (value) {\r\n if (this._volume == value)\r\n return;\r\n this._volume = value;\r\n this._audio.volume = this._volume;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n StreamingAudioChannel.prototype.isPlaying = function () {\r\n return this._isPlaying;\r\n };\r\n StreamingAudioChannel.prototype.isLooping = function () {\r\n return this._isLooping;\r\n };\r\n StreamingAudioChannel.prototype.isDecoding = function () {\r\n return false;\r\n };\r\n Object.defineProperty(StreamingAudioChannel.prototype, \"pan\", {\r\n get: function () {\r\n //todo\r\n return 0;\r\n },\r\n set: function (value) {\r\n //todo\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n StreamingAudioChannel.prototype.play = function (buffer, offset, loop) {\r\n if (offset === void 0) { offset = 0; }\r\n if (loop === void 0) { loop = false; }\r\n this._isPlaying = true;\r\n if (this._isLooping || this._isLooping != loop) {\r\n this._isLooping = loop;\r\n this._sourceDirty = true;\r\n }\r\n if (this._sourceDirty)\r\n this._updateSource();\r\n this._buffer = buffer;\r\n this._offset = offset;\r\n if (!this._isQueuing && !this._isOpening)\r\n this._queueBuffer();\r\n };\r\n StreamingAudioChannel.prototype.stop = function () {\r\n this._audio.pause();\r\n this._isPlaying = false;\r\n this._isLooping = false;\r\n };\r\n StreamingAudioChannel.prototype._sourceOpen = function (event) {\r\n this._isOpening = false;\r\n //TODO: find out how in the name of all that is holy how this can be executed more than once on a MediaSource object\r\n if (this._mediaSource.activeSourceBuffers.length) {\r\n console.log(\"ERR: double sourceopen event called\");\r\n return;\r\n }\r\n this._sourceBuffer = this._mediaSource.addSourceBuffer('audio/mpeg');\r\n this._sourceBuffer.addEventListener(\"updateend\", this._updateEndDelegate);\r\n if (this._isPlaying)\r\n this._queueBuffer();\r\n };\r\n StreamingAudioChannel.prototype._queueBuffer = function () {\r\n this._isQueuing = true;\r\n this._startTime = this._sourceBuffer.timestampOffset;\r\n this._sourceBuffer.appendBuffer(this._buffer);\r\n };\r\n StreamingAudioChannel.prototype._updateEnd = function (event) {\r\n this._isQueuing = false;\r\n if (this._isLooping)\r\n this._mediaSource.endOfStream();\r\n this._duration = this._sourceBuffer.timestampOffset - this._startTime;\r\n this._audio.currentTime = this._startTime + this._offset;\r\n this._audio.play();\r\n };\r\n StreamingAudioChannel.prototype._onTimeUpdate = function (event) {\r\n //TODO: more accurate end detection\r\n if (!this._isLooping && this._duration < this._audio.currentTime - this._startTime + 0.1)\r\n this.stop();\r\n };\r\n StreamingAudioChannel.prototype._updateSource = function () {\r\n if (this._mediaSource)\r\n this._disposeSource();\r\n this._isQueuing = false;\r\n this._isOpening = true;\r\n this._mediaSource = new MediaSource();\r\n this._mediaSource.addEventListener(\"sourceopen\", this._sourceOpenDelegate);\r\n this._urlString = URL.createObjectURL(this._mediaSource);\r\n this._audio.src = this._urlString;\r\n this._audio.loop = this._isLooping;\r\n this._sourceDirty = false;\r\n };\r\n StreamingAudioChannel.prototype._disposeSource = function () {\r\n if (!this._isOpening) {\r\n if (this._sourceBuffer.timestampOffset)\r\n this._sourceBuffer.remove(0, this._sourceBuffer.timestampOffset);\r\n this._sourceBuffer.removeEventListener(\"updateend\", this._updateEndDelegate);\r\n this._mediaSource.removeSourceBuffer(this._sourceBuffer);\r\n delete this._sourceBuffer;\r\n this._sourceBuffer = null;\r\n }\r\n this._mediaSource.removeEventListener(\"sourceopen\", this._sourceOpenDelegate);\r\n URL.revokeObjectURL(this._urlString);\r\n delete this._mediaSource;\r\n this._mediaSource = null;\r\n };\r\n return StreamingAudioChannel;\r\n}());\r\nexport { StreamingAudioChannel };\r\nStreamingAudioChannel.maxChannels = 4;\r\nStreamingAudioChannel._channels = new Array();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/StreamingAudioChannel.js","var WebAudioChannel = (function () {\r\n function WebAudioChannel() {\r\n var _this = this;\r\n this._isPlaying = false;\r\n this._isLooping = false;\r\n this._isDecoding = false;\r\n this._volume = 1;\r\n this._pan = 0;\r\n this._startTime = 0;\r\n this._audioCtx = WebAudioChannel.getAudioContext();\r\n this._usingNativePanner = typeof this._audioCtx.createStereoPanner === 'function';\r\n this._gainNode = this._audioCtx.createGain();\r\n this._gainNode.gain.value = this._volume;\r\n this._pannerNode = this._usingNativePanner ? this._audioCtx.createStereoPanner() : this._audioCtx.createPanner();\r\n if (this._usingNativePanner)\r\n this._pannerNode.pan.value = this._pan;\r\n else\r\n this._pannerNode.setPosition(Math.sin(this._pan * (Math.PI / 2)), 0, Math.cos(this._pan * (Math.PI / 2)));\r\n this._gainNode.connect(this._pannerNode);\r\n this._pannerNode.connect(this._audioCtx.destination);\r\n this._onEndedDelegate = function (event) { return _this._onEnded(event); };\r\n }\r\n WebAudioChannel.getAudioContext = function () {\r\n if (!WebAudioChannel._audioCtx && (window[\"AudioContext\"] || window[\"webkitAudioContext\"]))\r\n WebAudioChannel._audioCtx = new (window[\"AudioContext\"] || window[\"webkitAudioContext\"])();\r\n return WebAudioChannel._audioCtx;\r\n };\r\n WebAudioChannel.stopAllSounds = function () {\r\n var len = WebAudioChannel._channels.length;\r\n for (var j = 0; j < len; j++) {\r\n WebAudioChannel._channels[j].stop();\r\n }\r\n WebAudioChannel._channels.length = 0;\r\n };\r\n Object.defineProperty(WebAudioChannel.prototype, \"duration\", {\r\n get: function () {\r\n return this._duration;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebAudioChannel.prototype, \"currentTime\", {\r\n get: function () {\r\n return this._audioCtx.currentTime - this._startTime;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebAudioChannel.prototype, \"volume\", {\r\n get: function () {\r\n return this._volume;\r\n },\r\n set: function (value) {\r\n if (this._volume == value)\r\n return;\r\n this._volume = value;\r\n this._gainNode.gain.value = this._volume;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebAudioChannel.prototype, \"pan\", {\r\n get: function () {\r\n return this._pan;\r\n },\r\n set: function (value) {\r\n if (this._pan == value)\r\n return;\r\n this._pan = value;\r\n if (this._usingNativePanner)\r\n this._pannerNode.pan.value = this._pan;\r\n else\r\n this._pannerNode.setPosition(Math.sin(this._pan * (Math.PI / 2)), 0, Math.cos(this._pan * (Math.PI / 2)));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n WebAudioChannel.prototype.isPlaying = function () {\r\n return this._isPlaying;\r\n };\r\n WebAudioChannel.prototype.isLooping = function () {\r\n return this._isLooping;\r\n };\r\n WebAudioChannel.prototype.isDecoding = function () {\r\n return this._isDecoding;\r\n };\r\n WebAudioChannel.prototype.play = function (buffer, offset, loop, id) {\r\n var _this = this;\r\n if (offset === void 0) { offset = 0; }\r\n if (loop === void 0) { loop = false; }\r\n if (id === void 0) { id = 0; }\r\n this._isPlaying = true;\r\n this._isLooping = loop;\r\n this._currentTime = offset;\r\n this._id = id;\r\n this._isDecoding = true;\r\n buffer = buffer.slice(0);\r\n //fast path for short sounds\r\n if (WebAudioChannel._decodeCache[id])\r\n this._onDecodeComplete(WebAudioChannel._decodeCache[id]);\r\n else if (!WebAudioChannel._errorCache[id])\r\n this._audioCtx.decodeAudioData(buffer, function (buffer) { return _this._onDecodeComplete(buffer); }, function (event) { return _this._onError(event); });\r\n else\r\n this.stop();\r\n };\r\n WebAudioChannel.prototype.stop = function () {\r\n if (!this._isPlaying)\r\n return;\r\n this._isPlaying = false;\r\n this._isLooping = false;\r\n this._isDecoding = false;\r\n if (this._source)\r\n this._disposeSource();\r\n };\r\n WebAudioChannel.prototype._onDecodeComplete = function (buffer) {\r\n if (!this._isPlaying)\r\n return;\r\n this._isDecoding = false;\r\n //if (buffer.duration < 2) //cache all buffers?\r\n WebAudioChannel._decodeCache[this._id] = buffer;\r\n if (this._source)\r\n this._disposeSource();\r\n this._source = this._audioCtx.createBufferSource();\r\n this._source.loop = this._isLooping;\r\n this._source.connect(this._gainNode);\r\n this._source.buffer = buffer;\r\n this._duration = buffer.duration;\r\n this._pan = 0;\r\n this._startTime = this._audioCtx.currentTime - this._currentTime;\r\n this._source.onended = this._onEndedDelegate;\r\n try {\r\n if (this._usingNativePanner)\r\n this._pannerNode.pan.value = this._pan;\r\n else\r\n this._pannerNode.setPosition(Math.sin(this._pan * (Math.PI / 2)), 0, Math.cos(this._pan * (Math.PI / 2)));\r\n this._source.start(this._audioCtx.currentTime, this._currentTime);\r\n }\r\n catch (error) {\r\n console.log(\"Error starting audio: \" + error);\r\n this._disposeSource();\r\n }\r\n };\r\n WebAudioChannel.prototype._onError = function (event) {\r\n console.log(\"Error with decoding audio data\");\r\n WebAudioChannel._errorCache[this._id] = true;\r\n this.stop();\r\n };\r\n WebAudioChannel.prototype._onEnded = function (event) {\r\n if (this.onSoundComplete) {\r\n this.onSoundComplete();\r\n }\r\n this.stop();\r\n };\r\n WebAudioChannel.prototype._disposeSource = function () {\r\n //clean up\r\n this._source.stop(this._audioCtx.currentTime);\r\n this._source.onended = null;\r\n this._source.disconnect();\r\n // delete this._source.buffer;\r\n // delete this._source;\r\n this._source = null;\r\n };\r\n return WebAudioChannel;\r\n}());\r\nexport { WebAudioChannel };\r\nWebAudioChannel.maxChannels = 64;\r\nWebAudioChannel._channels = new Array();\r\nWebAudioChannel._decodeCache = new Object();\r\nWebAudioChannel._errorCache = new Object();\r\nvar audioCtx = WebAudioChannel.getAudioContext();\r\n// context state at this time is `undefined` in iOS8 Safari\r\nif (audioCtx && audioCtx.state === 'suspended') {\r\n var resume = function () {\r\n audioCtx.resume();\r\n //create empty buffer\r\n var buffer = audioCtx.createBuffer(1, 1, 22050);\r\n var source = audioCtx.createBufferSource();\r\n source.buffer = buffer;\r\n source.connect(audioCtx.destination);\r\n source.start();\r\n setTimeout(function () {\r\n if (audioCtx.state === 'running') {\r\n document.removeEventListener('touchend', resume, false);\r\n }\r\n }, 0);\r\n };\r\n document.addEventListener('touchend', resume, false);\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/WebAudioChannel.js","import { AbstractMethodError } from \"../errors/AbstractMethodError\";\r\nvar ByteArrayBase = (function () {\r\n function ByteArrayBase() {\r\n this.position = 0;\r\n this.length = 0;\r\n this._mode = \"\";\r\n }\r\n ByteArrayBase.prototype.writeByte = function (b) {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.readByte = function () {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.writeUnsignedByte = function (b) {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.readUnsignedByte = function () {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.writeUnsignedShort = function (b) {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.readUnsignedShort = function () {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.writeUnsignedInt = function (b) {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.readUnsignedInt = function () {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.writeFloat = function (b) {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.toFloatBits = function (x) {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.readFloat = function (b) {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.fromFloatBits = function (x) {\r\n throw \"Virtual method\";\r\n };\r\n ByteArrayBase.prototype.getBytesAvailable = function () {\r\n throw new AbstractMethodError('ByteArrayBase, getBytesAvailable() not implemented ');\r\n };\r\n ByteArrayBase.prototype.toString = function () {\r\n return \"[ByteArray] ( \" + this._mode + \" ) position=\" + this.position + \" length=\" + this.length;\r\n };\r\n ByteArrayBase.prototype.compareEqual = function (other, count) {\r\n if (count == undefined || count > this.length - this.position)\r\n count = this.length - this.position;\r\n if (count > other.length - other.position)\r\n count = other.length - other.position;\r\n var co0 = count;\r\n var r = true;\r\n while (r && count >= 4) {\r\n count -= 4;\r\n if (this.readUnsignedInt() != other.readUnsignedInt())\r\n r = false;\r\n }\r\n while (r && count >= 1) {\r\n count--;\r\n if (this.readUnsignedByte() != other.readUnsignedByte())\r\n r = false;\r\n }\r\n var c0;\r\n this.position -= (c0 - count);\r\n other.position -= (c0 - count);\r\n return r;\r\n };\r\n ByteArrayBase.prototype.writeBase64String = function (s) {\r\n for (var i = 0; i < s.length; i++) {\r\n var v = s.charAt(i);\r\n }\r\n };\r\n ByteArrayBase.prototype.dumpToConsole = function () {\r\n var oldpos = this.position;\r\n this.position = 0;\r\n var nstep = 8;\r\n function asHexString(x, digits) {\r\n var lut = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n var sh = \"\";\r\n for (var d = 0; d < digits; d++) {\r\n sh = lut[(x >> (d << 2)) & 0xf] + sh;\r\n }\r\n return sh;\r\n }\r\n for (var i = 0; i < this.length; i += nstep) {\r\n var s = asHexString(i, 4) + \":\";\r\n for (var j = 0; j < nstep && i + j < this.length; j++) {\r\n s += \" \" + asHexString(this.readUnsignedByte(), 2);\r\n }\r\n console.log(s);\r\n }\r\n this.position = oldpos;\r\n };\r\n ByteArrayBase.prototype.readBase64String = function (count) {\r\n if (count == undefined || count > this.length - this.position)\r\n count = this.length - this.position;\r\n if (!(count > 0))\r\n return \"\";\r\n return ByteArrayBase.internalGetBase64String(count, this.readUnsignedByte, this);\r\n };\r\n ByteArrayBase.internalGetBase64String = function (count, getUnsignedByteFunc, self) {\r\n var r = \"\";\r\n var b0, b1, b2, enc1, enc2, enc3, enc4;\r\n var base64Key = ByteArrayBase.Base64Key;\r\n while (count >= 3) {\r\n b0 = getUnsignedByteFunc.apply(self);\r\n b1 = getUnsignedByteFunc.apply(self);\r\n b2 = getUnsignedByteFunc.apply(self);\r\n enc1 = b0 >> 2;\r\n enc2 = ((b0 & 3) << 4) | (b1 >> 4);\r\n enc3 = ((b1 & 15) << 2) | (b2 >> 6);\r\n enc4 = b2 & 63;\r\n r += base64Key.charAt(enc1) + base64Key.charAt(enc2) + base64Key.charAt(enc3) + base64Key.charAt(enc4);\r\n count -= 3;\r\n }\r\n // pad\r\n if (count == 2) {\r\n b0 = getUnsignedByteFunc.apply(self);\r\n b1 = getUnsignedByteFunc.apply(self);\r\n enc1 = b0 >> 2;\r\n enc2 = ((b0 & 3) << 4) | (b1 >> 4);\r\n enc3 = ((b1 & 15) << 2);\r\n r += base64Key.charAt(enc1) + base64Key.charAt(enc2) + base64Key.charAt(enc3) + \"=\";\r\n }\r\n else if (count == 1) {\r\n b0 = getUnsignedByteFunc.apply(self);\r\n enc1 = b0 >> 2;\r\n enc2 = ((b0 & 3) << 4);\r\n r += base64Key.charAt(enc1) + base64Key.charAt(enc2) + \"==\";\r\n }\r\n return r;\r\n };\r\n return ByteArrayBase;\r\n}());\r\nexport { ByteArrayBase };\r\nByteArrayBase.Base64Key = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/ByteArrayBase.js","import * as tslib_1 from \"tslib\";\r\nimport { ByteArrayBase } from \"../utils/ByteArrayBase\";\r\nvar ByteArray = (function (_super) {\r\n tslib_1.__extends(ByteArray, _super);\r\n function ByteArray(maxlength) {\r\n if (maxlength === void 0) { maxlength = 4; }\r\n var _this = _super.call(this) || this;\r\n _this._mode = \"Typed array\";\r\n _this.maxlength = Math.max((maxlength + 255) & (~255), 4);\r\n _this.arraybytes = new ArrayBuffer(_this.maxlength);\r\n _this.unalignedarraybytestemp = new ArrayBuffer(16);\r\n return _this;\r\n }\r\n ByteArray.prototype.ensureWriteableSpace = function (n) {\r\n this.ensureSpace(n + this.position);\r\n };\r\n ByteArray.prototype.setArrayBuffer = function (aBuffer) {\r\n this.ensureSpace(aBuffer.byteLength);\r\n this.length = aBuffer.byteLength;\r\n var inInt8AView = new Int8Array(aBuffer);\r\n var localInt8View = new Int8Array(this.arraybytes, 0, this.length);\r\n localInt8View.set(inInt8AView);\r\n this.position = 0;\r\n };\r\n ByteArray.prototype.writeArrayBuffer = function (aBuffer) {\r\n this.ensureWriteableSpace(aBuffer.byteLength);\r\n var inInt8AView = new Int8Array(aBuffer);\r\n var localInt8View = new Int8Array(this.arraybytes, this.length, aBuffer.byteLength);\r\n localInt8View.set(inInt8AView);\r\n this.length += aBuffer.byteLength;\r\n this.position = this.length;\r\n };\r\n ByteArray.prototype.writeByteArray = function (ba) {\r\n this.ensureWriteableSpace(ba.length);\r\n var inInt8AView = new Int8Array(ba.arraybytes, 0, ba.length);\r\n var localInt8View = new Int8Array(this.arraybytes, this.length, ba.length);\r\n localInt8View.set(inInt8AView);\r\n this.length += ba.length;\r\n this.position = this.length;\r\n };\r\n ByteArray.prototype.getBytesAvailable = function () {\r\n return (this.length) - (this.position);\r\n };\r\n ByteArray.prototype.ensureSpace = function (n) {\r\n if (n > this.maxlength) {\r\n var newmaxlength = (n + 255) & (~255);\r\n var newarraybuffer = new ArrayBuffer(newmaxlength);\r\n var view = new Uint8Array(this.arraybytes, 0, this.length);\r\n var newview = new Uint8Array(newarraybuffer, 0, this.length);\r\n newview.set(view); // memcpy\r\n this.arraybytes = newarraybuffer;\r\n this.maxlength = newmaxlength;\r\n }\r\n };\r\n ByteArray.prototype.writeObject = function (object) {\r\n console.log(\"writeObject not implemented yet in core/ByteArray\");\r\n };\r\n ByteArray.prototype.readObject = function () {\r\n console.log(\"readObject not implemented yet in core/ByteArray\");\r\n return {};\r\n };\r\n ByteArray.prototype.writeByte = function (b) {\r\n this.ensureWriteableSpace(1);\r\n var view = new Int8Array(this.arraybytes);\r\n view[this.position++] = (~~b); // ~~ is cast to int in js...\r\n if (this.position > this.length) {\r\n this.length = this.position;\r\n }\r\n };\r\n ByteArray.prototype.readByte = function () {\r\n if (this.position >= this.length)\r\n throw \"ByteArray out of bounds read. Positon=\" + this.position + \", Length=\" + this.length;\r\n var view = new Int8Array(this.arraybytes);\r\n return view[this.position++];\r\n };\r\n ByteArray.prototype.readBytes = function (bytes, offset, length) {\r\n if (offset === void 0) { offset = 0; }\r\n if (length === void 0) { length = 0; }\r\n if (length == null)\r\n length = bytes.length;\r\n bytes.ensureWriteableSpace(offset + length);\r\n var byteView = new Int8Array(bytes.arraybytes);\r\n var localByteView = new Int8Array(this.arraybytes);\r\n byteView.set(localByteView.subarray(this.position, this.position + length), offset);\r\n this.position += length;\r\n if (length + offset > bytes.length)\r\n bytes.length += (length + offset) - bytes.length;\r\n };\r\n ByteArray.prototype.writeUnsignedByte = function (b) {\r\n this.ensureWriteableSpace(1);\r\n var view = new Uint8Array(this.arraybytes);\r\n view[this.position++] = (~~b) & 0xff; // ~~ is cast to int in js...\r\n if (this.position > this.length)\r\n this.length = this.position;\r\n };\r\n ByteArray.prototype.readUnsignedByte = function () {\r\n if (this.position >= this.length)\r\n throw \"ByteArray out of bounds read. Positon=\" + this.position + \", Length=\" + this.length;\r\n var view = new Uint8Array(this.arraybytes);\r\n return view[this.position++];\r\n };\r\n ByteArray.prototype.writeUnsignedShort = function (b) {\r\n this.ensureWriteableSpace(2);\r\n if ((this.position & 1) == 0) {\r\n var view = new Uint16Array(this.arraybytes);\r\n view[this.position >> 1] = (~~b) & 0xffff; // ~~ is cast to int in js...\r\n }\r\n else {\r\n var view = new Uint16Array(this.unalignedarraybytestemp, 0, 1);\r\n view[0] = (~~b) & 0xffff;\r\n var view2 = new Uint8Array(this.arraybytes, this.position, 2);\r\n var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 2);\r\n view2.set(view3);\r\n }\r\n this.position += 2;\r\n if (this.position > this.length)\r\n this.length = this.position;\r\n };\r\n ByteArray.prototype.readUTFBytes = function (len) {\r\n var value = \"\";\r\n var max = this.position + len;\r\n var data = new DataView(this.arraybytes);\r\n // utf8-encode\r\n while (this.position < max) {\r\n var c = data.getUint8(this.position++);\r\n if (c < 0x80) {\r\n if (c == 0)\r\n break;\r\n value += String.fromCharCode(c);\r\n }\r\n else if (c < 0xE0) {\r\n value += String.fromCharCode(((c & 0x3F) << 6) | (data.getUint8(this.position++) & 0x7F));\r\n }\r\n else if (c < 0xF0) {\r\n var c2 = data.getUint8(this.position++);\r\n value += String.fromCharCode(((c & 0x1F) << 12) | ((c2 & 0x7F) << 6) | (data.getUint8(this.position++) & 0x7F));\r\n }\r\n else {\r\n var c2 = data.getUint8(this.position++);\r\n var c3 = data.getUint8(this.position++);\r\n value += String.fromCharCode(((c & 0x0F) << 18) | ((c2 & 0x7F) << 12) | ((c3 << 6) & 0x7F) | (data.getUint8(this.position++) & 0x7F));\r\n }\r\n }\r\n return value;\r\n };\r\n ByteArray.prototype.writeUTFBytes = function (s) {\r\n var escstr = encodeURIComponent(s);\r\n var binstr = escstr.replace(/%([0-9A-F]{2})/g, function (match, p1) {\r\n return String.fromCharCode(parseInt('0x' + p1));\r\n });\r\n this.ensureWriteableSpace(4 + binstr.length);\r\n this.writeInt(binstr.length);\r\n for (var i = 0; i < binstr.length; i++) {\r\n this.writeUnsignedByte(binstr.charCodeAt(i)); //todo: there are probably faster ways to do this\r\n }\r\n if (binstr.length % 4) {\r\n var paddingbytes = binstr.length % 4;\r\n for (var i = 0; i < paddingbytes; i++) {\r\n this.writeUnsignedByte(0);\r\n }\r\n }\r\n return binstr.length;\r\n };\r\n ByteArray.prototype.readInt = function () {\r\n var data = new DataView(this.arraybytes);\r\n var int = data.getInt32(this.position, true);\r\n this.position += 4;\r\n return int;\r\n };\r\n ByteArray.prototype.readShort = function () {\r\n var data = new DataView(this.arraybytes);\r\n var short = data.getInt16(this.position, true);\r\n this.position += 2;\r\n return short;\r\n };\r\n ByteArray.prototype.readDouble = function () {\r\n var data = new DataView(this.arraybytes);\r\n var double = data.getFloat64(this.position, true);\r\n this.position += 8;\r\n return double;\r\n };\r\n ByteArray.prototype.readUnsignedShort = function () {\r\n if (this.position > this.length + 2)\r\n throw \"ByteArray out of bounds read. Position=\" + this.position + \", Length=\" + this.length;\r\n if ((this.position & 1) == 0) {\r\n var view = new Uint16Array(this.arraybytes);\r\n var pa = this.position >> 1;\r\n this.position += 2;\r\n return view[pa];\r\n }\r\n else {\r\n var view = new Uint16Array(this.unalignedarraybytestemp, 0, 1);\r\n var view2 = new Uint8Array(this.arraybytes, this.position, 2);\r\n var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 2);\r\n view3.set(view2);\r\n this.position += 2;\r\n return view[0];\r\n }\r\n };\r\n ByteArray.prototype.writeUnsignedInt = function (b) {\r\n this.ensureWriteableSpace(4);\r\n if ((this.position & 3) == 0) {\r\n var view = new Uint32Array(this.arraybytes);\r\n view[this.position >> 2] = (~~b) & 0xffffffff; // ~~ is cast to int in js...\r\n }\r\n else {\r\n var view = new Uint32Array(this.unalignedarraybytestemp, 0, 1);\r\n view[0] = (~~b) & 0xffffffff;\r\n var view2 = new Uint8Array(this.arraybytes, this.position, 4);\r\n var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 4);\r\n view2.set(view3);\r\n }\r\n this.position += 4;\r\n if (this.position > this.length)\r\n this.length = this.position;\r\n };\r\n ByteArray.prototype.writeInt = function (b) {\r\n this.ensureWriteableSpace(4);\r\n if ((this.position & 3) == 0) {\r\n var view = new Int32Array(this.arraybytes);\r\n view[this.position >> 2] = (~~b); // ~~ is cast to int in js...\r\n }\r\n else {\r\n var view = new Int32Array(this.unalignedarraybytestemp, 0, 1);\r\n view[0] = (~~b);\r\n var view2 = new Uint8Array(this.arraybytes, this.position, 4);\r\n var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 4);\r\n view2.set(view3);\r\n }\r\n this.position += 4;\r\n if (this.position > this.length)\r\n this.length = this.position;\r\n };\r\n ByteArray.prototype.readUnsignedInt = function () {\r\n if (this.position > this.length + 4)\r\n throw \"ByteArray out of bounds read. Position=\" + this.position + \", Length=\" + this.length;\r\n if ((this.position & 3) == 0) {\r\n var view = new Uint32Array(this.arraybytes);\r\n var pa = this.position >> 2;\r\n this.position += 4;\r\n return view[pa];\r\n }\r\n else {\r\n var view = new Uint32Array(this.unalignedarraybytestemp, 0, 1);\r\n var view2 = new Uint8Array(this.arraybytes, this.position, 4);\r\n var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 4);\r\n view3.set(view2);\r\n this.position += 4;\r\n return view[0];\r\n }\r\n };\r\n ByteArray.prototype.writeFloat = function (b) {\r\n this.ensureWriteableSpace(4);\r\n if ((this.position & 3) == 0) {\r\n var view = new Float32Array(this.arraybytes);\r\n view[this.position >> 2] = b;\r\n }\r\n else {\r\n var view = new Float32Array(this.unalignedarraybytestemp, 0, 1);\r\n view[0] = b;\r\n var view2 = new Uint8Array(this.arraybytes, this.position, 4);\r\n var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 4);\r\n view2.set(view3);\r\n }\r\n this.position += 4;\r\n if (this.position > this.length)\r\n this.length = this.position;\r\n };\r\n ByteArray.prototype.readFloat = function () {\r\n if (this.position > this.length + 4)\r\n throw \"ByteArray out of bounds read. Positon=\" + this.position + \", Length=\" + this.length;\r\n if ((this.position & 3) == 0) {\r\n var view = new Float32Array(this.arraybytes);\r\n var pa = this.position >> 2;\r\n this.position += 4;\r\n return view[pa];\r\n }\r\n else {\r\n var view = new Float32Array(this.unalignedarraybytestemp, 0, 1);\r\n var view2 = new Uint8Array(this.arraybytes, this.position, 4);\r\n var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 4);\r\n view3.set(view2);\r\n this.position += 4;\r\n return view[0];\r\n }\r\n };\r\n return ByteArray;\r\n}(ByteArrayBase));\r\nexport { ByteArray };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/ByteArray.js","import { ByteArray } from \"../utils/ByteArray\";\r\nvar ParserUtils = (function () {\r\n function ParserUtils() {\r\n }\r\n ParserUtils.arrayBufferToBase64 = function (data, mimeType) {\r\n var byteStr = '';\r\n var bytes = new Uint8Array(data);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++)\r\n byteStr += String.fromCharCode(bytes[i]);\r\n var base64Image = window.btoa(byteStr);\r\n return 'data:' + mimeType + ';base64,' + base64Image;\r\n };\r\n ParserUtils.arrayBufferToAudio = function (data, fileType) {\r\n var str = ParserUtils.arrayBufferToBase64(data, 'audio/' + fileType);\r\n var audio = new Audio();\r\n audio.src = str;\r\n return audio;\r\n };\r\n /**\r\n * Converts an ArrayBuffer to a base64 string\r\n *\r\n * @param image data as a ByteArray\r\n *\r\n * @return HTMLImageElement\r\n *\r\n */\r\n ParserUtils.arrayBufferToImage = function (data) {\r\n var str = ParserUtils.arrayBufferToBase64(data, 'image/png');\r\n var img = new Image();\r\n img.src = str;\r\n return img;\r\n };\r\n /**\r\n * Converts an ByteArray to an Image - returns an HTMLImageElement\r\n *\r\n * @param image data as a ByteArray\r\n *\r\n * @return HTMLImageElement\r\n *\r\n */\r\n ParserUtils.byteArrayToImage = function (data) {\r\n var str = ParserUtils.arrayBufferToBase64(data.arraybytes, 'image/png');\r\n var img = new Image();\r\n img.src = str;\r\n return img;\r\n };\r\n ParserUtils.byteArrayToAudio = function (data, filetype) {\r\n var str = ParserUtils.arrayBufferToBase64(data.arraybytes, 'audio/' + filetype);\r\n var audio = new Audio();\r\n audio.src = str;\r\n return audio;\r\n };\r\n /**\r\n * Converts an Blob to an Image - returns an HTMLImageElement\r\n *\r\n * @param image data as a Blob\r\n *\r\n * @return HTMLImageElement\r\n *\r\n */\r\n ParserUtils.blobToImage = function (data) {\r\n var URLObj = window['URL'] || window['webkitURL'];\r\n var src = URLObj.createObjectURL(data);\r\n var img = new Image();\r\n img.src = src;\r\n return img;\r\n };\r\n /**\r\n * Converts an Blob to audio - returns an HTMLAudioElement\r\n *\r\n * @param audio data as a Blob\r\n *\r\n * @return HTMLAudioElement\r\n *\r\n */\r\n ParserUtils.blobToAudio = function (data) {\r\n var URLObj = window['URL'] || window['webkitURL'];\r\n var src = URLObj.createObjectURL(data);\r\n var img = new Audio();\r\n img.src = src;\r\n return img;\r\n };\r\n /**\r\n * Returns a object as ByteArray, if possible.\r\n *\r\n * @param data The object to return as ByteArray\r\n *\r\n * @return The ByteArray or null\r\n *\r\n */\r\n ParserUtils.toByteArray = function (data) {\r\n var b = new ByteArray();\r\n b.setArrayBuffer(data);\r\n return b;\r\n };\r\n /**\r\n * Returns a object as String, if possible.\r\n *\r\n * @param data The object to return as String\r\n * @param length The length of the returned String\r\n *\r\n * @return The String or null\r\n *\r\n */\r\n ParserUtils.toString = function (data, length) {\r\n if (length === void 0) { length = 0; }\r\n if (typeof data === 'string') {\r\n var s = data;\r\n if (s['substr'] != null)\r\n return s.substr(0, s.length);\r\n }\r\n if (data instanceof ByteArray) {\r\n var ba = data;\r\n ba.position = 0;\r\n return ba.readUTFBytes(Math.min(ba.getBytesAvailable(), length));\r\n }\r\n return null;\r\n /*\r\n var ba:ByteArray;\r\n\r\n length ||= uint.MAX_VALUE;\r\n\r\n if (data is String)\r\n return String(data).substr(0, length);\r\n\r\n ba = toByteArray(data);\r\n if (ba) {\r\n ba.position = 0;\r\n return ba.readUTFBytes(Math.min(ba.bytesAvailable, length));\r\n }\r\n\r\n return null;\r\n\r\n */\r\n };\r\n return ParserUtils;\r\n}());\r\nexport { ParserUtils };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/parsers/ParserUtils.js","import { ParserUtils } from \"../parsers/ParserUtils\";\r\nvar EventAudioChannel = (function () {\r\n function EventAudioChannel() {\r\n var _this = this;\r\n this._isPlaying = false;\r\n this._isLooping = false;\r\n this._startTime = 0;\r\n this._audio = new Audio();\r\n this._audio.ontimeupdate = function (event) { return _this._onTimeUpdate(event); };\r\n }\r\n EventAudioChannel.stopAllSounds = function () {\r\n var channel;\r\n var len = EventAudioChannel._channels.length;\r\n for (var j = 0; j < len; j++) {\r\n channel = EventAudioChannel._channels[j];\r\n channel.stop();\r\n }\r\n EventAudioChannel._channels.length = 0;\r\n };\r\n Object.defineProperty(EventAudioChannel.prototype, \"duration\", {\r\n get: function () {\r\n return this._duration;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(EventAudioChannel.prototype, \"currentTime\", {\r\n get: function () {\r\n return this._audio.currentTime - this._startTime;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(EventAudioChannel.prototype, \"pan\", {\r\n get: function () {\r\n //todo\r\n return 0;\r\n },\r\n set: function (value) {\r\n //todo\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(EventAudioChannel.prototype, \"volume\", {\r\n get: function () {\r\n return this._volume;\r\n },\r\n set: function (value) {\r\n if (this._volume == value)\r\n return;\r\n this._volume = value;\r\n this._audio.volume = this._volume;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EventAudioChannel.prototype.isPlaying = function () {\r\n return this._isPlaying;\r\n };\r\n EventAudioChannel.prototype.isLooping = function () {\r\n return this._isLooping;\r\n };\r\n EventAudioChannel.prototype.isDecoding = function () {\r\n return false;\r\n };\r\n EventAudioChannel.prototype.play = function (buffer, offset, loop, id) {\r\n if (offset === void 0) { offset = 0; }\r\n if (loop === void 0) { loop = false; }\r\n if (id === void 0) { id = 0; }\r\n this._isPlaying = true;\r\n this._isLooping = loop;\r\n this._audio.src = EventAudioChannel._base64Cache[id] || (EventAudioChannel._base64Cache[id] = ParserUtils.arrayBufferToBase64(buffer, \"audio/mp3\"));\r\n this._audio.loop = this._isLooping;\r\n var thisAudio = this._audio;\r\n this._audio.addEventListener('loadedmetadata', function () {\r\n thisAudio.currentTime = offset;\r\n thisAudio.play();\r\n }, false);\r\n };\r\n EventAudioChannel.prototype.stop = function () {\r\n this._audio.pause();\r\n this._isPlaying = false;\r\n this._isLooping = false;\r\n };\r\n EventAudioChannel.prototype._onTimeUpdate = function (event) {\r\n //TODO: more accurate end detection\r\n if (!this._isLooping && this._duration < this._audio.currentTime - this._startTime + 0.1)\r\n this.stop();\r\n };\r\n return EventAudioChannel;\r\n}());\r\nexport { EventAudioChannel };\r\nEventAudioChannel.maxChannels = 4;\r\nEventAudioChannel._channels = new Array();\r\nEventAudioChannel._base64Cache = new Object();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/EventAudioChannel.js","import { StreamingAudioChannel } from \"../managers/StreamingAudioChannel\";\r\nimport { WebAudioChannel } from \"../managers/WebAudioChannel\";\r\nimport { EventAudioChannel } from \"../managers/EventAudioChannel\";\r\nvar AudioManager = (function () {\r\n function AudioManager() {\r\n }\r\n AudioManager.setExternalSoundInterface = function (new_obj) {\r\n if (new_obj.startSound == null) {\r\n console.log(\"Could not set the externalSoundInterface, because it does not provide a 'startSound' function\");\r\n return;\r\n }\r\n if (new_obj.stopSound == null) {\r\n console.log(\"Could not set the externalSoundInterface, because it does not provide a 'stopSound' function\");\r\n return;\r\n }\r\n AudioManager._externalSoundInterface = new_obj;\r\n };\r\n AudioManager.getExternalSoundInterface = function () {\r\n return AudioManager._externalSoundInterface;\r\n };\r\n AudioManager.stopAllSounds = function () {\r\n WebAudioChannel.stopAllSounds();\r\n StreamingAudioChannel.stopAllSounds();\r\n //EventAudioChannel.stopAllSounds();\r\n //AudioChannel.stopAllSounds();\r\n };\r\n AudioManager.getChannel = function (byteLength) {\r\n //choose best audio channel by bytelength\r\n //todo: StreamingAudioChannel doesnt seem to be working. no error, but also no sound is playing\r\n var channelClass = (byteLength > 50000000) ? StreamingAudioChannel : WebAudioChannel;\r\n if (AudioManager.isIE) {\r\n channelClass = EventAudioChannel;\r\n }\r\n //var channelClass:IAudioChannelClass = WebAudioChannel;\r\n var i = 0;\r\n while (channelClass._channels[i] && channelClass._channels[i].isPlaying())\r\n i++;\r\n if (i == channelClass.maxChannels) {\r\n //pick the oldest channel to reuse, ignoring looping channels\r\n var channel;\r\n var len = channelClass._channels.length;\r\n for (var j = 0; j < len; j++) {\r\n channel = channelClass._channels[j];\r\n if (!channel.isLooping() && !channel.isDecoding()) {\r\n channelClass._channels.push(channelClass._channels.splice(j, 1)[0]);\r\n channel.stop();\r\n return channel;\r\n }\r\n }\r\n //do not return channel until one is freed up\r\n return null;\r\n }\r\n return channelClass._channels[i] || (channelClass._channels[i] = new channelClass());\r\n };\r\n return AudioManager;\r\n}());\r\nexport { AudioManager };\r\nAudioManager.isIE = !!navigator.userAgent.match(/Trident/g) || !!navigator.userAgent.match(/MSIE/g);\r\n//todo: make AudioPlaybackManager keep track of active sounds + implement global playback control\r\nAudioManager._externalSoundInterface = null;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/AudioManager.js","import * as tslib_1 from \"tslib\";\r\nimport { AudioManager } from \"../managers/AudioManager\";\r\nimport { AssetBase } from \"../library/AssetBase\";\r\n// TODO: Audio should probably be an interface containing play/stop/seek functionality\r\nvar WaveAudio = (function (_super) {\r\n tslib_1.__extends(WaveAudio, _super);\r\n /**\r\n *\r\n */\r\n function WaveAudio(buffer) {\r\n var _this = _super.call(this) || this;\r\n _this._volume = 1;\r\n _this._pan = 0;\r\n _this._audioChannels = [];\r\n _this._buffer = buffer;\r\n return _this;\r\n }\r\n Object.defineProperty(WaveAudio.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return WaveAudio.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WaveAudio.prototype, \"pan\", {\r\n get: function () {\r\n return this._pan;\r\n },\r\n set: function (value) {\r\n if (this._pan == value)\r\n return;\r\n this._pan = value;\r\n if (this._audioChannel)\r\n this._audioChannel.pan = this._pan;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WaveAudio.prototype, \"volume\", {\r\n get: function () {\r\n return this._volume;\r\n },\r\n set: function (value) {\r\n if (this._volume == value)\r\n return;\r\n this._volume = value;\r\n if (this._audioChannel)\r\n this._audioChannel.volume = this._volume;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WaveAudio.prototype, \"currentTime\", {\r\n get: function () {\r\n if (this._audioChannel)\r\n return this._audioChannel.currentTime;\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WaveAudio.prototype, \"duration\", {\r\n get: function () {\r\n if (this._audioChannel)\r\n return this._audioChannel.duration;\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n WaveAudio.prototype.dispose = function () {\r\n this.stop();\r\n };\r\n WaveAudio.prototype.play = function (offset, loop) {\r\n if (loop === void 0) { loop = false; }\r\n this._audioChannel = AudioManager.getChannel(this._buffer.byteLength);\r\n if (this._audioChannel) {\r\n this._audioChannels.push(this._audioChannel);\r\n this._audioChannel.volume = this._volume;\r\n this._audioChannel.play(this._buffer, offset, loop, this.id);\r\n if (this._onSoundComplete) {\r\n this._audioChannel.onSoundComplete = this._onSoundComplete;\r\n }\r\n }\r\n };\r\n Object.defineProperty(WaveAudio.prototype, \"onSoundComplete\", {\r\n set: function (value) {\r\n this._onSoundComplete = value;\r\n if (this._audioChannel) {\r\n this._audioChannel.onSoundComplete = this._onSoundComplete;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n WaveAudio.prototype.stop = function () {\r\n for (var _i = 0, _a = this._audioChannels; _i < _a.length; _i++) {\r\n var channel = _a[_i];\r\n channel.stop();\r\n }\r\n this._audioChannels.length = 0;\r\n delete this._audioChannel;\r\n this._audioChannel = null;\r\n };\r\n WaveAudio.prototype.clone = function () {\r\n var newInstance = new WaveAudio(this._buffer);\r\n newInstance.name = this.name;\r\n return newInstance;\r\n };\r\n return WaveAudio;\r\n}(AssetBase));\r\nexport { WaveAudio };\r\nWaveAudio.assetType = \"[asset WaveAudio]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/audio/WaveAudio.js","/**\r\n *\r\n */\r\nvar ColorUtils = (function () {\r\n function ColorUtils() {\r\n }\r\n ColorUtils.float32ColorToARGB = function (float32Color) {\r\n var a = (float32Color & 0xff000000) >>> 24;\r\n var r = (float32Color & 0xff0000) >>> 16;\r\n var g = (float32Color & 0xff00) >>> 8;\r\n var b = float32Color & 0xff;\r\n var result = [a, r, g, b];\r\n return result;\r\n };\r\n ColorUtils.ARGBtoFloat32 = function (a, r, g, b) {\r\n return ((a << 24) | (r << 16) | (g << 8) | b);\r\n };\r\n ColorUtils.componentToHex = function (c) {\r\n var hex = c.toString(16);\r\n return hex.length == 1 ? \"0\" + hex : hex;\r\n };\r\n ColorUtils.RGBToHexString = function (argb) {\r\n return \"#\" + ColorUtils.componentToHex(argb[1]) + ColorUtils.componentToHex(argb[2]) + ColorUtils.componentToHex(argb[3]);\r\n };\r\n ColorUtils.ARGBToHexString = function (argb) {\r\n return \"#\" + ColorUtils.componentToHex(argb[0]) + ColorUtils.componentToHex(argb[1]) + ColorUtils.componentToHex(argb[2]) + ColorUtils.componentToHex(argb[3]);\r\n };\r\n return ColorUtils;\r\n}());\r\nexport { ColorUtils };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/ColorUtils.js","import { ColorUtils } from \"../utils/ColorUtils\";\r\n/**\r\n * The ColorTransform export class lets you adjust the color values in a display\r\n * object. The color adjustment or color transformation can be applied\r\n * to all four channels: red, green, blue, and alpha transparency.\r\n *\r\n *

When a ColorTransform object is applied to a display object, a new value\r\n * for each color channel is calculated like this:

\r\n *\r\n * \r\n *\r\n *

If any of the color channel values is greater than 255 after the\r\n * calculation, it is set to 255. If it is less than 0, it is set to 0.

\r\n *\r\n *

You can use ColorTransform objects in the following ways:

\r\n *\r\n * \r\n *\r\n *

You must use the new ColorTransform() constructor to create\r\n * a ColorTransform object before you can call the methods of the\r\n * ColorTransform object.

\r\n *\r\n *

Color transformations do not apply to the background color of a movie\r\n * clip(such as a loaded SWF object). They apply only to graphics and symbols\r\n * that are attached to the movie clip.

\r\n */\r\nvar ColorTransform = (function () {\r\n function ColorTransform(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, alphaOffset) {\r\n if (redMultiplier === void 0) { redMultiplier = 1; }\r\n if (greenMultiplier === void 0) { greenMultiplier = 1; }\r\n if (blueMultiplier === void 0) { blueMultiplier = 1; }\r\n if (alphaMultiplier === void 0) { alphaMultiplier = 1; }\r\n if (redOffset === void 0) { redOffset = 0; }\r\n if (greenOffset === void 0) { greenOffset = 0; }\r\n if (blueOffset === void 0) { blueOffset = 0; }\r\n if (alphaOffset === void 0) { alphaOffset = 0; }\r\n if (redMultiplier instanceof Float32Array) {\r\n this._rawData = redMultiplier;\r\n }\r\n else {\r\n this._rawData = new Float32Array(8);\r\n this.redMultiplier = Number(redMultiplier);\r\n this.greenMultiplier = greenMultiplier;\r\n this.blueMultiplier = blueMultiplier;\r\n this.alphaMultiplier = alphaMultiplier;\r\n this.redOffset = redOffset;\r\n this.greenOffset = greenOffset;\r\n this.blueOffset = blueOffset;\r\n this.alphaOffset = alphaOffset;\r\n }\r\n }\r\n Object.defineProperty(ColorTransform.prototype, \"alphaMultiplier\", {\r\n /**\r\n * A decimal value that is multiplied with the alpha transparency channel\r\n * value.\r\n *\r\n *

If you set the alpha transparency value of a display object directly by\r\n * using the alpha property of the DisplayObject instance, it\r\n * affects the value of the alphaMultiplier property of that\r\n * display object's transform.colorTransform property.

\r\n */\r\n get: function () {\r\n return this._rawData[3];\r\n },\r\n set: function (value) {\r\n this._rawData[3] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorTransform.prototype, \"alphaOffset\", {\r\n /**\r\n * A number from -255 to 255 that is added to the alpha transparency channel\r\n * value after it has been multiplied by the alphaMultiplier\r\n * value.\r\n */\r\n get: function () {\r\n return this._rawData[7];\r\n },\r\n set: function (value) {\r\n this._rawData[7] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorTransform.prototype, \"blueMultiplier\", {\r\n /**\r\n * A decimal value that is multiplied with the blue channel value.\r\n */\r\n get: function () {\r\n return this._rawData[2];\r\n },\r\n set: function (value) {\r\n this._rawData[2] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorTransform.prototype, \"blueOffset\", {\r\n /**\r\n * A number from -255 to 255 that is added to the blue channel value after it\r\n * has been multiplied by the blueMultiplier value.\r\n */\r\n get: function () {\r\n return this._rawData[6];\r\n },\r\n set: function (value) {\r\n this._rawData[6] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorTransform.prototype, \"greenMultiplier\", {\r\n /**\r\n * A decimal value that is multiplied with the green channel value.\r\n */\r\n get: function () {\r\n return this._rawData[1];\r\n },\r\n set: function (value) {\r\n this._rawData[1] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorTransform.prototype, \"greenOffset\", {\r\n /**\r\n * A number from -255 to 255 that is added to the green channel value after\r\n * it has been multiplied by the greenMultiplier value.\r\n */\r\n get: function () {\r\n return this._rawData[5];\r\n },\r\n set: function (value) {\r\n this._rawData[5] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorTransform.prototype, \"redMultiplier\", {\r\n /**\r\n * A decimal value that is multiplied with the red channel value.\r\n */\r\n get: function () {\r\n return this._rawData[0];\r\n },\r\n set: function (value) {\r\n this._rawData[0] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorTransform.prototype, \"redOffset\", {\r\n /**\r\n * A number from -255 to 255 that is added to the red channel value after it\r\n * has been multiplied by the redMultiplier value.\r\n */\r\n get: function () {\r\n return this._rawData[4];\r\n },\r\n set: function (value) {\r\n this._rawData[4] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorTransform.prototype, \"color\", {\r\n /**\r\n * The RGB color value for a ColorTransform object.\r\n *\r\n *

When you set this property, it changes the three color offset values\r\n * (redOffset, greenOffset, and\r\n * blueOffset) accordingly, and it sets the three color\r\n * multiplier values(redMultiplier,\r\n * greenMultiplier, and blueMultiplier) to 0. The\r\n * alpha transparency multiplier and offset values do not change.

\r\n *\r\n *

When you pass a value for this property, use the format\r\n * 0xRRGGBB. RR, GG, and BB each consist of two\r\n * hexadecimal digits that specify the offset of each color component. The 0x\r\n * tells the ActionScript compiler that the number is a hexadecimal\r\n * value.

\r\n */\r\n get: function () {\r\n return ((this._rawData[4] << 16) | (this._rawData[5] << 8) | this._rawData[6]);\r\n },\r\n set: function (value) {\r\n var argb = ColorUtils.float32ColorToARGB(value);\r\n this._rawData[4] = argb[1]; //(value >> 16) & 0xFF;\r\n this._rawData[5] = argb[2]; //(value >> 8) & 0xFF;\r\n this._rawData[6] = argb[3]; //value & 0xFF;\r\n this._rawData[0] = 0;\r\n this._rawData[1] = 0;\r\n this._rawData[2] = 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ColorTransform.prototype.copyRawDataFrom = function (sourceData) {\r\n var targetData = this._rawData;\r\n targetData[0] = sourceData[0];\r\n targetData[1] = sourceData[1];\r\n targetData[2] = sourceData[2];\r\n targetData[3] = sourceData[3];\r\n targetData[4] = sourceData[4];\r\n targetData[5] = sourceData[5];\r\n targetData[6] = sourceData[6];\r\n targetData[7] = sourceData[7];\r\n };\r\n ColorTransform.prototype.clear = function () {\r\n this._rawData[0] = 1;\r\n this._rawData[1] = 1;\r\n this._rawData[2] = 1;\r\n this._rawData[3] = 1;\r\n this._rawData[4] = 0;\r\n this._rawData[5] = 0;\r\n this._rawData[6] = 0;\r\n this._rawData[7] = 0;\r\n };\r\n ColorTransform.prototype.clone = function () {\r\n var colorTransform = new ColorTransform();\r\n colorTransform.copyFrom(this);\r\n return colorTransform;\r\n };\r\n ColorTransform.prototype.copyFrom = function (source) {\r\n var sourceData = source._rawData, targetData = this._rawData;\r\n targetData[0] = sourceData[0];\r\n targetData[1] = sourceData[1];\r\n targetData[2] = sourceData[2];\r\n targetData[3] = sourceData[3];\r\n targetData[4] = sourceData[4];\r\n targetData[5] = sourceData[5];\r\n targetData[6] = sourceData[6];\r\n targetData[7] = sourceData[7];\r\n };\r\n ColorTransform.prototype.copyTo = function (target) {\r\n target.copyFrom(this);\r\n };\r\n ColorTransform.prototype.prepend = function (ct) {\r\n this._rawData[4] += ct._rawData[4] * this._rawData[0];\r\n this._rawData[5] += ct._rawData[5] * this._rawData[1];\r\n this._rawData[6] += ct._rawData[6] * this._rawData[2];\r\n this._rawData[7] += ct._rawData[7] * this._rawData[3];\r\n this.redMultiplier *= ct.redMultiplier;\r\n this.greenMultiplier *= ct.greenMultiplier;\r\n this.blueMultiplier *= ct.blueMultiplier;\r\n this.alphaMultiplier *= ct.alphaMultiplier;\r\n };\r\n ColorTransform.prototype._isRenderable = function () {\r\n return this._rawData[3] != 0 || this._rawData[7] > 0;\r\n };\r\n return ColorTransform;\r\n}());\r\nexport { ColorTransform };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ColorTransform.js","/**\r\n * The Vector3D export class represents a point or a location in the three-dimensional\r\n * space using the Cartesian coordinates x, y, and z. As in a two-dimensional\r\n * space, the x property represents the horizontal axis and the y property\r\n * represents the vertical axis. In three-dimensional space, the z property\r\n * represents depth. The value of the x property increases as the object moves\r\n * to the right. The value of the y property increases as the object moves\r\n * down. The z property increases as the object moves farther from the point\r\n * of view. Using perspective projection and scaling, the object is seen to be\r\n * bigger when near and smaller when farther away from the screen. As in a\r\n * right-handed three-dimensional coordinate system, the positive z-axis points\r\n * away from the viewer and the value of the z property increases as the object\r\n * moves away from the viewer's eye. The origin point (0,0,0) of the global\r\n * space is the upper-left corner of the stage.\r\n *\r\n *

The Vector3D export class can also represent a direction, an arrow pointing from\r\n * the origin of the coordinates, such as (0,0,0), to an endpoint; or a\r\n * floating-point component of an RGB (Red, Green, Blue) color model.

\r\n *\r\n *

Quaternion notation introduces a fourth element, the w property, which\r\n * provides additional orientation information. For example, the w property can\r\n * define an angle of rotation of a Vector3D object. The combination of the\r\n * angle of rotation and the coordinates x, y, and z can determine the display\r\n * object's orientation. Here is a representation of Vector3D elements in\r\n * matrix notation:

\r\n */\r\nvar Vector3D = (function () {\r\n /**\r\n * Creates an instance of a Vector3D object. If you do not specify a\r\n * parameter for the constructor, a Vector3D object is created with\r\n * the elements (0,0,0,0).\r\n *\r\n * @param x The first element, such as the x coordinate.\r\n * @param y The second element, such as the y coordinate.\r\n * @param z The third element, such as the z coordinate.\r\n * @param w An optional element for additional data such as the angle\r\n * of rotation.\r\n */\r\n function Vector3D(x, y, z, w) {\r\n if (x === void 0) { x = 0; }\r\n if (y === void 0) { y = 0; }\r\n if (z === void 0) { z = 0; }\r\n if (w === void 0) { w = 1; }\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n this.w = w;\r\n }\r\n Object.defineProperty(Vector3D.prototype, \"length\", {\r\n /**\r\n * The length, magnitude, of the current Vector3D object from the\r\n * origin (0,0,0) to the object's x, y, and z coordinates. The w\r\n * property is ignored. A unit vector has a length or magnitude of\r\n * one.\r\n */\r\n get: function () {\r\n return Math.sqrt(this.lengthSquared);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Vector3D.prototype, \"lengthSquared\", {\r\n /**\r\n * The square of the length of the current Vector3D object, calculated\r\n * using the x, y, and z properties. The w property is ignored. Use the\r\n * lengthSquared() method whenever possible instead of the\r\n * slower Math.sqrt() method call of the\r\n * Vector3D.length() method.\r\n */\r\n get: function () {\r\n return this.x * this.x + this.y * this.y + this.z * this.z;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds the value of the x, y, and z elements of the current Vector3D\r\n * object to the values of the x, y, and z elements of another Vector3D\r\n * object. The add() method does not change the current\r\n * Vector3D object. Instead, it returns a new Vector3D object with\r\n * the new values.\r\n *\r\n *

The result of adding two vectors together is a resultant vector.\r\n * One way to visualize the result is by drawing a vector from the\r\n * origin or tail of the first vector to the end or head of the second\r\n * vector. The resultant vector is the distance between the origin\r\n * point of the first vector and the end point of the second vector.\r\n *

\r\n */\r\n Vector3D.prototype.add = function (a) {\r\n return new Vector3D(this.x + a.x, this.y + a.y, this.z + a.z);\r\n };\r\n /**\r\n * Returns the angle in radians between two vectors. The returned angle\r\n * is the smallest radian the first Vector3D object rotates until it\r\n * aligns with the second Vector3D object.\r\n *\r\n *

The angleBetween() method is a static method. You\r\n * can use it directly as a method of the Vector3D class.

\r\n *\r\n *

To convert a degree to a radian, you can use the following\r\n * formula:

\r\n *\r\n *

radian = Math.PI/180 * degree

\r\n *\r\n * @param a The first Vector3D object.\r\n * @param b The second Vector3D object.\r\n * @returns The angle between two Vector3D objects.\r\n */\r\n Vector3D.angleBetween = function (a, b) {\r\n return Math.acos(a.dotProduct(b) / (a.length * b.length));\r\n };\r\n /**\r\n * Returns a new Vector3D object that is an exact copy of the current\r\n * Vector3D object.\r\n *\r\n * @returns A new Vector3D object that is a copy of the current\r\n * Vector3D object.\r\n */\r\n Vector3D.prototype.clone = function () {\r\n return new Vector3D(this.x, this.y, this.z, this.w);\r\n };\r\n Vector3D.combine = function (a, b, ascl, bscl) {\r\n return new Vector3D(a.x * ascl + b.x * bscl, a.y * ascl + b.y * bscl, a.z * ascl + b.z * bscl);\r\n };\r\n /**\r\n * Copies all of vector data from the source Vector3D object into the\r\n * calling Vector3D object.\r\n *\r\n * @param src The Vector3D object from which to copy the data.\r\n */\r\n Vector3D.prototype.copyFrom = function (src) {\r\n this.x = src.x;\r\n this.y = src.y;\r\n this.z = src.z;\r\n this.w = src.w;\r\n };\r\n /**\r\n * Returns a new Vector3D object that is perpendicular (at a right\r\n * angle) to the current Vector3D and another Vector3D object. If the\r\n * returned Vector3D object's coordinates are (0,0,0), then the two\r\n * Vector3D objects are parallel to each other.\r\n *\r\n *

You can use the normalized cross product of two vertices of a\r\n * polygon surface with the normalized vector of the camera or eye\r\n * viewpoint to get a dot product. The value of the dot product can\r\n * identify whether a surface of a three-dimensional object is hidden\r\n * from the viewpoint.

\r\n *\r\n * @param a A second Vector3D object.\r\n * @returns A new Vector3D object that is perpendicular to the current\r\n * Vector3D object and the Vector3D object specified as the\r\n * parameter.\r\n */\r\n Vector3D.prototype.crossProduct = function (a, t) {\r\n if (t === void 0) { t = null; }\r\n if (t == null)\r\n t = new Vector3D();\r\n t.x = this.y * a.z - this.z * a.y;\r\n t.y = this.z * a.x - this.x * a.z;\r\n t.z = this.x * a.y - this.y * a.x;\r\n return t;\r\n };\r\n /**\r\n * Decrements the value of the x, y, and z elements of the current\r\n * Vector3D object by the values of the x, y, and z elements of\r\n * specified Vector3D object. Unlike the\r\n * Vector3D.subtract() method, the\r\n * decrementBy() method changes the current Vector3D\r\n * object and does not return a new Vector3D object.\r\n *\r\n * @param a The Vector3D object containing the values to subtract from\r\n * the current Vector3D object.\r\n */\r\n Vector3D.prototype.decrementBy = function (a) {\r\n this.x -= a.x;\r\n this.y -= a.y;\r\n this.z -= a.z;\r\n };\r\n /**\r\n * Returns the distance between two Vector3D objects. The\r\n * distance() method is a static method. You can use it\r\n * directly as a method of the Vector3D export class to get the Euclidean\r\n * distance between two three-dimensional points.\r\n *\r\n * @param pt1 A Vector3D object as the first three-dimensional point.\r\n * @param pt2 A Vector3D object as the second three-dimensional point.\r\n * @returns The distance between two Vector3D objects.\r\n */\r\n Vector3D.distance = function (pt1, pt2) {\r\n var x = (pt1.x - pt2.x);\r\n var y = (pt1.y - pt2.y);\r\n var z = (pt1.z - pt2.z);\r\n return Math.sqrt(x * x + y * y + z * z);\r\n };\r\n /**\r\n * If the current Vector3D object and the one specified as the\r\n * parameter are unit vertices, this method returns the cosine of the\r\n * angle between the two vertices. Unit vertices are vertices that\r\n * point to the same direction but their length is one. They remove the\r\n * length of the vector as a factor in the result. You can use the\r\n * normalize() method to convert a vector to a unit\r\n * vector.\r\n *\r\n *

The dotProduct() method finds the angle between two\r\n * vertices. It is also used in backface culling or lighting\r\n * calculations. Backface culling is a procedure for determining which\r\n * surfaces are hidden from the viewpoint. You can use the normalized\r\n * vertices from the camera, or eye, viewpoint and the cross product of\r\n * the vertices of a polygon surface to get the dot product. If the dot\r\n * product is less than zero, then the surface is facing the camera or\r\n * the viewer. If the two unit vertices are perpendicular to each\r\n * other, they are orthogonal and the dot product is zero. If the two\r\n * vertices are parallel to each other, the dot product is one.

\r\n *\r\n * @param a The second Vector3D object.\r\n * @returns A scalar which is the dot product of the current Vector3D\r\n * object and the specified Vector3D object.\r\n *\r\n * @see away.geom.Vector3D#crossProduct()\r\n * @see away.geom.Vector3D#normalize()\r\n */\r\n Vector3D.prototype.dotProduct = function (a) {\r\n return this.x * a.x + this.y * a.y + this.z * a.z;\r\n };\r\n /**\r\n * Determines whether two Vector3D objects are equal by comparing the\r\n * x, y, and z elements of the current Vector3D object with a\r\n * specified Vector3D object. If the values of these elements are the\r\n * same, the two Vector3D objects are equal. If the second optional\r\n * parameter is set to true, all four elements of the Vector3D objects,\r\n * including the w property, are compared.\r\n */\r\n /**\r\n *\r\n * @param toCompare The Vector3D object to be compared with the current\r\n * Vector3D object.\r\n * @param allFour An optional parameter that specifies whether the w\r\n * property of the Vector3D objects is used in the\r\n * comparison.\r\n * @returns A value of true if the specified Vector3D object is equal\r\n * to the current Vector3D object; false if it is not equal.\r\n */\r\n Vector3D.prototype.equals = function (toCompare, allFour) {\r\n if (allFour === void 0) { allFour = false; }\r\n return (this.x == toCompare.x && this.y == toCompare.y && this.z == toCompare.z && (!allFour || this.w == toCompare.w));\r\n };\r\n /**\r\n * Increments the value of the x, y, and z elements of the current\r\n * Vector3D object by the values of the x, y, and z elements of a\r\n * specified Vector3D object. Unlike the Vector3D.add()\r\n * method, the incrementBy() method changes the current\r\n * Vector3D object and does not return a new Vector3D object.\r\n *\r\n * @param a The Vector3D object to be added to the current Vector3D\r\n * object.\r\n */\r\n Vector3D.prototype.incrementBy = function (a) {\r\n this.x += a.x;\r\n this.y += a.y;\r\n this.z += a.z;\r\n };\r\n /**\r\n * Compares the elements of the current Vector3D object with the\r\n * elements of a specified Vector3D object to determine whether they\r\n * are nearly equal. The two Vector3D objects are nearly equal if the\r\n * value of all the elements of the two vertices are equal, or the\r\n * result of the comparison is within the tolerance range. The\r\n * difference between two elements must be less than the number\r\n * specified as the tolerance parameter. If the third optional\r\n * parameter is set to true, all four elements of the\r\n * Vector3D objects, including the w property, are\r\n * compared. Otherwise, only the x, y, and z elements are included in\r\n * the comparison.\r\n */\r\n /**\r\n *\r\n * @param toCompare The Vector3D object to be compared with the current\r\n * Vector3D object.\r\n * @param tolerance A number determining the tolerance factor. If the\r\n * difference between the values of the Vector3D\r\n * element specified in the toCompare parameter and\r\n * the current Vector3D element is less than the\r\n * tolerance number, the two values are considered\r\n * nearly equal.\r\n * @param allFour An optional parameter that specifies whether the w\r\n * property of the Vector3D objects is used in the\r\n * comparison.\r\n * @returns A value of true if the specified Vector3D object is nearly\r\n * equal to the current Vector3D object; false if it is not\r\n * equal.\r\n *\r\n * @see away.geom.Vector3D#equals()\r\n */\r\n Vector3D.prototype.nearEquals = function (toCompare, tolerance, allFour) {\r\n if (allFour === void 0) { allFour = true; }\r\n return ((Math.abs(this.x - toCompare.x) < tolerance) && (Math.abs(this.y - toCompare.y) < tolerance) && (Math.abs(this.z - toCompare.z) < tolerance) && (!allFour || Math.abs(this.w - toCompare.w) < tolerance));\r\n };\r\n /**\r\n * Sets the current Vector3D object to its inverse. The inverse object\r\n * is also considered the opposite of the original object. The value of\r\n * the x, y, and z properties of the current Vector3D object is changed\r\n * to -x, -y, and -z.\r\n */\r\n Vector3D.prototype.negate = function () {\r\n this.x = -this.x;\r\n this.y = -this.y;\r\n this.z = -this.z;\r\n };\r\n /**\r\n * Converts a Vector3D object to a unit vector by dividing the first\r\n * three elements (x, y, z) by the length of the vector. Unit vertices\r\n * are vertices that have a direction but their length is one. They\r\n * simplify vector calculations by removing length as a factor.\r\n */\r\n /**\r\n * Scales the line segment between(0,0) and the current point to a set\r\n * length.\r\n *\r\n * @param thickness The scaling value. For example, if the current\r\n * Vector3D object is (0,3,4), and you normalize it to\r\n * 1, the point returned is at(0,0.6,0.8).\r\n */\r\n Vector3D.prototype.normalize = function (thickness) {\r\n if (thickness === void 0) { thickness = 1; }\r\n var len = this.length;\r\n if (len) {\r\n var invLength = thickness / len;\r\n this.x *= invLength;\r\n this.y *= invLength;\r\n this.z *= invLength;\r\n }\r\n };\r\n /**\r\n * Divides the value of the x, y, and\r\n * z properties of the current Vector3D object by the\r\n * value of its w property.\r\n *\r\n *

If the current Vector3D object is the result of multiplying a\r\n * Vector3D object by a projection Matrix3D object, the w property can\r\n * hold the transform value. The project() method then can\r\n * complete the projection by dividing the elements by the\r\n * w property. Use the Matrix3D.rawData\r\n * property to create a projection Matrix3D object.

\r\n */\r\n Vector3D.prototype.project = function () {\r\n this.x /= this.w;\r\n this.y /= this.w;\r\n this.z /= this.w;\r\n };\r\n /**\r\n * Scales the current Vector3D object by a scalar, a magnitude. The\r\n * Vector3D object's x, y, and z elements are multiplied by the scalar\r\n * number specified in the parameter. For example, if the vector is\r\n * scaled by ten, the result is a vector that is ten times longer. The\r\n * scalar can also change the direction of the vector. Multiplying the\r\n * vector by a negative number reverses its direction.\r\n *\r\n * @param s A multiplier (scalar) used to scale a Vector3D object.\r\n\r\n */\r\n Vector3D.prototype.scaleBy = function (s) {\r\n this.x *= s;\r\n this.y *= s;\r\n this.z *= s;\r\n };\r\n /**\r\n * Sets the members of Vector3D to the specified values\r\n *\r\n * @param xa The first element, such as the x coordinate.\r\n * @param ya The second element, such as the y coordinate.\r\n * @param za The third element, such as the z coordinate.\r\n */\r\n Vector3D.prototype.setTo = function (xa, ya, za, wa) {\r\n if (wa === void 0) { wa = 1; }\r\n this.x = xa;\r\n this.y = ya;\r\n this.z = za;\r\n this.w = wa;\r\n };\r\n /**\r\n * Subtracts the value of the x, y, and z elements of the current\r\n * Vector3D object from the values of the x, y, and z elements of\r\n * another Vector3D object. The subtract() method does not\r\n * change the current Vector3D object. Instead, this method returns a\r\n * new Vector3D object with the new values.\r\n *\r\n * @param a The Vector3D object to be subtracted from the current\r\n * Vector3D object.\r\n * @returns A new Vector3D object that is the difference between the\r\n * current Vector3D and the specified Vector3D object.\r\n *\r\n * @see away.geom.Vector3D#decrementBy()\r\n */\r\n Vector3D.prototype.subtract = function (a) {\r\n return new Vector3D(this.x - a.x, this.y - a.y, this.z - a.z);\r\n };\r\n /**\r\n * Returns a string representation of the current Vector3D object. The\r\n * string contains the values of the x, y, and z properties.\r\n */\r\n Vector3D.prototype.toString = function () {\r\n return \"[Vector3D] (x:\" + this.x + \" ,y:\" + this.y + \", z\" + this.z + \", w:\" + this.w + \")\";\r\n };\r\n return Vector3D;\r\n}());\r\nexport { Vector3D };\r\n/**\r\n * The x axis defined as a Vector3D object with coordinates (1,0,0).\r\n */\r\nVector3D.X_AXIS = new Vector3D(1, 0, 0);\r\n/**\r\n * The y axis defined as a Vector3D object with coordinates (0,1,0).\r\n */\r\nVector3D.Y_AXIS = new Vector3D(0, 1, 0);\r\n/**\r\n * The z axis defined as a Vector3D object with coordinates (0,0,1).\r\n */\r\nVector3D.Z_AXIS = new Vector3D(0, 0, 1);\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Vector3D.js","import { Vector3D } from \"../geom/Vector3D\";\r\n/**\r\n * A Box object is an area defined by its position, as indicated by its\r\n * top-left-front corner point(x, y, z) and by its width,\r\n * height and depth.\r\n *\r\n *\r\n *

The x, y, z, width,\r\n * height depth properties of the Box export class are\r\n * independent of each other; changing the value of one property has no effect\r\n * on the others. However, the right, bottom and\r\n * back properties are integrally related to those six\r\n * properties. For example, if you change the value of the right\r\n * property, the value of the width property changes; if you\r\n * change the bottom property, the value of the\r\n * height property changes.

\r\n *\r\n *

The following methods and properties use Box objects:

\r\n *\r\n * \r\n *\r\n *

You can use the new Box() constructor to create a\r\n * Box object.

\r\n *\r\n *

Note: The Box export class does not define a cubic Shape\r\n * display object.\r\n */\r\nvar Box = (function () {\r\n /**\r\n * Creates a new Box object with the top-left-front corner specified by the\r\n * x, y and z parameters and with the\r\n * specified width, height and depth\r\n * parameters. If you call this public without parameters, a box with\r\n * x, y, z, width,\r\n * height and depth properties set to 0 is created.\r\n *\r\n * @param x The x coordinate of the top-left-front corner of the\r\n * box.\r\n * @param y The y coordinate of the top-left-front corner of the\r\n * box.\r\n * @param z The z coordinate of the top-left-front corner of the\r\n * box.\r\n * @param width The width of the box, in pixels.\r\n * @param height The height of the box, in pixels.\r\n * @param depth The depth of the box, in pixels.\r\n */\r\n function Box(x, y, z, width, height, depth) {\r\n if (x === void 0) { x = 0; }\r\n if (y === void 0) { y = 0; }\r\n if (z === void 0) { z = 0; }\r\n if (width === void 0) { width = 0; }\r\n if (height === void 0) { height = 0; }\r\n if (depth === void 0) { depth = 0; }\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n this.width = width;\r\n this.height = height;\r\n this.depth = depth;\r\n }\r\n Object.defineProperty(Box.prototype, \"back\", {\r\n /**\r\n * The sum of the z and height properties.\r\n */\r\n get: function () {\r\n return this.z + this.depth;\r\n },\r\n set: function (val) {\r\n this.depth = val - this.z;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Box.prototype, \"bottom\", {\r\n /**\r\n * The sum of the y and height properties.\r\n */\r\n get: function () {\r\n return this.y + this.height;\r\n },\r\n set: function (val) {\r\n this.height = val - this.y;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Box.prototype, \"bottomRightBack\", {\r\n /**\r\n * The location of the Box object's bottom-right corner, determined by the\r\n * values of the right and bottom properties.\r\n */\r\n get: function () {\r\n if (this._bottomRightBack == null)\r\n this._bottomRightBack = new Vector3D();\r\n this._bottomRightBack.x = this.x + this.width;\r\n this._bottomRightBack.y = this.y + this.height;\r\n this._bottomRightBack.z = this.z + this.depth;\r\n return this._bottomRightBack;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Box.prototype, \"front\", {\r\n /**\r\n * The z coordinate of the top-left-front corner of the box. Changing\r\n * the front property of a Box object has no effect on the\r\n * x, y, width and height\r\n * properties. However it does affect the depth property,\r\n * whereas changing the z value does not affect the\r\n * depth property.\r\n *\r\n *

The value of the left property is equal to the value of\r\n * the x property.

\r\n */\r\n get: function () {\r\n return this.z;\r\n },\r\n set: function (val) {\r\n this.depth += this.z - val;\r\n this.z = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Box.prototype, \"left\", {\r\n /**\r\n * The x coordinate of the top-left corner of the box. Changing the\r\n * left property of a Box object has no effect on the\r\n * y and height properties. However it does affect\r\n * the width property, whereas changing the x value\r\n * does not affect the width property.\r\n *\r\n *

The value of the left property is equal to the value of\r\n * the x property.

\r\n */\r\n get: function () {\r\n return this.x;\r\n },\r\n set: function (val) {\r\n this.width += this.x - val;\r\n this.x = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Box.prototype, \"right\", {\r\n /**\r\n * The sum of the x and width properties.\r\n */\r\n get: function () {\r\n return this.x + this.width;\r\n },\r\n set: function (val) {\r\n this.width = val - this.x;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Box.prototype, \"size\", {\r\n /**\r\n * The size of the Box object, expressed as a Vector3D object with the\r\n * values of the width, height and\r\n * depth properties.\r\n */\r\n get: function () {\r\n if (this._size == null)\r\n this._size = new Vector3D();\r\n this._size.x = this.width;\r\n this._size.y = this.height;\r\n this._size.z = this.depth;\r\n return this._size;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Box.prototype, \"top\", {\r\n /**\r\n * The y coordinate of the top-left-front corner of the box. Changing\r\n * the top property of a Box object has no effect on the\r\n * x and width properties. However it does affect\r\n * the height property, whereas changing the y\r\n * value does not affect the height property.\r\n *\r\n *

The value of the top property is equal to the value of the\r\n * y property.

\r\n */\r\n get: function () {\r\n return this.y;\r\n },\r\n set: function (val) {\r\n this.height += (this.y - val);\r\n this.y = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Box.prototype, \"topLeftFront\", {\r\n /**\r\n * The location of the Box object's top-left-front corner, determined by the\r\n * x, y and z coordinates of the point.\r\n */\r\n get: function () {\r\n if (this._topLeftFront == null)\r\n this._topLeftFront = new Vector3D();\r\n this._topLeftFront.x = this.x;\r\n this._topLeftFront.y = this.y;\r\n this._topLeftFront.z = this.z;\r\n return this._topLeftFront;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new Box object with the same values for the x,\r\n * y, z, width, height\r\n * and depth properties as the original Box object.\r\n *\r\n * @return A new Box object with the same values for the x,\r\n * y, z, width,\r\n * height and depth properties as the\r\n * original Box object.\r\n */\r\n Box.prototype.clone = function () {\r\n return new Box(this.x, this.y, this.z, this.width, this.height, this.depth);\r\n };\r\n /**\r\n * Determines whether the specified position is contained within the cubic\r\n * region defined by this Box object.\r\n *\r\n * @param x The x coordinate(horizontal component) of the position.\r\n * @param y The y coordinate(vertical component) of the position.\r\n * @param z The z coordinate(longitudinal component) of the position.\r\n * @return A value of true if the Box object contains the\r\n * specified position; otherwise false.\r\n */\r\n Box.prototype.contains = function (x, y, z) {\r\n return (this.x <= x && this.x + this.width >= x && this.y <= y && this.y + this.height >= y && this.z <= z && this.z + this.depth >= z);\r\n };\r\n /**\r\n * Determines whether the specified position is contained within the cubic\r\n * region defined by this Box object. This method is similar to the\r\n * Box.contains() method, except that it takes a Vector3D\r\n * object as a parameter.\r\n *\r\n * @param position The position, as represented by its x, y and\r\n * z coordinates.\r\n * @return A value of true if the Box object contains the\r\n * specified position; otherwise false.\r\n */\r\n Box.prototype.containsPoint = function (position) {\r\n return (this.x <= position.x && this.x + this.width >= position.x && this.y <= position.y && this.y + this.height >= position.y && this.z <= position.z && this.z + this.depth >= position.z);\r\n };\r\n /**\r\n * Determines whether the Box object specified by the box\r\n * parameter is contained within this Box object. A Box object is said to\r\n * contain another if the second Box object falls entirely within the\r\n * boundaries of the first.\r\n *\r\n * @param box The Box object being checked.\r\n * @return A value of true if the Box object that you specify\r\n * is contained by this Box object; otherwise false.\r\n */\r\n Box.prototype.containsBox = function (box) {\r\n return (this.x <= box.x && this.x + this.width >= box.x + box.width && this.y <= box.y && this.y + this.height >= box.y + box.height && this.z <= box.z && this.z + this.depth >= box.z + box.depth);\r\n };\r\n /**\r\n * Copies all of box data from the source Box object into the calling\r\n * Box object.\r\n *\r\n * @param sourceBox The Box object from which to copy the data.\r\n */\r\n Box.prototype.copyFrom = function (sourceBox) {\r\n this.x = sourceBox.x;\r\n this.y = sourceBox.y;\r\n this.z = sourceBox.z;\r\n this.width = sourceBox.width;\r\n this.height = sourceBox.height;\r\n this.depth = sourceBox.depth;\r\n };\r\n /**\r\n * Determines whether the object specified in the toCompare\r\n * parameter is equal to this Box object. This method compares the\r\n * x, y, z, width,\r\n * height and depth properties of an object against\r\n * the same properties of this Box object.\r\n *\r\n * @param toCompare The box to compare to this Box object.\r\n * @return A value of true if the object has exactly the same\r\n * values for the x, y, z,\r\n * width, height and depth\r\n * properties as this Box object; otherwise false.\r\n */\r\n Box.prototype.equals = function (toCompare) {\r\n return (this.x == toCompare.x && this.y == toCompare.y && this.z == toCompare.z && this.width == toCompare.width && this.height == toCompare.height && this.depth == toCompare.depth);\r\n };\r\n /**\r\n * Increases the size of the Box object by the specified amounts, in\r\n * pixels. The center point of the Box object stays the same, and its\r\n * size increases to the left and right by the dx value, to\r\n * the top and the bottom by the dy value, and to\r\n * the front and the back by the dz value.\r\n *\r\n * @param dx The value to be added to the left and the right of the Box\r\n * object. The following equation is used to calculate the new\r\n * width and position of the box:\r\n * @param dy The value to be added to the top and the bottom of the Box\r\n * object. The following equation is used to calculate the new\r\n * height and position of the box:\r\n * @param dz The value to be added to the front and the back of the Box\r\n * object. The following equation is used to calculate the new\r\n * depth and position of the box:\r\n */\r\n Box.prototype.inflate = function (dx, dy, dz) {\r\n this.x -= dx / 2;\r\n this.y -= dy / 2;\r\n this.z -= dz / 2;\r\n this.width += dx / 2;\r\n this.height += dy / 2;\r\n this.depth += dz / 2;\r\n };\r\n /**\r\n * Increases the size of the Box object. This method is similar to the\r\n * Box.inflate() method except it takes a Vector3D object as\r\n * a parameter.\r\n *\r\n *

The following two code examples give the same result:

\r\n *\r\n * @param delta The x property of this Vector3D object is used to\r\n * increase the horizontal dimension of the Box object.\r\n * The y property is used to increase the vertical\r\n * dimension of the Box object.\r\n * The z property is used to increase the\r\n * longitudinal dimension of the Box object.\r\n */\r\n Box.prototype.inflatePoint = function (delta) {\r\n this.x -= delta.x / 2;\r\n this.y -= delta.y / 2;\r\n this.z -= delta.z / 2;\r\n this.width += delta.x / 2;\r\n this.height += delta.y / 2;\r\n this.depth += delta.z / 2;\r\n };\r\n /**\r\n * If the Box object specified in the toIntersect parameter\r\n * intersects with this Box object, returns the area of intersection\r\n * as a Box object. If the boxes do not intersect, this method returns an\r\n * empty Box object with its properties set to 0.\r\n *\r\n * @param toIntersect The Box object to compare against to see if it\r\n * intersects with this Box object.\r\n * @return A Box object that equals the area of intersection. If the\r\n * boxes do not intersect, this method returns an empty Box\r\n * object; that is, a box with its x, y,\r\n * z, width, height, and\r\n * depth properties set to 0.\r\n */\r\n Box.prototype.intersection = function (toIntersect) {\r\n if (this.intersects(toIntersect)) {\r\n var i = new Box();\r\n if (this.x > toIntersect.x) {\r\n i.x = this.x;\r\n i.width = toIntersect.x - this.x + toIntersect.width;\r\n if (i.width > this.width)\r\n i.width = this.width;\r\n }\r\n else {\r\n i.x = toIntersect.x;\r\n i.width = this.x - toIntersect.x + this.width;\r\n if (i.width > toIntersect.width)\r\n i.width = toIntersect.width;\r\n }\r\n if (this.y > toIntersect.y) {\r\n i.y = this.y;\r\n i.height = toIntersect.y - this.y + toIntersect.height;\r\n if (i.height > this.height)\r\n i.height = this.height;\r\n }\r\n else {\r\n i.y = toIntersect.y;\r\n i.height = this.y - toIntersect.y + this.height;\r\n if (i.height > toIntersect.height)\r\n i.height = toIntersect.height;\r\n }\r\n if (this.z > toIntersect.z) {\r\n i.z = this.z;\r\n i.depth = toIntersect.z - this.z + toIntersect.depth;\r\n if (i.depth > this.depth)\r\n i.depth = this.depth;\r\n }\r\n else {\r\n i.z = toIntersect.z;\r\n i.depth = this.z - toIntersect.z + this.depth;\r\n if (i.depth > toIntersect.depth)\r\n i.depth = toIntersect.depth;\r\n }\r\n return i;\r\n }\r\n return new Box();\r\n };\r\n /**\r\n * Determines whether the object specified in the toIntersect\r\n * parameter intersects with this Box object. This method checks the\r\n * x, y, z, width,\r\n * height, and depth properties of the specified\r\n * Box object to see if it intersects with this Box object.\r\n *\r\n * @param toIntersect The Box object to compare against this Box object.\r\n * @return A value of true if the specified object intersects\r\n * with this Box object; otherwise false.\r\n */\r\n Box.prototype.intersects = function (toIntersect) {\r\n return (this.x + this.width > toIntersect.x && this.x < toIntersect.x + toIntersect.width && this.y + this.height > toIntersect.y && this.y < toIntersect.y + toIntersect.height && this.z + this.depth > toIntersect.z && this.z < toIntersect.z + toIntersect.depth);\r\n };\r\n Box.prototype.rayIntersection = function (position, direction, targetNormal) {\r\n if (this.containsPoint(position))\r\n return 0;\r\n var halfExtentsX = this.width / 2;\r\n var halfExtentsY = this.height / 2;\r\n var halfExtentsZ = this.depth / 2;\r\n var centerX = this.x + halfExtentsX;\r\n var centerY = this.y + halfExtentsY;\r\n var centerZ = this.z + halfExtentsZ;\r\n var px = position.x - centerX;\r\n var py = position.y - centerY;\r\n var pz = position.z - centerZ;\r\n var vx = direction.x;\r\n var vy = direction.y;\r\n var vz = direction.z;\r\n var ix;\r\n var iy;\r\n var iz;\r\n var rayEntryDistance;\r\n // ray-plane tests\r\n var intersects;\r\n if (vx < 0) {\r\n rayEntryDistance = (halfExtentsX - px) / vx;\r\n if (rayEntryDistance > 0) {\r\n iy = py + rayEntryDistance * vy;\r\n iz = pz + rayEntryDistance * vz;\r\n if (iy > -halfExtentsY && iy < halfExtentsY && iz > -halfExtentsZ && iz < halfExtentsZ) {\r\n targetNormal.x = 1;\r\n targetNormal.y = 0;\r\n targetNormal.z = 0;\r\n intersects = true;\r\n }\r\n }\r\n }\r\n if (!intersects && vx > 0) {\r\n rayEntryDistance = (-halfExtentsX - px) / vx;\r\n if (rayEntryDistance > 0) {\r\n iy = py + rayEntryDistance * vy;\r\n iz = pz + rayEntryDistance * vz;\r\n if (iy > -halfExtentsY && iy < halfExtentsY && iz > -halfExtentsZ && iz < halfExtentsZ) {\r\n targetNormal.x = -1;\r\n targetNormal.y = 0;\r\n targetNormal.z = 0;\r\n intersects = true;\r\n }\r\n }\r\n }\r\n if (!intersects && vy < 0) {\r\n rayEntryDistance = (halfExtentsY - py) / vy;\r\n if (rayEntryDistance > 0) {\r\n ix = px + rayEntryDistance * vx;\r\n iz = pz + rayEntryDistance * vz;\r\n if (ix > -halfExtentsX && ix < halfExtentsX && iz > -halfExtentsZ && iz < halfExtentsZ) {\r\n targetNormal.x = 0;\r\n targetNormal.y = 1;\r\n targetNormal.z = 0;\r\n intersects = true;\r\n }\r\n }\r\n }\r\n if (!intersects && vy > 0) {\r\n rayEntryDistance = (-halfExtentsY - py) / vy;\r\n if (rayEntryDistance > 0) {\r\n ix = px + rayEntryDistance * vx;\r\n iz = pz + rayEntryDistance * vz;\r\n if (ix > -halfExtentsX && ix < halfExtentsX && iz > -halfExtentsZ && iz < halfExtentsZ) {\r\n targetNormal.x = 0;\r\n targetNormal.y = -1;\r\n targetNormal.z = 0;\r\n intersects = true;\r\n }\r\n }\r\n }\r\n if (!intersects && vz < 0) {\r\n rayEntryDistance = (halfExtentsZ - pz) / vz;\r\n if (rayEntryDistance > 0) {\r\n ix = px + rayEntryDistance * vx;\r\n iy = py + rayEntryDistance * vy;\r\n if (iy > -halfExtentsY && iy < halfExtentsY && ix > -halfExtentsX && ix < halfExtentsX) {\r\n targetNormal.x = 0;\r\n targetNormal.y = 0;\r\n targetNormal.z = 1;\r\n intersects = true;\r\n }\r\n }\r\n }\r\n if (!intersects && vz > 0) {\r\n rayEntryDistance = (-halfExtentsZ - pz) / vz;\r\n if (rayEntryDistance > 0) {\r\n ix = px + rayEntryDistance * vx;\r\n iy = py + rayEntryDistance * vy;\r\n if (iy > -halfExtentsY && iy < halfExtentsY && ix > -halfExtentsX && ix < halfExtentsX) {\r\n targetNormal.x = 0;\r\n targetNormal.y = 0;\r\n targetNormal.z = -1;\r\n intersects = true;\r\n }\r\n }\r\n }\r\n return intersects ? rayEntryDistance : -1;\r\n };\r\n /**\r\n * Finds the closest point on the Box to another given point. This can be used for maximum error calculations for content within a given Box.\r\n *\r\n * @param point The point for which to find the closest point on the Box\r\n * @param target An optional Vector3D to store the result to prevent creating a new object.\r\n * @return\r\n */\r\n Box.prototype.closestPointToPoint = function (point, target) {\r\n if (target === void 0) { target = null; }\r\n var p;\r\n if (target == null)\r\n target = new Vector3D();\r\n p = point.x;\r\n if (p < this.x)\r\n p = this.x;\r\n if (p > this.x + this.width)\r\n p = this.x + this.width;\r\n target.x = p;\r\n p = point.y;\r\n if (p < this.y + this.height)\r\n p = this.y + this.height;\r\n if (p > this.y)\r\n p = this.y;\r\n target.y = p;\r\n p = point.z;\r\n if (p < this.z)\r\n p = this.z;\r\n if (p > this.z + this.depth)\r\n p = this.z + this.depth;\r\n target.z = p;\r\n return target;\r\n };\r\n /**\r\n * Determines whether or not this Box object is empty.\r\n *\r\n * @return A value of true if the Box object's width, height or\r\n * depth is less than or equal to 0; otherwise false.\r\n */\r\n Box.prototype.isEmpty = function () {\r\n return (this.x == 0 && this.y == 0 && this.z == 0 && this.width == 0 && this.height == 0 && this.depth == 0);\r\n };\r\n /**\r\n * Adjusts the location of the Box object, as determined by its\r\n * top-left-front corner, by the specified amounts.\r\n *\r\n * @param dx Moves the x value of the Box object by this amount.\r\n * @param dy Moves the y value of the Box object by this amount.\r\n * @param dz Moves the z value of the Box object by this amount.\r\n */\r\n Box.prototype.offset = function (dx, dy, dz) {\r\n this.x += dx;\r\n this.y += dy;\r\n this.z += dz;\r\n };\r\n /**\r\n * Adjusts the location of the Box object using a Vector3D object as a\r\n * parameter. This method is similar to the Box.offset()\r\n * method, except that it takes a Vector3D object as a parameter.\r\n *\r\n * @param position A Vector3D object to use to offset this Box object.\r\n */\r\n Box.prototype.offsetPosition = function (position) {\r\n this.x += position.x;\r\n this.y += position.y;\r\n this.z += position.z;\r\n };\r\n /**\r\n * Sets all of the Box object's properties to 0. A Box object is empty if its\r\n * width, height or depth is less than or equal to 0.\r\n *\r\n *

This method sets the values of the x, y,\r\n * z, width, height, and\r\n * depth properties to 0.

\r\n *\r\n */\r\n Box.prototype.setEmpty = function () {\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n this.width = 0;\r\n this.height = 0;\r\n this.depth = 0;\r\n };\r\n /**\r\n * Sets the members of Box to the specified values\r\n *\r\n * @param xa The x coordinate of the top-left-front corner of the\r\n * box.\r\n * @param ya The y coordinate of the top-left-front corner of the\r\n * box.\r\n * @param yz The z coordinate of the top-left-front corner of the\r\n * box.\r\n * @param widtha The width of the box, in pixels.\r\n * @param heighta The height of the box, in pixels.\r\n * @param deptha The depth of the box, in pixels.\r\n */\r\n Box.prototype.setTo = function (xa, ya, za, widtha, heighta, deptha) {\r\n this.x = xa;\r\n this.y = ya;\r\n this.z = za;\r\n this.width = widtha;\r\n this.height = heighta;\r\n this.depth = deptha;\r\n };\r\n /**\r\n * Builds and returns a string that lists the horizontal, vertical and\r\n * longitudinal positions and the width, height and depth of the Box object.\r\n *\r\n * @return A string listing the value of each of the following properties of\r\n * the Box object: x, y, z,\r\n * width, height, and depth.\r\n */\r\n Box.prototype.toString = function () {\r\n return \"[Box] (x=\" + this.x + \", y=\" + this.y + \", z=\" + this.z + \", width=\" + this.width + \", height=\" + this.height + \", depth=\" + this.depth + \")\";\r\n };\r\n /**\r\n * Adds two boxes together to create a new Box object, by filling\r\n * in the horizontal, vertical and longitudinal space between the two boxes.\r\n *\r\n *

Note: The union() method ignores boxes with\r\n * 0 as the height, width or depth value, such as: var\r\n * box2:Box = new Box(300,300,300,50,50,0);

\r\n *\r\n * @param toUnion A Box object to add to this Box object.\r\n * @return A new Box object that is the union of the two boxes.\r\n */\r\n Box.prototype.union = function (toUnion, target) {\r\n if (target === void 0) { target = null; }\r\n var width;\r\n var height;\r\n var depth;\r\n if (target == null)\r\n target = new Box();\r\n if (this.x < toUnion.x) {\r\n width = toUnion.x - this.x + toUnion.width;\r\n target.x = this.x;\r\n target.width = (width < this.width) ? this.width : width;\r\n }\r\n else {\r\n width = this.x - toUnion.x + this.width;\r\n target.x = toUnion.x;\r\n target.width = (width < toUnion.width) ? toUnion.width : width;\r\n }\r\n if (this.y < toUnion.y) {\r\n height = toUnion.y - this.y + toUnion.height;\r\n target.y = this.y;\r\n target.height = (height < this.height) ? this.height : height;\r\n }\r\n else {\r\n height = this.y - toUnion.y + this.height;\r\n target.y = toUnion.y;\r\n target.height = (height < toUnion.height) ? toUnion.height : height;\r\n }\r\n if (this.z < toUnion.z) {\r\n depth = toUnion.z - this.z + toUnion.depth;\r\n target.z = this.z;\r\n target.depth = (depth < this.depth) ? this.depth : depth;\r\n }\r\n else {\r\n depth = this.z - toUnion.z + this.depth;\r\n target.z = toUnion.z;\r\n target.depth = (depth < toUnion.depth) ? toUnion.depth : depth;\r\n }\r\n return target;\r\n };\r\n return Box;\r\n}());\r\nexport { Box };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Box.js","/**\r\n* MathConsts provides some commonly used mathematical constants\r\n*/\r\nvar MathConsts = (function () {\r\n function MathConsts() {\r\n }\r\n return MathConsts;\r\n}());\r\nexport { MathConsts };\r\n/**\r\n * The amount to multiply with when converting radians to degrees.\r\n */\r\nMathConsts.RADIANS_TO_DEGREES = 180 / Math.PI;\r\n/**\r\n * The amount to multiply with when converting degrees to radians.\r\n */\r\nMathConsts.DEGREES_TO_RADIANS = Math.PI / 180;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/MathConsts.js","/**\r\n * A Quaternion object which can be used to represent rotations.\r\n */\r\nvar Orientation3D = (function () {\r\n function Orientation3D() {\r\n }\r\n return Orientation3D;\r\n}());\r\nexport { Orientation3D };\r\n/**\r\n * The axis angle orientation uses a combination of an axis and an angle to determine the orientation.\r\n * @type {string}\r\n */\r\nOrientation3D.AXIS_ANGLE = \"axisAngle\";\r\n/**\r\n * The default orientation for decompose() and recompose() methods, defines the orientation with three separate angles of rotation for each axis.\r\n * @type {string}\r\n */\r\nOrientation3D.EULER_ANGLES = \"eulerAngles\";\r\n/**\r\n * The quaternion orientation uses complex numbers.\r\n * @type {string}\r\n */\r\nOrientation3D.QUATERNION = \"quaternion\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Orientation3D.js","import * as tslib_1 from \"tslib\";\r\nimport { ErrorBase } from \"../errors/ErrorBase\";\r\n/**\r\n * AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden\r\n * by a concrete subclass.\r\n */\r\nvar ArgumentError = (function (_super) {\r\n tslib_1.__extends(ArgumentError, _super);\r\n /**\r\n * Create a new ArgumentError.\r\n *\r\n * @param message An optional message to override the default error message.\r\n * @param id The id of the error.\r\n */\r\n function ArgumentError(message, id) {\r\n if (message === void 0) { message = null; }\r\n if (id === void 0) { id = 0; }\r\n return _super.call(this, message || \"ArgumentError\", id) || this;\r\n }\r\n return ArgumentError;\r\n}(ErrorBase));\r\nexport { ArgumentError };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/errors/ArgumentError.js","import { Box } from \"../geom/Box\";\r\nimport { MathConsts } from \"../geom/MathConsts\";\r\nimport { Orientation3D } from \"../geom/Orientation3D\";\r\nimport { Vector3D } from \"../geom/Vector3D\";\r\nimport { ArgumentError } from \"../errors/ArgumentError\";\r\nvar Matrix3D = (function () {\r\n /**\r\n * Creates a Matrix3D object.\r\n */\r\n function Matrix3D(rawData) {\r\n if (rawData === void 0) { rawData = null; }\r\n this._position = new Vector3D();\r\n this._positionDirty = true;\r\n if (rawData != null) {\r\n this._rawData = rawData;\r\n }\r\n else {\r\n this._rawData = new Float32Array(16);\r\n this.identity();\r\n }\r\n }\r\n Matrix3D.getAxisRotationMatrix = function (x, y, z, degrees, target) {\r\n if (target === void 0) { target = null; }\r\n if (target == null)\r\n target = new Matrix3D();\r\n var targetData = target._rawData;\r\n var rad = degrees * MathConsts.DEGREES_TO_RADIANS;\r\n var c = Math.cos(rad);\r\n var s = Math.sin(rad);\r\n var t = 1 - c;\r\n var tmp1, tmp2;\r\n targetData[0] = c + x * x * t;\r\n targetData[5] = c + y * y * t;\r\n targetData[10] = c + z * z * t;\r\n tmp1 = x * y * t;\r\n tmp2 = z * s;\r\n targetData[1] = tmp1 + tmp2;\r\n targetData[4] = tmp1 - tmp2;\r\n tmp1 = x * z * t;\r\n tmp2 = y * s;\r\n targetData[8] = tmp1 + tmp2;\r\n targetData[2] = tmp1 - tmp2;\r\n tmp1 = y * z * t;\r\n tmp2 = x * s;\r\n targetData[9] = tmp1 - tmp2;\r\n targetData[6] = tmp1 + tmp2;\r\n targetData[3] = 0;\r\n targetData[7] = 0;\r\n targetData[11] = 0;\r\n targetData[12] = 0;\r\n targetData[13] = 0;\r\n targetData[14] = 0;\r\n targetData[15] = 1;\r\n target.invalidatePosition();\r\n return target;\r\n };\r\n Matrix3D.getPointAtMatrix = function (pos, dir, up, target) {\r\n if (target === void 0) { target = null; }\r\n var dirN;\r\n var upN;\r\n var lftN;\r\n if (target == null)\r\n target = new Matrix3D();\r\n var targetData = target._rawData;\r\n dirN = dir.clone();\r\n dirN.normalize();\r\n upN = up.clone();\r\n upN.normalize();\r\n lftN = upN.crossProduct(dirN);\r\n lftN.normalize();\r\n if (lftN.length < 0.05) {\r\n lftN.x = upN.y;\r\n lftN.y = upN.x;\r\n lftN.z = 0;\r\n lftN.normalize();\r\n }\r\n upN = dirN.crossProduct(lftN);\r\n targetData[0] = lftN.x;\r\n targetData[1] = lftN.y;\r\n targetData[2] = lftN.z;\r\n targetData[3] = 0;\r\n targetData[4] = upN.x;\r\n targetData[5] = upN.y;\r\n targetData[6] = upN.z;\r\n targetData[7] = 0;\r\n targetData[8] = dirN.x;\r\n targetData[9] = dirN.y;\r\n targetData[10] = dirN.z;\r\n targetData[11] = 0;\r\n targetData[12] = lftN.dotProduct(pos);\r\n targetData[13] = upN.dotProduct(pos);\r\n targetData[14] = dirN.dotProduct(pos);\r\n targetData[15] = 1;\r\n target.invalidatePosition();\r\n return target;\r\n };\r\n /**\r\n * Fills the 3d matrix with values representing the transformation made by the given quaternion.\r\n *\r\n * @param quarternion The quarterion object to convert.\r\n */\r\n Matrix3D.getQuaternionMatrix = function (quarternion, target) {\r\n if (target === void 0) { target = null; }\r\n if (target == null)\r\n target = new Matrix3D();\r\n var targetData = target._rawData;\r\n var x = quarternion.x;\r\n var y = quarternion.y;\r\n var z = quarternion.z;\r\n var w = quarternion.w;\r\n var xx = x * x;\r\n var xy = x * y;\r\n var xz = x * z;\r\n var xw = x * w;\r\n var yy = y * y;\r\n var yz = y * z;\r\n var yw = y * w;\r\n var zz = z * z;\r\n var zw = z * w;\r\n targetData[0] = 1 - 2 * (yy + zz);\r\n targetData[1] = 2 * (xy + zw);\r\n targetData[2] = 2 * (xz - yw);\r\n targetData[4] = 2 * (xy - zw);\r\n targetData[5] = 1 - 2 * (xx + zz);\r\n targetData[6] = 2 * (yz + xw);\r\n targetData[8] = 2 * (xz + yw);\r\n targetData[9] = 2 * (yz - xw);\r\n targetData[10] = 1 - 2 * (xx + yy);\r\n targetData[3] = 0;\r\n targetData[7] = 0;\r\n targetData[11] = 0;\r\n targetData[12] = 0;\r\n targetData[13] = 0;\r\n targetData[14] = 0;\r\n targetData[15] = 1;\r\n target.invalidatePosition();\r\n return target;\r\n };\r\n /**\r\n * Returns a boolean value representing whether there is any difference between the two given 3d matrices.\r\n */\r\n Matrix3D.compare = function (m1, m2) {\r\n var r1 = m1._rawData;\r\n var r2 = m2._rawData;\r\n for (var i = 0; i < 16; ++i)\r\n if (r1[i] != r2[i])\r\n return false;\r\n return true;\r\n };\r\n Object.defineProperty(Matrix3D.prototype, \"determinant\", {\r\n /**\r\n * [read-only] A number that determines whether a matrix is invertible.\r\n */\r\n get: function () {\r\n return ((this._rawData[0] * this._rawData[5] - this._rawData[4] * this._rawData[1]) * (this._rawData[10] * this._rawData[15] - this._rawData[14] * this._rawData[11]) - (this._rawData[0] * this._rawData[9] - this._rawData[8] * this._rawData[1]) * (this._rawData[6] * this._rawData[15] - this._rawData[14] * this._rawData[7]) + (this._rawData[0] * this._rawData[13] - this._rawData[12] * this._rawData[1]) * (this._rawData[6] * this._rawData[11] - this._rawData[10] * this._rawData[7]) + (this._rawData[4] * this._rawData[9] - this._rawData[8] * this._rawData[5]) * (this._rawData[2] * this._rawData[15] - this._rawData[14] * this._rawData[3]) - (this._rawData[4] * this._rawData[13] - this._rawData[12] * this._rawData[5]) * (this._rawData[2] * this._rawData[11] - this._rawData[10] * this._rawData[3]) + (this._rawData[8] * this._rawData[13] - this._rawData[12] * this._rawData[9]) * (this._rawData[2] * this._rawData[7] - this._rawData[6] * this._rawData[3]));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Matrix3D.prototype, \"position\", {\r\n /**\r\n * A Vector3D object that holds the position, the 3D coordinate (x,y,z) of a display object within the\r\n * transformation's frame of reference.\r\n */\r\n get: function () {\r\n if (this._positionDirty) {\r\n this._positionDirty = false;\r\n this._position.x = this._rawData[12];\r\n this._position.y = this._rawData[13];\r\n this._position.z = this._rawData[14];\r\n }\r\n return this._position;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Appends the matrix by multiplying another Matrix3D object by the current Matrix3D object.\r\n */\r\n Matrix3D.prototype.append = function (lhs) {\r\n var lrd = lhs._rawData;\r\n var m111 = this._rawData[0];\r\n var m112 = this._rawData[1];\r\n var m113 = this._rawData[2];\r\n var m114 = this._rawData[3];\r\n var m121 = this._rawData[4];\r\n var m122 = this._rawData[5];\r\n var m123 = this._rawData[6];\r\n var m124 = this._rawData[7];\r\n var m131 = this._rawData[8];\r\n var m132 = this._rawData[9];\r\n var m133 = this._rawData[10];\r\n var m134 = this._rawData[11];\r\n var m141 = this._rawData[12];\r\n var m142 = this._rawData[13];\r\n var m143 = this._rawData[14];\r\n var m144 = this._rawData[15];\r\n var m211 = lrd[0];\r\n var m212 = lrd[1];\r\n var m213 = lrd[2];\r\n var m214 = lrd[3];\r\n var m221 = lrd[4];\r\n var m222 = lrd[5];\r\n var m223 = lrd[6];\r\n var m224 = lrd[7];\r\n var m231 = lrd[8];\r\n var m232 = lrd[9];\r\n var m233 = lrd[10];\r\n var m234 = lrd[11];\r\n var m241 = lrd[12];\r\n var m242 = lrd[13];\r\n var m243 = lrd[14];\r\n var m244 = lrd[15];\r\n this._rawData[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;\r\n this._rawData[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;\r\n this._rawData[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;\r\n this._rawData[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;\r\n this._rawData[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;\r\n this._rawData[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;\r\n this._rawData[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;\r\n this._rawData[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;\r\n this._rawData[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;\r\n this._rawData[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;\r\n this._rawData[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;\r\n this._rawData[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;\r\n this._rawData[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;\r\n this._rawData[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;\r\n this._rawData[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;\r\n this._rawData[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;\r\n this._positionDirty = true;\r\n };\r\n /**\r\n * Appends an incremental rotation to a Matrix3D object.\r\n */\r\n Matrix3D.prototype.appendRotation = function (degrees, axis) {\r\n this.append(Matrix3D.getAxisRotationMatrix(axis.x, axis.y, axis.z, degrees, Matrix3D._tempMatrix));\r\n };\r\n /**\r\n * Appends an incremental skew change along the x, y, and z axes to a Matrix3D object.\r\n */\r\n Matrix3D.prototype.appendSkew = function (xSkew, ySkew, zSkew) {\r\n if (xSkew == 0 && ySkew == 0 && zSkew == 0)\r\n return;\r\n var rawData = Matrix3D._tempMatrix._rawData;\r\n rawData[0] = 1;\r\n rawData[1] = 0;\r\n rawData[2] = 0;\r\n rawData[3] = 0;\r\n rawData[4] = xSkew;\r\n rawData[5] = 1;\r\n rawData[6] = 0;\r\n rawData[7] = 0;\r\n rawData[8] = ySkew;\r\n rawData[9] = zSkew;\r\n rawData[10] = 1;\r\n rawData[11] = 0;\r\n rawData[12] = 0;\r\n rawData[13] = 0;\r\n rawData[14] = 0;\r\n rawData[15] = 1;\r\n this.append(Matrix3D._tempMatrix);\r\n };\r\n /**\r\n * Appends an incremental scale change along the x, y, and z axes to a Matrix3D object.\r\n */\r\n Matrix3D.prototype.appendScale = function (xScale, yScale, zScale) {\r\n if (xScale == 1 && yScale == 1 && zScale == 1)\r\n return;\r\n var rawData = Matrix3D._tempMatrix._rawData;\r\n rawData[0] = xScale;\r\n rawData[1] = 0;\r\n rawData[2] = 0;\r\n rawData[3] = 0;\r\n rawData[4] = 0;\r\n rawData[5] = yScale;\r\n rawData[6] = 0;\r\n rawData[7] = 0;\r\n rawData[8] = 0;\r\n rawData[9] = 0;\r\n rawData[10] = zScale;\r\n rawData[11] = 0;\r\n rawData[12] = 0;\r\n rawData[13] = 0;\r\n rawData[14] = 0;\r\n rawData[15] = 1;\r\n this.append(Matrix3D._tempMatrix);\r\n };\r\n /**\r\n * Appends an incremental translation, a repositioning along the x, y, and z axes, to a Matrix3D object.\r\n */\r\n Matrix3D.prototype.appendTranslation = function (x, y, z) {\r\n this._rawData[12] += x;\r\n this._rawData[13] += y;\r\n this._rawData[14] += z;\r\n this._positionDirty = true;\r\n };\r\n /**\r\n * Returns a new Matrix3D object that is an exact copy of the current Matrix3D object.\r\n */\r\n Matrix3D.prototype.clone = function () {\r\n var matrix3D = new Matrix3D();\r\n matrix3D.copyFrom(this);\r\n return matrix3D;\r\n };\r\n /**\r\n * Copies a Vector3D object into specific column of the calling Matrix3D object.\r\n */\r\n Matrix3D.prototype.copyColumnFrom = function (column, vector3D) {\r\n if (column < 0 || column > 3)\r\n throw new ArgumentError(\"ArgumentError, Column \" + column + \" out of bounds [0, ..., 3]\");\r\n column *= 4;\r\n this._rawData[column] = vector3D.x;\r\n this._rawData[column + 1] = vector3D.y;\r\n this._rawData[column + 2] = vector3D.z;\r\n this._rawData[column + 3] = vector3D.w;\r\n this._positionDirty = true;\r\n };\r\n /**\r\n * Copies specific column of the calling Matrix3D object into the Vector3D object.\r\n */\r\n Matrix3D.prototype.copyColumnTo = function (column, vector3D, negate) {\r\n if (negate === void 0) { negate = false; }\r\n if (column < 0 || column > 3)\r\n throw new ArgumentError(\"ArgumentError, Column \" + column + \" out of bounds [0, ..., 3]\");\r\n column *= 4;\r\n var sourceData = this._rawData;\r\n if (negate) {\r\n vector3D.x = -sourceData[column];\r\n vector3D.y = -sourceData[column + 1];\r\n vector3D.z = -sourceData[column + 2];\r\n vector3D.w = -sourceData[column + 3];\r\n }\r\n else {\r\n vector3D.x = sourceData[column];\r\n vector3D.y = sourceData[column + 1];\r\n vector3D.z = sourceData[column + 2];\r\n vector3D.w = sourceData[column + 3];\r\n }\r\n };\r\n /**\r\n * Copies all of the matrix data from the source Matrix3D object into the calling Matrix3D object.\r\n */\r\n Matrix3D.prototype.copyFrom = function (source, transpose) {\r\n if (transpose === void 0) { transpose = false; }\r\n var sourceData = source._rawData, targetData = this._rawData;\r\n targetData[0] = sourceData[0];\r\n targetData[5] = sourceData[5];\r\n targetData[10] = sourceData[10];\r\n targetData[15] = sourceData[15];\r\n if (transpose) {\r\n targetData[1] = sourceData[4];\r\n targetData[2] = sourceData[8];\r\n targetData[3] = sourceData[12];\r\n targetData[4] = sourceData[1];\r\n targetData[6] = sourceData[9];\r\n targetData[7] = sourceData[13];\r\n targetData[8] = sourceData[2];\r\n targetData[9] = sourceData[6];\r\n targetData[11] = sourceData[14];\r\n targetData[12] = sourceData[3];\r\n targetData[13] = sourceData[7];\r\n targetData[14] = sourceData[11];\r\n }\r\n else {\r\n targetData[1] = sourceData[1];\r\n targetData[2] = sourceData[2];\r\n targetData[3] = sourceData[3];\r\n targetData[4] = sourceData[4];\r\n targetData[6] = sourceData[6];\r\n targetData[7] = sourceData[7];\r\n targetData[8] = sourceData[8];\r\n targetData[9] = sourceData[9];\r\n targetData[11] = sourceData[11];\r\n targetData[12] = sourceData[12];\r\n targetData[13] = sourceData[13];\r\n targetData[14] = sourceData[14];\r\n }\r\n this._positionDirty = true;\r\n };\r\n /**\r\n * Copies this Matrix3D object into a destination Matrix3D object.\r\n */\r\n Matrix3D.prototype.copyTo = function (target, transpose) {\r\n if (transpose === void 0) { transpose = false; }\r\n target.copyFrom(this, transpose);\r\n };\r\n Matrix3D.prototype.copyRawDataFrom = function (sourceData, offset, transpose) {\r\n if (offset === void 0) { offset = 0; }\r\n if (transpose === void 0) { transpose = false; }\r\n var targetData = this._rawData;\r\n targetData[0] = sourceData[offset + 0];\r\n targetData[5] = sourceData[offset + 5];\r\n targetData[10] = sourceData[offset + 10];\r\n targetData[15] = sourceData[offset + 15];\r\n if (transpose) {\r\n targetData[offset + 1] = sourceData[4];\r\n targetData[offset + 2] = sourceData[8];\r\n targetData[offset + 3] = sourceData[12];\r\n targetData[offset + 4] = sourceData[1];\r\n targetData[offset + 6] = sourceData[9];\r\n targetData[offset + 7] = sourceData[13];\r\n targetData[offset + 8] = sourceData[2];\r\n targetData[offset + 9] = sourceData[6];\r\n targetData[offset + 11] = sourceData[14];\r\n targetData[offset + 12] = sourceData[3];\r\n targetData[offset + 13] = sourceData[7];\r\n targetData[offset + 14] = sourceData[11];\r\n }\r\n else {\r\n targetData[1] = sourceData[offset + 1];\r\n targetData[2] = sourceData[offset + 2];\r\n targetData[3] = sourceData[offset + 3];\r\n targetData[4] = sourceData[offset + 4];\r\n targetData[6] = sourceData[offset + 6];\r\n targetData[7] = sourceData[offset + 7];\r\n targetData[8] = sourceData[offset + 8];\r\n targetData[9] = sourceData[offset + 9];\r\n targetData[11] = sourceData[offset + 11];\r\n targetData[12] = sourceData[offset + 12];\r\n targetData[13] = sourceData[offset + 13];\r\n targetData[14] = sourceData[offset + 14];\r\n }\r\n this._positionDirty = true;\r\n };\r\n Matrix3D.prototype.copyRawDataTo = function (targetData, offset, transpose) {\r\n if (offset === void 0) { offset = 0; }\r\n if (transpose === void 0) { transpose = false; }\r\n var sourceData = this._rawData;\r\n targetData[offset] = sourceData[0];\r\n targetData[offset + 5] = sourceData[5];\r\n targetData[offset + 10] = sourceData[10];\r\n targetData[offset + 15] = sourceData[15];\r\n if (transpose) {\r\n targetData[offset + 1] = sourceData[4];\r\n targetData[offset + 2] = sourceData[8];\r\n targetData[offset + 3] = sourceData[12];\r\n targetData[offset + 4] = sourceData[1];\r\n targetData[offset + 6] = sourceData[9];\r\n targetData[offset + 7] = sourceData[13];\r\n targetData[offset + 8] = sourceData[2];\r\n targetData[offset + 9] = sourceData[6];\r\n targetData[offset + 11] = sourceData[14];\r\n targetData[offset + 12] = sourceData[3];\r\n targetData[offset + 13] = sourceData[7];\r\n targetData[offset + 14] = sourceData[11];\r\n }\r\n else {\r\n targetData[offset + 1] = sourceData[1];\r\n targetData[offset + 2] = sourceData[2];\r\n targetData[offset + 3] = sourceData[3];\r\n targetData[offset + 4] = sourceData[4];\r\n targetData[offset + 6] = sourceData[6];\r\n targetData[offset + 7] = sourceData[7];\r\n targetData[offset + 8] = sourceData[8];\r\n targetData[offset + 9] = sourceData[9];\r\n targetData[offset + 11] = sourceData[11];\r\n targetData[offset + 12] = sourceData[12];\r\n targetData[offset + 13] = sourceData[13];\r\n targetData[offset + 14] = sourceData[14];\r\n }\r\n };\r\n /**\r\n * Copies a Vector3D object into specific row of the calling Matrix3D object.\r\n */\r\n Matrix3D.prototype.copyRowFrom = function (row, vector3D) {\r\n if (row < 0 || row > 3)\r\n throw new ArgumentError(\"ArgumentError, Row \" + row + \" out of bounds [0, ..., 3]\");\r\n this._rawData[row] = vector3D.x;\r\n this._rawData[row + 4] = vector3D.y;\r\n this._rawData[row + 8] = vector3D.z;\r\n this._rawData[row + 12] = vector3D.w;\r\n this._positionDirty = true;\r\n };\r\n /**\r\n * Copies specific row of the calling Matrix3D object into the Vector3D object.\r\n */\r\n Matrix3D.prototype.copyRowTo = function (row, vector3D, negate) {\r\n if (negate === void 0) { negate = false; }\r\n if (row < 0 || row > 3)\r\n throw new ArgumentError(\"ArgumentError, Row \" + row + \" out of bounds [0, ..., 3]\");\r\n var sourceData = this._rawData;\r\n if (negate) {\r\n vector3D.x = -sourceData[row];\r\n vector3D.y = -sourceData[row + 4];\r\n vector3D.z = -sourceData[row + 8];\r\n vector3D.w = -sourceData[row + 12];\r\n }\r\n else {\r\n vector3D.x = sourceData[row];\r\n vector3D.y = sourceData[row + 4];\r\n vector3D.z = sourceData[row + 8];\r\n vector3D.w = sourceData[row + 12];\r\n }\r\n };\r\n /**\r\n * Returns the transformation matrix's translation, rotation, and scale settings as a Vector of three Vector3D objects.\r\n */\r\n Matrix3D.prototype.decompose = function (orientationStyle) {\r\n if (orientationStyle === void 0) { orientationStyle = \"eulerAngles\"; }\r\n var q;\r\n if (this._components == null)\r\n this._components = [new Vector3D(), new Vector3D(), new Vector3D(), new Vector3D()];\r\n var colX = new Vector3D(this._rawData[0], this._rawData[1], this._rawData[2]);\r\n var colY = new Vector3D(this._rawData[4], this._rawData[5], this._rawData[6]);\r\n var colZ = new Vector3D(this._rawData[8], this._rawData[9], this._rawData[10]);\r\n var scale = this._components[3];\r\n var skew = this._components[2];\r\n //compute X scale factor and normalise colX\r\n scale.x = colX.length;\r\n colX.scaleBy(1 / scale.x);\r\n //compute XY shear factor and make colY orthogonal to colX\r\n skew.x = colX.dotProduct(colY);\r\n colY = Vector3D.combine(colY, colX, 1, -skew.x);\r\n //compute Y scale factor and normalise colY\r\n scale.y = colY.length;\r\n colY.scaleBy(1 / scale.y);\r\n skew.x /= scale.y;\r\n //compute XZ and YZ shears and make colZ orthogonal to colX and colY\r\n skew.y = colX.dotProduct(colZ);\r\n colZ = Vector3D.combine(colZ, colX, 1, -skew.y);\r\n skew.z = colY.dotProduct(colZ);\r\n colZ = Vector3D.combine(colZ, colY, 1, -skew.z);\r\n //compute Z scale and normalise colZ\r\n scale.z = colZ.length;\r\n colZ.scaleBy(1 / scale.z);\r\n skew.y /= scale.z;\r\n skew.z /= scale.z;\r\n //at this point, the matrix (in cols) is orthonormal\r\n //check for a coordinate system flip. If the determinant is -1, negate the z scaling factor\r\n if (colX.dotProduct(colY.crossProduct(colZ)) < 0) {\r\n scale.z = -scale.z;\r\n colZ.x = -colZ.x;\r\n colZ.y = -colZ.y;\r\n colZ.z = -colZ.z;\r\n }\r\n var rot = this._components[1];\r\n switch (orientationStyle) {\r\n case Orientation3D.AXIS_ANGLE:\r\n rot.w = Math.acos((colX.x + colY.y + colZ.z - 1) / 2);\r\n var len = Math.sqrt((colY.z - colZ.y) * (colY.z - colZ.y) + (colZ.x - colX.z) * (colZ.x - colX.z) + (colX.y - colY.x) * (colX.y - colY.x));\r\n rot.x = (colY.z - colZ.y) / len;\r\n rot.y = (colZ.x - colX.z) / len;\r\n rot.z = (colX.y - colY.x) / len;\r\n break;\r\n case Orientation3D.QUATERNION:\r\n var tr = colX.x + colY.y + colZ.z;\r\n if (tr > 0) {\r\n rot.w = Math.sqrt(1 + tr) / 2;\r\n rot.x = (colY.z - colZ.y) / (4 * rot.w);\r\n rot.y = (colZ.x - colX.z) / (4 * rot.w);\r\n rot.z = (colX.y - colY.x) / (4 * rot.w);\r\n }\r\n else if ((colX.x > colY.y) && (colX.x > colZ.z)) {\r\n rot.x = Math.sqrt(1 + colX.x - colY.y - colZ.z) / 2;\r\n rot.w = (colY.z - colZ.y) / (4 * rot.x);\r\n rot.y = (colX.y + colY.x) / (4 * rot.x);\r\n rot.z = (colZ.x + colX.z) / (4 * rot.x);\r\n }\r\n else if (colY.y > colZ.z) {\r\n rot.y = Math.sqrt(1 + colY.y - colX.x - colZ.z) / 2;\r\n rot.x = (colX.y + colY.x) / (4 * rot.y);\r\n rot.w = (colZ.x - colX.z) / (4 * rot.y);\r\n rot.z = (colY.z + colZ.y) / (4 * rot.y);\r\n }\r\n else {\r\n rot.z = Math.sqrt(1 + colZ.z - colX.x - colY.y) / 2;\r\n rot.x = (colZ.x + colX.z) / (4 * rot.z);\r\n rot.y = (colY.z + colZ.y) / (4 * rot.z);\r\n rot.w = (colX.y - colY.x) / (4 * rot.z);\r\n }\r\n break;\r\n case Orientation3D.EULER_ANGLES:\r\n rot.y = Math.asin(-colX.z);\r\n //var cos:number = Math.cos(rot.y);\r\n if (colX.z != 1 && colX.z != -1) {\r\n rot.x = Math.atan2(colY.z, colZ.z);\r\n rot.z = Math.atan2(colX.y, colX.x);\r\n }\r\n else {\r\n rot.z = 0;\r\n rot.x = Math.atan2(colY.x, colY.y);\r\n }\r\n break;\r\n }\r\n this._components[0].copyFrom(this.position);\r\n return this._components;\r\n };\r\n /**\r\n * Uses the transformation matrix without its translation elements to transform a Vector3D object from one space\r\n * coordinate to another.\r\n */\r\n Matrix3D.prototype.deltaTransformVector = function (v, t) {\r\n if (t === void 0) { t = null; }\r\n var x = v.x;\r\n var y = v.y;\r\n var z = v.z;\r\n if (!t)\r\n t = new Vector3D();\r\n t.x = x * this._rawData[0] + y * this._rawData[4] + z * this._rawData[8];\r\n t.y = x * this._rawData[1] + y * this._rawData[5] + z * this._rawData[9];\r\n t.z = x * this._rawData[2] + y * this._rawData[6] + z * this._rawData[10];\r\n t.w = x * this._rawData[3] + y * this._rawData[7] + z * this._rawData[11];\r\n return t;\r\n };\r\n Matrix3D.prototype.deltaTransformVectors = function (vin, vout) {\r\n var rawData = this._rawData;\r\n var a = rawData[0];\r\n var e = rawData[1];\r\n var i = rawData[2];\r\n var m = rawData[3];\r\n var b = rawData[4];\r\n var f = rawData[5];\r\n var j = rawData[6];\r\n var n = rawData[7];\r\n var c = rawData[8];\r\n var g = rawData[9];\r\n var k = rawData[10];\r\n var o = rawData[11];\r\n var outIndex = 0;\r\n var length = vin.length;\r\n for (var index = 0; index < length; index += 3) {\r\n var x = vin[index];\r\n var y = vin[index + 1];\r\n var z = vin[index + 2];\r\n vout[outIndex++] = a * x + b * y + c * z;\r\n vout[outIndex++] = e * x + f * y + g * z;\r\n vout[outIndex++] = i * x + j * y + k * z;\r\n }\r\n };\r\n /**\r\n * Converts the current matrix to an identity or unit matrix.\r\n */\r\n Matrix3D.prototype.identity = function () {\r\n this._rawData[0] = 1;\r\n this._rawData[1] = 0;\r\n this._rawData[2] = 0;\r\n this._rawData[3] = 0;\r\n this._rawData[4] = 0;\r\n this._rawData[5] = 1;\r\n this._rawData[6] = 0;\r\n this._rawData[7] = 0;\r\n this._rawData[8] = 0;\r\n this._rawData[9] = 0;\r\n this._rawData[10] = 1;\r\n this._rawData[11] = 0;\r\n this._rawData[12] = 0;\r\n this._rawData[13] = 0;\r\n this._rawData[14] = 0;\r\n this._rawData[15] = 1;\r\n this._positionDirty = true;\r\n };\r\n /**\r\n * Inverts the current matrix.\r\n */\r\n Matrix3D.prototype.invert = function () {\r\n var d = this.determinant;\r\n var invertable = Math.abs(d) > 0.00000000001;\r\n if (invertable) {\r\n d = 1 / d;\r\n var m11 = this._rawData[0];\r\n var m12 = this._rawData[1];\r\n var m13 = this._rawData[2];\r\n var m14 = this._rawData[3];\r\n var m21 = this._rawData[4];\r\n var m22 = this._rawData[5];\r\n var m23 = this._rawData[6];\r\n var m24 = this._rawData[7];\r\n var m31 = this._rawData[8];\r\n var m32 = this._rawData[9];\r\n var m33 = this._rawData[10];\r\n var m34 = this._rawData[11];\r\n var m41 = this._rawData[12];\r\n var m42 = this._rawData[13];\r\n var m43 = this._rawData[14];\r\n var m44 = this._rawData[15];\r\n this._rawData[0] = d * (m22 * (m33 * m44 - m43 * m34) - m32 * (m23 * m44 - m43 * m24) + m42 * (m23 * m34 - m33 * m24));\r\n this._rawData[1] = -d * (m12 * (m33 * m44 - m43 * m34) - m32 * (m13 * m44 - m43 * m14) + m42 * (m13 * m34 - m33 * m14));\r\n this._rawData[2] = d * (m12 * (m23 * m44 - m43 * m24) - m22 * (m13 * m44 - m43 * m14) + m42 * (m13 * m24 - m23 * m14));\r\n this._rawData[3] = -d * (m12 * (m23 * m34 - m33 * m24) - m22 * (m13 * m34 - m33 * m14) + m32 * (m13 * m24 - m23 * m14));\r\n this._rawData[4] = -d * (m21 * (m33 * m44 - m43 * m34) - m31 * (m23 * m44 - m43 * m24) + m41 * (m23 * m34 - m33 * m24));\r\n this._rawData[5] = d * (m11 * (m33 * m44 - m43 * m34) - m31 * (m13 * m44 - m43 * m14) + m41 * (m13 * m34 - m33 * m14));\r\n this._rawData[6] = -d * (m11 * (m23 * m44 - m43 * m24) - m21 * (m13 * m44 - m43 * m14) + m41 * (m13 * m24 - m23 * m14));\r\n this._rawData[7] = d * (m11 * (m23 * m34 - m33 * m24) - m21 * (m13 * m34 - m33 * m14) + m31 * (m13 * m24 - m23 * m14));\r\n this._rawData[8] = d * (m21 * (m32 * m44 - m42 * m34) - m31 * (m22 * m44 - m42 * m24) + m41 * (m22 * m34 - m32 * m24));\r\n this._rawData[9] = -d * (m11 * (m32 * m44 - m42 * m34) - m31 * (m12 * m44 - m42 * m14) + m41 * (m12 * m34 - m32 * m14));\r\n this._rawData[10] = d * (m11 * (m22 * m44 - m42 * m24) - m21 * (m12 * m44 - m42 * m14) + m41 * (m12 * m24 - m22 * m14));\r\n this._rawData[11] = -d * (m11 * (m22 * m34 - m32 * m24) - m21 * (m12 * m34 - m32 * m14) + m31 * (m12 * m24 - m22 * m14));\r\n this._rawData[12] = -d * (m21 * (m32 * m43 - m42 * m33) - m31 * (m22 * m43 - m42 * m23) + m41 * (m22 * m33 - m32 * m23));\r\n this._rawData[13] = d * (m11 * (m32 * m43 - m42 * m33) - m31 * (m12 * m43 - m42 * m13) + m41 * (m12 * m33 - m32 * m13));\r\n this._rawData[14] = -d * (m11 * (m22 * m43 - m42 * m23) - m21 * (m12 * m43 - m42 * m13) + m41 * (m12 * m23 - m22 * m13));\r\n this._rawData[15] = d * (m11 * (m22 * m33 - m32 * m23) - m21 * (m12 * m33 - m32 * m13) + m31 * (m12 * m23 - m22 * m13));\r\n }\r\n this._positionDirty = true;\r\n return invertable;\r\n };\r\n Matrix3D.prototype.isIdentity = function () {\r\n if (this._rawData[0] == 1 &&\r\n this._rawData[1] == 0 &&\r\n this._rawData[2] == 0 &&\r\n this._rawData[3] == 0 &&\r\n this._rawData[4] == 0 &&\r\n this._rawData[5] == 1 &&\r\n this._rawData[6] == 0 &&\r\n this._rawData[7] == 0 &&\r\n this._rawData[8] == 0 &&\r\n this._rawData[9] == 0 &&\r\n this._rawData[10] == 1 &&\r\n this._rawData[11] == 0 &&\r\n this._rawData[12] == 0 &&\r\n this._rawData[13] == 0 &&\r\n this._rawData[14] == 0 &&\r\n this._rawData[15] == 1)\r\n return true;\r\n return false;\r\n };\r\n /**\r\n * Prepends a matrix by multiplying the current Matrix3D object by another Matrix3D object.\r\n */\r\n Matrix3D.prototype.prepend = function (rhs) {\r\n var m111 = rhs._rawData[0];\r\n var m112 = rhs._rawData[1];\r\n var m113 = rhs._rawData[2];\r\n var m114 = rhs._rawData[3];\r\n var m121 = rhs._rawData[4];\r\n var m122 = rhs._rawData[5];\r\n var m123 = rhs._rawData[6];\r\n var m124 = rhs._rawData[7];\r\n var m131 = rhs._rawData[8];\r\n var m132 = rhs._rawData[9];\r\n var m133 = rhs._rawData[10];\r\n var m134 = rhs._rawData[11];\r\n var m141 = rhs._rawData[12];\r\n var m142 = rhs._rawData[13];\r\n var m143 = rhs._rawData[14];\r\n var m144 = rhs._rawData[15];\r\n var m211 = this._rawData[0];\r\n var m212 = this._rawData[1];\r\n var m213 = this._rawData[2];\r\n var m214 = this._rawData[3];\r\n var m221 = this._rawData[4];\r\n var m222 = this._rawData[5];\r\n var m223 = this._rawData[6];\r\n var m224 = this._rawData[7];\r\n var m231 = this._rawData[8];\r\n var m232 = this._rawData[9];\r\n var m233 = this._rawData[10];\r\n var m234 = this._rawData[11];\r\n var m241 = this._rawData[12];\r\n var m242 = this._rawData[13];\r\n var m243 = this._rawData[14];\r\n var m244 = this._rawData[15];\r\n this._rawData[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;\r\n this._rawData[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;\r\n this._rawData[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;\r\n this._rawData[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;\r\n this._rawData[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;\r\n this._rawData[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;\r\n this._rawData[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;\r\n this._rawData[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;\r\n this._rawData[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;\r\n this._rawData[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;\r\n this._rawData[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;\r\n this._rawData[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;\r\n this._rawData[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;\r\n this._rawData[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;\r\n this._rawData[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;\r\n this._rawData[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;\r\n this._positionDirty = true;\r\n };\r\n /**\r\n * Prepends an incremental rotation to a Matrix3D object.\r\n */\r\n Matrix3D.prototype.prependRotation = function (degrees, axis) {\r\n this.prepend(Matrix3D.getAxisRotationMatrix(axis.x, axis.y, axis.z, degrees, Matrix3D._tempMatrix));\r\n };\r\n /**\r\n * Prepends an incremental scale change along the x, y, and z axes to a Matrix3D object.\r\n */\r\n Matrix3D.prototype.prependScale = function (xScale, yScale, zScale) {\r\n if (xScale == 1 && yScale == 1 && zScale == 1)\r\n return;\r\n var rawData = Matrix3D._tempMatrix._rawData;\r\n rawData[0] = xScale;\r\n rawData[1] = 0;\r\n rawData[2] = 0;\r\n rawData[3] = 0;\r\n rawData[4] = 0;\r\n rawData[5] = yScale;\r\n rawData[6] = 0;\r\n rawData[7] = 0;\r\n rawData[8] = 0;\r\n rawData[9] = 0;\r\n rawData[10] = zScale;\r\n rawData[11] = 0;\r\n rawData[12] = 0;\r\n rawData[13] = 0;\r\n rawData[14] = 0;\r\n rawData[15] = 1;\r\n this.prepend(Matrix3D._tempMatrix);\r\n };\r\n /**\r\n * Prepends an incremental translation, a repositioning along the x, y, and z axes, to a Matrix3D object.\r\n */\r\n Matrix3D.prototype.prependTranslation = function (x, y, z) {\r\n var rawData = Matrix3D._tempMatrix._rawData;\r\n rawData[0] = 1;\r\n rawData[1] = 0;\r\n rawData[2] = 0;\r\n rawData[3] = 0;\r\n rawData[4] = 0;\r\n rawData[5] = 1;\r\n rawData[6] = 0;\r\n rawData[7] = 0;\r\n rawData[8] = 0;\r\n rawData[9] = 0;\r\n rawData[10] = 1;\r\n rawData[11] = 0;\r\n rawData[12] = x;\r\n rawData[13] = y;\r\n rawData[14] = z;\r\n rawData[15] = 1;\r\n this.prepend(Matrix3D._tempMatrix);\r\n };\r\n // TODO orientationStyle\r\n /**\r\n * Sets the transformation matrix's translation, rotation, and scale settings.\r\n */\r\n Matrix3D.prototype.recompose = function (components) {\r\n var pos = components[0] || this.position;\r\n this.identity();\r\n var scale = components[3];\r\n if (scale && (scale.x != 1 || scale.y != 1 || scale.z != 1))\r\n this.appendScale(scale.x, scale.y, scale.z);\r\n var skew = components[2];\r\n if (skew && (skew.x != 0 || skew.y != 0 || skew.z != 0))\r\n this.appendSkew(skew.x, skew.y, skew.z);\r\n var sin;\r\n var cos;\r\n var rawData = Matrix3D._tempMatrix._rawData;\r\n rawData[12] = 0;\r\n rawData[13] = 0;\r\n rawData[14] = 0;\r\n rawData[15] = 0;\r\n var rotation = components[1];\r\n if (rotation) {\r\n var angle = -rotation.x;\r\n if (angle != 0) {\r\n sin = Math.sin(angle);\r\n cos = Math.cos(angle);\r\n rawData[0] = 1;\r\n rawData[1] = 0;\r\n rawData[2] = 0;\r\n rawData[3] = 0;\r\n rawData[4] = 0;\r\n rawData[5] = cos;\r\n rawData[6] = -sin;\r\n rawData[7] = 0;\r\n rawData[8] = 0;\r\n rawData[9] = sin;\r\n rawData[10] = cos;\r\n rawData[11] = 0;\r\n this.append(Matrix3D._tempMatrix);\r\n }\r\n angle = -rotation.y;\r\n if (angle != 0) {\r\n sin = Math.sin(angle);\r\n cos = Math.cos(angle);\r\n rawData[0] = cos;\r\n rawData[1] = 0;\r\n rawData[2] = sin;\r\n rawData[3] = 0;\r\n rawData[4] = 0;\r\n rawData[5] = 1;\r\n rawData[6] = 0;\r\n rawData[7] = 0;\r\n rawData[8] = -sin;\r\n rawData[9] = 0;\r\n rawData[10] = cos;\r\n rawData[11] = 0;\r\n this.append(Matrix3D._tempMatrix);\r\n }\r\n angle = -rotation.z;\r\n if (angle != 0) {\r\n sin = Math.sin(angle);\r\n cos = Math.cos(angle);\r\n rawData[0] = cos;\r\n rawData[1] = -sin;\r\n rawData[2] = 0;\r\n rawData[3] = 0;\r\n rawData[4] = sin;\r\n rawData[5] = cos;\r\n rawData[6] = 0;\r\n rawData[7] = 0;\r\n rawData[8] = 0;\r\n rawData[9] = 0;\r\n rawData[10] = 1;\r\n rawData[11] = 0;\r\n this.append(Matrix3D._tempMatrix);\r\n }\r\n }\r\n this._rawData[12] = pos.x;\r\n this._rawData[13] = pos.y;\r\n this._rawData[14] = pos.z;\r\n if (components[0])\r\n this._positionDirty = true;\r\n this._rawData[15] = 1;\r\n return true;\r\n };\r\n Matrix3D.prototype.reflect = function (plane) {\r\n var a = plane.a, b = plane.b, c = plane.c, d = plane.d;\r\n var ab2 = -2 * a * b;\r\n var ac2 = -2 * a * c;\r\n var bc2 = -2 * b * c;\r\n // reflection matrix\r\n var rawData = this._rawData;\r\n rawData[0] = 1 - 2 * a * a;\r\n rawData[4] = ab2;\r\n rawData[8] = ac2;\r\n rawData[12] = -2 * a * d;\r\n rawData[1] = ab2;\r\n rawData[5] = 1 - 2 * b * b;\r\n rawData[9] = bc2;\r\n rawData[13] = -2 * b * d;\r\n rawData[2] = ac2;\r\n rawData[6] = bc2;\r\n rawData[10] = 1 - 2 * c * c;\r\n rawData[14] = -2 * c * d;\r\n rawData[3] = 0;\r\n rawData[7] = 0;\r\n rawData[11] = 0;\r\n rawData[15] = 1;\r\n this._positionDirty = true;\r\n };\r\n Matrix3D.prototype.transformBox = function (box, target) {\r\n if (target === void 0) { target = null; }\r\n if (box == null)\r\n throw new ArgumentError(\"ArgumentError, box cannot be null\");\r\n var minX, minY, minZ;\r\n var maxX, maxY, maxZ;\r\n maxX = box.width + (minX = box.x);\r\n maxY = box.height + (minY = box.y);\r\n maxZ = box.depth + (minZ = box.z);\r\n if (!target)\r\n target = new Box();\r\n var hx = box.width / 2;\r\n var hy = box.height / 2;\r\n var hz = box.depth / 2;\r\n var cx = box.x + hx;\r\n var cy = box.y + hy;\r\n var cz = box.z + hz;\r\n var m11 = this._rawData[0], m12 = this._rawData[4], m13 = this._rawData[8], m14 = this._rawData[12];\r\n var m21 = this._rawData[1], m22 = this._rawData[5], m23 = this._rawData[9], m24 = this._rawData[13];\r\n var m31 = this._rawData[2], m32 = this._rawData[6], m33 = this._rawData[10], m34 = this._rawData[14];\r\n var centerX = cx * m11 + cy * m12 + cz * m13 + m14;\r\n var centerY = cx * m21 + cy * m22 + cz * m23 + m24;\r\n var centerZ = cx * m31 + cy * m32 + cz * m33 + m34;\r\n var halfExtentsX = Math.max(Math.abs(hx * m11 + hy * m12 + hz * m13), Math.abs(-hx * m11 + hy * m12 + hz * m13), Math.abs(hx * m11 - hy * m12 + hz * m13), Math.abs(hx * m11 + hy * m12 - hz * m13));\r\n var halfExtentsY = Math.max(Math.abs(hx * m21 + hy * m22 + hz * m23), Math.abs(-hx * m21 + hy * m22 + hz * m23), Math.abs(hx * m21 - hy * m22 + hz * m23), Math.abs(hx * m21 + hy * m22 - hz * m23));\r\n var halfExtentsZ = Math.max(Math.abs(hx * m31 + hy * m32 + hz * m33), Math.abs(-hx * m31 + hy * m32 + hz * m33), Math.abs(hx * m31 - hy * m32 + hz * m33), Math.abs(hx * m31 + hy * m32 - hz * m33));\r\n target.width = halfExtentsX * 2;\r\n target.height = halfExtentsY * 2;\r\n target.depth = halfExtentsZ * 2;\r\n target.x = centerX - halfExtentsX;\r\n target.y = centerY - halfExtentsY;\r\n target.z = centerZ - halfExtentsZ;\r\n return target;\r\n };\r\n Matrix3D.prototype.transformVector = function (vector, target) {\r\n if (target === void 0) { target = null; }\r\n if (vector == null)\r\n throw new ArgumentError(\"ArgumentError, vector cannot be null\");\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n var w = vector.w;\r\n if (!target)\r\n target = new Vector3D();\r\n target.x = x * this._rawData[0] + y * this._rawData[4] + z * this._rawData[8] + w * this._rawData[12];\r\n target.y = x * this._rawData[1] + y * this._rawData[5] + z * this._rawData[9] + w * this._rawData[13];\r\n target.z = x * this._rawData[2] + y * this._rawData[6] + z * this._rawData[10] + w * this._rawData[14];\r\n target.w = x * this._rawData[3] + y * this._rawData[7] + z * this._rawData[11] + w * this._rawData[15];\r\n return target;\r\n };\r\n /**\r\n * Uses the transformation matrix to transform a Vector of Numbers from one coordinate space to another.\r\n */\r\n Matrix3D.prototype.transformVectors = function (vin, vout) {\r\n var i = 0;\r\n var x = 0, y = 0, z = 0;\r\n while (i + 3 <= vin.length) {\r\n x = vin[i];\r\n y = vin[i + 1];\r\n z = vin[i + 2];\r\n vout[i] = x * this._rawData[0] + y * this._rawData[4] + z * this._rawData[8] + this._rawData[12];\r\n vout[i + 1] = x * this._rawData[1] + y * this._rawData[5] + z * this._rawData[9] + this._rawData[13];\r\n vout[i + 2] = x * this._rawData[2] + y * this._rawData[6] + z * this._rawData[10] + this._rawData[14];\r\n i += 3;\r\n }\r\n };\r\n /**\r\n * Converts the current Matrix3D object to a matrix where the rows and columns are swapped.\r\n */\r\n Matrix3D.prototype.transpose = function () {\r\n var rawData = Matrix3D._tempMatrix._rawData;\r\n this.copyRawDataTo(rawData, 0, true);\r\n this._rawData[1] = rawData[1];\r\n this._rawData[2] = rawData[2];\r\n this._rawData[3] = rawData[3];\r\n this._rawData[4] = rawData[4];\r\n this._rawData[6] = rawData[6];\r\n this._rawData[7] = rawData[7];\r\n this._rawData[8] = rawData[8];\r\n this._rawData[9] = rawData[9];\r\n this._rawData[11] = rawData[11];\r\n this._rawData[12] = rawData[12];\r\n this._rawData[13] = rawData[13];\r\n this._rawData[14] = rawData[14];\r\n this._positionDirty = true;\r\n };\r\n Matrix3D.prototype.invalidatePosition = function () {\r\n this._positionDirty = true;\r\n };\r\n Matrix3D.prototype.toFixed = function (decimalPlace) {\r\n var magnitude = Math.pow(10, decimalPlace);\r\n return \"matrix3d(\" + Math.round(this._rawData[0] * magnitude) / magnitude + \",\" + Math.round(this._rawData[1] * magnitude) / magnitude + \",\" + Math.round(this._rawData[2] * magnitude) / magnitude + \",\" + Math.round(this._rawData[3] * magnitude) / magnitude + \",\" + Math.round(this._rawData[4] * magnitude) / magnitude + \",\" + Math.round(this._rawData[5] * magnitude) / magnitude + \",\" + Math.round(this._rawData[6] * magnitude) / magnitude + \",\" + Math.round(this._rawData[7] * magnitude) / magnitude + \",\" + Math.round(this._rawData[8] * magnitude) / magnitude + \",\" + Math.round(this._rawData[9] * magnitude) / magnitude + \",\" + Math.round(this._rawData[10] * magnitude) / magnitude + \",\" + Math.round(this._rawData[11] * magnitude) / magnitude + \",\" + Math.round(this._rawData[12] * magnitude) / magnitude + \",\" + Math.round(this._rawData[13] * magnitude) / magnitude + \",\" + Math.round(this._rawData[14] * magnitude) / magnitude + \",\" + Math.round(this._rawData[15] * magnitude) / magnitude + \")\";\r\n };\r\n Matrix3D.prototype.toString = function () {\r\n return \"matrix3d(\" + Math.round(this._rawData[0] * 1000) / 1000 + \",\" + Math.round(this._rawData[1] * 1000) / 1000 + \",\" + Math.round(this._rawData[2] * 1000) / 1000 + \",\" + Math.round(this._rawData[3] * 1000) / 1000 + \",\" + Math.round(this._rawData[4] * 1000) / 1000 + \",\" + Math.round(this._rawData[5] * 1000) / 1000 + \",\" + Math.round(this._rawData[6] * 1000) / 1000 + \",\" + Math.round(this._rawData[7] * 1000) / 1000 + \",\" + Math.round(this._rawData[8] * 1000) / 1000 + \",\" + Math.round(this._rawData[9] * 1000) / 1000 + \",\" + Math.round(this._rawData[10] * 1000) / 1000 + \",\" + Math.round(this._rawData[11] * 1000) / 1000 + \",\" + Math.round(this._rawData[12] * 1000) / 1000 + \",\" + Math.round(this._rawData[13] * 1000) / 1000 + \",\" + Math.round(this._rawData[14] * 1000) / 1000 + \",\" + Math.round(this._rawData[15] * 1000) / 1000 + \")\";\r\n };\r\n return Matrix3D;\r\n}());\r\nexport { Matrix3D };\r\n/**\r\n * A reference to a Matrix3D to be used as a temporary data container, preventing object creation.\r\n */\r\nMatrix3D.CALCULATION_MATRIX = new Matrix3D();\r\nMatrix3D._tempMatrix = new Matrix3D();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Matrix3D.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"../events/EventBase\";\r\nvar TransformEvent = (function (_super) {\r\n tslib_1.__extends(TransformEvent, _super);\r\n function TransformEvent(type, transform) {\r\n var _this = _super.call(this, type) || this;\r\n _this._transform = transform;\r\n return _this;\r\n }\r\n Object.defineProperty(TransformEvent.prototype, \"transform\", {\r\n /**\r\n *\r\n * @returns {Transform}\r\n */\r\n get: function () {\r\n return this._transform;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the event.\r\n * @return An exact duplicate of the current object.\r\n */\r\n TransformEvent.prototype.clone = function () {\r\n return new TransformEvent(this.type, this._transform);\r\n };\r\n return TransformEvent;\r\n}(EventBase));\r\nexport { TransformEvent };\r\n/**\r\n *\r\n */\r\nTransformEvent.INVALIDATE_MATRIX3D = \"invalidateMatrix3D\";\r\n/**\r\n *\r\n */\r\nTransformEvent.INVALIDATE_CONCATENATED_MATRIX3D = \"invalidateConcatenatedMatrix3D\";\r\n/**\r\n *\r\n */\r\nTransformEvent.UPDATE_CONCATENATED_MATRIX3D = \"updateConcatenatedMatrix3D\";\r\n/**\r\n *\r\n */\r\nTransformEvent.INVALIDATE_COLOR_TRANSFORM = \"invalidateColorTransform\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/TransformEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\nimport { Matrix3D } from \"../geom/Matrix3D\";\r\nimport { Vector3D } from \"../geom/Vector3D\";\r\nimport { TransformEvent } from \"../events/TransformEvent\";\r\nimport { ColorTransform } from \"./ColorTransform\";\r\n/**\r\n * The Transform class provides access to color adjustment properties and two-\r\n * or three-dimensional transformation objects that can be applied to a\r\n * display object. During the transformation, the color or the orientation and\r\n * position of a display object is adjusted(offset) from the current values\r\n * or coordinates to new values or coordinates. The Transform class also\r\n * collects data about color and two-dimensional matrix transformations that\r\n * are applied to a display object and all of its parent objects. You can\r\n * access these combined transformations through the\r\n * concatenatedColorTransform and concatenatedMatrix\r\n * properties.\r\n *\r\n *

To apply color transformations: create a ColorTransform object, set the\r\n * color adjustments using the object's methods and properties, and then\r\n * assign the colorTransformation property of the\r\n * transform property of the display object to the new\r\n * ColorTransformation object.

\r\n *\r\n *

To apply two-dimensional transformations: create a Matrix object, set\r\n * the matrix's two-dimensional transformation, and then assign the\r\n * transform.matrix property of the display object to the new\r\n * Matrix object.

\r\n *\r\n *

To apply three-dimensional transformations: start with a\r\n * three-dimensional display object. A three-dimensional display object has a\r\n * z property value other than zero. You do not need to create\r\n * the Matrix3D object. For all three-dimensional objects, a Matrix3D object\r\n * is created automatically when you assign a z value to a\r\n * display object. You can access the display object's Matrix3D object through\r\n * the display object's transform property. Using the methods of\r\n * the Matrix3D class, you can add to or modify the existing transformation\r\n * settings. Also, you can create a custom Matrix3D object, set the custom\r\n * Matrix3D object's transformation elements, and then assign the new Matrix3D\r\n * object to the display object using the transform.matrix\r\n * property.

\r\n *\r\n *

To modify a perspective projection of the stage or root object: use the\r\n * transform.matrix property of the root display object to gain\r\n * access to the PerspectiveProjection object. Or, apply different perspective\r\n * projection properties to a display object by setting the perspective\r\n * projection properties of the display object's parent. The child display\r\n * object inherits the new properties. Specifically, create a\r\n * PerspectiveProjection object and set its properties, then assign the\r\n * PerspectiveProjection object to the perspectiveProjection\r\n * property of the parent display object's transform property.\r\n * The specified projection transformation then applies to all the display\r\n * object's three-dimensional children.

\r\n *\r\n *

Since both PerspectiveProjection and Matrix3D objects perform\r\n * perspective transformations, do not assign both to a display object at the\r\n * same time. Use the PerspectiveProjection object for focal length and\r\n * projection center changes. For more control over the perspective\r\n * transformation, create a perspective projection Matrix3D object.

\r\n */\r\nvar Transform = (function (_super) {\r\n tslib_1.__extends(Transform, _super);\r\n function Transform(rawData, concatenatedMatrix3D) {\r\n if (rawData === void 0) { rawData = null; }\r\n if (concatenatedMatrix3D === void 0) { concatenatedMatrix3D = null; }\r\n var _this = _super.call(this) || this;\r\n _this._inverseConcatenatedMatrix3D = new Matrix3D();\r\n _this._rotation = new Vector3D();\r\n _this._skew = new Vector3D();\r\n _this._scale = new Vector3D(1, 1, 1);\r\n _this._rawData = rawData || new Float32Array(24);\r\n //create the view for matrix3D\r\n _this._matrix3D = new Matrix3D(new Float32Array(_this._rawData.buffer, 0, 16));\r\n //create the view for colorTransform\r\n _this._colorTransform = new ColorTransform(new Float32Array(_this._rawData.buffer, 64, 8));\r\n //create the concatenatedMatrix3D if required\r\n _this._concatenatedMatrix3D = concatenatedMatrix3D || _this._matrix3D;\r\n if (rawData == null) {\r\n _this._matrix3D.identity();\r\n _this._colorTransform.clear();\r\n }\r\n // Cached vector of transformation components used when\r\n // recomposing the transform matrix in updateTransform()\r\n _this._components = new Array(4);\r\n _this._components[1] = _this._rotation;\r\n _this._components[2] = _this._skew;\r\n _this._components[3] = _this._scale;\r\n _this.invalidateComponents();\r\n return _this;\r\n }\r\n Object.defineProperty(Transform.prototype, \"backVector\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._backVector)\r\n this._backVector = new Vector3D();\r\n this._matrix3D.copyColumnTo(2, this._backVector, true);\r\n return this._backVector;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"colorTransform\", {\r\n /**\r\n * A ColorTransform object containing values that universally adjust the\r\n * colors in the display object.\r\n *\r\n * @throws TypeError The colorTransform is null when being set\r\n */\r\n get: function () {\r\n return this._colorTransform;\r\n },\r\n set: function (val) {\r\n if (val) {\r\n var sourceData = val._rawData, targetData = this._colorTransform._rawData;\r\n targetData[0] = sourceData[0];\r\n targetData[1] = sourceData[1];\r\n targetData[2] = sourceData[2];\r\n targetData[3] = sourceData[3];\r\n targetData[4] = sourceData[4];\r\n targetData[5] = sourceData[5];\r\n targetData[6] = sourceData[6];\r\n targetData[7] = sourceData[7];\r\n }\r\n else {\r\n this._colorTransform.clear();\r\n }\r\n this.invalidateColorTransform();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"concatenatedMatrix3D\", {\r\n /**\r\n * A Matrix object representing the combined transformation matrixes of the\r\n * display object and all of its parent objects, back to the root level. If\r\n * different transformation matrixes have been applied at different levels,\r\n * all of those matrixes are concatenated into one matrix for this property.\r\n * Also, for resizeable SWF content running in the browser, this property\r\n * factors in the difference between stage coordinates and window coordinates\r\n * due to window resizing. Thus, the property converts local coordinates to\r\n * window coordinates, which may not be the same coordinate space as that of\r\n * the Scene.\r\n */\r\n get: function () {\r\n if (this._concatenatedMatrix3DDirty) {\r\n this._concatenatedMatrix3DDirty = false;\r\n this.dispatchEvent(this._updateConcatenatedMatrix3D || (this._updateConcatenatedMatrix3D = new TransformEvent(TransformEvent.UPDATE_CONCATENATED_MATRIX3D, this)));\r\n }\r\n return this._concatenatedMatrix3D;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"inverseConcatenatedMatrix3D\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (this._inverseConcatenatedMatrix3DDirty) {\r\n this._inverseConcatenatedMatrix3DDirty = false;\r\n this._inverseConcatenatedMatrix3D.copyFrom(this.concatenatedMatrix3D);\r\n this._inverseConcatenatedMatrix3D.invert();\r\n }\r\n return this._inverseConcatenatedMatrix3D;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Transform.prototype.append = function (value) {\r\n console.log(\"append not implemented yet in core/Transform\");\r\n };\r\n Object.defineProperty(Transform.prototype, \"downVector\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._downVector)\r\n this._downVector = new Vector3D();\r\n this._matrix3D.copyColumnTo(1, this._downVector, true);\r\n return this._downVector;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"forwardVector\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._forwardVector)\r\n this._forwardVector = new Vector3D();\r\n this._matrix3D.copyColumnTo(2, this._forwardVector);\r\n return this._forwardVector;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"leftVector\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._leftVector)\r\n this._leftVector = new Vector3D();\r\n this._matrix3D.copyColumnTo(0, this._backVector, true);\r\n return this._leftVector;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"matrix3D\", {\r\n /**\r\n * Provides access to the Matrix3D object of a three-dimensional display\r\n * object. The Matrix3D object represents a transformation matrix that\r\n * determines the display object's position and orientation. A Matrix3D\r\n * object can also perform perspective projection.\r\n *\r\n *

If the matrix property is set to a value(not\r\n * null), the matrix3D property is\r\n * null. And if the matrix3D property is set to a\r\n * value(not null), the matrix property is\r\n * null.

\r\n */\r\n get: function () {\r\n if (this._matrix3DDirty)\r\n this.updateMatrix3D();\r\n return this._matrix3D;\r\n },\r\n set: function (val) {\r\n var sourceData = val._rawData, targetData = this._matrix3D._rawData;\r\n targetData[0] = sourceData[0];\r\n targetData[1] = sourceData[1];\r\n targetData[2] = sourceData[2];\r\n targetData[3] = sourceData[3];\r\n targetData[4] = sourceData[4];\r\n targetData[5] = sourceData[5];\r\n targetData[6] = sourceData[6];\r\n targetData[7] = sourceData[7];\r\n targetData[8] = sourceData[8];\r\n targetData[9] = sourceData[9];\r\n targetData[10] = sourceData[10];\r\n targetData[11] = sourceData[11];\r\n targetData[12] = sourceData[12];\r\n targetData[13] = sourceData[13];\r\n targetData[14] = sourceData[14];\r\n targetData[15] = sourceData[15];\r\n this.invalidateComponents();\r\n this.invalidateConcatenatedMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"pixelBounds\", {\r\n /**\r\n * A Rectangle object that defines the bounding rectangle of the display\r\n * object on the stage.\r\n */\r\n get: function () {\r\n return this._pixelBounds;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"position\", {\r\n /**\r\n * Defines the position of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\r\n */\r\n get: function () {\r\n return this._matrix3D.position;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"rightVector\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._rightVector)\r\n this._rightVector = new Vector3D();\r\n this._matrix3D.copyColumnTo(0, this._rightVector);\r\n return this._rightVector;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Transform.prototype, \"rotation\", {\r\n /**\r\n * Defines the rotation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\r\n */\r\n get: function () {\r\n if (this._componentsDirty)\r\n this._updateComponents();\r\n return this._rotation;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Rotates the 3d object directly to a euler angle\r\n *\r\n * @param ax The angle in degrees of the rotation around the x axis.\r\n * @param ay The angle in degrees of the rotation around the y axis.\r\n * @param az The angle in degrees of the rotation around the z axis.\r\n */\r\n Transform.prototype.rotateTo = function (ax, ay, az) {\r\n if (this._componentsDirty)\r\n this._updateComponents();\r\n this._rotation.x = ax;\r\n this._rotation.y = ay;\r\n this._rotation.z = az;\r\n this.invalidateMatrix3D();\r\n };\r\n Object.defineProperty(Transform.prototype, \"scale\", {\r\n /**\r\n * Defines the scale of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\r\n */\r\n get: function () {\r\n if (this._componentsDirty)\r\n this._updateComponents();\r\n return this._scale;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Transform.prototype.scaleTo = function (sx, sy, sz) {\r\n if (this._componentsDirty)\r\n this._updateComponents();\r\n this._scale.x = sx;\r\n this._scale.y = sy;\r\n this._scale.z = sz;\r\n this.invalidateMatrix3D();\r\n };\r\n Object.defineProperty(Transform.prototype, \"skew\", {\r\n /**\r\n * Defines the scale of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\r\n */\r\n get: function () {\r\n if (this._componentsDirty)\r\n this._updateComponents();\r\n return this._skew;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Transform.prototype.skewTo = function (sx, sy, sz) {\r\n if (this._componentsDirty)\r\n this._updateComponents();\r\n this._skew.x = sx;\r\n this._skew.y = sy;\r\n this._skew.z = sz;\r\n this.invalidateMatrix3D();\r\n };\r\n Object.defineProperty(Transform.prototype, \"upVector\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._upVector)\r\n this._upVector = new Vector3D();\r\n this._matrix3D.copyColumnTo(1, this._upVector);\r\n return this._upVector;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Transform.prototype.copyRawDataTo = function (transform) {\r\n if (this._matrix3DDirty)\r\n this.updateMatrix3D();\r\n var targetData = transform._rawData;\r\n var sourceData = this._rawData;\r\n //Matrix3D data\r\n targetData[0] = sourceData[0];\r\n targetData[1] = sourceData[1];\r\n targetData[2] = sourceData[2];\r\n targetData[3] = sourceData[3];\r\n targetData[4] = sourceData[4];\r\n targetData[5] = sourceData[5];\r\n targetData[6] = sourceData[6];\r\n targetData[7] = sourceData[7];\r\n targetData[8] = sourceData[8];\r\n targetData[9] = sourceData[9];\r\n targetData[10] = sourceData[10];\r\n targetData[11] = sourceData[11];\r\n targetData[12] = sourceData[12];\r\n targetData[13] = sourceData[13];\r\n targetData[14] = sourceData[14];\r\n targetData[15] = sourceData[15];\r\n //ColorTransform data\r\n targetData[16] = sourceData[16];\r\n targetData[17] = sourceData[17];\r\n targetData[18] = sourceData[18];\r\n targetData[19] = sourceData[19];\r\n targetData[20] = sourceData[20];\r\n targetData[21] = sourceData[21];\r\n targetData[22] = sourceData[22];\r\n targetData[23] = sourceData[23];\r\n this.invalidateComponents();\r\n this.invalidateColorTransform();\r\n };\r\n Transform.prototype.clone = function () {\r\n var transform = new Transform();\r\n this.copyRawDataTo(transform);\r\n return transform;\r\n };\r\n Transform.prototype.dispose = function () {\r\n };\r\n /**\r\n * Moves the 3d object forwards along it's local z axis\r\n *\r\n * @param distance The length of the movement\r\n */\r\n Transform.prototype.moveForward = function (distance) {\r\n this.translateLocal(Vector3D.Z_AXIS, distance);\r\n };\r\n /**\r\n * Moves the 3d object backwards along it's local z axis\r\n *\r\n * @param distance The length of the movement\r\n */\r\n Transform.prototype.moveBackward = function (distance) {\r\n this.translateLocal(Vector3D.Z_AXIS, -distance);\r\n };\r\n /**\r\n * Moves the 3d object backwards along it's local x axis\r\n *\r\n * @param distance The length of the movement\r\n */\r\n Transform.prototype.moveLeft = function (distance) {\r\n this.translateLocal(Vector3D.X_AXIS, -distance);\r\n };\r\n /**\r\n * Moves the 3d object forwards along it's local x axis\r\n *\r\n * @param distance The length of the movement\r\n */\r\n Transform.prototype.moveRight = function (distance) {\r\n this.translateLocal(Vector3D.X_AXIS, distance);\r\n };\r\n /**\r\n * Moves the 3d object forwards along it's local y axis\r\n *\r\n * @param distance The length of the movement\r\n */\r\n Transform.prototype.moveUp = function (distance) {\r\n this.translateLocal(Vector3D.Y_AXIS, distance);\r\n };\r\n /**\r\n * Moves the 3d object backwards along it's local y axis\r\n *\r\n * @param distance The length of the movement\r\n */\r\n Transform.prototype.moveDown = function (distance) {\r\n this.translateLocal(Vector3D.Y_AXIS, -distance);\r\n };\r\n /**\r\n * Moves the 3d object directly to a point in space\r\n *\r\n * @param dx The amount of movement along the local x axis.\r\n * @param dy The amount of movement along the local y axis.\r\n * @param dz The amount of movement along the local z axis.\r\n */\r\n Transform.prototype.moveTo = function (dx, dy, dz) {\r\n this._matrix3D._rawData[12] = dx;\r\n this._matrix3D._rawData[13] = dy;\r\n this._matrix3D._rawData[14] = dz;\r\n this.invalidatePosition();\r\n };\r\n /**\r\n * Rotates the 3d object around it's local x-axis\r\n *\r\n * @param angle The amount of rotation in degrees\r\n */\r\n Transform.prototype.pitch = function (angle) {\r\n this.rotate(Vector3D.X_AXIS, angle);\r\n };\r\n /**\r\n * Rotates the 3d object around it's local z-axis\r\n *\r\n * @param angle The amount of rotation in degrees\r\n */\r\n Transform.prototype.roll = function (angle) {\r\n this.rotate(Vector3D.Z_AXIS, angle);\r\n };\r\n /**\r\n * Rotates the 3d object around it's local y-axis\r\n *\r\n * @param angle The amount of rotation in degrees\r\n */\r\n Transform.prototype.yaw = function (angle) {\r\n this.rotate(Vector3D.Y_AXIS, angle);\r\n };\r\n /**\r\n * Rotates the 3d object around an axis by a defined angle\r\n *\r\n * @param axis The vector defining the axis of rotation\r\n * @param angle The amount of rotation in degrees\r\n */\r\n Transform.prototype.rotate = function (axis, angle) {\r\n this.matrix3D.prependRotation(angle, axis);\r\n this.invalidateComponents();\r\n };\r\n /**\r\n * Moves the 3d object along a vector by a defined length\r\n *\r\n * @param axis The vector defining the axis of movement\r\n * @param distance The length of the movement\r\n */\r\n Transform.prototype.translate = function (axis, distance) {\r\n var x = axis.x, y = axis.y, z = axis.z;\r\n var len = distance / Math.sqrt(x * x + y * y + z * z);\r\n this.matrix3D.appendTranslation(x * len, y * len, z * len);\r\n this.invalidatePosition();\r\n };\r\n /**\r\n * Moves the 3d object along a vector by a defined length\r\n *\r\n * @param axis The vector defining the axis of movement\r\n * @param distance The length of the movement\r\n */\r\n Transform.prototype.translateLocal = function (axis, distance) {\r\n var x = axis.x, y = axis.y, z = axis.z;\r\n var len = distance / Math.sqrt(x * x + y * y + z * z);\r\n this.matrix3D.prependTranslation(x * len, y * len, z * len);\r\n this.invalidatePosition();\r\n };\r\n Transform.prototype.clearMatrix3D = function () {\r\n this._matrix3D.identity();\r\n this.invalidateComponents();\r\n };\r\n Transform.prototype.clearColorTransform = function () {\r\n if (!this._colorTransform)\r\n return;\r\n this._colorTransform.clear();\r\n this.invalidateColorTransform();\r\n };\r\n /**\r\n * Invalidates the 3D transformation matrix, causing it to be updated upon the next request\r\n *\r\n * @private\r\n */\r\n Transform.prototype.invalidateMatrix3D = function () {\r\n this._matrix3DDirty = true;\r\n this.dispatchEvent(this._invalidateMatrix3D || (this._invalidateMatrix3D = new TransformEvent(TransformEvent.INVALIDATE_MATRIX3D, this)));\r\n };\r\n Transform.prototype.invalidateComponents = function () {\r\n this.invalidatePosition();\r\n this._componentsDirty = true;\r\n };\r\n Transform.prototype.invalidateConcatenatedMatrix3D = function () {\r\n this._concatenatedMatrix3DDirty = true;\r\n this._inverseConcatenatedMatrix3DDirty = true;\r\n this.dispatchEvent(this._invalidateConcatenatedMatrix3D || (this._invalidateConcatenatedMatrix3D = new TransformEvent(TransformEvent.INVALIDATE_CONCATENATED_MATRIX3D, this)));\r\n };\r\n /**\r\n *\r\n */\r\n Transform.prototype.invalidatePosition = function () {\r\n this._matrix3D.invalidatePosition();\r\n this.dispatchEvent(this._invalidateMatrix3D || (this._invalidateMatrix3D = new TransformEvent(TransformEvent.INVALIDATE_MATRIX3D, this)));\r\n };\r\n Transform.prototype.invalidateColorTransform = function () {\r\n this.dispatchEvent(this._invalidateColorTransform || (this._invalidateColorTransform = new TransformEvent(TransformEvent.INVALIDATE_COLOR_TRANSFORM, this)));\r\n };\r\n /**\r\n *\r\n */\r\n Transform.prototype.updateMatrix3D = function () {\r\n this._matrix3D.recompose(this._components);\r\n this._matrix3DDirty = false;\r\n };\r\n Transform.prototype._updateComponents = function () {\r\n var elements = this._matrix3D.decompose();\r\n var vec;\r\n vec = elements[1];\r\n this._rotation.x = vec.x;\r\n this._rotation.y = vec.y;\r\n this._rotation.z = vec.z;\r\n vec = elements[2];\r\n this._skew.x = vec.x;\r\n this._skew.y = vec.y;\r\n this._skew.z = vec.z;\r\n vec = elements[3];\r\n this._scale.x = vec.x;\r\n this._scale.y = vec.y;\r\n this._scale.z = vec.z;\r\n this._componentsDirty = false;\r\n };\r\n return Transform;\r\n}(EventDispatcher));\r\nexport { Transform };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/Transform.js","import * as tslib_1 from \"tslib\";\r\nimport { ErrorBase } from \"../errors/ErrorBase\";\r\nvar DocumentError = (function (_super) {\r\n tslib_1.__extends(DocumentError, _super);\r\n function DocumentError(message, id) {\r\n if (message === void 0) { message = \"DocumentError\"; }\r\n if (id === void 0) { id = 0; }\r\n return _super.call(this, message, id) || this;\r\n }\r\n return DocumentError;\r\n}(ErrorBase));\r\nexport { DocumentError };\r\nDocumentError.DOCUMENT_DOES_NOT_EXIST = \"documentDoesNotExist\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/errors/DocumentError.js","import * as tslib_1 from \"tslib\";\r\nimport { ErrorBase } from \"../errors/ErrorBase\";\r\n/**\r\n * AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden\r\n * by a concrete subclass.\r\n */\r\nvar PartialImplementationError = (function (_super) {\r\n tslib_1.__extends(PartialImplementationError, _super);\r\n /**\r\n * Create a new AbstractMethodError.\r\n * @param message An optional message to override the default error message.\r\n * @param id The id of the error.\r\n */\r\n function PartialImplementationError(dependency, id) {\r\n if (dependency === void 0) { dependency = ''; }\r\n if (id === void 0) { id = 0; }\r\n return _super.call(this, \"PartialImplementationError - this function is in development. Required Dependency: \" + dependency, id) || this;\r\n }\r\n return PartialImplementationError;\r\n}(ErrorBase));\r\nexport { PartialImplementationError };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/errors/PartialImplementationError.js","import * as tslib_1 from \"tslib\";\r\nimport { ErrorBase } from \"../errors/ErrorBase\";\r\n/**\r\n * RangeError is thrown when an index is accessed out of range of the number of\r\n * available indices on an Array.\r\n */\r\nvar RangeError = (function (_super) {\r\n tslib_1.__extends(RangeError, _super);\r\n /**\r\n * Create a new RangeError.\r\n *\r\n * @param message An optional message to override the default error message.\r\n * @param id The id of the error.\r\n */\r\n function RangeError(message, id) {\r\n if (message === void 0) { message = null; }\r\n if (id === void 0) { id = 0; }\r\n return _super.call(this, message || \"RangeError\", id) || this;\r\n }\r\n return RangeError;\r\n}(ErrorBase));\r\nexport { RangeError };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/errors/RangeError.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"../events/EventBase\";\r\nvar LoaderEvent = (function (_super) {\r\n tslib_1.__extends(LoaderEvent, _super);\r\n /**\r\n * Create a new LoaderEvent object.\r\n *\r\n * @param type The event type.\r\n * @param url The url of the loaded resource.\r\n * @param assets The assets of the loaded resource.\r\n */\r\n function LoaderEvent(type, url, content, assets) {\r\n if (url === void 0) { url = null; }\r\n if (content === void 0) { content = null; }\r\n if (assets === void 0) { assets = null; }\r\n var _this = _super.call(this, type) || this;\r\n _this._url = url;\r\n _this._content = content;\r\n _this._assets = assets;\r\n return _this;\r\n }\r\n Object.defineProperty(LoaderEvent.prototype, \"content\", {\r\n /**\r\n * The content returned if the resource has been loaded inside a Loader object.\r\n */\r\n get: function () {\r\n return this._content;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderEvent.prototype, \"url\", {\r\n /**\r\n * The url of the loaded resource.\r\n */\r\n get: function () {\r\n return this._url;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderEvent.prototype, \"assets\", {\r\n /**\r\n * The error string on loadError.\r\n */\r\n get: function () {\r\n return this._assets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the current event.\r\n * @return An exact duplicate of the current event.\r\n */\r\n LoaderEvent.prototype.clone = function () {\r\n return new LoaderEvent(this.type, this._url, this._content, this._assets);\r\n };\r\n return LoaderEvent;\r\n}(EventBase));\r\nexport { LoaderEvent };\r\n/**\r\n * Dispatched when the loading of a session and all of its dependencies is complete.\r\n */\r\nLoaderEvent.LOAD_COMPLETE = \"loadComplete\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/LoaderEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"../events/EventBase\";\r\nvar ParserEvent = (function (_super) {\r\n tslib_1.__extends(ParserEvent, _super);\r\n function ParserEvent(type, message) {\r\n if (message === void 0) { message = ''; }\r\n var _this = _super.call(this, type) || this;\r\n _this._message = message;\r\n return _this;\r\n }\r\n Object.defineProperty(ParserEvent.prototype, \"message\", {\r\n /**\r\n * Additional human-readable message. Usually supplied for ParserEvent.PARSE_ERROR events.\r\n */\r\n get: function () {\r\n return this._message;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ParserEvent.prototype.clone = function () {\r\n return new ParserEvent(this.type, this._message);\r\n };\r\n return ParserEvent;\r\n}(EventBase));\r\nexport { ParserEvent };\r\n/**\r\n * Dispatched when parsing of an asset completed.\r\n */\r\nParserEvent.PARSE_COMPLETE = 'parseComplete';\r\n/**\r\n * Dispatched when an error occurs while parsing the data (e.g. because it's\r\n * incorrectly formatted.)\r\n */\r\nParserEvent.PARSE_ERROR = 'parseError';\r\n/**\r\n * Dispatched when a parser is ready to have dependencies retrieved and resolved.\r\n * This is an internal event that should rarely (if ever) be listened for by\r\n * external classes.\r\n */\r\nParserEvent.READY_FOR_DEPENDENCIES = 'readyForDependencies';\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/ParserEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"../events/EventBase\";\r\nvar ProjectionEvent = (function (_super) {\r\n tslib_1.__extends(ProjectionEvent, _super);\r\n function ProjectionEvent(type, projection) {\r\n var _this = _super.call(this, type) || this;\r\n _this._projection = projection;\r\n return _this;\r\n }\r\n Object.defineProperty(ProjectionEvent.prototype, \"projection\", {\r\n get: function () {\r\n return this._projection;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ProjectionEvent;\r\n}(EventBase));\r\nexport { ProjectionEvent };\r\nProjectionEvent.MATRIX_CHANGED = \"matrixChanged\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/ProjectionEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"../events/EventBase\";\r\nvar TimerEvent = (function (_super) {\r\n tslib_1.__extends(TimerEvent, _super);\r\n function TimerEvent(type) {\r\n return _super.call(this, type) || this;\r\n }\r\n return TimerEvent;\r\n}(EventBase));\r\nexport { TimerEvent };\r\n/**\r\n *\r\n */\r\nTimerEvent.TIMER = \"timer\";\r\n/**\r\n *\r\n */\r\nTimerEvent.TIMER_COMPLETE = \"timerComplete\";\r\nexport default TimerEvent;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/TimerEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"../events/EventBase\";\r\nvar URLLoaderEvent = (function (_super) {\r\n tslib_1.__extends(URLLoaderEvent, _super);\r\n function URLLoaderEvent(type, urlLoader) {\r\n var _this = _super.call(this, type) || this;\r\n _this._urlLoader = urlLoader;\r\n return _this;\r\n }\r\n Object.defineProperty(URLLoaderEvent.prototype, \"urlLoader\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._urlLoader;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n URLLoaderEvent.prototype.clone = function () {\r\n return new URLLoaderEvent(this.type, this._urlLoader);\r\n };\r\n return URLLoaderEvent;\r\n}(EventBase));\r\nexport { URLLoaderEvent };\r\nURLLoaderEvent.HTTP_STATUS = \"httpStatus\";\r\nURLLoaderEvent.LOAD_ERROR = \"loadError\";\r\nURLLoaderEvent.LOAD_PROGRESS = \"loadProgress\";\r\nURLLoaderEvent.LOAD_START = \"loadStart\";\r\nURLLoaderEvent.LOAD_COMPLETE = \"loadComplete\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/URLLoaderEvent.js","/**\r\n * The Point object represents a location in a two-dimensional coordinate\r\n * system, where x represents the horizontal axis and y\r\n * represents the vertical axis.\r\n *\r\n *

The following code creates a point at(0,0):

\r\n *\r\n *

Methods and properties of the following classes use Point objects:

\r\n *\r\n * \r\n *\r\n *

You can use the new Point() constructor to create a Point\r\n * object.

\r\n */\r\nvar Point = (function () {\r\n /**\r\n * Creates a new point. If you pass no parameters to this method, a point is\r\n * created at(0,0).\r\n *\r\n * @param x The horizontal coordinate.\r\n * @param y The vertical coordinate.\r\n */\r\n function Point(x, y) {\r\n if (x === void 0) { x = 0; }\r\n if (y === void 0) { y = 0; }\r\n this.x = x;\r\n this.y = y;\r\n }\r\n Object.defineProperty(Point.prototype, \"length\", {\r\n /**\r\n * The length of the line segment from(0,0) to this point.\r\n */\r\n get: function () {\r\n return Math.sqrt(this.x * this.x + this.y * this.y);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds the coordinates of another point to the coordinates of this point to\r\n * create a new point.\r\n *\r\n * @param v The point to be added.\r\n * @return The new point.\r\n */\r\n Point.prototype.add = function (v) {\r\n return new Point(this.x + v.x, this.y + v.y);\r\n };\r\n /**\r\n * Creates a copy of this Point object.\r\n *\r\n * @return The new Point object.\r\n */\r\n Point.prototype.clone = function () {\r\n return new Point(this.x, this.y);\r\n };\r\n Point.prototype.copyFrom = function (sourcePoint) {\r\n };\r\n /**\r\n * Determines whether two points are equal. Two points are equal if they have\r\n * the same x and y values.\r\n *\r\n * @param toCompare The point to be compared.\r\n * @return A value of true if the object is equal to this Point\r\n * object; false if it is not equal.\r\n */\r\n Point.prototype.equals = function (toCompare) {\r\n return (this.x == toCompare.x && this.y == toCompare.y);\r\n };\r\n /**\r\n * Scales the line segment between(0,0) and the current point to a set\r\n * length.\r\n *\r\n * @param thickness The scaling value. For example, if the current point is\r\n * (0,5), and you normalize it to 1, the point returned is\r\n * at(0,1).\r\n */\r\n Point.prototype.normalize = function (thickness) {\r\n if (thickness === void 0) { thickness = 1; }\r\n var len = this.length;\r\n if (len) {\r\n var invLength = thickness / len;\r\n this.x *= invLength;\r\n this.y *= invLength;\r\n }\r\n };\r\n /**\r\n * Offsets the Point object by the specified amount. The value of\r\n * dx is added to the original value of x to create the\r\n * new x value. The value of dy is added to the original\r\n * value of y to create the new y value.\r\n *\r\n * @param dx The amount by which to offset the horizontal coordinate,\r\n * x.\r\n * @param dy The amount by which to offset the vertical coordinate, y.\r\n */\r\n Point.prototype.offset = function (dx, dy) {\r\n this.x += dx;\r\n this.y += dy;\r\n };\r\n Point.prototype.setTo = function (xa, ya) {\r\n this.x = xa;\r\n this.y = ya;\r\n };\r\n /**\r\n * Subtracts the coordinates of another point from the coordinates of this\r\n * point to create a new point.\r\n *\r\n * @param v The point to be subtracted.\r\n * @return The new point.\r\n */\r\n Point.prototype.subtract = function (v) {\r\n return new Point(this.x - v.x, this.y - v.y);\r\n };\r\n /**\r\n * Returns a string that contains the values of the x and y\r\n * coordinates. The string has the form \"(x=x,\r\n * y=y)\", so calling the toString() method for a\r\n * point at 23,17 would return \"(x=23, y=17)\".\r\n *\r\n * @return The string representation of the coordinates.\r\n */\r\n Point.prototype.toString = function () {\r\n return \"[Point] (x=\" + this.x + \", y=\" + this.y + \")\";\r\n };\r\n /**\r\n * Returns the distance between pt1 and pt2.\r\n *\r\n * @param pt1 The first point.\r\n * @param pt2 The second point.\r\n * @return The distance between the first and second points.\r\n */\r\n Point.distance = function (pt1, pt2) {\r\n var dx = pt2.x - pt1.x;\r\n var dy = pt2.y - pt1.y;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n };\r\n /**\r\n * Determines a point between two specified points. The parameter\r\n * f determines where the new interpolated point is located\r\n * relative to the two end points specified by parameters pt1\r\n * and pt2. The closer the value of the parameter f\r\n * is to 1.0, the closer the interpolated point is to the first\r\n * point(parameter pt1). The closer the value of the parameter\r\n * f is to 0, the closer the interpolated point is to the second\r\n * point(parameter pt2).\r\n *\r\n * @param pt1 The first point.\r\n * @param pt2 The second point.\r\n * @param f The level of interpolation between the two points. Indicates\r\n * where the new point will be, along the line between\r\n * pt1 and pt2. If f=1,\r\n * pt1 is returned; if f=0,\r\n * pt2 is returned.\r\n * @return The new, interpolated point.\r\n */\r\n Point.interpolate = function (pt1, pt2, f) {\r\n return new Point(pt2.x + (pt1.x - pt2.x) * f, pt2.y + (pt1.y - pt2.y) * f);\r\n };\r\n /**\r\n * Converts a pair of polar coordinates to a Cartesian point coordinate.\r\n *\r\n * @param len The length coordinate of the polar pair.\r\n * @param angle The angle, in radians, of the polar pair.\r\n * @return The Cartesian point.\r\n */\r\n Point.polar = function (len, angle) {\r\n return new Point(len * Math.cos(angle), len * Math.sin(angle));\r\n };\r\n return Point;\r\n}());\r\nexport { Point };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Point.js","import { Point } from \"../geom/Point\";\r\nimport { ArgumentError } from \"../errors/ArgumentError\";\r\n/**\r\n * The Matrix export class represents a transformation matrix that determines how to\r\n * map points from one coordinate space to another. You can perform various\r\n * graphical transformations on a display object by setting the properties of\r\n * a Matrix object, applying that Matrix object to the matrix\r\n * property of a Transform object, and then applying that Transform object as\r\n * the transform property of the display object. These\r\n * transformation functions include translation(x and y\r\n * repositioning), rotation, scaling, and skewing.\r\n *\r\n *

Together these types of transformations are known as affine\r\n * transformations. Affine transformations preserve the straightness of\r\n * lines while transforming, so that parallel lines stay parallel.

\r\n *\r\n *

To apply a transformation matrix to a display object, you create a\r\n * Transform object, set its matrix property to the\r\n * transformation matrix, and then set the transform property of\r\n * the display object to the Transform object. Matrix objects are also used as\r\n * parameters of some methods, such as the following:

\r\n *\r\n * \r\n *\r\n *

A transformation matrix object is a 3 x 3 matrix with the following\r\n * contents:

\r\n *\r\n *

In traditional transformation matrixes, the u,\r\n * v, and w properties provide extra capabilities.\r\n * The Matrix export class can only operate in two-dimensional space, so it always\r\n * assumes that the property values u and v are 0.0,\r\n * and that the property value w is 1.0. The effective values of\r\n * the matrix are as follows:

\r\n *\r\n *

You can get and set the values of all six of the other properties in a\r\n * Matrix object: a, b, c,\r\n * d, tx, and ty.

\r\n *\r\n *

The Matrix export class supports the four major types of transformations:\r\n * translation, scaling, rotation, and skewing. You can set three of these\r\n * transformations by using specialized methods, as described in the following\r\n * table:

\r\n *\r\n *

Each transformation function alters the current matrix properties so\r\n * that you can effectively combine multiple transformations. To do this, you\r\n * call more than one transformation function before applying the matrix to\r\n * its display object target(by using the transform property of\r\n * that display object).

\r\n *\r\n *

Use the new Matrix() constructor to create a Matrix object\r\n * before you can call the methods of the Matrix object.

\r\n */\r\nvar Matrix = (function () {\r\n function Matrix(a, b, c, d, tx, ty) {\r\n if (a === void 0) { a = 1; }\r\n if (b === void 0) { b = 0; }\r\n if (c === void 0) { c = 0; }\r\n if (d === void 0) { d = 1; }\r\n if (tx === void 0) { tx = 0; }\r\n if (ty === void 0) { ty = 0; }\r\n this.rawData = new Float32Array(6);\r\n if (a instanceof Float32Array) {\r\n this.copyRawDataFrom(a);\r\n }\r\n else {\r\n this.a = Number(a);\r\n this.b = b;\r\n this.c = c;\r\n this.d = d;\r\n this.tx = tx;\r\n this.ty = ty;\r\n }\r\n }\r\n Object.defineProperty(Matrix.prototype, \"a\", {\r\n /**\r\n * The value that affects the positioning of pixels along the x axis\r\n * when scaling or rotating an image.\r\n */\r\n get: function () {\r\n return this.rawData[0];\r\n },\r\n set: function (value) {\r\n this.rawData[0] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Matrix.prototype, \"b\", {\r\n /**\r\n * The value that affects the positioning of pixels along the y axis\r\n * when rotating or skewing an image.\r\n */\r\n get: function () {\r\n return this.rawData[2];\r\n },\r\n set: function (value) {\r\n this.rawData[2] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Matrix.prototype, \"c\", {\r\n /**\r\n * The value that affects the positioning of pixels along the x axis\r\n * when rotating or skewing an image.\r\n */\r\n get: function () {\r\n return this.rawData[1];\r\n },\r\n set: function (value) {\r\n this.rawData[1] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Matrix.prototype, \"d\", {\r\n /**\r\n * The value that affects the positioning of pixels along the y axis\r\n * when scaling or rotating an image.\r\n */\r\n get: function () {\r\n return this.rawData[3];\r\n },\r\n set: function (value) {\r\n this.rawData[3] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Matrix.prototype, \"tx\", {\r\n /**\r\n * The distance by which to translate each point along the x axis.\r\n */\r\n get: function () {\r\n return this.rawData[4];\r\n },\r\n set: function (value) {\r\n this.rawData[4] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Matrix.prototype, \"ty\", {\r\n /**\r\n * The distance by which to translate each point along the y axis.\r\n */\r\n get: function () {\r\n return this.rawData[5];\r\n },\r\n set: function (value) {\r\n this.rawData[5] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Matrix.prototype.copyRawDataFrom = function (vector, index) {\r\n if (index === void 0) { index = 0; }\r\n for (var c = 0; c < 6; c++)\r\n this.rawData[c] = vector[c + index];\r\n };\r\n /**\r\n * Returns a new Matrix object that is a clone of this matrix, with an exact\r\n * copy of the contained object.\r\n *\r\n * @return A Matrix object.\r\n */\r\n Matrix.prototype.clone = function () {\r\n return new Matrix(this.a, this.b, this.c, this.d, this.tx, this.ty);\r\n };\r\n /**\r\n * Concatenates a matrix with the current matrix, effectively combining the\r\n * geometric effects of the two. In mathematical terms, concatenating two\r\n * matrixes is the same as combining them using matrix multiplication.\r\n *\r\n *

For example, if matrix m1 scales an object by a factor of\r\n * four, and matrix m2 rotates an object by 1.5707963267949\r\n * radians(Math.PI/2), then m1.concat(m2)\r\n * transforms m1 into a matrix that scales an object by a factor\r\n * of four and rotates the object by Math.PI/2 radians.

\r\n *\r\n *

This method replaces the source matrix with the concatenated matrix. If\r\n * you want to concatenate two matrixes without altering either of the two\r\n * source matrixes, first copy the source matrix by using the\r\n * clone() method, as shown in the Class Examples section.

\r\n *\r\n * @param matrix The matrix to be concatenated to the source matrix.\r\n */\r\n Matrix.prototype.concat = function (matrix) {\r\n var a1 = this.a * matrix.a + this.b * matrix.c;\r\n this.b = this.a * matrix.b + this.b * matrix.d;\r\n this.a = a1;\r\n var c1 = this.c * matrix.a + this.d * matrix.c;\r\n this.d = this.c * matrix.b + this.d * matrix.d;\r\n this.c = c1;\r\n var tx1 = this.tx * matrix.a + this.ty * matrix.c + matrix.tx;\r\n this.ty = this.tx * matrix.b + this.ty * matrix.d + matrix.ty;\r\n this.tx = tx1;\r\n };\r\n /**\r\n * Copies a Vector3D object into specific column of the calling Matrix3D\r\n * object.\r\n *\r\n * @param column The column from which to copy the data from.\r\n * @param vector3D The Vector3D object from which to copy the data.\r\n */\r\n Matrix.prototype.copyColumnFrom = function (column, vector3D) {\r\n if (column > 2) {\r\n throw \"Column \" + column + \" out of bounds (2)\";\r\n }\r\n else if (column == 0) {\r\n this.a = vector3D.x;\r\n this.c = vector3D.y;\r\n }\r\n else if (column == 1) {\r\n this.b = vector3D.x;\r\n this.d = vector3D.y;\r\n }\r\n else {\r\n this.tx = vector3D.x;\r\n this.ty = vector3D.y;\r\n }\r\n };\r\n /**\r\n * Copies specific column of the calling Matrix object into the Vector3D\r\n * object. The w element of the Vector3D object will not be changed.\r\n *\r\n * @param column The column from which to copy the data from.\r\n * @param vector3D The Vector3D object from which to copy the data.\r\n */\r\n Matrix.prototype.copyColumnTo = function (column, vector3D) {\r\n if (column > 2) {\r\n throw new ArgumentError(\"ArgumentError, Column \" + column + \" out of bounds [0, ..., 2]\");\r\n }\r\n else if (column == 0) {\r\n vector3D.x = this.a;\r\n vector3D.y = this.c;\r\n vector3D.z = 0;\r\n }\r\n else if (column == 1) {\r\n vector3D.x = this.b;\r\n vector3D.y = this.d;\r\n vector3D.z = 0;\r\n }\r\n else {\r\n vector3D.x = this.tx;\r\n vector3D.y = this.ty;\r\n vector3D.z = 1;\r\n }\r\n };\r\n /**\r\n * Copies all of the matrix data from the source Point object into the\r\n * calling Matrix object.\r\n *\r\n * @param sourceMatrix The Matrix object from which to copy the data.\r\n */\r\n Matrix.prototype.copyFrom = function (sourceMatrix) {\r\n this.a = sourceMatrix.a;\r\n this.b = sourceMatrix.b;\r\n this.c = sourceMatrix.c;\r\n this.d = sourceMatrix.d;\r\n this.tx = sourceMatrix.tx;\r\n this.ty = sourceMatrix.ty;\r\n };\r\n /**\r\n * Copies a Vector3D object into specific row of the calling Matrix object.\r\n *\r\n * @param row The row from which to copy the data from.\r\n * @param vector3D The Vector3D object from which to copy the data.\r\n */\r\n Matrix.prototype.copyRowFrom = function (row, vector3D) {\r\n if (row > 2) {\r\n throw new ArgumentError(\"ArgumentError, Row \" + row + \" out of bounds [0, ..., 2]\");\r\n }\r\n else if (row == 0) {\r\n this.a = vector3D.x;\r\n this.c = vector3D.y;\r\n }\r\n else if (row == 1) {\r\n this.b = vector3D.x;\r\n this.d = vector3D.y;\r\n }\r\n else {\r\n this.tx = vector3D.x;\r\n this.ty = vector3D.y;\r\n }\r\n };\r\n /**\r\n * Copies specific row of the calling Matrix object into the Vector3D object.\r\n * The w element of the Vector3D object will not be changed.\r\n *\r\n * @param row The row from which to copy the data from.\r\n * @param vector3D The Vector3D object from which to copy the data.\r\n */\r\n Matrix.prototype.copyRowTo = function (row, vector3D) {\r\n if (row > 2) {\r\n throw new ArgumentError(\"ArgumentError, Row \" + row + \" out of bounds [0, ..., 2]\");\r\n }\r\n else if (row == 0) {\r\n vector3D.x = this.a;\r\n vector3D.y = this.b;\r\n vector3D.z = this.tx;\r\n }\r\n else if (row == 1) {\r\n vector3D.x = this.c;\r\n vector3D.y = this.d;\r\n vector3D.z = this.ty;\r\n }\r\n else {\r\n vector3D.setTo(0, 0, 1);\r\n }\r\n };\r\n /**\r\n * Includes parameters for scaling, rotation, and translation. When applied\r\n * to a matrix it sets the matrix's values based on those parameters.\r\n *\r\n *

Using the createBox() method lets you obtain the same\r\n * matrix as you would if you applied the identity(),\r\n * rotate(), scale(), and translate()\r\n * methods in succession. For example, mat1.createBox(2,2,Math.PI/4,\r\n * 100, 100) has the same effect as the following:

\r\n *\r\n * @param scaleX The factor by which to scale horizontally.\r\n * @param scaleY The factor by which scale vertically.\r\n * @param rotation The amount to rotate, in radians.\r\n * @param tx The number of pixels to translate(move) to the right\r\n * along the x axis.\r\n * @param ty The number of pixels to translate(move) down along the\r\n * y axis.\r\n */\r\n Matrix.prototype.createBox = function (scaleX, scaleY, rotation, tx, ty) {\r\n if (rotation === void 0) { rotation = 0; }\r\n if (tx === void 0) { tx = 0; }\r\n if (ty === void 0) { ty = 0; }\r\n this.a = scaleX;\r\n this.d = scaleY;\r\n this.b = rotation;\r\n this.tx = tx;\r\n this.ty = ty;\r\n };\r\n /**\r\n * Creates the specific style of matrix expected by the\r\n * beginGradientFill() and lineGradientStyle()\r\n * methods of the Graphics class. Width and height are scaled to a\r\n * scaleX/scaleY pair and the\r\n * tx/ty values are offset by half the width and\r\n * height.\r\n *\r\n *

For example, consider a gradient with the following\r\n * characteristics:

\r\n *\r\n * \r\n *\r\n *

The following illustrations show gradients in which the matrix was\r\n * defined using the createGradientBox() method with different\r\n * parameter settings:

\r\n *\r\n * @param width The width of the gradient box.\r\n * @param height The height of the gradient box.\r\n * @param rotation The amount to rotate, in radians.\r\n * @param tx The distance, in pixels, to translate to the right along\r\n * the x axis. This value is offset by half of the\r\n * width parameter.\r\n * @param ty The distance, in pixels, to translate down along the\r\n * y axis. This value is offset by half of the\r\n * height parameter.\r\n */\r\n Matrix.prototype.createGradientBox = function (width, height, rotation, tx, ty) {\r\n if (rotation === void 0) { rotation = 0; }\r\n if (tx === void 0) { tx = 0; }\r\n if (ty === void 0) { ty = 0; }\r\n this.a = width / 1638.4;\r\n this.d = height / 1638.4;\r\n if (rotation != 0.0) {\r\n var cos = Math.cos(rotation);\r\n var sin = Math.sin(rotation);\r\n this.b = sin * this.d;\r\n this.c = -sin * this.a;\r\n this.a *= cos;\r\n this.d *= cos;\r\n }\r\n else {\r\n this.b = this.c = 0;\r\n }\r\n this.tx = tx + width / 2;\r\n this.ty = ty + height / 2;\r\n };\r\n /**\r\n * Given a point in the pretransform coordinate space, returns the\r\n * coordinates of that point after the transformation occurs. Unlike the\r\n * standard transformation applied using the transformPoint()\r\n * method, the deltaTransformPoint() method's transformation\r\n * does not consider the translation parameters tx and\r\n * ty.\r\n *\r\n * @param point The point for which you want to get the result of the matrix\r\n * transformation.\r\n * @return The point resulting from applying the matrix transformation.\r\n */\r\n Matrix.prototype.deltaTransformPoint = function (point) {\r\n return new Point(point.x * this.a + point.y * this.c, point.x * this.b + point.y * this.d);\r\n };\r\n /**\r\n * Sets each matrix property to a value that causes a null transformation. An\r\n * object transformed by applying an identity matrix will be identical to the\r\n * original.\r\n *\r\n *

After calling the identity() method, the resulting matrix\r\n * has the following properties: a=1, b=0,\r\n * c=0, d=1, tx=0,\r\n * ty=0.

\r\n *\r\n *

In matrix notation, the identity matrix looks like this:

\r\n *\r\n */\r\n Matrix.prototype.identity = function () {\r\n this.a = 1;\r\n this.b = 0;\r\n this.c = 0;\r\n this.d = 1;\r\n this.tx = 0;\r\n this.ty = 0;\r\n };\r\n /**\r\n * Performs the opposite transformation of the original matrix. You can apply\r\n * an inverted matrix to an object to undo the transformation performed when\r\n * applying the original matrix.\r\n */\r\n Matrix.prototype.invert = function () {\r\n var norm = this.a * this.d - this.b * this.c;\r\n if (norm == 0) {\r\n this.a = this.b = this.c = this.d = 0;\r\n this.tx = -this.tx;\r\n this.ty = -this.ty;\r\n }\r\n else {\r\n norm = 1.0 / norm;\r\n var a1 = this.d * norm;\r\n this.d = this.a * norm;\r\n this.a = a1;\r\n this.b *= -norm;\r\n this.c *= -norm;\r\n var tx1 = -this.a * this.tx - this.c * this.ty;\r\n this.ty = -this.b * this.tx - this.d * this.ty;\r\n this.tx = tx1;\r\n }\r\n };\r\n /**\r\n * Returns a new Matrix object that is a clone of this matrix, with an exact\r\n * copy of the contained object.\r\n *\r\n * @param matrix The matrix for which you want to get the result of the matrix\r\n * transformation.\r\n * @return A Matrix object.\r\n */\r\n Matrix.prototype.multiply = function (matrix) {\r\n var result = new Matrix();\r\n result.a = this.a * matrix.a + this.b * matrix.c;\r\n result.b = this.a * matrix.b + this.b * matrix.d;\r\n result.c = this.c * matrix.a + this.d * matrix.c;\r\n result.d = this.c * matrix.b + this.d * matrix.d;\r\n result.tx = this.tx * matrix.a + this.ty * matrix.c + matrix.tx;\r\n result.ty = this.tx * matrix.b + this.ty * matrix.d + matrix.ty;\r\n return result;\r\n };\r\n /**\r\n * Applies a rotation transformation to the Matrix object.\r\n *\r\n *

The rotate() method alters the a,\r\n * b, c, and d properties of the\r\n * Matrix object. In matrix notation, this is the same as concatenating the\r\n * current matrix with the following:

\r\n *\r\n * @param angle The rotation angle in radians.\r\n */\r\n Matrix.prototype.rotate = function (angle) {\r\n var cos = Math.cos(angle);\r\n var sin = Math.sin(angle);\r\n var a1 = this.a * cos - this.b * sin;\r\n this.b = this.a * sin + this.b * cos;\r\n this.a = a1;\r\n var c1 = this.c * cos - this.d * sin;\r\n this.d = this.c * sin + this.d * cos;\r\n this.c = c1;\r\n var tx1 = this.tx * cos - this.ty * sin;\r\n this.ty = this.tx * sin + this.ty * cos;\r\n this.tx = tx1;\r\n };\r\n /**\r\n * Applies a scaling transformation to the matrix. The x axis is\r\n * multiplied by sx, and the y axis it is multiplied by\r\n * sy.\r\n *\r\n *

The scale() method alters the a and\r\n * d properties of the Matrix object. In matrix notation, this\r\n * is the same as concatenating the current matrix with the following\r\n * matrix:

\r\n *\r\n * @param sx A multiplier used to scale the object along the x axis.\r\n * @param sy A multiplier used to scale the object along the y axis.\r\n */\r\n Matrix.prototype.scale = function (sx, sy) {\r\n this.a *= sx;\r\n this.b *= sy;\r\n this.c *= sx;\r\n this.d *= sy;\r\n this.tx *= sx;\r\n this.ty *= sy;\r\n };\r\n /**\r\n * Sets the members of Matrix to the specified values.\r\n *\r\n * @param a The value that affects the positioning of pixels along the\r\n * x axis when scaling or rotating an image.\r\n * @param b The value that affects the positioning of pixels along the\r\n * y axis when rotating or skewing an image.\r\n * @param c The value that affects the positioning of pixels along the\r\n * x axis when rotating or skewing an image.\r\n * @param d The value that affects the positioning of pixels along the\r\n * y axis when scaling or rotating an image..\r\n * @param tx The distance by which to translate each point along the x\r\n * axis.\r\n * @param ty The distance by which to translate each point along the y\r\n * axis.\r\n */\r\n Matrix.prototype.setTo = function (a, b, c, d, tx, ty) {\r\n this.a = a;\r\n this.b = b;\r\n this.c = c;\r\n this.d = d;\r\n this.tx = tx;\r\n this.ty = ty;\r\n };\r\n /**\r\n * Returns a text value listing the properties of the Matrix object.\r\n *\r\n * @return A string containing the values of the properties of the Matrix\r\n * object: a, b, c,\r\n * d, tx, and ty.\r\n */\r\n Matrix.prototype.toString = function () {\r\n return \"[Matrix] (a=\" + this.a + \", b=\" + this.b + \", c=\" + this.c + \", d=\" + this.d + \", tx=\" + this.tx + \", ty=\" + this.ty + \")\";\r\n };\r\n /**\r\n * Returns the result of applying the geometric transformation represented by\r\n * the Matrix object to the specified point.\r\n *\r\n * @param point The point for which you want to get the result of the Matrix\r\n * transformation.\r\n * @return The point resulting from applying the Matrix transformation.\r\n */\r\n Matrix.prototype.transformPoint = function (point) {\r\n return new Point(point.x * this.a + point.y * this.c + this.tx, point.x * this.b + point.y * this.d + this.ty);\r\n };\r\n /**\r\n * Translates the matrix along the x and y axes, as specified\r\n * by the dx and dy parameters.\r\n *\r\n * @param dx The amount of movement along the x axis to the right, in\r\n * pixels.\r\n * @param dy The amount of movement down along the y axis, in pixels.\r\n */\r\n Matrix.prototype.translate = function (dx, dy) {\r\n this.tx += dx;\r\n this.ty += dy;\r\n };\r\n return Matrix;\r\n}());\r\nexport { Matrix };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Matrix.js","var PlaneClassification = (function () {\r\n function PlaneClassification() {\r\n }\r\n return PlaneClassification;\r\n}());\r\nexport { PlaneClassification };\r\n// \"back\" is synonymous with \"in\", but used for planes (back of plane is \"inside\" a solid volume walled by a plane)\r\nPlaneClassification.BACK = 0;\r\nPlaneClassification.FRONT = 1;\r\nPlaneClassification.IN = 0;\r\nPlaneClassification.OUT = 1;\r\nPlaneClassification.INTERSECT = 2;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/PlaneClassification.js","import { PlaneClassification } from \"../geom/PlaneClassification\";\r\nvar Plane3D = (function () {\r\n /**\r\n * Create a Plane3D with ABCD coefficients\r\n */\r\n function Plane3D(a, b, c, d) {\r\n if (a === void 0) { a = 0; }\r\n if (b === void 0) { b = 0; }\r\n if (c === void 0) { c = 0; }\r\n if (d === void 0) { d = 0; }\r\n this.a = a;\r\n this.b = b;\r\n this.c = c;\r\n this.d = d;\r\n if (a == 0 && b == 0) {\r\n this._iAlignment = Plane3D.ALIGN_XY_AXIS;\r\n }\r\n else if (b == 0 && c == 0) {\r\n this._iAlignment = Plane3D.ALIGN_YZ_AXIS;\r\n }\r\n else if (a == 0 && c == 0) {\r\n this._iAlignment = Plane3D.ALIGN_XZ_AXIS;\r\n }\r\n else {\r\n this._iAlignment = Plane3D.ALIGN_ANY;\r\n }\r\n }\r\n /**\r\n * Fills this Plane3D with the coefficients from 3 points in 3d space.\r\n * @param p0 Vector3D\r\n * @param p1 Vector3D\r\n * @param p2 Vector3D\r\n */\r\n Plane3D.prototype.fromPoints = function (p0, p1, p2) {\r\n var d1x = p1.x - p0.x;\r\n var d1y = p1.y - p0.y;\r\n var d1z = p1.z - p0.z;\r\n var d2x = p2.x - p0.x;\r\n var d2y = p2.y - p0.y;\r\n var d2z = p2.z - p0.z;\r\n this.a = d1y * d2z - d1z * d2y;\r\n this.b = d1z * d2x - d1x * d2z;\r\n this.c = d1x * d2y - d1y * d2x;\r\n this.d = this.a * p0.x + this.b * p0.y + this.c * p0.z;\r\n // not using epsilon, since a plane is infinite and a small incorrection can grow very large\r\n if (this.a == 0 && this.b == 0) {\r\n this._iAlignment = Plane3D.ALIGN_XY_AXIS;\r\n }\r\n else if (this.b == 0 && this.c == 0) {\r\n this._iAlignment = Plane3D.ALIGN_YZ_AXIS;\r\n }\r\n else if (this.a == 0 && this.c == 0) {\r\n this._iAlignment = Plane3D.ALIGN_XZ_AXIS;\r\n }\r\n else {\r\n this._iAlignment = Plane3D.ALIGN_ANY;\r\n }\r\n };\r\n /**\r\n * Fills this Plane3D with the coefficients from the plane's normal and a point in 3d space.\r\n * @param normal Vector3D\r\n * @param point Vector3D\r\n */\r\n Plane3D.prototype.fromNormalAndPoint = function (normal, point) {\r\n this.a = normal.x;\r\n this.b = normal.y;\r\n this.c = normal.z;\r\n this.d = this.a * point.x + this.b * point.y + this.c * point.z;\r\n if (this.a == 0 && this.b == 0) {\r\n this._iAlignment = Plane3D.ALIGN_XY_AXIS;\r\n }\r\n else if (this.b == 0 && this.c == 0) {\r\n this._iAlignment = Plane3D.ALIGN_YZ_AXIS;\r\n }\r\n else if (this.a == 0 && this.c == 0) {\r\n this._iAlignment = Plane3D.ALIGN_XZ_AXIS;\r\n }\r\n else {\r\n this._iAlignment = Plane3D.ALIGN_ANY;\r\n }\r\n };\r\n /**\r\n * Normalize this Plane3D\r\n * @return Plane3D This Plane3D.\r\n */\r\n Plane3D.prototype.normalize = function () {\r\n var len = 1 / Math.sqrt(this.a * this.a + this.b * this.b + this.c * this.c);\r\n this.a *= len;\r\n this.b *= len;\r\n this.c *= len;\r\n this.d *= len;\r\n return this;\r\n };\r\n /**\r\n * Returns the signed distance between this Plane3D and the point p.\r\n * @param p Vector3D\r\n * @returns Number\r\n */\r\n Plane3D.prototype.distance = function (p) {\r\n if (this._iAlignment == Plane3D.ALIGN_YZ_AXIS) {\r\n return this.a * p.x - this.d;\r\n }\r\n else if (this._iAlignment == Plane3D.ALIGN_XZ_AXIS) {\r\n return this.b * p.y - this.d;\r\n }\r\n else if (this._iAlignment == Plane3D.ALIGN_XY_AXIS) {\r\n return this.c * p.z - this.d;\r\n }\r\n else {\r\n return this.a * p.x + this.b * p.y + this.c * p.z - this.d;\r\n }\r\n };\r\n /**\r\n * Classify a point against this Plane3D. (in front, back or intersecting)\r\n * @param p Vector3D\r\n * @return int Plane3.FRONT or Plane3D.BACK or Plane3D.INTERSECT\r\n */\r\n Plane3D.prototype.classifyPoint = function (p, epsilon) {\r\n if (epsilon === void 0) { epsilon = 0.01; }\r\n // check NaN\r\n if (this.d != this.d)\r\n return PlaneClassification.FRONT;\r\n var len;\r\n if (this._iAlignment == Plane3D.ALIGN_YZ_AXIS)\r\n len = this.a * p.x - this.d;\r\n else if (this._iAlignment == Plane3D.ALIGN_XZ_AXIS)\r\n len = this.b * p.y - this.d;\r\n else if (this._iAlignment == Plane3D.ALIGN_XY_AXIS)\r\n len = this.c * p.z - this.d;\r\n else\r\n len = this.a * p.x + this.b * p.y + this.c * p.z - this.d;\r\n if (len < -epsilon)\r\n return PlaneClassification.BACK;\r\n else if (len > epsilon)\r\n return PlaneClassification.FRONT;\r\n else\r\n return PlaneClassification.INTERSECT;\r\n };\r\n Plane3D.prototype.toString = function () {\r\n return \"Plane3D [a:\" + this.a + \", b:\" + this.b + \", c:\" + this.c + \", d:\" + this.d + \"]\";\r\n };\r\n return Plane3D;\r\n}());\r\nexport { Plane3D };\r\n// indicates the alignment of the plane\r\nPlane3D.ALIGN_ANY = 0;\r\nPlane3D.ALIGN_XY_AXIS = 1;\r\nPlane3D.ALIGN_YZ_AXIS = 2;\r\nPlane3D.ALIGN_XZ_AXIS = 3;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Plane3D.js","var PoissonLookup = (function () {\r\n function PoissonLookup() {\r\n }\r\n PoissonLookup.initDistributions = function () {\r\n // precalculated for best control\r\n this._distributions = new Array();\r\n this._distributions[0] = new Array(0.3082841, 0.4320919);\r\n this._distributions[1] = new Array(0.3082841, 0.4320919, -0.2274942, -0.6640266);\r\n this._distributions[2] = new Array(0.8742689, 0.0009265686, -0.6864116, -0.5536607, -0.2325206, 0.7678371);\r\n this._distributions[3] = new Array(0.3913446, -0.7084417, -0.7511101, -0.5935929, -0.2323436, 0.5320091, 0.8435315, 0.5035911);\r\n this._distributions[4] = new Array(0.2122471, -0.5771395, -0.8543506, -0.1763534, 0.5189021, 0.8323698, -0.3616908, 0.5865368, 0.9523004, -0.04948437);\r\n this._distributions[5] = new Array(0.5791035, 0.3496495, 0.2959551, -0.6006749, -0.2419119, -0.06879545, -0.7403072, 0.6110353, -0.04555973, 0.8059174, -0.5275017, -0.737129);\r\n this._distributions[6] = new Array(0.06941478, 0.8519508, -0.7441907, 0.2426432, 0.6439992, -0.2405252, -0.1007523, -0.2327587, -0.6427067, -0.7248485, 0.8050759, 0.5492936, 0.3573822, -0.8824506);\r\n this._distributions[7] = new Array(0.8509863, 0.4452587, -0.09507271, 0.2073005, 0.1706571, -0.6434793, 0.8029777, -0.2718274, -0.4401725, 0.8196304, 0.2715359, 0.8598521, -0.8121575, -0.006447683, -0.6486837, -0.7237598);\r\n this._distributions[8] = new Array(0.6951686, -0.2680728, -0.04933243, 0.3710589, 0.6592212, 0.3661054, -0.01579228, -0.6909603, -0.3275101, -0.1756866, 0.3811549, 0.9218544, -0.216032, 0.9755028, -0.7065172, 0.3355389, -0.6579109, -0.6798355);\r\n this._distributions[9] = new Array(0.6181276, -0.09790418, -0.2537868, -0.5570995, -0.1964931, 0.3459414, 0.3474613, -0.8885581, 0.5135743, 0.5753114, -0.9549091, 0.1480672, -0.8711916, -0.4293123, -0.6928071, 0.6190156, -0.13369, 0.8892705, 0.0548224, -0.1246777);\r\n this._distributions[10] = new Array(0.4853027, -0.5080479, -0.1331675, -0.506597, 0.139575, 0.01316885, 0.803486, -0.07568797, 0.5240274, 0.4883182, -0.4334005, 0.1207938, -0.7794577, -0.3985141, 0.1576432, -0.9861221, -0.3712867, 0.6959021, 0.1517378, 0.9847429, -0.9762396, 0.1661073);\r\n this._distributions[11] = new Array(-0.2790166, -0.01252619, 0.3389016, 0.3921154, 0.2408341, -0.313211, -0.8151779, -0.3898362, -0.6347761, 0.3486495, 0.09471484, -0.7722448, -0.1385674, 0.6364574, 0.2456331, 0.9295807, -0.3864306, -0.8247881, 0.6111673, -0.7164014, 0.8287669, 0.05466961, 0.837706, 0.5415626);\r\n this._distributions[12] = new Array(0.056417, 0.3185693, -0.8245888, 0.1882799, 0.8575996, 0.1136829, 0.1070375, 0.875332, 0.4076743, -0.06000621, -0.4311306, 0.7239349, 0.2677574, -0.538472, -0.08486642, -0.2083647, -0.888989, -0.3906443, -0.4768958, -0.6664082, 0.09334993, -0.9861541, 0.808736, -0.455949, 0.5889823, 0.7660807);\r\n this._distributions[13] = new Array(-0.2681346, -0.3955857, -0.1315102, -0.8852947, -0.5143692, 0.09551838, 0.4344836, -0.546945, -0.8620899, -0.3813288, 0.1650431, 0.02034803, -0.1543657, 0.3842218, -0.828457, 0.5376903, -0.6145, -0.7818927, -0.2639062, 0.8784655, 0.1912684, 0.9720125, 0.3135219, 0.5224229, 0.7850655, 0.4592297, 0.7465045, -0.1368916);\r\n this._distributions[14] = new Array(0.4241029, 0.695281, 0.150511, -0.02304107, -0.2482675, 0.9120338, 0.8057325, 0.2622084, -0.2445909, 0.2765962, 0.8588713, -0.1772072, 0.3117845, -0.4385471, -0.3923851, -0.3298936, -0.1751254, -0.7405846, 0.6926506, -0.684163, -0.9304563, -0.3254691, -0.8533293, 0.1523024, 0.2510415, -0.917345, -0.6239773, -0.7105472, -0.6104624, 0.6041355);\r\n this._distributions[15] = new Array(0.5844554, 0.06651045, 0.1343258, 0.6756578, 0.3799674, -0.6301104, 0.5590436, 0.7940555, 0.09574714, 0.02262517, 0.8697868, 0.393301, 0.003945862, -0.421735, 0.9043913, -0.2432393, -0.4844007, 0.7190998, -0.3201078, 0.2972371, -0.3852352, -0.6341155, -0.5413069, -0.09223081, -0.8468984, -0.5126905, 0.004156174, -0.8633173, -0.9681889, -0.03305046, -0.846509, 0.4414353);\r\n this._distributions[16] = new Array(0.4506488, 0.657668, 0.4621297, 0.07441051, -0.2782125, 0.6201044, 0.9750003, 0.09110117, 0.1019436, 0.2986514, 0.03457398, 0.9631706, 0.542098, -0.5505635, 0.8675668, 0.4938077, -0.5414361, 0.2655292, -0.7941836, 0.6003053, -0.09847672, -0.1001604, -0.9316511, -0.08572888, 0.07286467, -0.611899, -0.5232627, -0.4082253, -0.5481608, -0.827938, -0.1551939, -0.9621193, 0.9220031, -0.3315949);\r\n this._distributions[17] = new Array(0.197908, -0.4697656, -0.4474689, -0.3428435, 0.8529873, -0.2228634, 0.6022478, -0.5469642, 0.2545276, -0.931133, -0.1507547, -0.7855865, -0.07606658, 0.1011628, 0.3046715, 0.2785755, 0.4698432, -0.1064076, 0.6831254, 0.4152522, 0.1374381, 0.8363233, -0.2166121, 0.6682042, 0.5511393, 0.7996449, -0.4278994, 0.28836, -0.8875198, 0.2181732, -0.8772842, -0.2818254, -0.7000262, 0.5762185, -0.6062385, -0.7439126);\r\n this._distributions[18] = new Array(0.6645703, -0.05678739, 0.5720971, 0.4533803, -0.07660709, 0.08802763, 0.5163431, -0.4426552, 0.1163455, -0.3404382, -0.4004807, -0.5046007, 0.2932099, -0.8201418, -0.5322125, 0.03834766, -0.1490209, -0.8817304, -0.8000439, -0.3509448, 0.5260983, 0.8421043, 0.1197811, 0.6963812, 0.9498612, 0.3122156, -0.9285746, 0.02120355, -0.6670724, 0.7217396, 0.9155889, -0.3510147, -0.271941, 0.4727852, 0.318879, 0.1634057, -0.2686755, 0.9253026);\r\n this._distributions[19] = new Array(0.5064292, 0.422527, 0.8935515, -0.06610427, 0.1199719, 0.175568, 0.403388, -0.2003276, 0.1657927, 0.8154403, 0.9301245, 0.2929218, -0.1644068, 0.6201534, 0.7113559, -0.6589743, -0.3364046, -0.1799502, 0.02109996, -0.392765, -0.382213, 0.3219992, -0.9201946, 0.1207967, -0.726185, 0.4291916, -0.7443482, -0.2480059, -0.5147594, 0.7418784, 0.1935272, -0.7406143, -0.3643523, -0.5559214, -0.7147766, -0.6326278, -0.2524151, -0.9096627, 0.5161405, 0.7908453);\r\n this._distributions[20] = new Array(0.7921003, -0.3032096, 0.5992879, -0.009052323, 0.2538549, -0.1872749, 0.7053444, 0.3677175, 0.5417761, -0.8170255, 0.9749611, 0.1210478, 0.1969143, -0.6117041, -0.1824499, -0.4634196, -0.1181338, -0.8668742, -0.3050112, -0.1352596, -0.4409327, -0.7082354, -0.03225285, 0.1171548, 0.3113096, 0.3250439, -0.8166144, -0.463995, -0.01014475, 0.4715334, -0.6868284, 0.05091889, -0.4011163, 0.2717285, -0.06756835, 0.8307694, -0.7938535, 0.4352129, -0.4663842, 0.7165329, 0.559729, 0.8093995);\r\n this._distributions[21] = new Array(0.07832243, 0.426151, -0.3856795, 0.5799953, 0.01970797, 0.06706189, 0.4822682, 0.3014512, -0.1532982, 0.87485, -0.4959527, 0.07888043, 0.260601, -0.2304784, 0.4996209, 0.7167382, 0.585986, -0.04265174, -0.7679967, 0.5509416, -0.9041753, 0.1802134, -0.8407655, -0.4442826, -0.2058258, -0.2636995, -0.4984115, -0.5928579, 0.2926032, -0.7886473, -0.06933882, -0.621177, 0.578115, -0.4813387, 0.8981777, -0.3291056, 0.1942733, 0.9255584, 0.8084362, 0.5066984, 0.9920095, 0.03103104, -0.2403206, -0.9389018);\r\n this._distributions[22] = new Array(-0.5691095, 0.1014316, -0.7788262, 0.384012, -0.8253665, -0.1645582, -0.1830993, 0.002997211, -0.2555013, -0.4177977, -0.6640869, -0.4794711, -0.2351242, 0.5850121, 0.02436554, 0.2825883, 0.006061143, -0.8200245, 0.1618791, -0.3063331, -0.3765897, -0.7249815, 0.6092919, -0.6769328, -0.5956934, 0.6957655, 0.5383642, 0.4522677, -0.1489165, 0.9125596, 0.4167473, 0.1335986, 0.1898309, 0.5874342, 0.2288171, 0.9624356, 0.7540846, -0.07672304, 0.8986252, 0.2788797, 0.3555991, -0.9262139, 0.8454325, -0.4027667, 0.4945236, -0.2935512);\r\n this._distributions[23] = new Array(-0.4481403, -0.3758374, -0.8877251, 0.08739938, 0.05015831, -0.1339983, -0.4070427, -0.8534173, 0.1019274, -0.5503222, -0.445998, 0.1997541, -0.8686263, -0.2788867, -0.7695944, -0.6033704, -0.05515742, -0.885711, -0.7714347, 0.5790485, 0.3466263, -0.8799297, 0.4487582, -0.5321087, -0.2461368, 0.6053771, -0.05568117, 0.2457351, -0.4668669, 0.8523816, 0.8103387, -0.4255538, 0.4054182, -0.175663, -0.2802011, -0.08920153, 0.2665959, 0.382935, 0.555679, 0.1621837, 0.105246, 0.8420411, 0.6921161, 0.6902903, 0.880946, 0.2483067, 0.9699264, -0.1021767);\r\n this._distributions[24] = new Array(-0.1703323, -0.3119385, 0.2916039, -0.2988263, -0.008472982, -0.9277695, -0.7730271, -0.3277904, 0.3440474, -0.6815342, -0.2910278, 0.03461745, -0.6764899, -0.657078, -0.3505501, -0.7311988, -0.03478927, 0.3258755, -0.6048835, 0.159423, 0.2035525, 0.02212214, 0.5116573, 0.2226856, 0.6664805, -0.2500189, 0.7147882, -0.6609634, 0.03030632, -0.5763278, -0.2516585, 0.6116219, -0.9434413, -0.0116792, 0.9061816, 0.2491155, 0.182867, 0.6076167, 0.286593, 0.9485695, -0.5992439, 0.6970096, -0.2082874, 0.9416641, 0.9880044, -0.1541709, -0.9122881, 0.331555, 0.7324886, 0.6725098);\r\n this._distributions[25] = new Array(0.3869598, -0.04974834, 0.7168844, -0.0693711, -0.07166742, 0.1725325, 0.4599592, 0.3232779, 0.5872094, -0.4198674, 0.2442266, -0.625667, 0.1254557, 0.4500048, -0.2290154, -0.1803567, 0.890583, 0.3373493, 0.1256081, 0.7853789, -0.2676466, 0.5305805, -0.7063224, 0.252168, -0.3989835, 0.1189921, 0.09617215, -0.2451447, 0.6302541, 0.6085876, 0.9380925, -0.3234899, 0.5086241, -0.8573482, 0.03576187, -0.9876697, -0.0876712, -0.6365195, -0.5276513, 0.823456, -0.6935764, -0.2240411, -0.5212318, -0.5383121, -0.2116208, 0.9639363, -0.9840096, 0.02743555, -0.3991577, -0.8994547, -0.7830126, 0.614068);\r\n this._distributions[26] = new Array(-0.8366601, 0.4464895, -0.5917366, -0.02073906, -0.9845258, 0.1635625, -0.3097973, 0.4379579, -0.5478154, 0.7173221, -0.1685888, 0.9261969, 0.01503595, 0.6046097, 0.4452421, 0.5449086, 0.0315687, 0.1944619, 0.3753404, 0.8688548, 0.4143643, 0.1396648, 0.8711032, 0.4304703, 0.7328773, 0.1461501, 0.6374492, -0.3521495, 0.145613, -0.1341466, 0.9040975, -0.135123, -0.7839059, -0.5450199, -0.516019, -0.3320859, -0.206158, -0.4431106, -0.9703014, -0.2368356, -0.2473119, -0.0864351, 0.2130725, -0.4604077, -0.003726701, -0.7122303, -0.4072131, -0.6833169, 0.1632999, -0.9776646, 0.4686888, -0.680495, -0.2293511, -0.9509777);\r\n this._distributions[27] = new Array(0.107311, -0.1311369, -0.4194764, -0.3148777, 0.6171439, -0.2745973, 0.2796618, 0.1937153, -0.09106886, 0.4180236, 0.6044006, 0.05577846, 0.02927299, -0.6738263, -0.2580845, 0.1179939, -0.09023564, -0.3830024, 0.3570953, -0.5000587, 0.81591, -0.5518309, 0.9300217, -0.1257987, 0.4904627, -0.8381903, -0.3163182, -0.8632009, 0.1137595, -0.9875998, 0.8390043, 0.3538185, 0.2149114, 0.4993694, 0.5191584, 0.3833552, 0.5002763, 0.7061465, -0.2567276, 0.9068756, -0.5197366, 0.3467845, 0.03668867, 0.9734009, -0.5347553, 0.66747, -0.9028882, 0.1023768, -0.8967977, 0.412834, -0.5821944, 0.0426479, -0.8032165, -0.2397038, -0.5597343, -0.6358021);\r\n this._distributions[28] = new Array(-0.6562496, -0.1781036, -0.9301494, 0.1185208, -0.3861143, -0.4153562, -0.1560799, -0.1099607, -0.5587025, 0.395218, -0.5322112, -0.699701, -0.5008639, 0.08726846, -0.970524, -0.1963461, -0.813577, -0.5185111, -0.1644458, 0.298, -0.3216791, 0.639982, 0.3315373, 0.3339162, 0.2383235, -0.00105722, 0.1137828, 0.5450742, -0.01899921, 0.8798413, 0.2849685, 0.8255596, 0.6974412, 0.2123175, 0.7588523, 0.5470437, 0.5102502, -0.1687844, 0.5853448, 0.8033476, 0.2590716, -0.5262504, 0.5607718, -0.6342825, 0.8666443, -0.1491841, 0.8341052, -0.4935003, -0.1568441, -0.6634066, 0.2512113, -0.8769391, -0.2559827, -0.9572457, -0.01928852, -0.3966542, -0.750667, 0.6409678);\r\n this._distributions[29] = new Array(0.3454786, -0.04837726, 0.2649553, 0.2406852, 0.5599093, -0.3839145, -0.1111814, -0.05502108, 0.7586042, -0.05818377, 0.2519488, -0.4665135, -0.1264972, 0.2602723, -0.08766216, -0.3671907, 0.6428129, 0.3999204, -0.6105871, -0.1246869, -0.4589451, -0.7646643, -0.03021116, -0.7899352, -0.6036922, -0.4293956, -0.2481938, 0.6534185, 0.102798, 0.6784465, -0.6392644, 0.4821358, -0.6789002, 0.1779133, -0.9140783, -0.1989647, -0.9262617, 0.3381507, 0.4794891, -0.8093274, 0.3959447, 0.668478, 0.9602883, 0.2272305, -0.123672, 0.9210883, 0.2375148, 0.9523395, -0.52898, 0.7973378, -0.382433, 0.1228794, 0.695015, 0.6948439, 0.7530277, -0.6458191, 0.8777987, -0.3272956, 0.2318525, -0.962768);\r\n this._distributions[30] = new Array(0.4518921, -0.1146195, 0.4720805, -0.4238748, 0.3655423, 0.1806341, 0.1589939, -0.23568, 0.7673324, -0.5149941, 0.01163658, 0.09045836, 0.7010971, 0.1245747, 0.7518286, -0.1855433, 0.4960719, 0.4601022, 0.2566979, -0.6308268, -0.0654714, -0.5126389, -0.1823319, -0.1343282, -0.1464312, 0.4883236, -0.3858738, 0.203523, 0.1484799, 0.4432284, -0.477109, -0.116241, 0.2719092, 0.7208626, 0.9104174, 0.3578536, -0.5956199, 0.7662588, -0.6996251, 0.3678654, -0.2514512, 0.9251933, 0.1275825, -0.9478135, -0.204608, -0.8611552, 0.4264838, -0.877443, 0.9854161, 0.05521112, 0.5912951, 0.7997434, 0.1140349, 0.982093, -0.9324368, -0.2094094, -0.42436, -0.6441524, -0.6722705, -0.3554261, -0.7844236, 0.08587621);\r\n this._distributions[31] = new Array(-0.4206714, -0.5613642, -0.8733016, -0.3373051, -0.1046226, -0.2902999, -0.1318562, -0.8434365, 0.1145093, -0.5962623, -0.4965627, -0.1873259, -0.5011808, -0.8546229, -0.7165636, -0.5743566, 0.1090901, 0.2017643, 0.3404809, -0.220455, -0.1989015, 0.2372122, -0.4538706, 0.0979171, 0.4514146, -0.572846, 0.2314168, -0.8514503, -0.4247236, 0.5650803, -0.943347, 0.04514639, -0.1309718, 0.5221877, -0.7004157, 0.4561877, 0.6306441, 0.04448673, 0.4301621, 0.5766876, 0.1078042, 0.7245752, 0.3875354, 0.2794483, 0.702876, -0.2924213, 0.7360667, -0.6210318, 0.7486517, 0.6531103, 0.4898235, 0.8591025, 0.6549174, 0.3854057, -0.2596106, 0.7916998, 0.9251194, -0.05296265, -0.5620695, 0.820877, -0.01228026, 0.9937211, 0.9612103, 0.2628758);\r\n };\r\n PoissonLookup.getDistribution = function (n /*int*/) {\r\n if (!this._distributions)\r\n this.initDistributions();\r\n if (n < 2 || n > 32)\r\n return null;\r\n return this._distributions[n - 1];\r\n };\r\n return PoissonLookup;\r\n}());\r\nexport { PoissonLookup };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/PoissonLookup.js","import { Orientation3D } from \"../geom/Orientation3D\";\r\nimport { Matrix3D } from \"../geom/Matrix3D\";\r\nimport { Vector3D } from \"../geom/Vector3D\";\r\n/**\r\n * A Quaternion object which can be used to represent rotations.\r\n */\r\nvar Quaternion = (function () {\r\n /**\r\n * Creates a new Quaternion object.\r\n * @param x The x value of the quaternion.\r\n * @param y The y value of the quaternion.\r\n * @param z The z value of the quaternion.\r\n * @param w The w value of the quaternion.\r\n */\r\n function Quaternion(x, y, z, w) {\r\n if (x === void 0) { x = 0; }\r\n if (y === void 0) { y = 0; }\r\n if (z === void 0) { z = 0; }\r\n if (w === void 0) { w = 1; }\r\n /**\r\n * The x value of the quaternion.\r\n */\r\n this.x = 0;\r\n /**\r\n * The y value of the quaternion.\r\n */\r\n this.y = 0;\r\n /**\r\n * The z value of the quaternion.\r\n */\r\n this.z = 0;\r\n /**\r\n * The w value of the quaternion.\r\n */\r\n this.w = 1;\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n this.w = w;\r\n }\r\n Object.defineProperty(Quaternion.prototype, \"magnitude\", {\r\n /**\r\n * Returns the magnitude of the quaternion object.\r\n */\r\n get: function () {\r\n return Math.sqrt(this.w * this.w + this.x * this.x + this.y * this.y + this.z * this.z);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Fills the quaternion object with the result from a multiplication of two quaternion objects.\r\n *\r\n * @param qa The first quaternion in the multiplication.\r\n * @param qb The second quaternion in the multiplication.\r\n */\r\n Quaternion.prototype.multiply = function (qa, qb) {\r\n var w1 = qa.w, x1 = qa.x, y1 = qa.y, z1 = qa.z;\r\n var w2 = qb.w, x2 = qb.x, y2 = qb.y, z2 = qb.z;\r\n this.w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2;\r\n this.x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2;\r\n this.y = w1 * y2 - x1 * z2 + y1 * w2 + z1 * x2;\r\n this.z = w1 * z2 + x1 * y2 - y1 * x2 + z1 * w2;\r\n };\r\n Quaternion.prototype.multiplyVector = function (vector, target) {\r\n if (target === void 0) { target = null; }\r\n //target ||= new Quaternion();\r\n if (target === null) {\r\n target = new Quaternion();\r\n }\r\n var x2 = vector.x;\r\n var y2 = vector.y;\r\n var z2 = vector.z;\r\n target.w = -this.x * x2 - this.y * y2 - this.z * z2;\r\n target.x = this.w * x2 + this.y * z2 - this.z * y2;\r\n target.y = this.w * y2 - this.x * z2 + this.z * x2;\r\n target.z = this.w * z2 + this.x * y2 - this.y * x2;\r\n return target;\r\n };\r\n /**\r\n * Fills the quaternion object with values representing the given rotation around a vector.\r\n *\r\n * @param axis The axis around which to rotate\r\n * @param angle The angle in radians of the rotation.\r\n */\r\n Quaternion.prototype.fromAxisAngle = function (axis, angle) {\r\n var sin_a = Math.sin(angle / 2);\r\n var cos_a = Math.cos(angle / 2);\r\n this.x = axis.x * sin_a;\r\n this.y = axis.y * sin_a;\r\n this.z = axis.z * sin_a;\r\n this.w = cos_a;\r\n this.normalize();\r\n };\r\n /**\r\n * Spherically interpolates between two quaternions, providing an interpolation between rotations with constant angle change rate.\r\n * @param qa The first quaternion to interpolate.\r\n * @param qb The second quaternion to interpolate.\r\n * @param t The interpolation weight, a value between 0 and 1.\r\n */\r\n Quaternion.prototype.slerp = function (qa, qb, t) {\r\n var w1 = qa.w, x1 = qa.x, y1 = qa.y, z1 = qa.z;\r\n var w2 = qb.w, x2 = qb.x, y2 = qb.y, z2 = qb.z;\r\n var dot = w1 * w2 + x1 * x2 + y1 * y2 + z1 * z2;\r\n // shortest direction\r\n if (dot < 0) {\r\n dot = -dot;\r\n w2 = -w2;\r\n x2 = -x2;\r\n y2 = -y2;\r\n z2 = -z2;\r\n }\r\n if (dot < 0.95) {\r\n // interpolate angle linearly\r\n var angle = Math.acos(dot);\r\n var s = 1 / Math.sin(angle);\r\n var s1 = Math.sin(angle * (1 - t)) * s;\r\n var s2 = Math.sin(angle * t) * s;\r\n this.w = w1 * s1 + w2 * s2;\r\n this.x = x1 * s1 + x2 * s2;\r\n this.y = y1 * s1 + y2 * s2;\r\n this.z = z1 * s1 + z2 * s2;\r\n }\r\n else {\r\n // nearly identical angle, interpolate linearly\r\n this.w = w1 + t * (w2 - w1);\r\n this.x = x1 + t * (x2 - x1);\r\n this.y = y1 + t * (y2 - y1);\r\n this.z = z1 + t * (z2 - z1);\r\n var len = 1.0 / Math.sqrt(this.w * this.w + this.x * this.x + this.y * this.y + this.z * this.z);\r\n this.w *= len;\r\n this.x *= len;\r\n this.y *= len;\r\n this.z *= len;\r\n }\r\n };\r\n /**\r\n * Linearly interpolates between two quaternions.\r\n * @param qa The first quaternion to interpolate.\r\n * @param qb The second quaternion to interpolate.\r\n * @param t The interpolation weight, a value between 0 and 1.\r\n */\r\n Quaternion.prototype.lerp = function (qa, qb, t) {\r\n var w1 = qa.w, x1 = qa.x, y1 = qa.y, z1 = qa.z;\r\n var w2 = qb.w, x2 = qb.x, y2 = qb.y, z2 = qb.z;\r\n var len;\r\n // shortest direction\r\n if (w1 * w2 + x1 * x2 + y1 * y2 + z1 * z2 < 0) {\r\n w2 = -w2;\r\n x2 = -x2;\r\n y2 = -y2;\r\n z2 = -z2;\r\n }\r\n this.w = w1 + t * (w2 - w1);\r\n this.x = x1 + t * (x2 - x1);\r\n this.y = y1 + t * (y2 - y1);\r\n this.z = z1 + t * (z2 - z1);\r\n len = 1.0 / Math.sqrt(this.w * this.w + this.x * this.x + this.y * this.y + this.z * this.z);\r\n this.w *= len;\r\n this.x *= len;\r\n this.y *= len;\r\n this.z *= len;\r\n };\r\n /**\r\n * Fills the quaternion object with values representing the given euler rotation.\r\n *\r\n * @param ax The angle in radians of the rotation around the ax axis.\r\n * @param ay The angle in radians of the rotation around the ay axis.\r\n * @param az The angle in radians of the rotation around the az axis.\r\n */\r\n Quaternion.prototype.fromEulerAngles = function (ax, ay, az) {\r\n var halfX = ax * .5, halfY = ay * .5, halfZ = az * .5;\r\n var cosX = Math.cos(halfX), sinX = Math.sin(halfX);\r\n var cosY = Math.cos(halfY), sinY = Math.sin(halfY);\r\n var cosZ = Math.cos(halfZ), sinZ = Math.sin(halfZ);\r\n this.w = cosX * cosY * cosZ + sinX * sinY * sinZ;\r\n this.x = sinX * cosY * cosZ - cosX * sinY * sinZ;\r\n this.y = cosX * sinY * cosZ + sinX * cosY * sinZ;\r\n this.z = cosX * cosY * sinZ - sinX * sinY * cosZ;\r\n };\r\n /**\r\n * Fills a target Vector3D object with the Euler angles that form the rotation represented by this quaternion.\r\n * @param target An optional Vector3D object to contain the Euler angles. If not provided, a new object is created.\r\n * @return The Vector3D containing the Euler angles.\r\n */\r\n Quaternion.prototype.toEulerAngles = function (target) {\r\n if (target === void 0) { target = null; }\r\n //target ||= new Vector3D();\r\n if (target === null) {\r\n target = new Vector3D();\r\n }\r\n target.x = Math.atan2(2 * (this.w * this.x + this.y * this.z), 1 - 2 * (this.x * this.x + this.y * this.y));\r\n target.y = Math.asin(2 * (this.w * this.y - this.z * this.x));\r\n target.z = Math.atan2(2 * (this.w * this.z + this.x * this.y), 1 - 2 * (this.y * this.y + this.z * this.z));\r\n return target;\r\n };\r\n /**\r\n * Normalises the quaternion object.\r\n */\r\n Quaternion.prototype.normalize = function (val) {\r\n if (val === void 0) { val = 1; }\r\n var mag = val / Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\r\n this.x *= mag;\r\n this.y *= mag;\r\n this.z *= mag;\r\n this.w *= mag;\r\n };\r\n /**\r\n * Used to trace the values of a quaternion.\r\n *\r\n * @return A string representation of the quaternion object.\r\n */\r\n Quaternion.prototype.toString = function () {\r\n return \"{x:\" + this.x + \" y:\" + this.y + \" z:\" + this.z + \" w:\" + this.w + \"}\";\r\n };\r\n /**\r\n * Converts the quaternion to a Matrix3D object representing an equivalent rotation.\r\n * @param target An optional Matrix3D container to store the transformation in. If not provided, a new object is created.\r\n * @return A Matrix3D object representing an equivalent rotation.\r\n */\r\n Quaternion.prototype.toMatrix3D = function (target) {\r\n if (target === void 0) { target = null; }\r\n var xy2 = 2.0 * this.x * this.y, xz2 = 2.0 * this.x * this.z, xw2 = 2.0 * this.x * this.w;\r\n var yz2 = 2.0 * this.y * this.z, yw2 = 2.0 * this.y * this.w, zw2 = 2.0 * this.z * this.w;\r\n var xx = this.x * this.x, yy = this.y * this.y, zz = this.z * this.z, ww = this.w * this.w;\r\n if (!target)\r\n target = new Matrix3D();\r\n var rawData = target._rawData;\r\n rawData[0] = xx - yy - zz + ww;\r\n rawData[4] = xy2 - zw2;\r\n rawData[8] = xz2 + yw2;\r\n rawData[12] = 0;\r\n rawData[1] = xy2 + zw2;\r\n rawData[5] = -xx + yy - zz + ww;\r\n rawData[9] = yz2 - xw2;\r\n rawData[13] = 0;\r\n rawData[2] = xz2 - yw2;\r\n rawData[6] = yz2 + xw2;\r\n rawData[10] = -xx - yy + zz + ww;\r\n rawData[14] = 0;\r\n rawData[3] = 0.0;\r\n rawData[7] = 0.0;\r\n rawData[11] = 0;\r\n rawData[15] = 1;\r\n return target;\r\n };\r\n /**\r\n * Extracts a quaternion rotation matrix out of a given Matrix3D object.\r\n * @param matrix The Matrix3D out of which the rotation will be extracted.\r\n */\r\n Quaternion.prototype.fromMatrix = function (matrix) {\r\n var v = matrix.decompose(Orientation3D.QUATERNION)[1];\r\n this.x = v.x;\r\n this.y = v.y;\r\n this.z = v.z;\r\n this.w = v.w;\r\n };\r\n /**\r\n * Converts the quaternion to a Vector.<Number> matrix representation of a rotation equivalent to this quaternion.\r\n * @param target The Vector.<Number> to contain the raw matrix data.\r\n * @param exclude4thRow If true, the last row will be omitted, and a 4x3 matrix will be generated instead of a 4x4.\r\n */\r\n Quaternion.prototype.toRawData = function (target, exclude4thRow) {\r\n if (exclude4thRow === void 0) { exclude4thRow = false; }\r\n var xy2 = 2.0 * this.x * this.y, xz2 = 2.0 * this.x * this.z, xw2 = 2.0 * this.x * this.w;\r\n var yz2 = 2.0 * this.y * this.z, yw2 = 2.0 * this.y * this.w, zw2 = 2.0 * this.z * this.w;\r\n var xx = this.x * this.x, yy = this.y * this.y, zz = this.z * this.z, ww = this.w * this.w;\r\n target[0] = xx - yy - zz + ww;\r\n target[1] = xy2 - zw2;\r\n target[2] = xz2 + yw2;\r\n target[4] = xy2 + zw2;\r\n target[5] = -xx + yy - zz + ww;\r\n target[6] = yz2 - xw2;\r\n target[8] = xz2 - yw2;\r\n target[9] = yz2 + xw2;\r\n target[10] = -xx - yy + zz + ww;\r\n target[3] = target[7] = target[11] = 0;\r\n if (!exclude4thRow) {\r\n target[12] = target[13] = target[14] = 0;\r\n target[15] = 1;\r\n }\r\n };\r\n /**\r\n * Clones the quaternion.\r\n * @return An exact duplicate of the current Quaternion.\r\n */\r\n Quaternion.prototype.clone = function () {\r\n return new Quaternion(this.x, this.y, this.z, this.w);\r\n };\r\n /**\r\n * Rotates a point.\r\n * @param vector The Vector3D object to be rotated.\r\n * @param target An optional Vector3D object that will contain the rotated coordinates. If not provided, a new object will be created.\r\n * @return A Vector3D object containing the rotated point.\r\n */\r\n Quaternion.prototype.rotatePoint = function (vector, target) {\r\n if (target === void 0) { target = null; }\r\n var x1, y1, z1, w1;\r\n var x2 = vector.x, y2 = vector.y, z2 = vector.z;\r\n //target ||= new Vector3D();\r\n if (target === null) {\r\n target = new Vector3D();\r\n }\r\n // p*q'\r\n w1 = -this.x * x2 - this.y * y2 - this.z * z2;\r\n x1 = this.w * x2 + this.y * z2 - this.z * y2;\r\n y1 = this.w * y2 - this.x * z2 + this.z * x2;\r\n z1 = this.w * z2 + this.x * y2 - this.y * x2;\r\n target.x = -w1 * this.x + x1 * this.w - y1 * this.z + z1 * this.y;\r\n target.y = -w1 * this.y + x1 * this.z + y1 * this.w - z1 * this.x;\r\n target.z = -w1 * this.z - x1 * this.y + y1 * this.x + z1 * this.w;\r\n return target;\r\n };\r\n /**\r\n * Copies the data from a quaternion into this instance.\r\n * @param q The quaternion to copy from.\r\n */\r\n Quaternion.prototype.copyFrom = function (q) {\r\n this.x = q.x;\r\n this.y = q.y;\r\n this.z = q.z;\r\n this.w = q.w;\r\n };\r\n return Quaternion;\r\n}());\r\nexport { Quaternion };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Quaternion.js","import { Point } from \"../geom/Point\";\r\n/**\r\n * A Rectangle object is an area defined by its position, as indicated by its\r\n * top-left corner point(x, y) and by its width and its height.\r\n *\r\n *\r\n *

The x, y, width, and\r\n * height properties of the Rectangle export class are independent of\r\n * each other; changing the value of one property has no effect on the others.\r\n * However, the right and bottom properties are\r\n * integrally related to those four properties. For example, if you change the\r\n * value of the right property, the value of the\r\n * width property changes; if you change the bottom\r\n * property, the value of the height property changes.

\r\n *\r\n *

The following methods and properties use Rectangle objects:

\r\n *\r\n * \r\n *\r\n *

You can use the new Rectangle() constructor to create a\r\n * Rectangle object.

\r\n *\r\n *

Note: The Rectangle export class does not define a rectangular Shape\r\n * display object. To draw a rectangular Shape object onscreen, use the\r\n * drawRect() method of the Graphics class.

\r\n */\r\nvar Rectangle = (function () {\r\n /**\r\n * Creates a new Rectangle object with the top-left corner specified by the\r\n * x and y parameters and with the specified\r\n * width and height parameters. If you call this\r\n * public without parameters, a rectangle with x,\r\n * y, width, and height properties set\r\n * to 0 is created.\r\n *\r\n * @param x The x coordinate of the top-left corner of the\r\n * rectangle.\r\n * @param y The y coordinate of the top-left corner of the\r\n * rectangle.\r\n * @param width The width of the rectangle, in pixels.\r\n * @param height The height of the rectangle, in pixels.\r\n */\r\n function Rectangle(x, y, width, height) {\r\n if (x === void 0) { x = 0; }\r\n if (y === void 0) { y = 0; }\r\n if (width === void 0) { width = 0; }\r\n if (height === void 0) { height = 0; }\r\n this.x = x;\r\n this.y = y;\r\n this.width = width;\r\n this.height = height;\r\n }\r\n Object.defineProperty(Rectangle.prototype, \"bottom\", {\r\n /**\r\n * The sum of the y and height properties.\r\n */\r\n get: function () {\r\n return this.y + this.height;\r\n },\r\n set: function (val) {\r\n this.height = val - this.y;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle.prototype, \"bottomRight\", {\r\n /**\r\n * The location of the Rectangle object's bottom-right corner, determined by\r\n * the values of the right and bottom properties.\r\n */\r\n get: function () {\r\n if (this._bottomRight == null)\r\n this._bottomRight = new Point();\r\n this._bottomRight.x = this.x + this.width;\r\n this._bottomRight.y = this.y + this.height;\r\n return this._bottomRight;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle.prototype, \"left\", {\r\n /**\r\n * The x coordinate of the top-left corner of the rectangle. Changing\r\n * the left property of a Rectangle object has no effect on the\r\n * y and height properties. However it does affect\r\n * the width property, whereas changing the x value\r\n * does not affect the width property.\r\n *\r\n *

The value of the left property is equal to the value of\r\n * the x property.

\r\n */\r\n get: function () {\r\n return this.x;\r\n },\r\n set: function (val) {\r\n this.width += this.x - val;\r\n this.x = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle.prototype, \"right\", {\r\n /**\r\n * The sum of the x and width properties.\r\n */\r\n get: function () {\r\n return this.x + this.width;\r\n },\r\n set: function (val) {\r\n this.width = val - this.x;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle.prototype, \"size\", {\r\n /**\r\n * The size of the Rectangle object, expressed as a Point object with the\r\n * values of the width and height properties.\r\n */\r\n get: function () {\r\n if (this._size == null)\r\n this._size = new Point();\r\n this._size.x = this.width;\r\n this._size.y = this.height;\r\n return this._size;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle.prototype, \"top\", {\r\n /**\r\n * The y coordinate of the top-left corner of the rectangle. Changing\r\n * the top property of a Rectangle object has no effect on the\r\n * x and width properties. However it does affect\r\n * the height property, whereas changing the y\r\n * value does not affect the height property.\r\n *\r\n *

The value of the top property is equal to the value of the\r\n * y property.

\r\n */\r\n get: function () {\r\n return this.y;\r\n },\r\n set: function (val) {\r\n this.height += (this.y - val);\r\n this.y = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\r\n /**\r\n * The location of the Rectangle object's top-left corner, determined by the\r\n * x and y coordinates of the point.\r\n */\r\n get: function () {\r\n if (this._topLeft == null)\r\n this._topLeft = new Point();\r\n this._topLeft.x = this.x;\r\n this._topLeft.y = this.y;\r\n return this._topLeft;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new Rectangle object with the same values for the\r\n * x, y, width, and\r\n * height properties as the original Rectangle object.\r\n *\r\n * @return A new Rectangle object with the same values for the\r\n * x, y, width, and\r\n * height properties as the original Rectangle object.\r\n */\r\n Rectangle.prototype.clone = function () {\r\n return new Rectangle(this.x, this.y, this.width, this.height);\r\n };\r\n /**\r\n * Determines whether the specified point is contained within the rectangular\r\n * region defined by this Rectangle object.\r\n *\r\n * @param x The x coordinate(horizontal position) of the point.\r\n * @param y The y coordinate(vertical position) of the point.\r\n * @return A value of true if the Rectangle object contains the\r\n * specified point; otherwise false.\r\n */\r\n Rectangle.prototype.contains = function (x, y) {\r\n return (this.x <= x && this.x + this.width >= x && this.y <= y && this.y + this.height >= y);\r\n };\r\n /**\r\n * Determines whether the specified point is contained within the rectangular\r\n * region defined by this Rectangle object. This method is similar to the\r\n * Rectangle.contains() method, except that it takes a Point\r\n * object as a parameter.\r\n *\r\n * @param point The point, as represented by its x and y\r\n * coordinates.\r\n * @return A value of true if the Rectangle object contains the\r\n * specified point; otherwise false.\r\n */\r\n Rectangle.prototype.containsPoint = function (point) {\r\n return (this.x <= point.x && this.x + this.width >= point.x && this.y <= point.y && this.y + this.height >= point.y);\r\n };\r\n /**\r\n * Determines whether the Rectangle object specified by the rect\r\n * parameter is contained within this Rectangle object. A Rectangle object is\r\n * said to contain another if the second Rectangle object falls entirely\r\n * within the boundaries of the first.\r\n *\r\n * @param rect The Rectangle object being checked.\r\n * @return A value of true if the Rectangle object that you\r\n * specify is contained by this Rectangle object; otherwise\r\n * false.\r\n */\r\n Rectangle.prototype.containsRect = function (rect) {\r\n return (this.x <= rect.x && this.x + this.width >= rect.x + rect.width && this.y <= rect.y && this.y + this.height >= rect.y + rect.height);\r\n };\r\n /**\r\n * Copies all of rectangle data from the source Rectangle object into the\r\n * calling Rectangle object.\r\n *\r\n * @param sourceRect The Rectangle object from which to copy the data.\r\n */\r\n Rectangle.prototype.copyFrom = function (sourceRect) {\r\n this.x = sourceRect.x;\r\n this.y = sourceRect.y;\r\n this.width = sourceRect.width;\r\n this.height = sourceRect.height;\r\n };\r\n /**\r\n * Determines whether the object specified in the toCompare\r\n * parameter is equal to this Rectangle object. This method compares the\r\n * x, y, width, and\r\n * height properties of an object against the same properties of\r\n * this Rectangle object.\r\n *\r\n * @param toCompare The rectangle to compare to this Rectangle object.\r\n * @return A value of true if the object has exactly the same\r\n * values for the x, y, width,\r\n * and height properties as this Rectangle object;\r\n * otherwise false.\r\n */\r\n Rectangle.prototype.equals = function (toCompare) {\r\n return (this.x == toCompare.x && this.y == toCompare.y && this.width == toCompare.width && this.height == toCompare.height);\r\n };\r\n /**\r\n * Increases the size of the Rectangle object by the specified amounts, in\r\n * pixels. The center point of the Rectangle object stays the same, and its\r\n * size increases to the left and right by the dx value, and to\r\n * the top and the bottom by the dy value.\r\n *\r\n * @param dx The value to be added to the left and the right of the Rectangle\r\n * object. The following equation is used to calculate the new\r\n * width and position of the rectangle:\r\n * @param dy The value to be added to the top and the bottom of the\r\n * Rectangle. The following equation is used to calculate the new\r\n * height and position of the rectangle:\r\n */\r\n Rectangle.prototype.inflate = function (dx, dy) {\r\n this.x -= dx / 2;\r\n this.y -= dy / 2;\r\n this.width += dx / 2;\r\n this.height += dy / 2;\r\n };\r\n /**\r\n * Increases the size of the Rectangle object. This method is similar to the\r\n * Rectangle.inflate() method except it takes a Point object as\r\n * a parameter.\r\n *\r\n *

The following two code examples give the same result:

\r\n *\r\n * @param point The x property of this Point object is used to\r\n * increase the horizontal dimension of the Rectangle object.\r\n * The y property is used to increase the vertical\r\n * dimension of the Rectangle object.\r\n */\r\n Rectangle.prototype.inflatePoint = function (point) {\r\n this.x -= point.x / 2;\r\n this.y -= point.y / 2;\r\n this.width += point.x / 2;\r\n this.height += point.y / 2;\r\n };\r\n /**\r\n * If the Rectangle object specified in the toIntersect\r\n * parameter intersects with this Rectangle object, returns the area of\r\n * intersection as a Rectangle object. If the rectangles do not intersect,\r\n * this method returns an empty Rectangle object with its properties set to\r\n * 0.\r\n *\r\n * @param toIntersect The Rectangle object to compare against to see if it\r\n * intersects with this Rectangle object.\r\n * @return A Rectangle object that equals the area of intersection. If the\r\n * rectangles do not intersect, this method returns an empty\r\n * Rectangle object; that is, a rectangle with its x,\r\n * y, width, and height\r\n * properties set to 0.\r\n */\r\n Rectangle.prototype.intersection = function (toIntersect) {\r\n if (this.intersects(toIntersect)) {\r\n var i = new Rectangle();\r\n if (this.x > toIntersect.x) {\r\n i.x = this.x;\r\n i.width = toIntersect.x - this.x + toIntersect.width;\r\n if (i.width > this.width)\r\n i.width = this.width;\r\n }\r\n else {\r\n i.x = toIntersect.x;\r\n i.width = this.x - toIntersect.x + this.width;\r\n if (i.width > toIntersect.width)\r\n i.width = toIntersect.width;\r\n }\r\n if (this.y > toIntersect.y) {\r\n i.y = this.y;\r\n i.height = toIntersect.y - this.y + toIntersect.height;\r\n if (i.height > this.height)\r\n i.height = this.height;\r\n }\r\n else {\r\n i.y = toIntersect.y;\r\n i.height = this.y - toIntersect.y + this.height;\r\n if (i.height > toIntersect.height)\r\n i.height = toIntersect.height;\r\n }\r\n return i;\r\n }\r\n return new Rectangle();\r\n };\r\n /**\r\n * Determines whether the object specified in the toIntersect\r\n * parameter intersects with this Rectangle object. This method checks the\r\n * x, y, width, and\r\n * height properties of the specified Rectangle object to see if\r\n * it intersects with this Rectangle object.\r\n *\r\n * @param toIntersect The Rectangle object to compare against this Rectangle\r\n * object.\r\n * @return A value of true if the specified object intersects\r\n * with this Rectangle object; otherwise false.\r\n */\r\n Rectangle.prototype.intersects = function (toIntersect) {\r\n return (this.x + this.width > toIntersect.x && this.x < toIntersect.x + toIntersect.width && this.y + this.height > toIntersect.y && this.y < toIntersect.y + toIntersect.height);\r\n };\r\n /**\r\n * Determines whether or not this Rectangle object is empty.\r\n *\r\n * @return A value of true if the Rectangle object's width or\r\n * height is less than or equal to 0; otherwise false.\r\n */\r\n Rectangle.prototype.isEmpty = function () {\r\n return (this.x == 0 && this.y == 0 && this.width == 0 && this.height == 0);\r\n };\r\n /**\r\n * Adjusts the location of the Rectangle object, as determined by its\r\n * top-left corner, by the specified amounts.\r\n *\r\n * @param dx Moves the x value of the Rectangle object by this amount.\r\n * @param dy Moves the y value of the Rectangle object by this amount.\r\n */\r\n Rectangle.prototype.offset = function (dx, dy) {\r\n this.x += dx;\r\n this.y += dy;\r\n };\r\n /**\r\n * Adjusts the location of the Rectangle object using a Point object as a\r\n * parameter. This method is similar to the Rectangle.offset()\r\n * method, except that it takes a Point object as a parameter.\r\n *\r\n * @param point A Point object to use to offset this Rectangle object.\r\n */\r\n Rectangle.prototype.offsetPoint = function (point) {\r\n this.x += point.x;\r\n this.y += point.y;\r\n };\r\n /**\r\n * Sets all of the Rectangle object's properties to 0. A Rectangle object is\r\n * empty if its width or height is less than or equal to 0.\r\n *\r\n *

This method sets the values of the x, y,\r\n * width, and height properties to 0.

\r\n *\r\n */\r\n Rectangle.prototype.setEmpty = function () {\r\n this.x = 0;\r\n this.y = 0;\r\n this.width = 0;\r\n this.height = 0;\r\n };\r\n /**\r\n * Sets the members of Rectangle to the specified values\r\n *\r\n * @param xa The x coordinate of the top-left corner of the\r\n * rectangle.\r\n * @param ya The y coordinate of the top-left corner of the\r\n * rectangle.\r\n * @param widtha The width of the rectangle, in pixels.\r\n * @param heighta The height of the rectangle, in pixels.\r\n */\r\n Rectangle.prototype.setTo = function (xa, ya, widtha, heighta) {\r\n this.x = xa;\r\n this.y = ya;\r\n this.width = widtha;\r\n this.height = heighta;\r\n };\r\n /**\r\n * Builds and returns a string that lists the horizontal and vertical\r\n * positions and the width and height of the Rectangle object.\r\n *\r\n * @return A string listing the value of each of the following properties of\r\n * the Rectangle object: x, y,\r\n * width, and height.\r\n */\r\n Rectangle.prototype.toString = function () {\r\n return \"[Rectangle] (x=\" + this.x + \", y=\" + this.y + \", width=\" + this.width + \", height=\" + this.height + \")\";\r\n };\r\n /**\r\n * Adds two rectangles together to create a new Rectangle object, by filling\r\n * in the horizontal and vertical space between the two rectangles.\r\n *\r\n *

Note: The union() method ignores rectangles with\r\n * 0 as the height or width value, such as: var\r\n * rect2:Rectangle = new Rectangle(300,300,50,0);

\r\n *\r\n * @param toUnion A Rectangle object to add to this Rectangle object.\r\n * @return A new Rectangle object that is the union of the two rectangles.\r\n */\r\n Rectangle.prototype.union = function (toUnion) {\r\n var u = new Rectangle();\r\n if (this.x < toUnion.x) {\r\n u.x = this.x;\r\n u.width = toUnion.x - this.x + toUnion.width;\r\n if (u.width < this.width)\r\n u.width = this.width;\r\n }\r\n else {\r\n u.x = toUnion.x;\r\n u.width = this.x - toUnion.x + this.width;\r\n if (u.width < toUnion.width)\r\n u.width = toUnion.width;\r\n }\r\n if (this.y < toUnion.y) {\r\n u.y = this.y;\r\n u.height = toUnion.y - this.y + toUnion.height;\r\n if (u.height < this.height)\r\n u.height = this.height;\r\n }\r\n else {\r\n u.y = toUnion.y;\r\n u.height = this.y - toUnion.y + this.height;\r\n if (u.height < toUnion.height)\r\n u.height = toUnion.height;\r\n }\r\n return u;\r\n };\r\n return Rectangle;\r\n}());\r\nexport { Rectangle };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Rectangle.js","var Sphere = (function () {\r\n /**\r\n * Create a Sphere with ABCD coefficients\r\n */\r\n function Sphere(x, y, z, radius) {\r\n if (x === void 0) { x = 0; }\r\n if (y === void 0) { y = 0; }\r\n if (z === void 0) { z = 0; }\r\n if (radius === void 0) { radius = 0; }\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n this.radius = radius;\r\n }\r\n Sphere.prototype.rayIntersection = function (position, direction, targetNormal) {\r\n if (this.containsPoint(position))\r\n return 0;\r\n var px = position.x - this.x, py = position.y - this.y, pz = position.z - this.z;\r\n var vx = direction.x, vy = direction.y, vz = direction.z;\r\n var rayEntryDistance;\r\n var a = vx * vx + vy * vy + vz * vz;\r\n var b = 2 * (px * vx + py * vy + pz * vz);\r\n var c = px * px + py * py + pz * pz - this.radius * this.radius;\r\n var det = b * b - 4 * a * c;\r\n if (det >= 0) {\r\n var sqrtDet = Math.sqrt(det);\r\n rayEntryDistance = (-b - sqrtDet) / (2 * a);\r\n if (rayEntryDistance >= 0) {\r\n targetNormal.x = px + rayEntryDistance * vx;\r\n targetNormal.y = py + rayEntryDistance * vy;\r\n targetNormal.z = pz + rayEntryDistance * vz;\r\n targetNormal.normalize();\r\n return rayEntryDistance;\r\n }\r\n }\r\n // ray misses sphere\r\n return -1;\r\n };\r\n Sphere.prototype.containsPoint = function (position) {\r\n var px = position.x - this.x;\r\n var py = position.y - this.y;\r\n var pz = position.z - this.z;\r\n var distance = Math.sqrt(px * px + py * py + pz * pz);\r\n return distance <= this.radius;\r\n };\r\n Sphere.prototype.toString = function () {\r\n return \"Sphere [x:\" + this.x + \", y:\" + this.y + \", z:\" + this.z + \", radius:\" + this.radius + \"]\";\r\n };\r\n return Sphere;\r\n}());\r\nexport { Sphere };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/geom/Sphere.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetEvent } from \"../events/AssetEvent\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\n/**\r\n *\r\n * @export class away.pool.AbstractionBase\r\n */\r\nvar AbstractionBase = (function (_super) {\r\n tslib_1.__extends(AbstractionBase, _super);\r\n function AbstractionBase(asset, pool) {\r\n var _this = _super.call(this) || this;\r\n _this._invalid = true;\r\n _this._asset = asset;\r\n _this._pool = pool;\r\n _this._onClearDelegate = function (event) { return _this.onClear(event); };\r\n _this._onInvalidateDelegate = function (event) { return _this.onInvalidate(event); };\r\n _this._asset.addEventListener(AssetEvent.CLEAR, _this._onClearDelegate);\r\n _this._asset.addEventListener(AssetEvent.INVALIDATE, _this._onInvalidateDelegate);\r\n return _this;\r\n }\r\n /**\r\n *\r\n */\r\n AbstractionBase.prototype.onClear = function (event) {\r\n this._asset.removeEventListener(AssetEvent.CLEAR, this._onClearDelegate);\r\n this._asset.removeEventListener(AssetEvent.INVALIDATE, this._onInvalidateDelegate);\r\n this._pool.clearAbstraction(this._asset);\r\n this._pool = null;\r\n this._asset = null;\r\n };\r\n /**\r\n *\r\n */\r\n AbstractionBase.prototype.onInvalidate = function (event) {\r\n this._invalid = true;\r\n };\r\n return AbstractionBase;\r\n}(EventDispatcher));\r\nexport { AbstractionBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/AbstractionBase.js","var AssetLibraryIterator = (function () {\r\n function AssetLibraryIterator(assets, assetTypeFilter, namespaceFilter, filterFunc) {\r\n this._assets = assets;\r\n this.filter(assetTypeFilter, namespaceFilter, filterFunc);\r\n }\r\n Object.defineProperty(AssetLibraryIterator.prototype, \"currentAsset\", {\r\n get: function () {\r\n // Return current, or null if no current\r\n return (this._idx < this._filtered.length) ? this._filtered[this._idx] : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetLibraryIterator.prototype, \"numAssets\", {\r\n get: function () {\r\n return this._filtered.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AssetLibraryIterator.prototype.next = function () {\r\n var next = null;\r\n if (this._idx < this._filtered.length)\r\n next = this._filtered[this._idx];\r\n this._idx++;\r\n return next;\r\n };\r\n AssetLibraryIterator.prototype.reset = function () {\r\n this._idx = 0;\r\n };\r\n AssetLibraryIterator.prototype.setIndex = function (index) {\r\n this._idx = index;\r\n };\r\n AssetLibraryIterator.prototype.filter = function (assetTypeFilter, namespaceFilter, filterFunc) {\r\n if (assetTypeFilter || namespaceFilter) {\r\n var idx;\r\n var asset;\r\n idx = 0;\r\n this._filtered = new Array(); //new Vector.;\r\n var l = this._assets.length;\r\n for (var c = 0; c < l; c++) {\r\n asset = this._assets[c];\r\n // Skip this assets if filtering on type and this is wrong type\r\n if (assetTypeFilter && asset.adaptee.assetType != assetTypeFilter)\r\n continue;\r\n // Skip this asset if filtering on namespace and this is wrong namespace\r\n if (namespaceFilter && asset.adaptee.assetNamespace != namespaceFilter)\r\n continue;\r\n // Skip this asset if a filter func has been provided and it returns false\r\n if (filterFunc != null && !filterFunc(asset))\r\n continue;\r\n this._filtered[idx++] = asset;\r\n }\r\n }\r\n else {\r\n this._filtered = this._assets;\r\n }\r\n };\r\n return AssetLibraryIterator;\r\n}());\r\nexport { AssetLibraryIterator };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/AssetLibraryIterator.js","var LoaderContext = (function () {\r\n /**\r\n * LoaderContext provides configuration for the Loader load() and parse() operations.\r\n * Use it to configure how (and if) dependencies are loaded, or to map dependency URLs to\r\n * embedded data.\r\n *\r\n * @see away.loading.Loader\r\n */\r\n function LoaderContext(includeDependencies, dependencyBaseUrl) {\r\n if (includeDependencies === void 0) { includeDependencies = true; }\r\n if (dependencyBaseUrl === void 0) { dependencyBaseUrl = null; }\r\n this._includeDependencies = includeDependencies;\r\n this._dependencyBaseUrl = dependencyBaseUrl || '';\r\n this._embeddedDataByUrl = {};\r\n this._remappedUrls = {};\r\n this._materialMode = LoaderContext.UNDEFINED;\r\n this._externalAssetMode = LoaderContext.PRELOADED;\r\n }\r\n Object.defineProperty(LoaderContext.prototype, \"includeDependencies\", {\r\n /**\r\n * Defines whether dependencies (all files except the one at the URL given to the load() or\r\n * parseData() operations) should be automatically loaded. Defaults to true.\r\n */\r\n get: function () {\r\n return this._includeDependencies;\r\n },\r\n set: function (val) {\r\n this._includeDependencies = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderContext.prototype, \"materialMode\", {\r\n /**\r\n * MaterialMode defines, if the Parser should create SinglePass or MultiPass Materials\r\n * Options:\r\n * 0 (Default / undefined) - All Parsers will create SinglePassMaterials, but the AWD2.1parser will create Materials as they are defined in the file\r\n * 1 (Force SinglePass) - All Parsers create SinglePassMaterials\r\n * 2 (Force MultiPass) - All Parsers will create MultiPassMaterials\r\n *\r\n */\r\n get: function () {\r\n return this._materialMode;\r\n },\r\n set: function (value) {\r\n this._materialMode = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderContext.prototype, \"externalAssetMode\", {\r\n get: function () {\r\n return this._externalAssetMode;\r\n },\r\n set: function (value) {\r\n this._externalAssetMode = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderContext.prototype, \"dependencyBaseUrl\", {\r\n /**\r\n * A base URL that will be prepended to all relative dependency URLs found in a loaded resource.\r\n * Absolute paths will not be affected by the value of this property.\r\n */\r\n get: function () {\r\n return this._dependencyBaseUrl;\r\n },\r\n set: function (val) {\r\n this._dependencyBaseUrl = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderContext.prototype, \"overrideAbsolutePaths\", {\r\n /**\r\n * Defines whether absolute paths (defined as paths that begin with a \"/\") should be overridden\r\n * with the dependencyBaseUrl defined in this context. If this is true, and the base path is\r\n * \"base\", /path/to/asset.jpg will be resolved as base/path/to/asset.jpg.\r\n */\r\n get: function () {\r\n return this._overrideAbsPath;\r\n },\r\n set: function (val) {\r\n this._overrideAbsPath = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderContext.prototype, \"overrideFullURLs\", {\r\n /**\r\n * Defines whether \"full\" URLs (defined as a URL that includes a scheme, e.g. http://) should be\r\n * overridden with the dependencyBaseUrl defined in this context. If this is true, and the base\r\n * path is \"base\", http://example.com/path/to/asset.jpg will be resolved as base/path/to/asset.jpg.\r\n */\r\n get: function () {\r\n return this._overrideFullUrls;\r\n },\r\n set: function (val) {\r\n this._overrideFullUrls = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Map a URL to another URL, so that files that are referred to by the original URL will instead\r\n * be loaded from the new URL. Use this when your file structure does not match the one that is\r\n * expected by the loaded file.\r\n *\r\n * @param originalUrl The original URL which is referenced in the loaded resource.\r\n * @param newUrl The URL from which away.should load the resource instead.\r\n *\r\n * @see mapUrlToData()\r\n */\r\n LoaderContext.prototype.mapUrl = function (originalUrl, newUrl) {\r\n this._remappedUrls[originalUrl] = newUrl;\r\n };\r\n /**\r\n * Map a URL to embedded data, so that instead of trying to load a dependency from the URL at\r\n * which it's referenced, the dependency data will be retrieved straight from the memory instead.\r\n *\r\n * @param originalUrl The original URL which is referenced in the loaded resource.\r\n * @param data The embedded data. Can be ByteArray or a export class which can be used to create a bytearray.\r\n */\r\n LoaderContext.prototype.mapUrlToData = function (originalUrl, data) {\r\n this._embeddedDataByUrl[originalUrl] = data;\r\n };\r\n /**\r\n * @private\r\n * Defines whether embedded data has been mapped to a particular URL.\r\n */\r\n LoaderContext.prototype._iHasDataForUrl = function (url) {\r\n return this._embeddedDataByUrl.hasOwnProperty(url);\r\n };\r\n /**\r\n * @private\r\n * Returns embedded data for a particular URL.\r\n */\r\n LoaderContext.prototype._iGetDataForUrl = function (url) {\r\n return this._embeddedDataByUrl[url];\r\n };\r\n /**\r\n * @private\r\n * Defines whether a replacement URL has been mapped to a particular URL.\r\n */\r\n LoaderContext.prototype._iHasMappingForUrl = function (url) {\r\n return this._remappedUrls.hasOwnProperty(url);\r\n };\r\n /**\r\n * @private\r\n * Returns new (replacement) URL for a particular original URL.\r\n */\r\n LoaderContext.prototype._iGetRemappedUrl = function (originalUrl) {\r\n return this._remappedUrls[originalUrl];\r\n };\r\n return LoaderContext;\r\n}());\r\nexport { LoaderContext };\r\nLoaderContext.UNDEFINED = 0;\r\nLoaderContext.SINGLEPASS_MATERIALS = 1;\r\nLoaderContext.MULTIPASS_MATERIALS = 2;\r\nLoaderContext.ON_DEMAND = \"onDemand\";\r\nLoaderContext.PRELOADED = \"preloaded\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/LoaderContext.js","var URLLoaderDataFormat = (function () {\r\n function URLLoaderDataFormat() {\r\n }\r\n return URLLoaderDataFormat;\r\n}());\r\nexport { URLLoaderDataFormat };\r\n/**\r\n * TEXT\r\n * @type {string}\r\n */\r\nURLLoaderDataFormat.TEXT = \"text\";\r\n/**\r\n * Variables / Value Pairs\r\n * @type {string}\r\n */\r\nURLLoaderDataFormat.VARIABLES = \"variables\";\r\n/**\r\n *\r\n * @type {string}\r\n */\r\nURLLoaderDataFormat.BLOB = \"blob\";\r\n/**\r\n *\r\n * @type {string}\r\n */\r\nURLLoaderDataFormat.ARRAY_BUFFER = \"arraybuffer\";\r\n/**\r\n *\r\n * @type {string}\r\n */\r\nURLLoaderDataFormat.BINARY = \"binary\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/net/URLLoaderDataFormat.js","var URLRequestMethod = (function () {\r\n function URLRequestMethod() {\r\n }\r\n return URLRequestMethod;\r\n}());\r\nexport { URLRequestMethod };\r\n/**\r\n *\r\n * @type {string}\r\n */\r\nURLRequestMethod.POST = 'POST';\r\n/**\r\n *\r\n * @type {string}\r\n */\r\nURLRequestMethod.GET = 'GET';\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/net/URLRequestMethod.js","var URLVariables = (function () {\r\n /**\r\n *\r\n * @param source\r\n */\r\n function URLVariables(source) {\r\n if (source === void 0) { source = null; }\r\n this._variables = new Object();\r\n if (source !== null)\r\n this.decode(source);\r\n }\r\n /**\r\n *\r\n * @param source\r\n */\r\n URLVariables.prototype.decode = function (source) {\r\n source = source.split(\"+\").join(\" \");\r\n var tokens, re = /[?&]?([^=]+)=([^&]*)/g;\r\n while (tokens = re.exec(source))\r\n this._variables[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);\r\n };\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n URLVariables.prototype.toString = function () {\r\n return '';\r\n };\r\n Object.defineProperty(URLVariables.prototype, \"variables\", {\r\n /**\r\n *\r\n * @returns {Object}\r\n */\r\n get: function () {\r\n return this._variables;\r\n },\r\n /**\r\n *\r\n * @returns {Object}\r\n */\r\n set: function (obj) {\r\n this._variables = obj;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(URLVariables.prototype, \"formData\", {\r\n /**\r\n *\r\n * @returns {Object}\r\n */\r\n get: function () {\r\n var fd = new FormData();\r\n for (var s in this._variables)\r\n fd.append(s, this._variables[s]);\r\n return fd;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return URLVariables;\r\n}());\r\nexport { URLVariables };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/net/URLVariables.js","import * as tslib_1 from \"tslib\";\r\nimport { URLLoaderDataFormat } from \"../net/URLLoaderDataFormat\";\r\nimport { URLRequestMethod } from \"../net/URLRequestMethod\";\r\nimport { URLVariables } from \"../net/URLVariables\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\nimport { URLLoaderEvent } from \"../events/URLLoaderEvent\";\r\n/**\r\n * The URLLoader is used to load a single file, as part of a resource.\r\n *\r\n * While URLLoader can be used directly, e.g. to create a third-party asset\r\n * management system, it's recommended to use any of the classes Loader3D, Loader\r\n * and AssetLibrary instead in most cases.\r\n *\r\n * @see Loader\r\n * @see away.library.AssetLibrary\r\n */\r\nvar URLLoader = (function (_super) {\r\n tslib_1.__extends(URLLoader, _super);\r\n /**\r\n * Creates a new URLLoader object.\r\n */\r\n function URLLoader() {\r\n var _this = _super.call(this) || this;\r\n _this._bytesLoaded = 0;\r\n _this._bytesTotal = 0;\r\n _this._dataFormat = URLLoaderDataFormat.TEXT;\r\n _this._loadError = false;\r\n return _this;\r\n }\r\n Object.defineProperty(URLLoader.prototype, \"url\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._request ? this._request.url : '';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(URLLoader.prototype, \"data\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._data;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(URLLoader.prototype, \"dataFormat\", {\r\n get: function () {\r\n return this._dataFormat;\r\n },\r\n /**\r\n *\r\n * URLLoaderDataFormat.BINARY\r\n * URLLoaderDataFormat.TEXT\r\n * URLLoaderDataFormat.VARIABLES\r\n *\r\n * @param format\r\n */\r\n set: function (format) {\r\n this._dataFormat = format;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(URLLoader.prototype, \"bytesLoaded\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n return this._bytesLoaded;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(URLLoader.prototype, \"bytesTotal\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n return this._bytesTotal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Load a resource from a file.\r\n *\r\n * @param request The URLRequest object containing the URL of the object to be loaded.\r\n */\r\n URLLoader.prototype.load = function (request) {\r\n this._request = request;\r\n this.initXHR();\r\n if (request.method === URLRequestMethod.POST)\r\n this.postRequest(request);\r\n else\r\n this.getRequest(request);\r\n };\r\n URLLoader.prototype.isSupported = function () {\r\n return window != null;\r\n };\r\n /**\r\n *\r\n */\r\n URLLoader.prototype.close = function () {\r\n this._XHR.abort();\r\n this.disposeXHR();\r\n };\r\n /**\r\n *\r\n */\r\n URLLoader.prototype.dispose = function () {\r\n if (this._XHR)\r\n this._XHR.abort();\r\n this.disposeXHR();\r\n };\r\n /**\r\n *\r\n * @param xhr\r\n * @param responseType\r\n */\r\n URLLoader.prototype.setResponseType = function (xhr, responseType) {\r\n switch (responseType) {\r\n case URLLoaderDataFormat.ARRAY_BUFFER:\r\n case URLLoaderDataFormat.BLOB:\r\n case URLLoaderDataFormat.TEXT:\r\n xhr.responseType = responseType;\r\n break;\r\n case URLLoaderDataFormat.VARIABLES:\r\n xhr.responseType = URLLoaderDataFormat.TEXT;\r\n break;\r\n case URLLoaderDataFormat.BINARY:\r\n xhr.responseType = '';\r\n break;\r\n default:\r\n }\r\n };\r\n /**\r\n *\r\n * @param request {URLRequest}\r\n */\r\n URLLoader.prototype.getRequest = function (request) {\r\n try {\r\n this._XHR.open(request.method, request.url, request.async);\r\n this.setResponseType(this._XHR, this._dataFormat);\r\n this._XHR.send(); // No data to send\r\n }\r\n catch (e /* */) {\r\n this.handleXmlHttpRequestException(e);\r\n }\r\n };\r\n /**\r\n *\r\n * @param request {URLRequest}\r\n */\r\n URLLoader.prototype.postRequest = function (request) {\r\n this._loadError = false;\r\n this._XHR.open(request.method, request.url, request.async);\r\n if (request.data != null) {\r\n if (request.data instanceof URLVariables) {\r\n var urlVars = request.data;\r\n try {\r\n this._XHR.responseType = 'text';\r\n this._XHR.send(urlVars.formData);\r\n }\r\n catch (e /* */) {\r\n this.handleXmlHttpRequestException(e);\r\n }\r\n }\r\n else {\r\n this.setResponseType(this._XHR, this._dataFormat);\r\n if (request.data)\r\n this._XHR.send(request.data); // TODO: Test\r\n else\r\n this._XHR.send(); // no data to send\r\n }\r\n }\r\n else {\r\n this._XHR.send(); // No data to send\r\n }\r\n };\r\n /**\r\n *\r\n * @param error {XMLHttpRequestException}\r\n */\r\n URLLoader.prototype.handleXmlHttpRequestException = function (error /* */) {\r\n switch (error.code) {\r\n /******************************************************************************************************************************************************************************************************\r\n *\r\n * XMLHttpRequestException { message: \"NETWORK_ERR: XMLHttpRequest Exception 101\", name: \"NETWORK_ERR\", code: 101, stack: \"Error: A network error occurred in synchronous req…\",NETWORK_ERR: 101… }\r\n * code: 101 , message: \"NETWORK_ERR: XMLHttpRequest Exception 101\" , name: \"NETWORK_ERR\"\r\n *\r\n ******************************************************************************************************************************************************************************************************/\r\n case 101:\r\n // Note: onLoadError event throws IO_ERROR event - this case is already Covered\r\n break;\r\n }\r\n };\r\n /**\r\n *\r\n */\r\n URLLoader.prototype.initXHR = function () {\r\n var _this = this;\r\n if (!this._XHR) {\r\n this._XHR = new XMLHttpRequest();\r\n this._XHR.onloadstart = function (event) { return _this.onLoadStart(event); }; // loadstart\t - When the request starts.\r\n this._XHR.onprogress = function (event) { return _this.onProgress(event); }; // progress\t - While loading and sending data.\r\n this._XHR.onabort = function (event) { return _this.onAbort(event); }; // abort\t - When the request has been aborted, either by invoking the abort() method or navigating away from the page.\r\n this._XHR.onerror = function (event) { return _this.onLoadError(event); }; // error\t - When the request has failed.\r\n this._XHR.onload = function (event) { return _this.onLoadComplete(event); }; // load\t - When the request has successfully completed.\r\n this._XHR.ontimeout = function (event) { return _this.onTimeOut(event); }; // timeout\t - When the author specified timeout has passed before the request could complete.\r\n this._XHR.onloadend = function (event) { return _this.onLoadEnd(event); }; // loadend\t - When the request has completed, regardless of whether or not it was successful.\r\n this._XHR.onreadystatechange = function (event) { return _this.onReadyStateChange(event); }; // onreadystatechange - When XHR state changes\r\n }\r\n };\r\n /**\r\n *\r\n */\r\n URLLoader.prototype.disposeXHR = function () {\r\n if (this._XHR !== null) {\r\n this._XHR.onloadstart = null;\r\n this._XHR.onprogress = null;\r\n this._XHR.onabort = null;\r\n this._XHR.onerror = null;\r\n this._XHR.onload = null;\r\n this._XHR.ontimeout = null;\r\n this._XHR.onloadend = null;\r\n this._XHR = null;\r\n }\r\n };\r\n /**\r\n *\r\n * @param source\r\n */\r\n URLLoader.prototype.decodeURLVariables = function (source) {\r\n var result = new Object();\r\n source = source.split(\"+\").join(\" \");\r\n var tokens, re = /[?&]?([^=]+)=([^&]*)/g;\r\n while (tokens = re.exec(source))\r\n result[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);\r\n return result;\r\n };\r\n // XMLHttpRequest - Event Handlers\r\n /**\r\n * When XHR state changes\r\n * @param event\r\n */\r\n URLLoader.prototype.onReadyStateChange = function (event) {\r\n if (this._XHR.readyState == 4) {\r\n this._status = this._XHR.status;\r\n if (this._status == 404) {\r\n this._loadError = true;\r\n this.dispatchEvent(this._loadErrorEvent || (this._loadErrorEvent = new URLLoaderEvent(URLLoaderEvent.LOAD_ERROR, this)));\r\n }\r\n this.dispatchEvent(this._statusEvent || (this._statusEvent = new URLLoaderEvent(URLLoaderEvent.HTTP_STATUS, this)));\r\n }\r\n };\r\n /**\r\n * When the request has completed, regardless of whether or not it was successful.\r\n * @param event\r\n */\r\n URLLoader.prototype.onLoadEnd = function (event) {\r\n if (this._loadError === true)\r\n return;\r\n };\r\n /**\r\n * When the author specified timeout has passed before the request could complete.\r\n * @param event\r\n */\r\n URLLoader.prototype.onTimeOut = function (event) {\r\n //TODO: Timeout not currently implemented ( also not part of AS3 API )\r\n };\r\n /**\r\n * When the request has been aborted, either by invoking the abort() method or navigating away from the page.\r\n * @param event\r\n */\r\n URLLoader.prototype.onAbort = function (event) {\r\n // TODO: investigate whether this needs to be an IOError\r\n };\r\n /**\r\n * While loading and sending data.\r\n * @param event\r\n */\r\n URLLoader.prototype.onProgress = function (event) {\r\n this._bytesTotal = event.total;\r\n this._bytesLoaded = event.loaded;\r\n this.dispatchEvent(this._progressEvent || (this._progressEvent = new URLLoaderEvent(URLLoaderEvent.LOAD_PROGRESS, this)));\r\n };\r\n /**\r\n * When the request starts.\r\n * @param event\r\n */\r\n URLLoader.prototype.onLoadStart = function (event) {\r\n this.dispatchEvent(this._loadStartEvent || (this._loadStartEvent = new URLLoaderEvent(URLLoaderEvent.LOAD_START, this)));\r\n };\r\n /**\r\n * When the request has successfully completed.\r\n * @param event\r\n */\r\n URLLoader.prototype.onLoadComplete = function (event) {\r\n if (this._loadError === true)\r\n return;\r\n switch (this._dataFormat) {\r\n case URLLoaderDataFormat.TEXT:\r\n this._data = this._XHR.responseText;\r\n break;\r\n case URLLoaderDataFormat.VARIABLES:\r\n this._data = this.decodeURLVariables(this._XHR.responseText);\r\n break;\r\n case URLLoaderDataFormat.BLOB:\r\n case URLLoaderDataFormat.ARRAY_BUFFER:\r\n case URLLoaderDataFormat.BINARY:\r\n this._data = this._XHR.response;\r\n break;\r\n default:\r\n this._data = this._XHR.responseText;\r\n break;\r\n }\r\n this.dispatchEvent(this._loadCompleteEvent || (this._loadCompleteEvent = new URLLoaderEvent(URLLoaderEvent.LOAD_COMPLETE, this)));\r\n };\r\n /**\r\n * When the request has failed. ( due to network issues ).\r\n * @param event\r\n */\r\n URLLoader.prototype.onLoadError = function (event) {\r\n this._loadError = true;\r\n this.dispatchEvent(this._loadErrorEvent || (this._loadErrorEvent = new URLLoaderEvent(URLLoaderEvent.LOAD_ERROR, this)));\r\n };\r\n return URLLoader;\r\n}(EventDispatcher));\r\nexport { URLLoader };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/net/URLLoader.js","/**\r\n * ResourceDependency represents the data required to load, parse and resolve additional files (\"dependencies\")\r\n * required by a parser, used by ResourceLoadSession.\r\n *\r\n */\r\nvar ResourceDependency = (function () {\r\n function ResourceDependency(id, request, data, parser, parentParser, retrieveAsRawData, suppressAssetEvents, sub_id) {\r\n if (retrieveAsRawData === void 0) { retrieveAsRawData = false; }\r\n if (suppressAssetEvents === void 0) { suppressAssetEvents = false; }\r\n if (sub_id === void 0) { sub_id = 0; }\r\n this._id = id;\r\n this._sub_id = sub_id;\r\n this._request = request;\r\n this._data = data;\r\n this._parser = parser;\r\n this._parentParser = parentParser;\r\n this._retrieveAsRawData = retrieveAsRawData;\r\n this._suppressAssetEvents = suppressAssetEvents;\r\n this._assets = new Array();\r\n this._dependencies = new Array();\r\n }\r\n Object.defineProperty(ResourceDependency.prototype, \"id\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResourceDependency.prototype, \"sub_id\", {\r\n get: function () {\r\n return this._sub_id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResourceDependency.prototype, \"request\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._request;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResourceDependency.prototype, \"data\", {\r\n /**\r\n * The data containing the dependency to be parsed, if the resource was already loaded.\r\n */\r\n get: function () {\r\n return this._data;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResourceDependency.prototype, \"parser\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._parser;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResourceDependency.prototype, \"parentParser\", {\r\n /**\r\n * The parser which is dependent on this ResourceDependency object.\r\n */\r\n get: function () {\r\n return this._parentParser;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResourceDependency.prototype, \"retrieveAsRawData\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._retrieveAsRawData;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResourceDependency.prototype, \"suppresAssetEvents\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._suppressAssetEvents;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResourceDependency.prototype, \"assets\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._assets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResourceDependency.prototype, \"dependencies\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._dependencies;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @private\r\n * Method to set data after having already created the dependency object, e.g. after load.\r\n */\r\n ResourceDependency.prototype._iSetData = function (data) {\r\n this._data = data;\r\n };\r\n /**\r\n * @private\r\n *\r\n */\r\n ResourceDependency.prototype._iSetParser = function (parser) {\r\n this._parser = parser;\r\n };\r\n /**\r\n * Resolve the dependency when it's loaded with the parent parser. For example, a dependency containing an\r\n * ImageResource would be assigned to a Mesh instance as a BitmapMaterial, a scene graph object would be added\r\n * to its intended parent. The dependency should be a member of the dependencies property.\r\n */\r\n ResourceDependency.prototype.resolve = function () {\r\n if (this._parentParser)\r\n this._parentParser._iResolveDependency(this);\r\n };\r\n /**\r\n * Resolve a dependency failure. For example, map loading failure from a 3d file\r\n */\r\n ResourceDependency.prototype.resolveFailure = function () {\r\n if (this._parentParser)\r\n this._parentParser._iResolveDependencyFailure(this);\r\n };\r\n /**\r\n * Resolve the dependencies name\r\n */\r\n ResourceDependency.prototype.resolveName = function (asset) {\r\n if (this._parentParser)\r\n return this._parentParser._iResolveDependencyName(this, asset);\r\n return asset.name;\r\n };\r\n return ResourceDependency;\r\n}());\r\nexport { ResourceDependency };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/parsers/ResourceDependency.js","import * as tslib_1 from \"tslib\";\r\nimport { LoaderContext } from \"../library/LoaderContext\";\r\nimport { URLLoader } from \"../net/URLLoader\";\r\nimport { URLLoaderDataFormat } from \"../net/URLLoaderDataFormat\";\r\nimport { AssetEvent } from \"../events/AssetEvent\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\nimport { URLLoaderEvent } from \"../events/URLLoaderEvent\";\r\nimport { LoaderEvent } from \"../events/LoaderEvent\";\r\nimport { ParserEvent } from \"../events/ParserEvent\";\r\nimport { ResourceDependency } from \"../parsers/ResourceDependency\";\r\n/**\r\n * Dispatched when any asset finishes parsing. Also see specific events for each\r\n * individual asset type (meshes, materials et c.)\r\n *\r\n * @eventType away.events.AssetEvent\r\n */\r\n//[Event(name=\"assetComplete\", type=\"away3d.events.AssetEvent\")]\r\n/**\r\n * Dispatched when a full resource (including dependencies) finishes loading.\r\n *\r\n * @eventType away.events.LoaderEvent\r\n */\r\n//[Event(name=\"resourceComplete\", type=\"away3d.events.LoaderEvent\")]\r\n/**\r\n * Dispatched when a single dependency (which may be the main file of a resource)\r\n * finishes loading.\r\n *\r\n * @eventType away.events.LoaderEvent\r\n */\r\n//[Event(name=\"dependencyComplete\", type=\"away3d.events.LoaderEvent\")]\r\n/**\r\n * Dispatched when an error occurs during loading. I\r\n *\r\n * @eventType away.events.LoaderEvent\r\n */\r\n//[Event(name=\"loadError\", type=\"away3d.events.LoaderEvent\")]\r\n/**\r\n * Dispatched when an error occurs during parsing.\r\n *\r\n * @eventType away.events.ParserEvent\r\n */\r\n//[Event(name=\"parseError\", type=\"away3d.events.ParserEvent\")]\r\n/**\r\n * Dispatched when an image asset dimensions are not a power of 2\r\n *\r\n * @eventType away.events.AssetEvent\r\n */\r\n//[Event(name=\"textureSizeError\", type=\"away3d.events.AssetEvent\")]\r\n/**\r\n * Loader can load any file format that away.supports (or for which a third-party parser\r\n * has been plugged in) and it's dependencies. Events are dispatched when assets are encountered\r\n * and for when the resource (or it's dependencies) have been loaded.\r\n *\r\n * The Loader will not make assets available in any other way than through the dispatched\r\n * events. To store assets and make them available at any point from any module in an application,\r\n * use the AssetLibrary to load and manage assets.\r\n *\r\n * @see away.library.AssetLibrary\r\n */\r\nvar Loader = (function (_super) {\r\n tslib_1.__extends(Loader, _super);\r\n /**\r\n * Create a new ResourceLoadSession object.\r\n */\r\n function Loader(materialMode) {\r\n if (materialMode === void 0) { materialMode = 0; }\r\n var _this = _super.call(this) || this;\r\n _this._materialMode = materialMode;\r\n _this._stack = new Array();\r\n _this._errorHandlers = new Array();\r\n _this._parseErrorHandlers = new Array();\r\n _this._onReadyForDependenciesDelegate = function (event) { return _this.onReadyForDependencies(event); };\r\n _this._onParseCompleteDelegate = function (event) { return _this.onParseComplete(event); };\r\n _this._onParseErrorDelegate = function (event) { return _this.onParseError(event); };\r\n _this._onLoadProgressDelegate = function (event) { return _this.onLoadProgress(event); };\r\n _this._onLoadCompleteDelegate = function (event) { return _this.onLoadComplete(event); };\r\n _this._onLoadErrorDelegate = function (event) { return _this.onLoadError(event); };\r\n _this._onTextureSizeErrorDelegate = function (event) { return _this.onTextureSizeError(event); };\r\n _this._onAssetCompleteDelegate = function (event) { return _this.onAssetComplete(event); };\r\n return _this;\r\n }\r\n /**\r\n * Enables a specific parser.\r\n * When no specific parser is set for a loading/parsing opperation,\r\n * loader3d can autoselect the correct parser to use.\r\n * A parser must have been enabled, to be considered when autoselecting the parser.\r\n *\r\n * @param parser The parser export class to enable.\r\n *\r\n * @see away.parsers.Parsers\r\n */\r\n Loader.enableParser = function (parser) {\r\n if (Loader._parsers.indexOf(parser) < 0)\r\n Loader._parsers.push(parser);\r\n };\r\n /**\r\n * Enables a list of parsers.\r\n * When no specific parser is set for a loading/parsing opperation,\r\n * Loader can autoselect the correct parser to use.\r\n * A parser must have been enabled, to be considered when autoselecting the parser.\r\n *\r\n * @param parsers A Vector of parser classes to enable.\r\n * @see away.parsers.Parsers\r\n */\r\n Loader.enableParsers = function (parsers) {\r\n for (var c = 0; c < parsers.length; c++)\r\n Loader.enableParser(parsers[c]);\r\n };\r\n Object.defineProperty(Loader.prototype, \"baseDependency\", {\r\n /**\r\n * Returns the base dependency of the loader\r\n */\r\n get: function () {\r\n return this._baseDependency;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Loader.prototype, \"loaderInfo\", {\r\n /**\r\n * Returns a LoaderInfo object corresponding to the object being loaded.\r\n * LoaderInfo objects are shared between the Loader object and the loaded\r\n * content object. The LoaderInfo object supplies loading progress\r\n * information and statistics about the loaded file.\r\n *\r\n *

Events related to the load are dispatched by the LoaderInfo object\r\n * referenced by the contentLoaderInfo property of the Loader\r\n * object. The contentLoaderInfo property is set to a valid\r\n * LoaderInfo object, even before the content is loaded, so that you can add\r\n * event listeners to the object prior to the load.

\r\n *\r\n *

To detect uncaught errors that happen in a loaded SWF, use the\r\n * Loader.uncaughtErrorEvents property, not the\r\n * Loader.contentLoaderInfo.uncaughtErrorEvents property.

\r\n */\r\n get: function () {\r\n return this._loaderInfo;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Loads a file and (optionally) all of its dependencies.\r\n *\r\n * @param req The URLRequest object containing the URL of the file to be loaded.\r\n * @param context An optional context object providing additional parameters for loading\r\n * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets\r\n * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, Loader will attempt to auto-detect the file type.\r\n */\r\n Loader.prototype.load = function (req, context, ns, parser) {\r\n if (context === void 0) { context = null; }\r\n if (ns === void 0) { ns = null; }\r\n if (parser === void 0) { parser = null; }\r\n this._uri = req.url = req.url.replace(/\\\\/g, \"/\");\r\n this._context = context;\r\n this._namespace = ns;\r\n this._baseDependency = new ResourceDependency('', req, null, parser, null);\r\n this.retrieveDependency(this._baseDependency);\r\n };\r\n /**\r\n * Loads a resource from already loaded data.\r\n *\r\n * @param data The data object containing all resource information.\r\n * @param context An optional context object providing additional parameters for loading\r\n * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets\r\n * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, Loader will attempt to auto-detect the file type.\r\n */\r\n Loader.prototype.loadData = function (data, id, context, ns, parser) {\r\n if (context === void 0) { context = null; }\r\n if (ns === void 0) { ns = null; }\r\n if (parser === void 0) { parser = null; }\r\n this._uri = id;\r\n this._context = context;\r\n this._namespace = ns;\r\n this._baseDependency = new ResourceDependency(id, null, data, parser, null);\r\n this.retrieveDependency(this._baseDependency);\r\n };\r\n /**\r\n * Recursively retrieves the next to-be-loaded and parsed dependency on the stack, or pops the list off the\r\n * stack when complete and continues on the top set.\r\n * @param parser The parser that will translate the data into a usable resource.\r\n */\r\n Loader.prototype.retrieveNext = function (parser) {\r\n if (parser === void 0) { parser = null; }\r\n if (this._currentDependency.dependencies.length) {\r\n var next = this._currentDependency.dependencies.pop();\r\n this._stack.push(this._currentDependency);\r\n this.retrieveDependency(next);\r\n }\r\n else if (this._currentDependency.parser && this._currentDependency.parser.parsingPaused) {\r\n this._currentDependency.parser._iResumeParsing();\r\n }\r\n else if (this._stack.length) {\r\n var prev = this._currentDependency;\r\n this._currentDependency = this._stack.pop();\r\n if (prev._iSuccess)\r\n prev.resolve();\r\n this.retrieveNext(parser);\r\n }\r\n else {\r\n this.dispatchEvent(new LoaderEvent(LoaderEvent.LOAD_COMPLETE, this._uri, this._baseDependency.parser.content, this._baseDependency.assets));\r\n }\r\n };\r\n /**\r\n * Retrieves a single dependency.\r\n * @param parser The parser that will translate the data into a usable resource.\r\n */\r\n Loader.prototype.retrieveDependency = function (dependency) {\r\n var data;\r\n if (this._context && this._context.materialMode != 0)\r\n this._materialMode = this._context.materialMode;\r\n this._currentDependency = dependency;\r\n dependency._iLoader = new URLLoader();\r\n this.addEventListeners(dependency._iLoader);\r\n // Get already loaded (or mapped) data if available\r\n data = dependency.data;\r\n if (this._context && dependency.request) {\r\n if (this._context._iHasDataForUrl(dependency.request.url)) {\r\n data = this._context._iGetDataForUrl(dependency.request.url);\r\n }\r\n else if (this._context.externalAssetMode == LoaderContext.ON_DEMAND && (this.getSuffix(dependency.request.url) == \"jpg\" || this.getSuffix(dependency.request.url) == \"png\")) {\r\n data = dependency.request;\r\n if (!dependency.parser)\r\n dependency._iSetParser(this.getParserFromSuffix(dependency.request.url));\r\n }\r\n }\r\n if (data) {\r\n if (data.constructor === Function)\r\n data = new data();\r\n dependency._iSetData(data);\r\n if (dependency.retrieveAsRawData) {\r\n // No need to parse. The parent parser is expecting this\r\n // to be raw data so it can be passed directly.\r\n dependency.resolve();\r\n // Move on to next dependency\r\n this.retrieveNext();\r\n }\r\n else {\r\n this.parseDependency(dependency);\r\n }\r\n }\r\n else {\r\n // Resolve URL and start loading\r\n dependency.request.url = this.resolveDependencyUrl(dependency);\r\n if (dependency.retrieveAsRawData) {\r\n // Always use binary for raw data loading\r\n dependency._iLoader.dataFormat = URLLoaderDataFormat.BINARY;\r\n }\r\n else {\r\n if (!dependency.parser)\r\n dependency._iSetParser(this.getParserFromSuffix(dependency.request.url));\r\n if (dependency.parser) {\r\n dependency._iLoader.dataFormat = dependency.parser.dataFormat;\r\n }\r\n else {\r\n // Always use BINARY for unknown file formats. The thorough\r\n // file type check will determine format after load, and if\r\n // binary, a text load will have broken the file data.\r\n dependency._iLoader.dataFormat = URLLoaderDataFormat.BINARY;\r\n }\r\n }\r\n dependency._iLoader.load(dependency.request);\r\n }\r\n };\r\n Loader.prototype.joinUrl = function (base, end) {\r\n if (end.charAt(0) == '/' || end.charAt(0) == '\\\\')\r\n end = end.substr(1);\r\n if (end.charAt(0) == '.')\r\n end = end.substr(2);\r\n if (base.length == 0)\r\n return end;\r\n if (base.charAt(base.length - 1) == '/' || base.charAt(base.length - 1) == '\\\\')\r\n base = base.substr(0, base.length - 1);\r\n return base.concat('/', end);\r\n };\r\n Loader.prototype.resolveDependencyUrl = function (dependency) {\r\n var scheme_re;\r\n var base;\r\n var url = dependency.request.url;\r\n // Has the user re-mapped this URL?\r\n if (this._context && this._context._iHasMappingForUrl(url))\r\n return this._context._iGetRemappedUrl(url);\r\n // This is the \"base\" dependency, i.e. the actual requested asset.\r\n // We will not try to resolve this since the user can probably be\r\n // thrusted to know this URL better than our automatic resolver. :)\r\n if (url == this._uri)\r\n return url;\r\n // Absolute URL? Check if starts with slash or a URL\r\n // scheme definition (e.g. ftp://, http://, file://)\r\n scheme_re = new RegExp('/^[a-zA-Z]{3,4}:\\/\\//');\r\n if (url.charAt(0) == '/') {\r\n if (this._context && this._context.overrideAbsolutePaths)\r\n return this.joinUrl(this._context.dependencyBaseUrl, url);\r\n else\r\n return url;\r\n }\r\n else if (scheme_re.test(url)) {\r\n // If overriding full URLs, get rid of scheme (e.g. \"http://\")\r\n // and replace with the dependencyBaseUrl defined by user.\r\n if (this._context && this._context.overrideFullURLs) {\r\n var noscheme_url = url.replace(scheme_re, ''); //url['replace'](scheme_re);\r\n return this.joinUrl(this._context.dependencyBaseUrl, noscheme_url);\r\n }\r\n }\r\n // Since not absolute, just get rid of base file name to find it's\r\n // folder and then concatenate dynamic URL\r\n if (this._context && this._context.dependencyBaseUrl) {\r\n base = this._context.dependencyBaseUrl;\r\n return this.joinUrl(base, url);\r\n }\r\n else {\r\n base = this._uri.substring(0, this._uri.lastIndexOf('/') + 1);\r\n return this.joinUrl(base, url);\r\n }\r\n };\r\n Loader.prototype.retrieveParserDependencies = function () {\r\n if (!this._currentDependency)\r\n return;\r\n var parserDependancies = this._currentDependency.parser.dependencies;\r\n var i, len = parserDependancies.length;\r\n for (i = 0; i < len; i++)\r\n this._currentDependency.dependencies[i] = parserDependancies[i];\r\n // Since more dependencies might be added eventually, empty this\r\n // list so that the same dependency isn't retrieved more than once.\r\n parserDependancies.length = 0;\r\n this._stack.push(this._currentDependency);\r\n this.retrieveNext();\r\n };\r\n Loader.prototype.resolveParserDependencies = function () {\r\n this._currentDependency._iSuccess = true;\r\n // Retrieve any last dependencies remaining on this parser, or\r\n // if none exists, just move on.\r\n if (this._currentDependency.parser && this._currentDependency.parser.dependencies.length && (!this._context || this._context.includeDependencies))\r\n this.retrieveParserDependencies();\r\n else\r\n this.retrieveNext();\r\n };\r\n /**\r\n * Called when a single dependency loading failed, and pushes further dependencies onto the stack.\r\n * @param event\r\n */\r\n Loader.prototype.onLoadError = function (event) {\r\n var handled;\r\n var isDependency = (this._currentDependency != this._baseDependency);\r\n var loader = event.urlLoader;\r\n this.removeEventListeners(loader);\r\n if (this.hasEventListener(URLLoaderEvent.LOAD_ERROR)) {\r\n this.dispatchEvent(event);\r\n handled = true;\r\n }\r\n else {\r\n // TODO: Consider not doing this even when Loader does have it's own LOAD_ERROR listener\r\n var i, len = this._errorHandlers.length;\r\n for (i = 0; i < len; i++)\r\n if (!handled)\r\n handled = this._errorHandlers[i](event);\r\n }\r\n if (handled) {\r\n //if (isDependency && ! event.isDefaultPrevented()) {\r\n if (isDependency) {\r\n this._currentDependency.resolveFailure();\r\n this.retrieveNext();\r\n }\r\n else {\r\n // Either this was the base file (last left in the stack) or\r\n // default behavior was prevented by the handlers, and hence\r\n // there is nothing more to do than clean up and bail.\r\n this.dispose();\r\n return;\r\n }\r\n }\r\n else {\r\n // Error event was not handled by listeners directly on Loader or\r\n // on any of the subscribed loaders (in the list of error handlers.)\r\n throw new Error();\r\n }\r\n };\r\n /**\r\n * Called when a dependency parsing failed, and dispatches a ParserEvent.PARSE_ERROR\r\n * @param event\r\n */\r\n Loader.prototype.onParseError = function (event) {\r\n var handled;\r\n var isDependency = (this._currentDependency != this._baseDependency);\r\n var loader = event.target;\r\n this.removeEventListeners(loader);\r\n if (this.hasEventListener(ParserEvent.PARSE_ERROR)) {\r\n this.dispatchEvent(event);\r\n handled = true;\r\n }\r\n else {\r\n // TODO: Consider not doing this even when Loader does\r\n // have it's own LOAD_ERROR listener\r\n var i, len = this._parseErrorHandlers.length;\r\n for (i = 0; i < len; i++)\r\n if (!handled)\r\n handled = this._parseErrorHandlers[i](event);\r\n }\r\n if (handled) {\r\n this.retrieveNext();\r\n }\r\n else {\r\n // Error event was not handled by listeners directly on Loader or\r\n // on any of the subscribed loaders (in the list of error handlers.)\r\n throw new Error(event.message);\r\n }\r\n };\r\n Loader.prototype.onAssetComplete = function (event) {\r\n // Add loaded asset to list of assets retrieved as part\r\n // of the current dependency. This list will be inspected\r\n // by the parent parser when dependency is resolved\r\n if (this._currentDependency)\r\n this._currentDependency.assets.push(event.asset);\r\n event.asset.resetAssetPath(event.asset.name, this._namespace);\r\n if (!this._currentDependency.suppresAssetEvents)\r\n this.dispatchEvent(event);\r\n };\r\n Loader.prototype.onReadyForDependencies = function (event) {\r\n var parser = event.target;\r\n if (this._context && !this._context.includeDependencies)\r\n parser._iResumeParsing();\r\n else\r\n this.retrieveParserDependencies();\r\n };\r\n Loader.prototype.onLoadProgress = function (event) {\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * Called when a single dependency was parsed, and pushes further dependencies onto the stack.\r\n * @param event\r\n */\r\n Loader.prototype.onLoadComplete = function (event) {\r\n var loader = event.urlLoader;\r\n this.removeEventListeners(loader);\r\n // Resolve this dependency\r\n this._currentDependency._iSetData(loader.data);\r\n if (this._currentDependency.retrieveAsRawData) {\r\n // No need to parse this data, which should be returned as is\r\n this.resolveParserDependencies();\r\n }\r\n else {\r\n this.parseDependency(this._currentDependency);\r\n }\r\n };\r\n /**\r\n * Called when parsing is complete.\r\n */\r\n Loader.prototype.onParseComplete = function (event) {\r\n var parser = event.target;\r\n parser.removeEventListener(ParserEvent.READY_FOR_DEPENDENCIES, this._onReadyForDependenciesDelegate);\r\n parser.removeEventListener(ParserEvent.PARSE_COMPLETE, this._onParseCompleteDelegate);\r\n parser.removeEventListener(ParserEvent.PARSE_ERROR, this._onParseErrorDelegate);\r\n parser.removeEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);\r\n parser.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\r\n this.resolveParserDependencies();\r\n };\r\n /**\r\n * Called when an image is too large or it's dimensions are not a power of 2\r\n * @param event\r\n */\r\n Loader.prototype.onTextureSizeError = function (event) {\r\n event.asset.name = this._currentDependency.resolveName(event.asset);\r\n this.dispatchEvent(event);\r\n };\r\n Loader.prototype.addEventListeners = function (loader) {\r\n loader.addEventListener(URLLoaderEvent.LOAD_PROGRESS, this._onLoadProgressDelegate);\r\n loader.addEventListener(URLLoaderEvent.LOAD_COMPLETE, this._onLoadCompleteDelegate);\r\n loader.addEventListener(URLLoaderEvent.LOAD_ERROR, this._onLoadErrorDelegate);\r\n };\r\n Loader.prototype.removeEventListeners = function (loader) {\r\n loader.removeEventListener(URLLoaderEvent.LOAD_PROGRESS, this._onLoadProgressDelegate);\r\n loader.removeEventListener(URLLoaderEvent.LOAD_COMPLETE, this._onLoadCompleteDelegate);\r\n loader.removeEventListener(URLLoaderEvent.LOAD_ERROR, this._onLoadErrorDelegate);\r\n };\r\n Loader.prototype.stop = function () {\r\n this.dispose();\r\n };\r\n Loader.prototype.dispose = function () {\r\n this._errorHandlers = null;\r\n this._parseErrorHandlers = null;\r\n this._context = null;\r\n this._stack = null;\r\n if (this._currentDependency && this._currentDependency._iLoader)\r\n this.removeEventListeners(this._currentDependency._iLoader);\r\n this._currentDependency = null;\r\n };\r\n /**\r\n * @private\r\n * This method is used by other loader classes (e.g. Loader3D and AssetLibraryBundle) to\r\n * add error event listeners to the Loader instance. This system is used instead of\r\n * the regular EventDispatcher system so that the AssetLibrary error handler can be sure\r\n * that if hasEventListener() returns true, it's client code that's listening for the\r\n * event. Secondly, functions added as error handler through this custom method are\r\n * expected to return a boolean value indicating whether the event was handled (i.e.\r\n * whether they in turn had any client code listening for the event.) If no handlers\r\n * return true, the Loader knows that the event wasn't handled and will throw an RTE.\r\n */\r\n Loader.prototype._iAddParseErrorHandler = function (handler) {\r\n if (this._parseErrorHandlers.indexOf(handler) < 0)\r\n this._parseErrorHandlers.push(handler);\r\n };\r\n Loader.prototype._iAddErrorHandler = function (handler) {\r\n if (this._errorHandlers.indexOf(handler) < 0)\r\n this._errorHandlers.push(handler);\r\n };\r\n /**\r\n * Guesses the parser to be used based on the file contents.\r\n * @param data The data to be parsed.\r\n * @param uri The url or id of the object to be parsed.\r\n * @return An instance of the guessed parser.\r\n */\r\n Loader.prototype.getParserFromData = function (data) {\r\n var len = Loader._parsers.length;\r\n // go in reverse order to allow application override of default parser added in away.proper\r\n for (var i = len - 1; i >= 0; i--)\r\n if (Loader._parsers[i].supportsData(data))\r\n return new Loader._parsers[i]();\r\n return null;\r\n };\r\n /**\r\n * Initiates parsing of the loaded dependency.\r\n *\r\n * @param The dependency to be parsed.\r\n */\r\n Loader.prototype.parseDependency = function (dependency) {\r\n var parser = dependency.parser;\r\n // If no parser has been defined, try to find one by letting\r\n // all plugged in parsers inspect the actual data.\r\n if (!parser)\r\n dependency._iSetParser(parser = this.getParserFromData(dependency.data));\r\n if (parser) {\r\n parser.addEventListener(ParserEvent.READY_FOR_DEPENDENCIES, this._onReadyForDependenciesDelegate);\r\n parser.addEventListener(ParserEvent.PARSE_COMPLETE, this._onParseCompleteDelegate);\r\n parser.addEventListener(ParserEvent.PARSE_ERROR, this._onParseErrorDelegate);\r\n parser.addEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);\r\n parser.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\r\n if (dependency.request && dependency.request.url)\r\n parser._iFileName = dependency.request.url;\r\n parser.materialMode = this._materialMode;\r\n parser.parseAsync(dependency.data);\r\n }\r\n else {\r\n var handled;\r\n var message = \"No parser defined. To enable all parsers for auto-detection, use Parsers.enableAllBundled()\";\r\n var event = new ParserEvent(ParserEvent.PARSE_ERROR, message);\r\n if (this.hasEventListener(ParserEvent.PARSE_ERROR)) {\r\n this.dispatchEvent(event);\r\n handled = true;\r\n }\r\n else {\r\n // TODO: Consider not doing this even when Loader does\r\n // have it's own LOAD_ERROR listener\r\n var i, len = this._parseErrorHandlers.length;\r\n for (i = 0; i < len; i++)\r\n if (!handled)\r\n handled = this._parseErrorHandlers[i](event);\r\n }\r\n if (handled) {\r\n this.retrieveNext();\r\n }\r\n else {\r\n // Error event was not handled by listeners directly on Loader or\r\n // on any of the subscribed loaders (in the list of error handlers.)\r\n throw new Error(message);\r\n }\r\n }\r\n };\r\n /**\r\n * Guesses the parser to be used based on the file extension.\r\n * @return An instance of the guessed parser.\r\n */\r\n Loader.prototype.getParserFromSuffix = function (url) {\r\n var fileExtension = this.getSuffix(url);\r\n var len = Loader._parsers.length;\r\n // go in reverse order to allow application override of default parser added in away.proper\r\n for (var i = len - 1; i >= 0; i--) {\r\n var parserClass = Loader._parsers[i];\r\n if (parserClass.supportsType(fileExtension))\r\n return new parserClass();\r\n }\r\n return null;\r\n };\r\n Loader.prototype.getSuffix = function (url) {\r\n // Get rid of query string if any and extract extension\r\n var base = (url.indexOf('?') > 0) ? url.split('?')[0] : url;\r\n return base.substr(base.lastIndexOf('.') + 1).toLowerCase();\r\n };\r\n return Loader;\r\n}(EventDispatcher));\r\nexport { Loader };\r\n// Image parser only parser that is added by default, to save file size.\r\nLoader._parsers = new Array();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/Loader.js","/**\r\n * Enumaration export class for precedence when resolving naming conflicts in the library.\r\n *\r\n * @see away.library.AssetLibrary.conflictPrecedence\r\n * @see away.library.AssetLibrary.conflictStrategy\r\n * @see away.library.naming.ConflictStrategy\r\n */\r\nvar ConflictPrecedence = (function () {\r\n function ConflictPrecedence() {\r\n }\r\n return ConflictPrecedence;\r\n}());\r\nexport { ConflictPrecedence };\r\n/**\r\n * Signals that in a conflict, the previous owner of the conflicting name\r\n * should be favored (and keep it's name) and that the newly renamed asset\r\n * is reverted to a non-conflicting name.\r\n */\r\nConflictPrecedence.FAVOR_OLD = 'favorOld';\r\n/**\r\n * Signales that in a conflict, the newly renamed asset is favored (and keeps\r\n * it's newly defined name) and that the previous owner of that name gets\r\n * renamed to a non-conflicting name.\r\n */\r\nConflictPrecedence.FAVOR_NEW = 'favorNew';\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/ConflictPrecedence.js","import { ConflictPrecedence } from \"../library/ConflictPrecedence\";\r\nimport { AbstractMethodError } from \"../errors/AbstractMethodError\";\r\nimport { AssetEvent } from \"../events/AssetEvent\";\r\n/**\r\n * Abstract base export class for naming conflict resolution classes. Extend this to create a\r\n * strategy export class which the asset library can use to resolve asset naming conflicts, or\r\n * use one of the bundled concrete strategy classes:\r\n *\r\n *
    \r\n *
  • IgnoreConflictStrategy (ConflictStrategy.IGNORE)
  • \r\n *
  • ErrorConflictStrategy (ConflictStrategy.THROW_ERROR)
  • \r\n *
  • NumSuffixConflictStrategy (ConflictStrategy.APPEND_NUM_SUFFIX)
  • \r\n *
\r\n *\r\n * @see away.library.AssetLibrary.conflictStrategy\r\n * @see away.library.ConflictStrategy\r\n * @see away.library.IgnoreConflictStrategy\r\n * @see away.library.ErrorConflictStrategy\r\n * @see away.library.NumSuffixConflictStrategy\r\n */\r\nvar ConflictStrategyBase = (function () {\r\n function ConflictStrategyBase() {\r\n }\r\n /**\r\n * Resolve a naming conflict between two assets. Must be implemented by concrete strategy\r\n * classes.\r\n */\r\n ConflictStrategyBase.prototype.resolveConflict = function (changedAsset, oldAsset, assetsDictionary, precedence) {\r\n throw new AbstractMethodError();\r\n };\r\n /**\r\n * Create instance of this conflict strategy. Used internally by the AssetLibrary to\r\n * make sure the same strategy instance is not used in all AssetLibrary instances, which\r\n * would break any state caching that happens inside the strategy class.\r\n */\r\n ConflictStrategyBase.prototype.create = function () {\r\n throw new AbstractMethodError();\r\n };\r\n /**\r\n * Provided as a convenience method for all conflict strategy classes, as a way to finalize\r\n * the conflict resolution by applying the new names and dispatching the correct events.\r\n */\r\n ConflictStrategyBase.prototype._pUpdateNames = function (ns, nonConflictingName, oldAsset, newAsset, assetsDictionary, precedence) {\r\n var loser_prev_name;\r\n var winner;\r\n var loser;\r\n winner = (precedence === ConflictPrecedence.FAVOR_NEW) ? newAsset : oldAsset;\r\n loser = (precedence === ConflictPrecedence.FAVOR_NEW) ? oldAsset : newAsset;\r\n loser_prev_name = loser.adaptee.name;\r\n assetsDictionary[winner.adaptee.name] = winner;\r\n assetsDictionary[nonConflictingName] = loser;\r\n loser.adaptee.resetAssetPath(nonConflictingName, ns, false);\r\n loser.adaptee.dispatchEvent(new AssetEvent(AssetEvent.ASSET_CONFLICT_RESOLVED, loser.adaptee, loser_prev_name));\r\n };\r\n return ConflictStrategyBase;\r\n}());\r\nexport { ConflictStrategyBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/ConflictStrategyBase.js","import * as tslib_1 from \"tslib\";\r\nimport { ConflictStrategyBase } from \"../library/ConflictStrategyBase\";\r\nimport { ErrorBase } from \"../errors/ErrorBase\";\r\nvar ErrorConflictStrategy = (function (_super) {\r\n tslib_1.__extends(ErrorConflictStrategy, _super);\r\n function ErrorConflictStrategy() {\r\n return _super.call(this) || this;\r\n }\r\n ErrorConflictStrategy.prototype.resolveConflict = function (changedAsset, oldAsset, assetsDictionary, precedence) {\r\n throw new ErrorBase('Asset name collision while AssetLibrary.namingStrategy set to AssetLibrary.THROW_ERROR. Asset path: ' + changedAsset.adaptee.assetFullPath);\r\n };\r\n ErrorConflictStrategy.prototype.create = function () {\r\n return new ErrorConflictStrategy();\r\n };\r\n return ErrorConflictStrategy;\r\n}(ConflictStrategyBase));\r\nexport { ErrorConflictStrategy };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/ErrorConflictStrategy.js","import * as tslib_1 from \"tslib\";\r\nimport { ConflictStrategyBase } from \"../library/ConflictStrategyBase\";\r\nvar IgnoreConflictStrategy = (function (_super) {\r\n tslib_1.__extends(IgnoreConflictStrategy, _super);\r\n function IgnoreConflictStrategy() {\r\n return _super.call(this) || this;\r\n }\r\n IgnoreConflictStrategy.prototype.resolveConflict = function (changedAsset, oldAsset, assetsDictionary, precedence) {\r\n // Do nothing, ignore the fact that there is a conflict.\r\n return;\r\n };\r\n IgnoreConflictStrategy.prototype.create = function () {\r\n return new IgnoreConflictStrategy();\r\n };\r\n return IgnoreConflictStrategy;\r\n}(ConflictStrategyBase));\r\nexport { IgnoreConflictStrategy };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/IgnoreConflictStrategy.js","import * as tslib_1 from \"tslib\";\r\nimport { ConflictStrategyBase } from \"../library/ConflictStrategyBase\";\r\nvar NumSuffixConflictStrategy = (function (_super) {\r\n tslib_1.__extends(NumSuffixConflictStrategy, _super);\r\n function NumSuffixConflictStrategy(separator) {\r\n if (separator === void 0) { separator = '.'; }\r\n var _this = _super.call(this) || this;\r\n _this._separator = separator;\r\n _this._next_suffix = {};\r\n return _this;\r\n }\r\n NumSuffixConflictStrategy.prototype.resolveConflict = function (changedAsset, oldAsset, assetsDictionary, precedence) {\r\n var orig;\r\n var new_name;\r\n var base;\r\n var suffix;\r\n orig = changedAsset.adaptee.name;\r\n if (orig.indexOf(this._separator) >= 0) {\r\n // Name has an ocurrence of the separator, so get base name and suffix,\r\n // unless suffix is non-numerical, in which case revert to zero and\r\n // use entire name as base\r\n base = orig.substring(0, orig.lastIndexOf(this._separator));\r\n suffix = parseInt(orig.substring(base.length - 1));\r\n if (isNaN(suffix)) {\r\n base = orig;\r\n suffix = 0;\r\n }\r\n }\r\n else {\r\n base = orig;\r\n suffix = 0;\r\n }\r\n if (suffix == 0 && this._next_suffix.hasOwnProperty(base)) {\r\n suffix = this._next_suffix[base];\r\n }\r\n // Find the first suffixed name that does\r\n // not collide with other names.\r\n do {\r\n suffix++;\r\n new_name = base.concat(this._separator, suffix.toString());\r\n } while (assetsDictionary.hasOwnProperty(new_name));\r\n this._next_suffix[base] = suffix;\r\n this._pUpdateNames(oldAsset.adaptee.assetNamespace, new_name, oldAsset, changedAsset, assetsDictionary, precedence);\r\n };\r\n NumSuffixConflictStrategy.prototype.create = function () {\r\n return new NumSuffixConflictStrategy(this._separator);\r\n };\r\n return NumSuffixConflictStrategy;\r\n}(ConflictStrategyBase));\r\nexport { NumSuffixConflictStrategy };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/NumSuffixConflictStrategy.js","import { ErrorConflictStrategy } from \"../library/ErrorConflictStrategy\";\r\nimport { IgnoreConflictStrategy } from \"../library/IgnoreConflictStrategy\";\r\nimport { NumSuffixConflictStrategy } from \"../library/NumSuffixConflictStrategy\";\r\n/**\r\n * Enumeration export class for bundled conflict strategies. Set one of these values (or an\r\n * instance of a self-defined sub-export class of ConflictStrategyBase) to the conflictStrategy\r\n * property on an AssetLibrary to define how that library resolves naming conflicts.\r\n *\r\n * The value of the AssetLibrary.conflictPrecedence property defines which\r\n * of the conflicting assets will get to keep it's name, and which is renamed (if any.)\r\n *\r\n * @see away.library.AssetLibrary.conflictStrategy\r\n * @see away.library.naming.ConflictStrategyBase\r\n */\r\nvar ConflictStrategy = (function () {\r\n function ConflictStrategy(include) {\r\n //TODO: find out why typescript d.ts files do not include this class\r\n }\r\n return ConflictStrategy;\r\n}());\r\nexport { ConflictStrategy };\r\n/**\r\n * Specifies that in case of a naming conflict, one of the assets will be renamed and\r\n * a numeric suffix appended to the base name.\r\n */\r\nConflictStrategy.APPEND_NUM_SUFFIX = new NumSuffixConflictStrategy();\r\n/**\r\n * Specifies that naming conflicts should be ignored. This is not recommended in most\r\n * cases, unless it can be 100% guaranteed that the application does not cause naming\r\n * conflicts in the library (i.e. when an app-level system is in place to prevent this.)\r\n */\r\nConflictStrategy.IGNORE = new IgnoreConflictStrategy();\r\n/**\r\n * Specifies that an error should be thrown if a naming conflict is discovered. Use this\r\n * to be 100% sure that naming conflicts never occur unnoticed, and when it's undesirable\r\n * to have the library automatically rename assets to avoid such conflicts.\r\n */\r\nConflictStrategy.THROW_ERROR = new ErrorConflictStrategy();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/ConflictStrategy.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetLibraryIterator } from \"../library/AssetLibraryIterator\";\r\nimport { Loader } from \"../library/Loader\";\r\nimport { ConflictPrecedence } from \"../library/ConflictPrecedence\";\r\nimport { ConflictStrategy } from \"../library/ConflictStrategy\";\r\nimport { AssetBase } from \"../library/AssetBase\";\r\nimport { ErrorBase } from \"../errors/ErrorBase\";\r\nimport { AssetEvent } from \"../events/AssetEvent\";\r\nimport { URLLoaderEvent } from \"../events/URLLoaderEvent\";\r\nimport { LoaderEvent } from \"../events/LoaderEvent\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\nimport { ParserEvent } from \"../events/ParserEvent\";\r\n/**\r\n * AssetLibraryBundle enforces a multiton pattern and is not intended to be instanced directly.\r\n * Its purpose is to create a container for 3D data management, both before and after parsing.\r\n * If you are interested in creating multiple library bundles, please use the getInstance() method.\r\n */\r\nvar AssetLibraryBundle = (function (_super) {\r\n tslib_1.__extends(AssetLibraryBundle, _super);\r\n /**\r\n * Creates a new AssetLibraryBundle object.\r\n *\r\n * @param me A multiton enforcer for the AssetLibraryBundle ensuring it cannnot be instanced.\r\n */\r\n function AssetLibraryBundle() {\r\n var _this = _super.call(this) || this;\r\n _this._loaderSessionsGarbage = new Array();\r\n _this._assets = new Array(); //new Vector.;\r\n _this._assetDictionary = new Object();\r\n _this._loaderSessions = new Array();\r\n _this.conflictStrategy = ConflictStrategy.IGNORE.create();\r\n _this.conflictPrecedence = ConflictPrecedence.FAVOR_NEW;\r\n _this._onAssetRenameDelegate = function (event) { return _this.onAssetRename(event); };\r\n _this._onAssetConflictResolvedDelegate = function (event) { return _this.onAssetConflictResolved(event); };\r\n _this._onLoadCompleteDelegate = function (event) { return _this.onLoadComplete(event); };\r\n _this._onTextureSizeErrorDelegate = function (event) { return _this.onTextureSizeError(event); };\r\n _this._onAssetCompleteDelegate = function (event) { return _this.onAssetComplete(event); };\r\n _this._onLoadErrorDelegate = function (event) { return _this.onLoadError(event); };\r\n _this._onParseErrorDelegate = function (event) { return _this.onParseError(event); };\r\n return _this;\r\n }\r\n /**\r\n * Returns an AssetLibraryBundle instance. If no key is given, returns the default bundle instance (which is\r\n * similar to using the AssetLibraryBundle as a singleton.) To keep several separated library bundles,\r\n * pass a string key to this method to define which bundle should be returned. This is\r\n * referred to as using the AssetLibrary as a multiton.\r\n *\r\n * @param key Defines which multiton instance should be returned.\r\n * @return An instance of the asset library\r\n */\r\n AssetLibraryBundle.getInstance = function (key) {\r\n if (key === void 0) { key = 'default'; }\r\n if (!key)\r\n key = 'default';\r\n if (!AssetLibraryBundle._iInstances.hasOwnProperty(key))\r\n AssetLibraryBundle._iInstances[key] = new AssetLibraryBundle();\r\n return AssetLibraryBundle._iInstances[key];\r\n };\r\n /**\r\n *\r\n */\r\n AssetLibraryBundle.prototype.enableParser = function (parserClass) {\r\n Loader.enableParser(parserClass);\r\n };\r\n /**\r\n *\r\n */\r\n AssetLibraryBundle.prototype.enableParsers = function (parserClasses) {\r\n Loader.enableParsers(parserClasses);\r\n };\r\n Object.defineProperty(AssetLibraryBundle.prototype, \"conflictStrategy\", {\r\n /**\r\n * Defines which strategy should be used for resolving naming conflicts, when two library\r\n * assets are given the same name. By default, ConflictStrategy.APPEND_NUM_SUFFIX\r\n * is used which means that a numeric suffix is appended to one of the assets. The\r\n * conflictPrecedence property defines which of the two conflicting assets will\r\n * be renamed.\r\n *\r\n * @see naming.ConflictStrategy\r\n * @see AssetLibrary.conflictPrecedence\r\n */\r\n get: function () {\r\n return this._strategy;\r\n },\r\n set: function (val) {\r\n if (!val)\r\n throw new ErrorBase('namingStrategy must not be null. To ignore naming, use AssetLibrary.IGNORE');\r\n this._strategy = val.create();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetLibraryBundle.prototype, \"conflictPrecedence\", {\r\n /**\r\n * Defines which asset should have precedence when resolving a naming conflict between\r\n * two assets of which one has just been renamed by the user or by a parser. By default\r\n * ConflictPrecedence.FAVOR_NEW is used, meaning that the newly renamed\r\n * asset will keep it's new name while the older asset gets renamed to not conflict.\r\n *\r\n * This property is ignored for conflict strategies that do not actually rename an\r\n * asset automatically, such as ConflictStrategy.IGNORE and ConflictStrategy.THROW_ERROR.\r\n *\r\n * @see away.library.ConflictPrecedence\r\n * @see away.library.ConflictStrategy\r\n */\r\n get: function () {\r\n return this._strategyPreference;\r\n },\r\n set: function (val) {\r\n this._strategyPreference = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Create an AssetLibraryIterator instance that can be used to iterate over the assets\r\n * in this asset library instance. The iterator can filter assets on asset type and/or\r\n * namespace. A \"null\" filter value means no filter of that type is used.\r\n *\r\n * @param assetTypeFilter Asset type to filter on (from the AssetType enum class.) Use\r\n * null to not filter on asset type.\r\n * @param namespaceFilter Namespace to filter on. Use null to not filter on namespace.\r\n * @param filterFunc Callback function to use when deciding whether an asset should be\r\n * included in the iteration or not. This needs to be a function that takes a single\r\n * parameter of type IAsset and returns a boolean where true means it should be included.\r\n *\r\n * @see away.library.AssetType\r\n */\r\n AssetLibraryBundle.prototype.createIterator = function (assetTypeFilter, namespaceFilter, filterFunc) {\r\n if (assetTypeFilter === void 0) { assetTypeFilter = null; }\r\n if (namespaceFilter === void 0) { namespaceFilter = null; }\r\n if (filterFunc === void 0) { filterFunc = null; }\r\n return new AssetLibraryIterator(this._assets, assetTypeFilter, namespaceFilter, filterFunc);\r\n };\r\n /**\r\n * Loads a file and (optionally) all of its dependencies.\r\n *\r\n * @param req The URLRequest object containing the URL of the file to be loaded.\r\n * @param context An optional context object providing additional parameters for loading\r\n * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets\r\n * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, Loader will attempt to auto-detect the file type.\r\n * @return A handle to the retrieved resource.\r\n */\r\n AssetLibraryBundle.prototype.load = function (req, context, ns, parser) {\r\n if (context === void 0) { context = null; }\r\n if (ns === void 0) { ns = null; }\r\n if (parser === void 0) { parser = null; }\r\n this.getLoader().load(req, context, ns, parser);\r\n };\r\n /**\r\n * Loads a resource from existing data in memory.\r\n *\r\n * @param data The data object containing all resource information.\r\n * @param context An optional context object providing additional parameters for loading\r\n * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets\r\n * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, Loader will attempt to auto-detect the file type.\r\n * @return A handle to the retrieved resource.\r\n */\r\n AssetLibraryBundle.prototype.loadData = function (data, context, ns, parser) {\r\n if (context === void 0) { context = null; }\r\n if (ns === void 0) { ns = null; }\r\n if (parser === void 0) { parser = null; }\r\n this.getLoader().loadData(data, '', context, ns, parser);\r\n };\r\n AssetLibraryBundle.prototype.getLoader = function () {\r\n var loader = new Loader();\r\n this._loaderSessions.push(loader);\r\n loader.addEventListener(LoaderEvent.LOAD_COMPLETE, this._onLoadCompleteDelegate);\r\n loader.addEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);\r\n loader.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\r\n // Error are handled separately (see documentation for addErrorHandler)\r\n loader._iAddErrorHandler(this._onLoadErrorDelegate);\r\n loader._iAddParseErrorHandler(this._onParseErrorDelegate);\r\n return loader;\r\n };\r\n AssetLibraryBundle.prototype.disposeLoader = function (loader) {\r\n var index = this._loaderSessions.indexOf(loader);\r\n this._loaderSessions.splice(index, 1);\r\n this.killloaderSession(loader);\r\n };\r\n /**\r\n *\r\n */\r\n AssetLibraryBundle.prototype.getAsset = function (name, ns) {\r\n if (ns === void 0) { ns = null; }\r\n if (this._assetDictDirty)\r\n this.rehashAssetDict();\r\n if (ns == null)\r\n ns = AssetBase.DEFAULT_NAMESPACE;\r\n if (!this._assetDictionary.hasOwnProperty(ns))\r\n return null;\r\n return this._assetDictionary[ns][name];\r\n };\r\n AssetLibraryBundle.prototype.getAllAssets = function () {\r\n return this._assets;\r\n };\r\n /**\r\n * Adds an asset to the asset library, first making sure that it's name is unique\r\n * using the method defined by the conflictStrategy and\r\n * conflictPrecedence properties.\r\n */\r\n AssetLibraryBundle.prototype.addAsset = function (asset) {\r\n var ns;\r\n var old;\r\n // Bail if asset has already been added.\r\n if (this._assets.indexOf(asset) >= 0)\r\n return;\r\n old = this.getAsset(asset.adaptee.name, asset.adaptee.assetNamespace);\r\n ns = asset.adaptee.assetNamespace || AssetBase.DEFAULT_NAMESPACE;\r\n if (old != null)\r\n this._strategy.resolveConflict(asset, old, this._assetDictionary[ns], this._strategyPreference);\r\n //create unique-id (for now this is used in AwayBuilder only\r\n //asset.id = IDUtil.createUID();\r\n // Add it\r\n this._assets.push(asset);\r\n if (!this._assetDictionary.hasOwnProperty(ns))\r\n this._assetDictionary[ns] = new Object();\r\n this._assetDictionary[ns][asset.adaptee.name] = asset;\r\n asset.adaptee.addEventListener(AssetEvent.RENAME, this._onAssetRenameDelegate);\r\n asset.adaptee.addEventListener(AssetEvent.ASSET_CONFLICT_RESOLVED, this._onAssetConflictResolvedDelegate);\r\n };\r\n /**\r\n * Removes an asset from the library, and optionally disposes that asset by calling\r\n * it's disposeAsset() method (which for most assets is implemented as a default\r\n * version of that type's dispose() method.\r\n *\r\n * @param asset The asset which should be removed from this library.\r\n * @param dispose Defines whether the assets should also be disposed.\r\n */\r\n AssetLibraryBundle.prototype.removeAsset = function (asset, dispose) {\r\n if (dispose === void 0) { dispose = true; }\r\n var idx;\r\n this.removeAssetFromDict(asset);\r\n asset.adaptee.removeEventListener(AssetEvent.RENAME, this._onAssetRenameDelegate);\r\n asset.adaptee.removeEventListener(AssetEvent.ASSET_CONFLICT_RESOLVED, this._onAssetConflictResolvedDelegate);\r\n idx = this._assets.indexOf(asset);\r\n if (idx >= 0)\r\n this._assets.splice(idx, 1);\r\n if (dispose)\r\n asset.dispose();\r\n };\r\n /**\r\n * Removes an asset which is specified using name and namespace.\r\n *\r\n * @param name The name of the asset to be removed.\r\n * @param ns The namespace to which the desired asset belongs.\r\n * @param dispose Defines whether the assets should also be disposed.\r\n *\r\n * @see away.library.AssetLibrary.removeAsset()\r\n */\r\n AssetLibraryBundle.prototype.removeAssetByName = function (name, ns, dispose) {\r\n if (ns === void 0) { ns = null; }\r\n if (dispose === void 0) { dispose = true; }\r\n var asset = this.getAsset(name, ns);\r\n if (asset)\r\n this.removeAsset(asset, dispose);\r\n return asset;\r\n };\r\n /**\r\n * Removes all assets from the asset library, optionally disposing them as they\r\n * are removed.\r\n *\r\n * @param dispose Defines whether the assets should also be disposed.\r\n */\r\n AssetLibraryBundle.prototype.removeAllAssets = function (dispose) {\r\n if (dispose === void 0) { dispose = true; }\r\n if (dispose) {\r\n var asset;\r\n var len = this._assets.length;\r\n for (var c = 0; c < len; c++) {\r\n asset = this._assets[c];\r\n asset.dispose();\r\n }\r\n }\r\n this._assets.length = 0;\r\n this.rehashAssetDict();\r\n };\r\n /**\r\n * Removes all assets belonging to a particular namespace (null for default)\r\n * from the asset library, and optionall disposes them by calling their\r\n * disposeAsset() method.\r\n *\r\n * @param ns The namespace from which all assets should be removed.\r\n * @param dispose Defines whether the assets should also be disposed.\r\n *\r\n * @see away.library.AssetLibrary.removeAsset()\r\n */\r\n AssetLibraryBundle.prototype.removeNamespaceAssets = function (ns, dispose) {\r\n if (ns === void 0) { ns = null; }\r\n if (dispose === void 0) { dispose = true; }\r\n var idx = 0;\r\n var asset;\r\n var old_assets;\r\n // Empty the assets vector after having stored a copy of it.\r\n // The copy will be filled with all assets which weren't removed.\r\n old_assets = this._assets.concat();\r\n this._assets.length = 0;\r\n if (ns == null)\r\n ns = AssetBase.DEFAULT_NAMESPACE;\r\n var len = old_assets.length;\r\n for (var d = 0; d < len; d++) {\r\n asset = old_assets[d];\r\n // Remove from dict if in the supplied namespace. If not,\r\n // transfer over to the new vector.\r\n if (asset.adaptee.assetNamespace == ns) {\r\n if (dispose)\r\n asset.dispose();\r\n // Remove asset from dictionary, but don't try to auto-remove\r\n // the namespace, which will trigger an unnecessarily expensive\r\n // test that is not needed since we know that the namespace\r\n // will be empty when loop finishes.\r\n this.removeAssetFromDict(asset, false);\r\n }\r\n else {\r\n this._assets[idx++] = asset;\r\n }\r\n }\r\n /*\r\n for each (asset in old_assets) {\r\n // Remove from dict if in the supplied namespace. If not,\r\n // transfer over to the new vector.\r\n if (asset.assetNamespace == ns) {\r\n if (dispose)\r\n asset.dispose();\r\n\r\n // Remove asset from dictionary, but don't try to auto-remove\r\n // the namespace, which will trigger an unnecessarily expensive\r\n // test that is not needed since we know that the namespace\r\n // will be empty when loop finishes.\r\n removeAssetFromDict(asset, false);\r\n } else\r\n _assets[idx++] = asset;\r\n\r\n }\r\n */\r\n // Remove empty namespace\r\n if (this._assetDictionary.hasOwnProperty(ns))\r\n delete this._assetDictionary[ns];\r\n };\r\n AssetLibraryBundle.prototype.removeAssetFromDict = function (asset, autoRemoveEmptyNamespace) {\r\n if (autoRemoveEmptyNamespace === void 0) { autoRemoveEmptyNamespace = true; }\r\n if (this._assetDictDirty)\r\n this.rehashAssetDict();\r\n if (this._assetDictionary.hasOwnProperty(asset.adaptee.assetNamespace)) {\r\n if (this._assetDictionary[asset.adaptee.assetNamespace].hasOwnProperty(asset.adaptee.name))\r\n delete this._assetDictionary[asset.adaptee.assetNamespace][asset.adaptee.name];\r\n if (autoRemoveEmptyNamespace) {\r\n var key;\r\n var empty = true;\r\n for (key in this._assetDictionary[asset.adaptee.assetNamespace]) {\r\n empty = false;\r\n break;\r\n }\r\n if (empty)\r\n delete this._assetDictionary[asset.adaptee.assetNamespace];\r\n }\r\n }\r\n };\r\n AssetLibraryBundle.prototype.stopAllLoaders = function () {\r\n var len = this._loaderSessions.length;\r\n for (var i = 0; i < len; i++)\r\n this.killloaderSession(this._loaderSessions[i]);\r\n this._loaderSessions = new Array();\r\n };\r\n AssetLibraryBundle.prototype.rehashAssetDict = function () {\r\n var asset;\r\n this._assetDictionary = {};\r\n var len = this._assets.length;\r\n for (var c = 0; c < len; c++) {\r\n asset = this._assets[c];\r\n if (!this._assetDictionary.hasOwnProperty(asset.adaptee.assetNamespace))\r\n this._assetDictionary[asset.adaptee.assetNamespace] = {};\r\n this._assetDictionary[asset.adaptee.assetNamespace][asset.adaptee.name] = asset;\r\n }\r\n this._assetDictDirty = false;\r\n };\r\n /**\r\n * Called when a an error occurs during loading.\r\n */\r\n AssetLibraryBundle.prototype.onLoadError = function (event) {\r\n if (this.hasEventListener(URLLoaderEvent.LOAD_ERROR)) {\r\n this.dispatchEvent(event);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Called when a an error occurs during parsing.\r\n */\r\n AssetLibraryBundle.prototype.onParseError = function (event) {\r\n if (this.hasEventListener(ParserEvent.PARSE_ERROR)) {\r\n this.dispatchEvent(event);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n AssetLibraryBundle.prototype.onAssetComplete = function (event) {\r\n // Only add asset to library the first time.\r\n if (event.type == AssetEvent.ASSET_COMPLETE)\r\n this.addAsset(event.asset.adapter);\r\n this.dispatchEvent(event);\r\n };\r\n AssetLibraryBundle.prototype.onTextureSizeError = function (event) {\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * Called when the resource and all of its dependencies was retrieved.\r\n */\r\n AssetLibraryBundle.prototype.onLoadComplete = function (event) {\r\n var loader = event.target;\r\n this.dispatchEvent(event);\r\n this.disposeLoader(loader);\r\n };\r\n AssetLibraryBundle.prototype.killloaderSession = function (loader) {\r\n loader.removeEventListener(LoaderEvent.LOAD_COMPLETE, this._onLoadCompleteDelegate);\r\n loader.removeEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);\r\n loader.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\r\n loader.stop();\r\n };\r\n AssetLibraryBundle.prototype.onAssetRename = function (event) {\r\n var asset = event.target.adapter; // TODO: was ev.currentTarget - watch this var\r\n var old = this.getAsset(asset.adaptee.assetNamespace, asset.adaptee.name);\r\n if (old != null) {\r\n this._strategy.resolveConflict(asset, old, this._assetDictionary[asset.adaptee.assetNamespace], this._strategyPreference);\r\n }\r\n else {\r\n var dict = this._assetDictionary[event.asset.assetNamespace];\r\n if (dict == null)\r\n return;\r\n dict[event.prevName] = null;\r\n dict[event.asset.name] = event.asset;\r\n }\r\n };\r\n AssetLibraryBundle.prototype.onAssetConflictResolved = function (event) {\r\n this.dispatchEvent(event.clone());\r\n };\r\n return AssetLibraryBundle;\r\n}(EventDispatcher));\r\nexport { AssetLibraryBundle };\r\nAssetLibraryBundle._iInstances = new Object();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/AssetLibraryBundle.js","import { AssetLibraryBundle } from \"../library/AssetLibraryBundle\";\r\nimport { Loader } from \"../library/Loader\";\r\n/**\r\n * AssetLibrary enforces a singleton pattern and is not intended to be instanced.\r\n * It's purpose is to allow access to the default library bundle through a set of static shortcut methods.\r\n * If you are interested in creating multiple library bundles, please use the getBundle() method.\r\n */\r\nvar AssetLibrary = (function () {\r\n /**\r\n * Creates a new AssetLibrary object.\r\n *\r\n */\r\n function AssetLibrary() {\r\n }\r\n //*/\r\n /**\r\n * Returns an AssetLibrary bundle instance. If no key is given, returns the default bundle (which is\r\n * similar to using the AssetLibraryBundle as a singleton). To keep several separated library bundles,\r\n * pass a string key to this method to define which bundle should be returned. This is\r\n * referred to as using the AssetLibraryBundle as a multiton.\r\n *\r\n * @param key Defines which multiton instance should be returned.\r\n * @return An instance of the asset library\r\n */\r\n AssetLibrary.getBundle = function (key) {\r\n if (key === void 0) { key = 'default'; }\r\n return AssetLibraryBundle.getInstance(key);\r\n };\r\n /**\r\n *\r\n */\r\n AssetLibrary.enableParser = function (parserClass) {\r\n Loader.enableParser(parserClass);\r\n };\r\n /**\r\n *\r\n */\r\n AssetLibrary.enableParsers = function (parserClasses) {\r\n Loader.enableParsers(parserClasses);\r\n };\r\n Object.defineProperty(AssetLibrary, \"conflictStrategy\", {\r\n /**\r\n * Short-hand for conflictStrategy property on default asset library bundle.\r\n *\r\n * @see AssetLibraryBundle.conflictStrategy\r\n */\r\n get: function () {\r\n return AssetLibrary.getBundle().conflictStrategy;\r\n },\r\n set: function (val) {\r\n AssetLibrary.getBundle().conflictStrategy = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AssetLibrary, \"conflictPrecedence\", {\r\n /**\r\n * Short-hand for conflictPrecedence property on default asset library bundle.\r\n *\r\n * @see AssetLibraryBundle.conflictPrecedence\r\n */\r\n get: function () {\r\n return AssetLibrary.getBundle().conflictPrecedence;\r\n },\r\n set: function (val) {\r\n AssetLibrary.getBundle().conflictPrecedence = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Short-hand for createIterator() method on default asset library bundle.\r\n *\r\n * @see AssetLibraryBundle.createIterator()\r\n */\r\n AssetLibrary.createIterator = function (assetTypeFilter, namespaceFilter, filterFunc) {\r\n if (assetTypeFilter === void 0) { assetTypeFilter = null; }\r\n if (namespaceFilter === void 0) { namespaceFilter = null; }\r\n if (filterFunc === void 0) { filterFunc = null; }\r\n return AssetLibrary.getBundle().createIterator(assetTypeFilter, namespaceFilter, filterFunc);\r\n };\r\n /**\r\n * Short-hand for load() method on default asset library bundle.\r\n *\r\n * @see AssetLibraryBundle.load()\r\n */\r\n AssetLibrary.load = function (req, context, ns, parser) {\r\n if (context === void 0) { context = null; }\r\n if (ns === void 0) { ns = null; }\r\n if (parser === void 0) { parser = null; }\r\n AssetLibrary.getBundle().load(req, context, ns, parser);\r\n };\r\n /**\r\n * Short-hand for loadData() method on default asset library bundle.\r\n *\r\n * @see AssetLibraryBundle.loadData()\r\n */\r\n AssetLibrary.loadData = function (data, context, ns, parser) {\r\n if (context === void 0) { context = null; }\r\n if (ns === void 0) { ns = null; }\r\n if (parser === void 0) { parser = null; }\r\n AssetLibrary.getBundle().loadData(data, context, ns, parser);\r\n };\r\n AssetLibrary.stopLoad = function () {\r\n AssetLibrary.getBundle().stopAllLoaders();\r\n };\r\n AssetLibrary.getLoader = function () {\r\n return AssetLibrary.getBundle().getLoader();\r\n };\r\n /**\r\n * Short-hand for getAsset() method on default asset library bundle.\r\n *\r\n * @see AssetLibraryBundle.getAsset()\r\n */\r\n AssetLibrary.getAsset = function (name, ns) {\r\n if (ns === void 0) { ns = null; }\r\n return AssetLibrary.getBundle().getAsset(name, ns);\r\n };\r\n /**\r\n * Short-hand for getAsset() method on default asset library bundle.\r\n *\r\n * @see AssetLibraryBundle.getAsset()\r\n */\r\n AssetLibrary.getAllAssets = function () {\r\n return AssetLibrary.getBundle().getAllAssets();\r\n };\r\n /**\r\n * Short-hand for addEventListener() method on default asset library bundle.\r\n */\r\n AssetLibrary.addEventListener = function (type, listener) {\r\n AssetLibrary.getBundle().addEventListener(type, listener);\r\n };\r\n /**\r\n * Short-hand for removeEventListener() method on default asset library bundle.\r\n */\r\n AssetLibrary.removeEventListener = function (type, listener) {\r\n AssetLibrary.getBundle().removeEventListener(type, listener);\r\n };\r\n /**\r\n * Short-hand for hasEventListener() method on default asset library bundle.\r\n\r\n public static hasEventListener(type:string):boolean\r\n {\r\n return AssetLibrary.getBundle().hasEventListener(type);\r\n }\r\n\r\n public static willTrigger(type:string):boolean\r\n {\r\n return getBundle().willTrigger(type);\r\n }\r\n */\r\n /**\r\n * Short-hand for addAsset() method on default asset library bundle.\r\n *\r\n * @see AssetLibraryBundle.addAsset()\r\n */\r\n AssetLibrary.addAsset = function (asset) {\r\n AssetLibrary.getBundle().addAsset(asset);\r\n };\r\n /**\r\n * Short-hand for removeAsset() method on default asset library bundle.\r\n *\r\n * @param asset The asset which should be removed from the library.\r\n * @param dispose Defines whether the assets should also be disposed.\r\n *\r\n * @see AssetLibraryBundle.removeAsset()\r\n */\r\n AssetLibrary.removeAsset = function (asset, dispose) {\r\n if (dispose === void 0) { dispose = true; }\r\n AssetLibrary.getBundle().removeAsset(asset, dispose);\r\n };\r\n /**\r\n * Short-hand for removeAssetByName() method on default asset library bundle.\r\n *\r\n * @param name The name of the asset to be removed.\r\n * @param ns The namespace to which the desired asset belongs.\r\n * @param dispose Defines whether the assets should also be disposed.\r\n *\r\n * @see AssetLibraryBundle.removeAssetByName()\r\n */\r\n AssetLibrary.removeAssetByName = function (name, ns, dispose) {\r\n if (ns === void 0) { ns = null; }\r\n if (dispose === void 0) { dispose = true; }\r\n return AssetLibrary.getBundle().removeAssetByName(name, ns, dispose);\r\n };\r\n /**\r\n * Short-hand for removeAllAssets() method on default asset library bundle.\r\n *\r\n * @param dispose Defines whether the assets should also be disposed.\r\n *\r\n * @see AssetLibraryBundle.removeAllAssets()\r\n */\r\n AssetLibrary.removeAllAssets = function (dispose) {\r\n if (dispose === void 0) { dispose = true; }\r\n AssetLibrary.getBundle().removeAllAssets(dispose);\r\n };\r\n /**\r\n * Short-hand for removeNamespaceAssets() method on default asset library bundle.\r\n *\r\n * @see AssetLibraryBundle.removeNamespaceAssets()\r\n */\r\n AssetLibrary.removeNamespaceAssets = function (ns, dispose) {\r\n if (ns === void 0) { ns = null; }\r\n if (dispose === void 0) { dispose = true; }\r\n AssetLibrary.getBundle().removeNamespaceAssets(ns, dispose);\r\n };\r\n return AssetLibrary;\r\n}());\r\nexport { AssetLibrary };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/AssetLibrary.js","var IDUtil = (function () {\r\n function IDUtil() {\r\n }\r\n /**\r\n * Generates a UID (unique identifier) based on ActionScript's\r\n * pseudo-random number generator and the current time.\r\n *\r\n *

The UID has the form\r\n * \"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"\r\n * where X is a hexadecimal digit (0-9, A-F).

\r\n *\r\n *

This UID will not be truly globally unique; but it is the best\r\n * we can do without player support for UID generation.

\r\n *\r\n * @return The newly-generated UID.\r\n *\r\n * @langversion 3.0\r\n * @playerversion Flash 9\r\n * @playerversion AIR 1.1\r\n * @productversion Flex 3\r\n */\r\n IDUtil.createUID = function () {\r\n var uid = new Array(36);\r\n var index = 0;\r\n var i;\r\n var j;\r\n for (i = 0; i < 8; i++)\r\n uid[index++] = IDUtil.ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)];\r\n for (i = 0; i < 3; i++) {\r\n uid[index++] = 45; // charCode for \"-\"\r\n for (j = 0; j < 4; j++)\r\n uid[index++] = IDUtil.ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)];\r\n }\r\n uid[index++] = 45; // charCode for \"-\"\r\n var time = new Date().getTime();\r\n // Note: time is the number of milliseconds since 1970,\r\n // which is currently more than one trillion.\r\n // We use the low 8 hex digits of this number in the UID.\r\n // Just in case the system clock has been reset to\r\n // Jan 1-4, 1970 (in which case this number could have only\r\n // 1-7 hex digits), we pad on the left with 7 zeros\r\n // before taking the low digits.\r\n var timeString = (\"0000000\" + time.toString(16).toUpperCase()).substr(-8);\r\n for (i = 0; i < 8; i++)\r\n uid[index++] = timeString.charCodeAt(i);\r\n for (i = 0; i < 4; i++)\r\n uid[index++] = IDUtil.ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)];\r\n return String.fromCharCode.apply(null, uid);\r\n };\r\n return IDUtil;\r\n}());\r\nexport { IDUtil };\r\n/**\r\n * @private\r\n * Char codes for 0123456789ABCDEF\r\n */\r\nIDUtil.ALPHA_CHAR_CODES = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70];\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/IDUtil.js","import * as tslib_1 from \"tslib\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\n/**\r\n * The LoaderInfo export class provides information about a loaded SWF file or a\r\n * loaded image file(JPEG, GIF, or PNG). LoaderInfo objects are available for\r\n * any display object. The information provided includes load progress, the\r\n * URLs of the loader and loaded content, the number of bytes total for the\r\n * media, and the nominal height and width of the media.\r\n *\r\n *

You can access LoaderInfo objects in two ways:

\r\n *\r\n *
    \r\n *
  • The contentLoaderInfo property of a flash.display.Loader\r\n * object - The contentLoaderInfo property is always available\r\n * for any Loader object. For a Loader object that has not called the\r\n * load() or loadBytes() method, or that has not\r\n * sufficiently loaded, attempting to access many of the properties of the\r\n * contentLoaderInfo property throws an error.
  • \r\n *
  • The loaderInfo property of a display object.
  • \r\n *
\r\n *\r\n *

The contentLoaderInfo property of a Loader object provides\r\n * information about the content that the Loader object is loading, whereas\r\n * the loaderInfo property of a DisplayObject provides\r\n * information about the root SWF file for that display object.

\r\n *\r\n *

When you use a Loader object to load a display object(such as a SWF\r\n * file or a bitmap), the loaderInfo property of the display\r\n * object is the same as the contentLoaderInfo property of the\r\n * Loader object(DisplayObject.loaderInfo =\r\n * Loader.contentLoaderInfo). Because the instance of the main export class of\r\n * the SWF file has no Loader object, the loaderInfo property is\r\n * the only way to access the LoaderInfo for the instance of the main export class of\r\n * the SWF file.

\r\n *\r\n *

The following diagram shows the different uses of the LoaderInfo\r\n * object - for the instance of the main export class of the SWF file, for the\r\n * contentLoaderInfo property of a Loader object, and for the\r\n * loaderInfo property of a loaded object:

\r\n *\r\n *

When a loading operation is not complete, some properties of the\r\n * contentLoaderInfo property of a Loader object are not\r\n * available. You can obtain some properties, such as\r\n * bytesLoaded, bytesTotal, url,\r\n * loaderURL, and applicationDomain. When the\r\n * loaderInfo object dispatches the init event, you\r\n * can access all properties of the loaderInfo object and the\r\n * loaded image or SWF file.

\r\n *\r\n *

Note: All properties of LoaderInfo objects are read-only.

\r\n *\r\n *

The EventDispatcher.dispatchEvent() method is not\r\n * applicable to LoaderInfo objects. If you call dispatchEvent()\r\n * on a LoaderInfo object, an IllegalOperationError exception is thrown.

\r\n *\r\n * @event complete Dispatched when data has loaded successfully. In other\r\n * words, it is dispatched when all the content has been\r\n * downloaded and the loading has finished. The\r\n * complete event is always dispatched after\r\n * the init event. The init event\r\n * is dispatched when the object is ready to access, though\r\n * the content may still be downloading.\r\n * @event httpStatus Dispatched when a network request is made over HTTP and\r\n * an HTTP status code can be detected.\r\n * @event init Dispatched when the properties and methods of a loaded\r\n * SWF file are accessible and ready for use. The content,\r\n * however, can still be downloading. A LoaderInfo object\r\n * dispatches the init event when the following\r\n * conditions exist:\r\n *
    \r\n *
  • All properties and methods associated with the\r\n * loaded object and those associated with the LoaderInfo\r\n * object are accessible.
  • \r\n *
  • The constructors for all child objects have\r\n * completed.
  • \r\n *
  • All ActionScript code in the first frame of the\r\n * loaded SWF's main timeline has been executed.
  • \r\n *
\r\n *\r\n *

For example, an Event.INIT is dispatched\r\n * when the first frame of a movie or animation is loaded.\r\n * The movie is then accessible and can be added to the\r\n * display list. The complete movie, however, can take\r\n * longer to download. The Event.COMPLETE is\r\n * only dispatched once the full movie is loaded.

\r\n *\r\n *

The init event always precedes the\r\n * complete event.

\r\n * @event ioError Dispatched when an input or output error occurs that\r\n * causes a load operation to fail.\r\n * @event open Dispatched when a load operation starts.\r\n * @event progress Dispatched when data is received as the download\r\n * operation progresses.\r\n * @event unload Dispatched by a LoaderInfo object whenever a loaded\r\n * object is removed by using the unload()\r\n * method of the Loader object, or when a second load is\r\n * performed by the same Loader object and the original\r\n * content is removed prior to the load beginning.\r\n */\r\nvar LoaderInfo = (function (_super) {\r\n tslib_1.__extends(LoaderInfo, _super);\r\n function LoaderInfo() {\r\n return _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(LoaderInfo.prototype, \"bytes\", {\r\n /**\r\n * The bytes associated with a LoaderInfo object.\r\n *\r\n * @throws SecurityError If the object accessing this API is prevented from\r\n * accessing the loaded object due to security\r\n * restrictions. This situation can occur, for\r\n * instance, when a Loader object attempts to access\r\n * the contentLoaderInfo.content property\r\n * and it is not granted security permission to access\r\n * the loaded content.\r\n *\r\n *

For more information related to security, see the\r\n * Flash Player Developer Center Topic: Security.

\r\n */\r\n get: function () {\r\n return this._bytes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderInfo.prototype, \"bytesLoaded\", {\r\n /**\r\n * The number of bytes that are loaded for the media. When this number equals\r\n * the value of bytesTotal, all of the bytes are loaded.\r\n */\r\n get: function () {\r\n return this._bytesLoaded;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderInfo.prototype, \"bytesTotal\", {\r\n /**\r\n * The number of compressed bytes in the entire media file.\r\n *\r\n *

Before the first progress event is dispatched by this\r\n * LoaderInfo object's corresponding Loader object, bytesTotal\r\n * is 0. After the first progress event from the Loader object,\r\n * bytesTotal reflects the actual number of bytes to be\r\n * downloaded.

\r\n */\r\n get: function () {\r\n return this._bytesTotal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderInfo.prototype, \"content\", {\r\n /**\r\n * The loaded object associated with this LoaderInfo object.\r\n *\r\n * @throws SecurityError If the object accessing this API is prevented from\r\n * accessing the loaded object due to security\r\n * restrictions. This situation can occur, for\r\n * instance, when a Loader object attempts to access\r\n * the contentLoaderInfo.content property\r\n * and it is not granted security permission to access\r\n * the loaded content.\r\n *\r\n *

For more information related to security, see the\r\n * Flash Player Developer Center Topic: Security.

\r\n */\r\n get: function () {\r\n return this._content;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderInfo.prototype, \"contentType\", {\r\n /**\r\n * The MIME type of the loaded file. The value is null if not\r\n * enough of the file has loaded in order to determine the type. The\r\n * following list gives the possible values:\r\n *
    \r\n *
  • \"application/x-shockwave-flash\"
  • \r\n *
  • \"image/jpeg\"
  • \r\n *
  • \"image/gif\"
  • \r\n *
  • \"image/png\"
  • \r\n *
\r\n */\r\n get: function () {\r\n return this._contentType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderInfo.prototype, \"loader\", {\r\n /**\r\n * The Loader object associated with this LoaderInfo object. If this\r\n * LoaderInfo object is the loaderInfo property of the instance\r\n * of the main export class of the SWF file, no Loader object is associated.\r\n *\r\n * @throws SecurityError If the object accessing this API is prevented from\r\n * accessing the Loader object because of security\r\n * restrictions. This can occur, for instance, when a\r\n * loaded SWF file attempts to access its\r\n * loaderInfo.loader property and it is\r\n * not granted security permission to access the\r\n * loading SWF file.\r\n *\r\n *

For more information related to security, see the\r\n * Flash Player Developer Center Topic: Security.

\r\n */\r\n get: function () {\r\n return this._loader;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LoaderInfo.prototype, \"url\", {\r\n /**\r\n * The URL of the media being loaded.\r\n *\r\n *

Before the first progress event is dispatched by this\r\n * LoaderInfo object's corresponding Loader object, the value of the\r\n * url property might reflect only the initial URL specified in\r\n * the call to the load() method of the Loader object. After the\r\n * first progress event, the url property reflects\r\n * the media's final URL, after any redirects and relative URLs are\r\n * resolved.

\r\n *\r\n *

In some cases, the value of the url property is truncated;\r\n * see the isURLInaccessible property for details.

\r\n */\r\n get: function () {\r\n return this._url;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LoaderInfo;\r\n}(EventDispatcher));\r\nexport { LoaderInfo };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/library/LoaderInfo.js","var CrossDomainPolicy = (function () {\r\n function CrossDomainPolicy() {\r\n }\r\n return CrossDomainPolicy;\r\n}());\r\nexport { CrossDomainPolicy };\r\nCrossDomainPolicy.ANONYMOUS = 'anonymous';\r\nCrossDomainPolicy.USE_CREDENTIALS = 'use-credentials';\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/net/CrossDomainPolicy.js","import { URLRequestMethod } from \"../net/URLRequestMethod\";\r\nvar URLRequest = (function () {\r\n /**\r\n\r\n * @param url\r\n */\r\n function URLRequest(url) {\r\n if (url === void 0) { url = null; }\r\n /**\r\n *\r\n * away.net.URLRequestMethod.GET\r\n * away.net.URLRequestMethod.POST\r\n *\r\n * @type {string}\r\n */\r\n this.method = URLRequestMethod.GET;\r\n /**\r\n * Use asynchronous XMLHttpRequest\r\n * @type {boolean}\r\n */\r\n this.async = true;\r\n this._url = url;\r\n }\r\n Object.defineProperty(URLRequest.prototype, \"url\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return this._url;\r\n },\r\n /**\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this._url = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * dispose\r\n */\r\n URLRequest.prototype.dispose = function () {\r\n this.data = null;\r\n this._url = null;\r\n };\r\n return URLRequest;\r\n}());\r\nexport { URLRequest };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/net/URLRequest.js","import * as tslib_1 from \"tslib\";\r\nimport { ErrorBase } from \"../errors/ErrorBase\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\nimport { TimerEvent } from \"../events/TimerEvent\";\r\nvar Timer = (function (_super) {\r\n tslib_1.__extends(Timer, _super);\r\n function Timer(delay, repeatCount) {\r\n if (repeatCount === void 0) { repeatCount = 0; }\r\n var _this = _super.call(this) || this;\r\n _this._repeatCount = 0;\r\n _this._currentCount = 0;\r\n _this._running = false;\r\n _this._delay = delay;\r\n _this._repeatCount = repeatCount;\r\n if (isNaN(delay) || delay < 0)\r\n throw new ErrorBase(\"Delay is negative or not a number\");\r\n return _this;\r\n }\r\n Object.defineProperty(Timer.prototype, \"currentCount\", {\r\n get: function () {\r\n return this._currentCount;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Timer.prototype, \"delay\", {\r\n get: function () {\r\n return this._delay;\r\n },\r\n set: function (value) {\r\n this._delay = value;\r\n if (this._running) {\r\n this.stop();\r\n this.start();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Timer.prototype, \"repeatCount\", {\r\n get: function () {\r\n return this._repeatCount;\r\n },\r\n set: function (value) {\r\n this._repeatCount = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Timer.prototype.reset = function () {\r\n if (this._running)\r\n this.stop();\r\n this._currentCount = 0;\r\n };\r\n Object.defineProperty(Timer.prototype, \"running\", {\r\n get: function () {\r\n return this._running;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Timer.prototype.start = function () {\r\n var _this = this;\r\n this._running = true;\r\n clearInterval(this._iid);\r\n this._iid = setInterval(function () { return _this.tick(); }, this._delay);\r\n };\r\n Timer.prototype.stop = function () {\r\n this._running = false;\r\n clearInterval(this._iid);\r\n };\r\n Timer.prototype.tick = function () {\r\n this._currentCount++;\r\n if ((this._repeatCount > 0) && this._currentCount >= this._repeatCount) {\r\n this.stop();\r\n this.dispatchEvent(new TimerEvent(TimerEvent.TIMER));\r\n this.dispatchEvent(new TimerEvent(TimerEvent.TIMER_COMPLETE));\r\n }\r\n else {\r\n this.dispatchEvent(new TimerEvent(TimerEvent.TIMER));\r\n }\r\n };\r\n return Timer;\r\n}(EventDispatcher));\r\nexport { Timer };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/Timer.js","/**\r\n *\r\n *\r\n * @returns {number}\r\n */\r\n/**\r\n *\r\n *\r\n * @returns {number}\r\n */ export function getTimer() {\r\n // number milliseconds of 1970/01/01\r\n // this different to AS3 implementation which gets the number of milliseconds\r\n // since instance of Flash player was initialised\r\n return Date.now();\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/getTimer.js","import * as tslib_1 from \"tslib\";\r\nimport { AbstractMethodError } from \"../errors/AbstractMethodError\";\r\nimport { AssetEvent } from \"../events/AssetEvent\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\nimport { ParserEvent } from \"../events/ParserEvent\";\r\nimport { TimerEvent } from \"../events/TimerEvent\";\r\nimport { ParserUtils } from \"../parsers/ParserUtils\";\r\nimport { ResourceDependency } from \"../parsers/ResourceDependency\";\r\nimport { Timer } from \"../utils/Timer\";\r\nimport { getTimer } from \"../utils/getTimer\";\r\n/**\r\n * ParserBase provides an abstract base export class for objects that convert blocks of data to data structures\r\n * supported by away.\r\n *\r\n * If used by Loader to automatically determine the parser type, two public static methods should\r\n * be implemented, with the following signatures:\r\n *\r\n * public static supportsType(extension : string) : boolean\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n *\r\n * public static supportsData(data : *) : boolean\r\n * Tests whether a data block can be parsed by the parser.\r\n *\r\n * Furthermore, for any concrete subtype, the method initHandle should be overridden to immediately\r\n * create the object that will contain the parsed data. This allows ResourceManager to return an object\r\n * handle regardless of whether the object was loaded or not.\r\n *\r\n * @see Loader\r\n */\r\nvar ParserBase = (function (_super) {\r\n tslib_1.__extends(ParserBase, _super);\r\n /**\r\n * Creates a new ParserBase object\r\n * @param format The data format of the file data to be parsed. Can be either ParserDataFormat.BINARY or ParserDataFormat.PLAIN_TEXT, and should be provided by the concrete subtype.\r\n *\r\n * @see away.loading.parsers.ParserDataFormat\r\n */\r\n function ParserBase(format) {\r\n var _this = _super.call(this) || this;\r\n _this._materialMode = 0;\r\n _this._dataFormat = format;\r\n _this._dependencies = new Array();\r\n _this._pOnIntervalDelegate = function (event) { return _this._pOnInterval(event); };\r\n return _this;\r\n }\r\n //----------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n // TODO: add error checking for the following ( could cause a problem if this function is not implemented )\r\n //----------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n // Needs to be implemented in all Parsers (\r\n //public static supportsType(extension : string) : boolean\r\n //* Indicates whether or not a given file extension is supported by the parser.\r\n //----------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n ParserBase.supportsType = function (extension) {\r\n throw new AbstractMethodError();\r\n };\r\n Object.defineProperty(ParserBase.prototype, \"content\", {\r\n /* Protected */\r\n get: function () {\r\n return this._pContent;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ParserBase.prototype, \"parsingFailure\", {\r\n get: function () {\r\n return this._parsingFailure;\r\n },\r\n set: function (b) {\r\n this._parsingFailure = b;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ParserBase.prototype, \"parsingPaused\", {\r\n get: function () {\r\n return this._parsingPaused;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ParserBase.prototype, \"parsingComplete\", {\r\n get: function () {\r\n return this._parsingComplete;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ParserBase.prototype, \"materialMode\", {\r\n get: function () {\r\n return this._materialMode;\r\n },\r\n set: function (newMaterialMode) {\r\n this._materialMode = newMaterialMode;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ParserBase.prototype, \"data\", {\r\n get: function () {\r\n return this._data;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ParserBase.prototype, \"dataFormat\", {\r\n /**\r\n * The data format of the file data to be parsed. Options are URLLoaderDataFormat.BINARY, URLLoaderDataFormat.ARRAY_BUFFER, URLLoaderDataFormat.BLOB, URLLoaderDataFormat.VARIABLES or URLLoaderDataFormat.TEXT.\r\n */\r\n get: function () {\r\n return this._dataFormat;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Parse data (possibly containing bytearry, plain text or BitmapAsset) asynchronously, meaning that\r\n * the parser will periodically stop parsing so that the AVM may proceed to the\r\n * next frame.\r\n *\r\n * @param data The untyped data object in which the loaded data resides.\r\n * @param frameLimit number of milliseconds of parsing allowed per frame. The\r\n * actual time spent on a frame can exceed this number since time-checks can\r\n * only be performed between logical sections of the parsing procedure.\r\n */\r\n ParserBase.prototype.parseAsync = function (data, frameLimit) {\r\n if (frameLimit === void 0) { frameLimit = 30; }\r\n this._data = data;\r\n this._pStartParsing(frameLimit);\r\n };\r\n Object.defineProperty(ParserBase.prototype, \"dependencies\", {\r\n /**\r\n * A list of dependencies that need to be loaded and resolved for the object being parsed.\r\n */\r\n get: function () {\r\n return this._dependencies;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Resolve a dependency when it's loaded. For example, a dependency containing an ImageResource would be assigned\r\n * to a Mesh instance as a BitmapMaterial, a scene graph object would be added to its intended parent. The\r\n * dependency should be a member of the dependencies property.\r\n *\r\n * @param resourceDependency The dependency to be resolved.\r\n */\r\n ParserBase.prototype._iResolveDependency = function (resourceDependency) {\r\n throw new AbstractMethodError();\r\n };\r\n /**\r\n * Resolve a dependency loading failure. Used by parser to eventually provide a default map\r\n *\r\n * @param resourceDependency The dependency to be resolved.\r\n */\r\n ParserBase.prototype._iResolveDependencyFailure = function (resourceDependency) {\r\n throw new AbstractMethodError();\r\n };\r\n /**\r\n * Resolve a dependency name\r\n *\r\n * @param resourceDependency The dependency to be resolved.\r\n */\r\n ParserBase.prototype._iResolveDependencyName = function (resourceDependency, asset) {\r\n return asset.name;\r\n };\r\n ParserBase.prototype._iResumeParsing = function () {\r\n this._parsingPaused = false;\r\n if (this._timer)\r\n this._timer.start();\r\n //get started!\r\n if (!this._isParsing)\r\n this._pOnInterval();\r\n };\r\n ParserBase.prototype._pFinalizeAsset = function (asset, name) {\r\n if (name === void 0) { name = null; }\r\n var type_event;\r\n var type_name;\r\n if (name != null)\r\n asset.name = name;\r\n // If the asset has no name, give it\r\n // a per-type default name.\r\n if (!asset.name)\r\n asset.name = asset.assetType;\r\n this.dispatchEvent(new AssetEvent(AssetEvent.ASSET_COMPLETE, asset));\r\n };\r\n /**\r\n * Parse the next block of data.\r\n * @return Whether or not more data needs to be parsed. Can be ParserBase.ParserBase.PARSING_DONE or\r\n * ParserBase.ParserBase.MORE_TO_PARSE.\r\n */\r\n ParserBase.prototype._pProceedParsing = function () {\r\n throw new AbstractMethodError();\r\n };\r\n ParserBase.prototype._pDieWithError = function (message) {\r\n if (message === void 0) { message = 'Unknown parsing error'; }\r\n if (this._timer) {\r\n this._timer.removeEventListener(TimerEvent.TIMER, this._pOnIntervalDelegate);\r\n this._timer.stop();\r\n this._timer = null;\r\n }\r\n this.dispatchEvent(new ParserEvent(ParserEvent.PARSE_ERROR, message));\r\n };\r\n ParserBase.prototype._pAddDependency = function (id, req, parser, data, retrieveAsRawData, suppressErrorEvents, sub_id) {\r\n if (parser === void 0) { parser = null; }\r\n if (data === void 0) { data = null; }\r\n if (retrieveAsRawData === void 0) { retrieveAsRawData = false; }\r\n if (suppressErrorEvents === void 0) { suppressErrorEvents = false; }\r\n if (sub_id === void 0) { sub_id = 0; }\r\n var dependency = new ResourceDependency(id, req, data, parser, this, retrieveAsRawData, suppressErrorEvents, sub_id);\r\n this._dependencies.push(dependency);\r\n return dependency;\r\n };\r\n ParserBase.prototype._pPauseAndRetrieveDependencies = function () {\r\n this._pPauseParsing();\r\n this.dispatchEvent(new ParserEvent(ParserEvent.READY_FOR_DEPENDENCIES));\r\n };\r\n ParserBase.prototype._pPauseParsing = function () {\r\n if (this._timer)\r\n this._timer.stop();\r\n this._parsingPaused = true;\r\n };\r\n /**\r\n * Tests whether or not there is still time left for parsing within the maximum allowed time frame per session.\r\n * @return True if there is still time left, false if the maximum allotted time was exceeded and parsing should be interrupted.\r\n */\r\n ParserBase.prototype._pHasTime = function () {\r\n return ((getTimer() - this._lastFrameTime) < this._frameLimit);\r\n };\r\n /**\r\n * Called when the parsing pause interval has passed and parsing can proceed.\r\n */\r\n ParserBase.prototype._pOnInterval = function (event) {\r\n if (event === void 0) { event = null; }\r\n this._lastFrameTime = getTimer();\r\n this._isParsing = true;\r\n if (this._pProceedParsing() && !this._parsingFailure)\r\n this._pFinishParsing();\r\n this._isParsing = false;\r\n };\r\n /**\r\n * Initializes the parsing of data.\r\n * @param frameLimit The maximum duration of a parsing session.\r\n */\r\n ParserBase.prototype._pStartParsing = function (frameLimit) {\r\n this._frameLimit = frameLimit;\r\n this._timer = new Timer(this._frameLimit, 0);\r\n this._timer.addEventListener(TimerEvent.TIMER, this._pOnIntervalDelegate);\r\n this._timer.start();\r\n //get started!\r\n this._pOnInterval();\r\n };\r\n /**\r\n * Finish parsing the data.\r\n */\r\n ParserBase.prototype._pFinishParsing = function () {\r\n if (this._timer) {\r\n this._timer.removeEventListener(TimerEvent.TIMER, this._pOnIntervalDelegate);\r\n this._timer.stop();\r\n }\r\n this._timer = null;\r\n this._parsingComplete = true;\r\n this._isParsing = false;\r\n this.dispatchEvent(new ParserEvent(ParserEvent.PARSE_COMPLETE));\r\n };\r\n /**\r\n *\r\n * @returns {string}\r\n * @private\r\n */\r\n ParserBase.prototype._pGetTextData = function () {\r\n return ParserUtils.toString(this._data);\r\n };\r\n /**\r\n *\r\n * @returns {ByteArray}\r\n * @private\r\n */\r\n ParserBase.prototype._pGetByteData = function () {\r\n return ParserUtils.toByteArray(this._data);\r\n };\r\n /**\r\n *\r\n * @returns {any}\r\n * @private\r\n */\r\n ParserBase.prototype._pGetData = function () {\r\n return this._data;\r\n };\r\n return ParserBase;\r\n}(EventDispatcher));\r\nexport { ParserBase };\r\n/**\r\n * Returned by proceedParsing to indicate no more parsing is needed.\r\n */\r\nParserBase.PARSING_DONE = true;\r\n/* Protected */\r\n/**\r\n * Returned by proceedParsing to indicate more parsing is needed, allowing asynchronous parsing.\r\n */\r\nParserBase.MORE_TO_PARSE = false;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/parsers/ParserBase.js","/**\r\n * An enumeration providing values to describe the data format of parsed data.\r\n */\r\nvar ParserDataFormat = (function () {\r\n function ParserDataFormat() {\r\n }\r\n return ParserDataFormat;\r\n}());\r\nexport { ParserDataFormat };\r\n/**\r\n * Describes the format of a binary file.\r\n */\r\nParserDataFormat.BINARY = \"binary\";\r\n/**\r\n * Describes the format of a plain text file.\r\n */\r\nParserDataFormat.PLAIN_TEXT = \"plainText\";\r\n/**\r\n * Describes the format of an image file\r\n */\r\nParserDataFormat.IMAGE = \"image\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/parsers/ParserDataFormat.js","import * as tslib_1 from \"tslib\";\r\nimport { WaveAudio } from \"../audio/WaveAudio\";\r\nimport { URLLoaderDataFormat } from \"../net/URLLoaderDataFormat\";\r\nimport { ParserBase } from \"../parsers/ParserBase\";\r\nimport { ByteArray } from \"../utils/ByteArray\";\r\nvar WaveAudioParser = (function (_super) {\r\n tslib_1.__extends(WaveAudioParser, _super);\r\n function WaveAudioParser() {\r\n var _this = _super.call(this, URLLoaderDataFormat.BLOB) || this;\r\n _this._convertingBlobState = 0;\r\n return _this;\r\n }\r\n WaveAudioParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"wav\" || extension == \"mp3\" || extension == \"ogg\";\r\n };\r\n WaveAudioParser.supportsData = function (data) {\r\n if (!(data instanceof ByteArray))\r\n return false;\r\n var ba = data;\r\n var filetype = WaveAudioParser.parseFileType(ba);\r\n return filetype ? true : false;\r\n };\r\n WaveAudioParser.prototype._pStartParsing = function (frameLimit) {\r\n //clear content\r\n delete this._pContent;\r\n this._pContent = null;\r\n _super.prototype._pStartParsing.call(this, frameLimit);\r\n };\r\n WaveAudioParser.prototype._pProceedParsing = function () {\r\n var _this = this;\r\n if (this._convertingBlobState == 1) {\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n else if (this._convertingBlobState == 2) {\r\n return ParserBase.PARSING_DONE;\r\n }\r\n else if (this._convertingBlobState == 3) {\r\n return ParserBase.PARSING_DONE; //todo\r\n }\r\n if (this.data instanceof ByteArray) {\r\n this._pContent = new WaveAudio(this.data.arraybytes);\r\n this._pFinalizeAsset(this._pContent, this._iFileName);\r\n }\r\n else if (this.data instanceof ArrayBuffer) {\r\n this._pContent = new WaveAudio(this.data);\r\n this._pFinalizeAsset(this._pContent, this._iFileName);\r\n }\r\n else if (this.data instanceof Blob) {\r\n this._convertingBlobState = 1;\r\n var fileReader = new FileReader();\r\n fileReader.onload = function (event) { return _this.blobConverted(event); };\r\n fileReader.readAsArrayBuffer(this.data);\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n return ParserBase.PARSING_DONE;\r\n };\r\n WaveAudioParser.prototype.blobConverted = function (event) {\r\n this._pContent = new WaveAudio(event.target.result);\r\n this._pFinalizeAsset(this._pContent, WaveAudioParser.processFilename(this._iFileName));\r\n this._convertingBlobState = 2;\r\n };\r\n WaveAudioParser.parseFileType = function (ba) {\r\n //old mp3 detections\r\n // This does not seem to work for all my mp3 files (i tested different mp3 encoders)\r\n // I leave it in, because it might work for mp3 data that i do not have here to test\r\n ba.position = 0;\r\n if ((ba.readUnsignedShort() & 0xFFE0) == 0xFFE0) {\r\n return 'mp3'; // test for MP3 syncword\r\n }\r\n // new mp3 detection\r\n // this from is-mp3 npm module,\r\n // but still i have mp3 files that are not detected by this\r\n // i added the hack: (byte_1 === 255 && byte_2 === 243 && byte_3 === 130) \tto catch those mp3s\r\n // todo: find a more foolproof way to detect al mp3 (my hack might collide with detection for other filetypes)\r\n ba.position = 0;\r\n var byte_1 = ba.readUnsignedByte();\r\n var byte_2 = ba.readUnsignedByte();\r\n var byte_3 = ba.readUnsignedByte();\r\n if ((byte_1 === 73 && byte_2 === 68 && byte_3 === 51)\r\n || (byte_1 === 255 && byte_2 === 251)\r\n || (byte_1 === 255 && byte_2 === 243 && byte_3 === 130)) {\r\n return 'mp3';\r\n }\r\n ba.position = 0;\r\n if (ba.readUTFBytes(4) == 'RIFF')\r\n return 'wav';\r\n ba.position = 0;\r\n if (ba.readUTFBytes(4) == 'OggS')\r\n return 'ogg';\r\n ba.position = 0;\r\n return null;\r\n };\r\n return WaveAudioParser;\r\n}(ParserBase));\r\nexport { WaveAudioParser };\r\n/*\r\n this static property can be set with a function that that will be called on each filename before adding it to the library\r\n*/\r\nWaveAudioParser.processFilename = function (filename) {\r\n return filename;\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/parsers/WaveAudioParser.js","/**\r\n * Provides constant values for camera lens projection options use the the coordinateSystem property\r\n *\r\n * @see away.projections.PerspectiveLens#coordinateSystem\r\n */\r\n/**\r\n * Provides constant values for camera lens projection options use the the coordinateSystem property\r\n *\r\n * @see away.projections.PerspectiveLens#coordinateSystem\r\n */ export var CoordinateSystem;\r\n(function (CoordinateSystem) {\r\n /**\r\n * Default option, projects to a left-handed coordinate system\r\n */\r\n CoordinateSystem[CoordinateSystem[\"LEFT_HANDED\"] = 0] = \"LEFT_HANDED\";\r\n /**\r\n * Projects to a right-handed coordinate system\r\n */\r\n CoordinateSystem[CoordinateSystem[\"RIGHT_HANDED\"] = 1] = \"RIGHT_HANDED\";\r\n})(CoordinateSystem || (CoordinateSystem = {}));\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/projections/CoordinateSystem.js","import * as tslib_1 from \"tslib\";\r\nimport { Matrix3D } from \"../geom/Matrix3D\";\r\nimport { Plane3D } from \"../geom/Plane3D\";\r\nimport { Rectangle } from \"../geom/Rectangle\";\r\nimport { EventDispatcher } from \"../events/EventDispatcher\";\r\nimport { ProjectionEvent } from \"../events/ProjectionEvent\";\r\nimport { TransformEvent } from \"../events/TransformEvent\";\r\nimport { AbstractMethodError } from \"../errors/AbstractMethodError\";\r\nimport { CoordinateSystem } from \"./CoordinateSystem\";\r\nvar ProjectionBase = (function (_super) {\r\n tslib_1.__extends(ProjectionBase, _super);\r\n function ProjectionBase(coordinateSystem) {\r\n if (coordinateSystem === void 0) { coordinateSystem = CoordinateSystem.LEFT_HANDED; }\r\n var _this = _super.call(this) || this;\r\n _this._viewMatrix3D = new Matrix3D();\r\n _this._inverseViewMatrix3D = new Matrix3D();\r\n _this._frustumMatrix3D = new Matrix3D();\r\n _this._viewRect = new Rectangle();\r\n _this._stageRect = new Rectangle();\r\n _this._near = 20;\r\n _this._far = 3000;\r\n _this._frustumCorners = [];\r\n _this._originX = 0.5;\r\n _this._originY = 0.5;\r\n _this._viewMatrix3DDirty = true;\r\n _this._inverseViewMatrix3DDirty = true;\r\n _this._frustumMatrix3DDirty = true;\r\n _this._frustumPlanesDirty = true;\r\n _this._coordinateSystem = coordinateSystem;\r\n _this._onInvalidateConcatenatedMatrix3DDelegate = function (event) { return _this._onInvalidateConcatenatedMatrix3D(event); };\r\n return _this;\r\n }\r\n Object.defineProperty(ProjectionBase.prototype, \"transform\", {\r\n get: function () {\r\n return this._transform;\r\n },\r\n set: function (value) {\r\n if (this._transform == value)\r\n return;\r\n if (this._transform)\r\n this._transform.removeEventListener(TransformEvent.INVALIDATE_CONCATENATED_MATRIX3D, this._onInvalidateConcatenatedMatrix3DDelegate);\r\n this._transform = value;\r\n if (this._transform)\r\n this._transform.addEventListener(TransformEvent.INVALIDATE_CONCATENATED_MATRIX3D, this._onInvalidateConcatenatedMatrix3DDelegate);\r\n this._invalidateViewMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProjectionBase.prototype, \"coordinateSystem\", {\r\n /**\r\n * The handedness of the coordinate system projection. The default is LEFT_HANDED.\r\n */\r\n get: function () {\r\n return this._coordinateSystem;\r\n },\r\n set: function (value) {\r\n if (this._coordinateSystem == value)\r\n return;\r\n this._coordinateSystem = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProjectionBase.prototype, \"frustumCorners\", {\r\n /**\r\n *\r\n * @returns {number[]}\r\n */\r\n get: function () {\r\n return this._frustumCorners;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProjectionBase.prototype, \"frustumMatrix3D\", {\r\n /**\r\n *\r\n * @returns {Matrix3D}\r\n */\r\n get: function () {\r\n if (this._frustumMatrix3DDirty)\r\n this._updateFrustumMatrix3D();\r\n return this._frustumMatrix3D;\r\n },\r\n set: function (value) {\r\n this._frustumMatrix3D = value;\r\n this._invalidateViewMatrix3D();\r\n this._invalidateProperties();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProjectionBase.prototype, \"near\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n if (this._propertiesDirty)\r\n this._updateProperties();\r\n return this._near;\r\n },\r\n set: function (value) {\r\n if (value == this._near)\r\n return;\r\n this._near = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProjectionBase.prototype, \"originX\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n if (this._propertiesDirty)\r\n this._updateProperties();\r\n return this._originX;\r\n },\r\n set: function (value) {\r\n if (this._originX == value)\r\n return;\r\n this._originX = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProjectionBase.prototype, \"originY\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n if (this._propertiesDirty)\r\n this._updateProperties();\r\n return this._originY;\r\n },\r\n set: function (value) {\r\n if (this._originY == value)\r\n return;\r\n this._originY = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProjectionBase.prototype, \"far\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n if (this._propertiesDirty)\r\n this._updateProperties();\r\n return this._far;\r\n },\r\n set: function (value) {\r\n if (value == this._far)\r\n return;\r\n this._far = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /*\r\n \r\n */\r\n ProjectionBase.prototype.project = function (vector3D) {\r\n var v = this.viewMatrix3D.transformVector(vector3D);\r\n v.x = v.x / v.w;\r\n v.y = -v.y / v.w;\r\n //z is remapped to w\r\n v.z = v.w;\r\n v.w = 1;\r\n return v;\r\n };\r\n Object.defineProperty(ProjectionBase.prototype, \"viewMatrix3D\", {\r\n get: function () {\r\n if (this._viewMatrix3DDirty) {\r\n this._viewMatrix3DDirty = false;\r\n if (this._transform) {\r\n this._viewMatrix3D.copyFrom(this._transform.inverseConcatenatedMatrix3D);\r\n this._viewMatrix3D.append(this.frustumMatrix3D);\r\n }\r\n else {\r\n this._viewMatrix3D.copyFrom(this.frustumMatrix3D);\r\n }\r\n }\r\n return this._viewMatrix3D;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProjectionBase.prototype, \"inverseViewMatrix3D\", {\r\n get: function () {\r\n if (this._inverseViewMatrix3DDirty) {\r\n this._inverseViewMatrix3DDirty = false;\r\n this._inverseViewMatrix3D.copyFrom(this.viewMatrix3D);\r\n this._inverseViewMatrix3D.invert();\r\n }\r\n return this._inverseViewMatrix3D;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ProjectionBase.prototype.unproject = function (nX, nY, sZ, target) {\r\n if (target === void 0) { target = null; }\r\n throw new AbstractMethodError();\r\n };\r\n ProjectionBase.prototype.clone = function () {\r\n throw new AbstractMethodError();\r\n };\r\n ProjectionBase.prototype._invalidateProperties = function () {\r\n this._propertiesDirty = true;\r\n };\r\n ProjectionBase.prototype._invalidateViewMatrix3D = function () {\r\n this._viewMatrix3DDirty = true;\r\n this._inverseViewMatrix3DDirty = true;\r\n this._frustumPlanesDirty = true;\r\n this.dispatchEvent(new ProjectionEvent(ProjectionEvent.MATRIX_CHANGED, this));\r\n };\r\n ProjectionBase.prototype._invalidateFrustumMatrix3D = function () {\r\n if (this._propertiesDirty)\r\n this._updateProperties();\r\n this._frustumMatrix3DDirty = true;\r\n this._invalidateViewMatrix3D();\r\n };\r\n ProjectionBase.prototype.setViewRect = function (x, y, width, height) {\r\n this._viewRect.x = x;\r\n this._viewRect.y = y;\r\n this._viewRect.width = width;\r\n this._viewRect.height = height;\r\n this._invalidateFrustumMatrix3D();\r\n };\r\n ProjectionBase.prototype.setStageRect = function (x, y, width, height) {\r\n this._stageRect.x = x;\r\n this._stageRect.y = y;\r\n this._stageRect.width = width;\r\n this._stageRect.height = height;\r\n this._invalidateFrustumMatrix3D();\r\n };\r\n ProjectionBase.prototype._updateFrustumMatrix3D = function () {\r\n this._frustumMatrix3DDirty = false;\r\n };\r\n ProjectionBase.prototype._updateProperties = function () {\r\n this._propertiesDirty = false;\r\n };\r\n Object.defineProperty(ProjectionBase.prototype, \"frustumPlanes\", {\r\n get: function () {\r\n if (this._frustumPlanesDirty)\r\n this._updateFrustumPlanes();\r\n return this._frustumPlanes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ProjectionBase.prototype._updateFrustumPlanes = function () {\r\n this._frustumPlanesDirty = false;\r\n if (!this._frustumPlanes) {\r\n this._frustumPlanes = [];\r\n for (var i = 0; i < 6; ++i)\r\n this._frustumPlanes[i] = new Plane3D();\r\n }\r\n var a, b, c;\r\n //var d : Number;\r\n var c11, c12, c13, c14;\r\n var c21, c22, c23, c24;\r\n var c31, c32, c33, c34;\r\n var c41, c42, c43, c44;\r\n var p;\r\n var raw = this.viewMatrix3D._rawData;\r\n var invLen;\r\n c11 = raw[0];\r\n c12 = raw[4];\r\n c13 = raw[8];\r\n c14 = raw[12];\r\n c21 = raw[1];\r\n c22 = raw[5];\r\n c23 = raw[9];\r\n c24 = raw[13];\r\n c31 = raw[2];\r\n c32 = raw[6];\r\n c33 = raw[10];\r\n c34 = raw[14];\r\n c41 = raw[3];\r\n c42 = raw[7];\r\n c43 = raw[11];\r\n c44 = raw[15];\r\n // left plane\r\n p = this._frustumPlanes[0];\r\n a = c41 + c11;\r\n b = c42 + c12;\r\n c = c43 + c13;\r\n invLen = 1 / Math.sqrt(a * a + b * b + c * c);\r\n p.a = a * invLen;\r\n p.b = b * invLen;\r\n p.c = c * invLen;\r\n p.d = -(c44 + c14) * invLen;\r\n // right plane\r\n p = this._frustumPlanes[1];\r\n a = c41 - c11;\r\n b = c42 - c12;\r\n c = c43 - c13;\r\n invLen = 1 / Math.sqrt(a * a + b * b + c * c);\r\n p.a = a * invLen;\r\n p.b = b * invLen;\r\n p.c = c * invLen;\r\n p.d = (c14 - c44) * invLen;\r\n // bottom\r\n p = this._frustumPlanes[2];\r\n a = c41 + c21;\r\n b = c42 + c22;\r\n c = c43 + c23;\r\n invLen = 1 / Math.sqrt(a * a + b * b + c * c);\r\n p.a = a * invLen;\r\n p.b = b * invLen;\r\n p.c = c * invLen;\r\n p.d = -(c44 + c24) * invLen;\r\n // top\r\n p = this._frustumPlanes[3];\r\n a = c41 - c21;\r\n b = c42 - c22;\r\n c = c43 - c23;\r\n invLen = 1 / Math.sqrt(a * a + b * b + c * c);\r\n p.a = a * invLen;\r\n p.b = b * invLen;\r\n p.c = c * invLen;\r\n p.d = (c24 - c44) * invLen;\r\n // near\r\n p = this._frustumPlanes[4];\r\n a = c31;\r\n b = c32;\r\n c = c33;\r\n invLen = 1 / Math.sqrt(a * a + b * b + c * c);\r\n p.a = a * invLen;\r\n p.b = b * invLen;\r\n p.c = c * invLen;\r\n p.d = -c34 * invLen;\r\n // far\r\n p = this._frustumPlanes[5];\r\n a = c41 - c31;\r\n b = c42 - c32;\r\n c = c43 - c33;\r\n invLen = 1 / Math.sqrt(a * a + b * b + c * c);\r\n p.a = a * invLen;\r\n p.b = b * invLen;\r\n p.c = c * invLen;\r\n p.d = (c34 - c44) * invLen;\r\n };\r\n ProjectionBase.prototype._onInvalidateConcatenatedMatrix3D = function (event) {\r\n this._invalidateViewMatrix3D();\r\n };\r\n return ProjectionBase;\r\n}(EventDispatcher));\r\nexport { ProjectionBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/projections/ProjectionBase.js","import * as tslib_1 from \"tslib\";\r\nimport { Vector3D } from \"../geom/Vector3D\";\r\nimport { ProjectionEvent } from \"../events/ProjectionEvent\";\r\nimport { ProjectionBase } from \"../projections/ProjectionBase\";\r\nvar ObliqueNearPlaneProjection = (function (_super) {\r\n tslib_1.__extends(ObliqueNearPlaneProjection, _super);\r\n function ObliqueNearPlaneProjection(baseProjection, plane) {\r\n var _this = _super.call(this) || this;\r\n _this.baseProjection = baseProjection;\r\n _this.plane = plane;\r\n _this._onProjectionMatrixChangedDelegate = function (event) { return _this.onProjectionMatrixChanged(event); };\r\n return _this;\r\n }\r\n Object.defineProperty(ObliqueNearPlaneProjection.prototype, \"frustumCorners\", {\r\n //@override\r\n get: function () {\r\n return this._baseProjection.frustumCorners;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ObliqueNearPlaneProjection.prototype, \"near\", {\r\n //@override\r\n get: function () {\r\n return this._baseProjection.near;\r\n },\r\n //@override\r\n set: function (value) {\r\n this._baseProjection.near = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ObliqueNearPlaneProjection.prototype, \"far\", {\r\n //@override\r\n get: function () {\r\n return this._baseProjection.far;\r\n },\r\n //@override\r\n set: function (value) {\r\n this._baseProjection.far = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ObliqueNearPlaneProjection.prototype, \"plane\", {\r\n get: function () {\r\n return this._plane;\r\n },\r\n set: function (value) {\r\n this._plane = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ObliqueNearPlaneProjection.prototype, \"baseProjection\", {\r\n set: function (value) {\r\n if (this._baseProjection)\r\n this._baseProjection.removeEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\r\n this._baseProjection = value;\r\n if (this._baseProjection)\r\n this._baseProjection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ObliqueNearPlaneProjection.prototype.onProjectionMatrixChanged = function (event) {\r\n this._invalidateFrustumMatrix3D();\r\n };\r\n //@override\r\n ObliqueNearPlaneProjection.prototype._updateFrustumMatrix3D = function () {\r\n _super.prototype._updateFrustumMatrix3D.call(this);\r\n this._frustumMatrix3D.copyFrom(this._baseProjection.frustumMatrix3D);\r\n var cx = this._plane.a;\r\n var cy = this._plane.b;\r\n var cz = this._plane.c;\r\n var cw = -this._plane.d + .05;\r\n var signX = cx >= 0 ? 1 : -1;\r\n var signY = cy >= 0 ? 1 : -1;\r\n var p = new Vector3D(signX, signY, 1, 1);\r\n var inverse = this._frustumMatrix3D.clone();\r\n inverse.invert();\r\n var q = inverse.transformVector(p);\r\n this._frustumMatrix3D.copyRowTo(3, p);\r\n var a = (q.x * p.x + q.y * p.y + q.z * p.z + q.w * p.w) / (cx * q.x + cy * q.y + cz * q.z + cw * q.w);\r\n this._frustumMatrix3D.copyRowFrom(2, new Vector3D(cx * a, cy * a, cz * a, cw * a));\r\n };\r\n return ObliqueNearPlaneProjection;\r\n}(ProjectionBase));\r\nexport { ObliqueNearPlaneProjection };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/projections/ObliqueNearPlaneProjection.js","import * as tslib_1 from \"tslib\";\r\nimport { Matrix3D } from \"../geom/Matrix3D\";\r\nimport { Vector3D } from \"../geom/Vector3D\";\r\nimport { ProjectionBase } from \"./ProjectionBase\";\r\nvar OrthographicOffCenterProjection = (function (_super) {\r\n tslib_1.__extends(OrthographicOffCenterProjection, _super);\r\n function OrthographicOffCenterProjection(minX, maxX, minY, maxY) {\r\n var _this = _super.call(this) || this;\r\n _this._minX = minX;\r\n _this._maxX = maxX;\r\n _this._minY = minY;\r\n _this._maxY = maxY;\r\n return _this;\r\n }\r\n Object.defineProperty(OrthographicOffCenterProjection.prototype, \"minX\", {\r\n get: function () {\r\n return this._minX;\r\n },\r\n set: function (value) {\r\n this._minX = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(OrthographicOffCenterProjection.prototype, \"maxX\", {\r\n get: function () {\r\n return this._maxX;\r\n },\r\n set: function (value) {\r\n this._maxX = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(OrthographicOffCenterProjection.prototype, \"minY\", {\r\n get: function () {\r\n return this._minY;\r\n },\r\n set: function (value) {\r\n this._minY = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(OrthographicOffCenterProjection.prototype, \"maxY\", {\r\n get: function () {\r\n return this._maxY;\r\n },\r\n set: function (value) {\r\n this._maxY = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n //@override\r\n OrthographicOffCenterProjection.prototype.unproject = function (nX, nY, sZ) {\r\n var v = new Vector3D(nX, -nY, sZ, 1.0);\r\n v = this.inverseViewMatrix3D.transformVector(v);\r\n //z is unaffected by transform\r\n v.z = sZ;\r\n return v;\r\n };\r\n //@override\r\n OrthographicOffCenterProjection.prototype.clone = function () {\r\n var clone = new OrthographicOffCenterProjection(this._minX, this._maxX, this._minY, this._maxY);\r\n clone._near = this._near;\r\n clone._far = this._far;\r\n return clone;\r\n };\r\n //@override\r\n OrthographicOffCenterProjection.prototype._updateFrustumMatrix3D = function () {\r\n _super.prototype._updateFrustumMatrix3D.call(this);\r\n var raw = Matrix3D.CALCULATION_MATRIX._rawData;\r\n var w = 1 / (this._maxX - this._minX);\r\n var h = 1 / (this._maxY - this._minY);\r\n var d = 1 / (this._far - this._near);\r\n raw[0] = 2 * w;\r\n raw[5] = 2 * h;\r\n raw[10] = d;\r\n raw[12] = -(this._maxX + this._minX) * w;\r\n raw[13] = -(this._maxY + this._minY) * h;\r\n raw[14] = -this._near * d;\r\n raw[15] = 1;\r\n raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\r\n this._frustumMatrix3D.copyRawDataFrom(raw);\r\n this._frustumCorners[0] = this._frustumCorners[9] = this._frustumCorners[12] = this._frustumCorners[21] = this._minX;\r\n this._frustumCorners[3] = this._frustumCorners[6] = this._frustumCorners[15] = this._frustumCorners[18] = this._maxX;\r\n this._frustumCorners[1] = this._frustumCorners[4] = this._frustumCorners[13] = this._frustumCorners[16] = this._minY;\r\n this._frustumCorners[7] = this._frustumCorners[10] = this._frustumCorners[19] = this._frustumCorners[22] = this._maxY;\r\n this._frustumCorners[2] = this._frustumCorners[5] = this._frustumCorners[8] = this._frustumCorners[11] = this._near;\r\n this._frustumCorners[14] = this._frustumCorners[17] = this._frustumCorners[20] = this._frustumCorners[23] = this._far;\r\n };\r\n return OrthographicOffCenterProjection;\r\n}(ProjectionBase));\r\nexport { OrthographicOffCenterProjection };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/projections/OrthographicOffCenterProjection.js","import * as tslib_1 from \"tslib\";\r\nimport { Matrix3D } from \"../geom/Matrix3D\";\r\nimport { Vector3D } from \"../geom/Vector3D\";\r\nimport { ProjectionBase } from \"./ProjectionBase\";\r\nvar OrthographicProjection = (function (_super) {\r\n tslib_1.__extends(OrthographicProjection, _super);\r\n function OrthographicProjection(projectionHeight) {\r\n if (projectionHeight === void 0) { projectionHeight = 500; }\r\n var _this = _super.call(this) || this;\r\n _this._projectionHeight = projectionHeight;\r\n return _this;\r\n }\r\n Object.defineProperty(OrthographicProjection.prototype, \"projectionHeight\", {\r\n get: function () {\r\n return this._projectionHeight;\r\n },\r\n set: function (value) {\r\n if (value == this._projectionHeight)\r\n return;\r\n this._projectionHeight = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n //@override\r\n OrthographicProjection.prototype.unproject = function (nX, nY, sZ, target) {\r\n if (target === void 0) { target = null; }\r\n if (target == null)\r\n target = new Vector3D();\r\n target.x = nX + this.viewMatrix3D._rawData[12];\r\n target.y = -nY + this.viewMatrix3D._rawData[13];\r\n target.z = sZ;\r\n target.w = 1.0;\r\n this.inverseViewMatrix3D.transformVector(target, target);\r\n //z is unaffected by transform\r\n target.z = sZ;\r\n return target;\r\n };\r\n //@override\r\n OrthographicProjection.prototype.clone = function () {\r\n var clone = new OrthographicProjection();\r\n clone._near = this._near;\r\n clone._far = this._far;\r\n clone.projectionHeight = this._projectionHeight;\r\n return clone;\r\n };\r\n //@override\r\n OrthographicProjection.prototype._updateFrustumMatrix3D = function () {\r\n _super.prototype._updateFrustumMatrix3D.call(this);\r\n var raw = Matrix3D.CALCULATION_MATRIX._rawData;\r\n this._yMax = this._projectionHeight * .5;\r\n this._xMax = this._yMax * this._viewRect.width / this._viewRect.height;\r\n var left;\r\n var right;\r\n var top;\r\n var bottom;\r\n if (this._viewRect.x == 0 && this._viewRect.y == 0 && this._viewRect.width == this._stageRect.width && this._viewRect.height == this._stageRect.height) {\r\n // assume symmetric frustum\r\n left = -this._xMax;\r\n right = this._xMax;\r\n top = -this._yMax;\r\n bottom = this._yMax;\r\n raw[0] = 2 / (this._projectionHeight * this._viewRect.width / this._viewRect.height);\r\n raw[5] = 2 / this._projectionHeight;\r\n raw[10] = 1 / (this._far - this._near);\r\n raw[14] = this._near / (this._near - this._far);\r\n raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = raw[12] = raw[13] = 0;\r\n raw[15] = 1;\r\n }\r\n else {\r\n var xWidth = this._xMax * (this._stageRect.width / this._viewRect.width);\r\n var yHgt = this._yMax * (this._stageRect.height / this._viewRect.height);\r\n var center = this._xMax * (this._viewRect.x * 2 - this._stageRect.width) / this._viewRect.width + this._xMax;\r\n var middle = -this._yMax * (this._viewRect.y * 2 - this._stageRect.height) / this._viewRect.height - this._yMax;\r\n left = center - xWidth;\r\n right = center + xWidth;\r\n top = middle - yHgt;\r\n bottom = middle + yHgt;\r\n raw[0] = 2 * 1 / (right - left);\r\n raw[5] = -2 * 1 / (top - bottom);\r\n raw[10] = 1 / (this._far - this._near);\r\n raw[12] = (right + left) / (right - left);\r\n raw[13] = (bottom + top) / (bottom - top);\r\n raw[14] = this._near / (this.near - this.far);\r\n raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\r\n raw[15] = 1;\r\n }\r\n this._frustumCorners[0] = this._frustumCorners[9] = this._frustumCorners[12] = this._frustumCorners[21] = left;\r\n this._frustumCorners[3] = this._frustumCorners[6] = this._frustumCorners[15] = this._frustumCorners[18] = right;\r\n this._frustumCorners[1] = this._frustumCorners[4] = this._frustumCorners[13] = this._frustumCorners[16] = top;\r\n this._frustumCorners[7] = this._frustumCorners[10] = this._frustumCorners[19] = this._frustumCorners[22] = bottom;\r\n this._frustumCorners[2] = this._frustumCorners[5] = this._frustumCorners[8] = this._frustumCorners[11] = this._near;\r\n this._frustumCorners[14] = this._frustumCorners[17] = this._frustumCorners[20] = this._frustumCorners[23] = this._far;\r\n this._frustumMatrix3D.copyRawDataFrom(raw);\r\n };\r\n return OrthographicProjection;\r\n}(ProjectionBase));\r\nexport { OrthographicProjection };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/projections/OrthographicProjection.js","import * as tslib_1 from \"tslib\";\r\nimport { Matrix3D } from \"../geom/Matrix3D\";\r\nimport { Vector3D } from \"../geom/Vector3D\";\r\nimport { CoordinateSystem } from \"./CoordinateSystem\";\r\nimport { ProjectionBase } from \"./ProjectionBase\";\r\nvar PerspectiveProjection = (function (_super) {\r\n tslib_1.__extends(PerspectiveProjection, _super);\r\n function PerspectiveProjection(fieldOfView, coordinateSystem) {\r\n if (fieldOfView === void 0) { fieldOfView = 60; }\r\n if (coordinateSystem === void 0) { coordinateSystem = CoordinateSystem.LEFT_HANDED; }\r\n var _this = _super.call(this, coordinateSystem) || this;\r\n _this._fieldOfView = 60;\r\n _this._focalLength = 1000;\r\n _this._hFieldOfView = 60;\r\n _this._hFocalLength = 1000;\r\n _this._preserveAspectRatio = true;\r\n _this._preserveFocalLength = false;\r\n _this.fieldOfView = fieldOfView;\r\n return _this;\r\n }\r\n Object.defineProperty(PerspectiveProjection.prototype, \"preserveAspectRatio\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._preserveAspectRatio;\r\n },\r\n set: function (value) {\r\n if (this._preserveAspectRatio == value)\r\n return;\r\n this._preserveAspectRatio = value;\r\n if (this._preserveAspectRatio)\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PerspectiveProjection.prototype, \"preserveFocalLength\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._preserveFocalLength;\r\n },\r\n set: function (value) {\r\n if (this._preserveFocalLength == value)\r\n return;\r\n this._preserveFocalLength = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PerspectiveProjection.prototype, \"fieldOfView\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (this._frustumMatrix3DDirty && this._preserveFocalLength)\r\n this._updateFrustumMatrix3D();\r\n return this._fieldOfView;\r\n },\r\n set: function (value) {\r\n if (this._fieldOfView == value)\r\n return;\r\n this._fieldOfView = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PerspectiveProjection.prototype, \"focalLength\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (this._frustumMatrix3DDirty && !this._preserveFocalLength)\r\n this._updateFrustumMatrix3D();\r\n return this._focalLength;\r\n },\r\n set: function (value) {\r\n if (this._focalLength == value)\r\n return;\r\n this._focalLength = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PerspectiveProjection.prototype, \"hFieldOfView\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (this._frustumMatrix3DDirty && this._preserveFocalLength)\r\n this._updateFrustumMatrix3D();\r\n return this._hFieldOfView;\r\n },\r\n set: function (value) {\r\n if (this._hFieldOfView == value)\r\n return;\r\n this._hFieldOfView = value;\r\n this._hFocalLength = 1 / Math.tan(this._hFieldOfView * Math.PI / 360);\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PerspectiveProjection.prototype, \"hFocalLength\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (this._frustumMatrix3DDirty && !this._preserveFocalLength)\r\n this._updateFrustumMatrix3D();\r\n return this._hFocalLength;\r\n },\r\n set: function (value) {\r\n if (this._hFocalLength == value)\r\n return;\r\n this._hFocalLength = value;\r\n this._invalidateFrustumMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n //@override\r\n PerspectiveProjection.prototype.unproject = function (nX, nY, sZ, target) {\r\n if (target === void 0) { target = null; }\r\n if (target == null)\r\n target = new Vector3D();\r\n target.x = nX * sZ;\r\n target.y = -nY * sZ;\r\n target.z = (this._far + this._near) / (this._far - this._near) * sZ - 2 * this._far * this._near / (this._far - this._near);\r\n target.w = sZ;\r\n this.inverseViewMatrix3D.transformVector(target, target);\r\n target.w = 1;\r\n return target;\r\n };\r\n /**\r\n *\r\n * @returns {PerspectiveProjection}\r\n */\r\n PerspectiveProjection.prototype.clone = function () {\r\n var clone = new PerspectiveProjection(this._fieldOfView, this._coordinateSystem);\r\n clone._hFieldOfView = this.hFieldOfView;\r\n clone._preserveAspectRatio = this._preserveAspectRatio;\r\n clone._preserveFocalLength = this._preserveFocalLength;\r\n clone._near = this._near;\r\n clone._far = this._far;\r\n clone._coordinateSystem = this._coordinateSystem;\r\n return clone;\r\n };\r\n /**\r\n *\r\n * @private\r\n */\r\n PerspectiveProjection.prototype._updateFrustumMatrix3D = function () {\r\n _super.prototype._updateFrustumMatrix3D.call(this);\r\n var raw = Matrix3D.CALCULATION_MATRIX._rawData;\r\n if (this._preserveFocalLength) {\r\n if (this._preserveAspectRatio)\r\n this._hFocalLength = this._focalLength;\r\n this._fieldOfView = Math.atan(0.5 * this._viewRect.height / this._focalLength) * 360 / Math.PI;\r\n this._hFieldOfView = Math.atan(0.5 * this._viewRect.width / this._hFocalLength) * 360 / Math.PI;\r\n }\r\n else {\r\n this._focalLength = 0.5 * this._viewRect.height / Math.tan(this._fieldOfView * Math.PI / 360);\r\n if (this._preserveAspectRatio)\r\n this._hFocalLength = this._focalLength;\r\n else\r\n this._hFocalLength = 0.5 * this._viewRect.width / Math.tan(this._hFieldOfView * Math.PI / 360);\r\n }\r\n // assume scissored frustum\r\n var right = (this._viewRect.x + this._originX * this._viewRect.width) / this._hFocalLength;\r\n var top = -(this._viewRect.y + this._originY * this._viewRect.height) / this._focalLength;\r\n var left = right - this._stageRect.width / this._hFocalLength;\r\n var bottom = top + this._stageRect.height / this._focalLength;\r\n raw[0] = 2 / (right - left);\r\n raw[5] = 2 / (bottom - top);\r\n raw[8] = (right + left) / (right - left);\r\n raw[9] = (bottom + top) / (bottom - top);\r\n raw[10] = (this._far + this._near) / (this._far - this._near);\r\n raw[11] = 1;\r\n raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[12] = raw[13] = raw[15] = 0;\r\n raw[14] = -2 * this._far * this._near / (this._far - this._near);\r\n if (this._coordinateSystem == CoordinateSystem.RIGHT_HANDED)\r\n raw[5] = -raw[5];\r\n this._frustumMatrix3D.copyRawDataFrom(raw);\r\n this._frustumCorners[0] = this._frustumCorners[9] = this._near * left;\r\n this._frustumCorners[3] = this._frustumCorners[6] = this._near * right;\r\n this._frustumCorners[1] = this._frustumCorners[4] = this._near * top;\r\n this._frustumCorners[7] = this._frustumCorners[10] = this._near * bottom;\r\n this._frustumCorners[12] = this._frustumCorners[21] = this._far * left;\r\n this._frustumCorners[15] = this._frustumCorners[18] = this._far * right;\r\n this._frustumCorners[13] = this._frustumCorners[16] = this._far * top;\r\n this._frustumCorners[19] = this._frustumCorners[22] = this._far * bottom;\r\n this._frustumCorners[2] = this._frustumCorners[5] = this._frustumCorners[8] = this._frustumCorners[11] = this._near;\r\n this._frustumCorners[14] = this._frustumCorners[17] = this._frustumCorners[20] = this._frustumCorners[23] = this._far;\r\n };\r\n PerspectiveProjection.prototype._updateProperties = function () {\r\n _super.prototype._updateProperties.call(this);\r\n var rawData = this._frustumMatrix3D._rawData;\r\n this._near = rawData[14] / (-1 - rawData[10]);\r\n this._far = rawData[14] / (1 - rawData[10]);\r\n //rawData[8] = 2*(this._viewRect.x + this._originX*this._viewRect.width)/this._stageRect.width - 1;\r\n this._originX = ((rawData[8] + 1) * this._stageRect.width / 2 - this._viewRect.x) / this._viewRect.width;\r\n //rawData[9] = 1 - 2*(this._viewRect.y + this._originY*this._viewRect.height)/this._stageRect.height;\r\n this._originY = ((1 - rawData[9]) * this._stageRect.height / 2 - this._viewRect.y) / this._viewRect.height;\r\n };\r\n return PerspectiveProjection;\r\n}(ProjectionBase));\r\nexport { PerspectiveProjection };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/projections/PerspectiveProjection.js","var Keyboard = (function () {\r\n function Keyboard() {\r\n }\r\n return Keyboard;\r\n}());\r\nexport { Keyboard };\r\n/**\r\n * Constant associated with the key code value for the A key (65).\r\n */\r\nKeyboard.A = 65;\r\n/**\r\n * Constant associated with the key code value for the Alternate (Option) key (18).\r\n */\r\nKeyboard.ALTERNATE = 18;\r\n/**\r\n * Select the audio mode\r\n */\r\nKeyboard.AUDIO = 0x01000017;\r\n/**\r\n * Constant associated with the key code value for the B key (66).\r\n */\r\nKeyboard.B = 66;\r\n/**\r\n * Return to previous page in application\r\n */\r\nKeyboard.BACK = 0x01000016;\r\n/**\r\n * Constant associated with the key code value for the ` key (192).\r\n */\r\nKeyboard.BACKQUOTE = 192;\r\n/**\r\n * Constant associated with the key code value for the \\ key (220).\r\n */\r\nKeyboard.BACKSLASH = 220;\r\n/**\r\n * Constant associated with the key code value for the Backspace key (8).\r\n */\r\nKeyboard.BACKSPACE = 8;\r\n/**\r\n * Blue function key button\r\n */\r\nKeyboard.BLUE = 0x01000003;\r\n/**\r\n * Constant associated with the key code value for the C key (67).\r\n */\r\nKeyboard.C = 67;\r\n/**\r\n * Constant associated with the key code value for the Caps Lock key (20).\r\n */\r\nKeyboard.CAPS_LOCK = 20;\r\n/**\r\n * Channel down\r\n */\r\nKeyboard.CHANNEL_DOWN = 0x01000005;\r\n/**\r\n * Channel up\r\n */\r\nKeyboard.CHANNEL_UP = 0x01000005;\r\n/**\r\n * Constant associated with the key code value for the , key (188).\r\n */\r\nKeyboard.COMMA = 188;\r\n/**\r\n * Constant associated with the Mac command key (15). This constant is\r\n * currently only used for setting menu key equivalents.\r\n */\r\nKeyboard.COMMAND = 15;\r\n/**\r\n * Constant associated with the key code value for the Control key (17).\r\n */\r\nKeyboard.CONTROL = 17;\r\n/**\r\n * Constant associated with the key code value for the D key (68).\r\n */\r\nKeyboard.D = 68;\r\n/**\r\n * Constant associated with the key code value for the Delete key (46).\r\n */\r\nKeyboard.DELETE = 46;\r\n/**\r\n * Constant associated with the key code value for the Down Arrow key (40).\r\n */\r\nKeyboard.DOWN = 40;\r\n/**\r\n * Engage DVR application mode\r\n */\r\nKeyboard.DVR = 0x01000019;\r\n/**\r\n * Constant associated with the key code value for the E key (69).\r\n */\r\nKeyboard.E = 69;\r\n/**\r\n * Constant associated with the key code value for the End key (35).\r\n */\r\nKeyboard.END = 35;\r\n/**\r\n * Constant associated with the key code value for the Enter key (13).\r\n */\r\nKeyboard.ENTER = 13;\r\n/**\r\n * Constant associated with the key code value for the = key (187).\r\n */\r\nKeyboard.EQUAL = 187;\r\n/**\r\n * Constant associated with the key code value for the Escape key (27).\r\n */\r\nKeyboard.ESCAPE = 27;\r\n/**\r\n * Exits current application mode\r\n */\r\nKeyboard.EXIT = 0x01000015;\r\n/**\r\n * Constant associated with the key code value for the F key (70).\r\n */\r\nKeyboard.F = 70;\r\n/**\r\n * Constant associated with the key code value for the F1 key (112).\r\n */\r\nKeyboard.F1 = 112;\r\n/**\r\n * Constant associated with the key code value for the F10 key (121).\r\n */\r\nKeyboard.F10 = 121;\r\n/**\r\n * Constant associated with the key code value for the F11 key (122).\r\n */\r\nKeyboard.F11 = 122;\r\n/**\r\n * Constant associated with the key code value for the F12 key (123).\r\n */\r\nKeyboard.F12 = 123;\r\n/**\r\n * Constant associated with the key code value for the F13 key (124).\r\n */\r\nKeyboard.F13 = 124;\r\n/**\r\n * Constant associated with the key code value for the F14 key (125).\r\n */\r\nKeyboard.F14 = 125;\r\n/**\r\n * Constant associated with the key code value for the F15 key (126).\r\n */\r\nKeyboard.F15 = 126;\r\n/**\r\n * Constant associated with the key code value for the F2 key (113).\r\n */\r\nKeyboard.F2 = 113;\r\n/**\r\n * Constant associated with the key code value for the F3 key (114).\r\n */\r\nKeyboard.F3 = 114;\r\n/**\r\n * Constant associated with the key code value for the F4 key (115).\r\n */\r\nKeyboard.F4 = 115;\r\n/**\r\n * Constant associated with the key code value for the F5 key (116).\r\n */\r\nKeyboard.F5 = 116;\r\n/**\r\n * Constant associated with the key code value for the F6 key (117).\r\n */\r\nKeyboard.F6 = 117;\r\n/**\r\n * Constant associated with the key code value for the F7 key (118).\r\n */\r\nKeyboard.F7 = 118;\r\n/**\r\n * Constant associated with the key code value for the F8 key (119).\r\n */\r\nKeyboard.F8 = 119;\r\n/**\r\n * Constant associated with the key code value for the F9 key (120).\r\n */\r\nKeyboard.F9 = 120;\r\n/**\r\n * Engage fast-forward transport mode\r\n */\r\nKeyboard.FAST_FORWARD = 0x0100000A;\r\n/**\r\n * Constant associated with the key code value for the G key (71).\r\n */\r\nKeyboard.G = 71;\r\n/**\r\n * Green function key button\r\n */\r\nKeyboard.GREEN = 0x01000001;\r\n/**\r\n * Engage program guide\r\n */\r\nKeyboard.GUIDE = 0x01000014;\r\n/**\r\n * Constant associated with the key code value for the H key (72).\r\n */\r\nKeyboard.H = 72;\r\n/**\r\n * Engage help application or context-sensitive help\r\n */\r\nKeyboard.HELP = 0x0100001D;\r\n/**\r\n * Constant associated with the key code value for the Home key (36).\r\n */\r\nKeyboard.HOME = 36;\r\n/**\r\n * Constant associated with the key code value for the I key (73).\r\n */\r\nKeyboard.I = 73;\r\n/**\r\n * Info button\r\n */\r\nKeyboard.INFO = 0x01000013;\r\n/**\r\n * Cycle input\r\n */\r\nKeyboard.INPUT = 0x0100001B;\r\n/**\r\n * Constant associated with the key code value for the Insert key (45).\r\n */\r\nKeyboard.INSERT = 45;\r\n/**\r\n * Constant associated with the key code value for the J key (74).\r\n */\r\nKeyboard.J = 74;\r\n/**\r\n * Constant associated with the key code value for the K key (75).\r\n */\r\nKeyboard.K = 75;\r\n/**\r\n * The Begin key\r\n */\r\nKeyboard.KEYNAME_BEGIN = \"Begin\";\r\n/**\r\n * The Break key\r\n */\r\nKeyboard.KEYNAME_BREAK = \"Break\";\r\n/**\r\n * The Clear Display key\r\n */\r\nKeyboard.KEYNAME_CLEARDISPLAY = \"ClrDsp\";\r\n/**\r\n * The Clear Line key\r\n */\r\nKeyboard.KEYNAME_CLEARLINE = \"ClrLn\";\r\n/**\r\n * The Delete key\r\n */\r\nKeyboard.KEYNAME_DELETE = \"Delete\";\r\n/**\r\n * The Delete Character key\r\n */\r\nKeyboard.KEYNAME_DELETECHAR = \"DelChr\";\r\n/**\r\n * The Delete Line key\r\n */\r\nKeyboard.KEYNAME_DELETELINE = \"DelLn\";\r\n/**\r\n * The down arrow\r\n */\r\nKeyboard.KEYNAME_DOWNARROW = \"Down\";\r\n/**\r\n * The End key\r\n */\r\nKeyboard.KEYNAME_END = \"End\";\r\n/**\r\n * The Execute key\r\n */\r\nKeyboard.KEYNAME_EXECUTE = \"Exec\";\r\n/**\r\n * The F1 key\r\n */\r\nKeyboard.KEYNAME_F1 = \"F1\";\r\n/**\r\n * The F10 key\r\n */\r\nKeyboard.KEYNAME_F10 = \"F10\";\r\n/**\r\n * The F11 key\r\n */\r\nKeyboard.KEYNAME_F11 = \"F11\";\r\n/**\r\n * The F12 key\r\n */\r\nKeyboard.KEYNAME_F12 = \"F12\";\r\n/**\r\n * The F13 key\r\n */\r\nKeyboard.KEYNAME_F13 = \"F13\";\r\n/**\r\n * The F14 key\r\n */\r\nKeyboard.KEYNAME_F14 = \"F14\";\r\n/**\r\n * The F15 key\r\n */\r\nKeyboard.KEYNAME_F15 = \"F15\";\r\n/**\r\n * The F16 key\r\n */\r\nKeyboard.KEYNAME_F16 = \"F16\";\r\n/**\r\n * The F17 key\r\n */\r\nKeyboard.KEYNAME_F17 = \"F17\";\r\n/**\r\n * The F18 key\r\n */\r\nKeyboard.KEYNAME_F18 = \"F18\";\r\n/**\r\n * The F19 key\r\n */\r\nKeyboard.KEYNAME_F19 = \"F19\";\r\n/**\r\n * The F2 key\r\n */\r\nKeyboard.KEYNAME_F2 = \"F2\";\r\n/**\r\n * The F20 key\r\n */\r\nKeyboard.KEYNAME_F20 = \"F20\";\r\n/**\r\n * The F21 key\r\n */\r\nKeyboard.KEYNAME_F21 = \"F21\";\r\n/**\r\n * The F22 key\r\n */\r\nKeyboard.KEYNAME_F22 = \"F22\";\r\n/**\r\n * The F23 key\r\n */\r\nKeyboard.KEYNAME_F23 = \"F23\";\r\n/**\r\n * The F24 key\r\n */\r\nKeyboard.KEYNAME_F24 = \"F24\";\r\n/**\r\n * The F25 key\r\n */\r\nKeyboard.KEYNAME_F25 = \"F25\";\r\n/**\r\n * The F26 key\r\n */\r\nKeyboard.KEYNAME_F26 = \"F26\";\r\n/**\r\n * The F27 key\r\n */\r\nKeyboard.KEYNAME_F27 = \"F27\";\r\n/**\r\n * The F28 key\r\n */\r\nKeyboard.KEYNAME_F28 = \"F28\";\r\n/**\r\n * The F29 key\r\n */\r\nKeyboard.KEYNAME_F29 = \"F29\";\r\n/**\r\n * The F3 key\r\n */\r\nKeyboard.KEYNAME_F3 = \"F3\";\r\n/**\r\n * The F30 key\r\n */\r\nKeyboard.KEYNAME_F30 = \"F30\";\r\n/**\r\n * The F31 key\r\n */\r\nKeyboard.KEYNAME_F31 = \"F31\";\r\n/**\r\n * The F32 key\r\n */\r\nKeyboard.KEYNAME_F32 = \"F32\";\r\n/**\r\n * The F33 key\r\n */\r\nKeyboard.KEYNAME_F33 = \"F33\";\r\n/**\r\n * The F34 key\r\n */\r\nKeyboard.KEYNAME_F34 = \"F34\";\r\n/**\r\n * The F35 key\r\n */\r\nKeyboard.KEYNAME_F35 = \"F35\";\r\n/**\r\n * The F4 key\r\n */\r\nKeyboard.KEYNAME_F4 = \"F4\";\r\n/**\r\n * The F5 key\r\n */\r\nKeyboard.KEYNAME_F5 = \"F5\";\r\n/**\r\n * The F6 key\r\n */\r\nKeyboard.KEYNAME_F6 = \"F6\";\r\n/**\r\n * The F7 key\r\n */\r\nKeyboard.KEYNAME_F7 = \"F7\";\r\n/**\r\n * The F8 key\r\n */\r\nKeyboard.KEYNAME_F8 = \"F8\";\r\n/**\r\n * The F9 key\r\n */\r\nKeyboard.KEYNAME_F9 = \"F9\";\r\n/**\r\n * The Find key\r\n */\r\nKeyboard.KEYNAME_FIND = \"Find\";\r\n/**\r\n * The Help key\r\n */\r\nKeyboard.KEYNAME_HELP = \"Help\";\r\n/**\r\n * The Home key\r\n */\r\nKeyboard.KEYNAME_HOME = \"Home\";\r\n/**\r\n * The Insert key\r\n */\r\nKeyboard.KEYNAME_INSERT = \"Insert\";\r\n/**\r\n * The Insert Character key\r\n */\r\nKeyboard.KEYNAME_INSERTCHAR = \"InsChr\";\r\n/**\r\n * The Insert Line key\r\n */\r\nKeyboard.KEYNAME_INSERTLINE = \"LnsLn\";\r\n/**\r\n * The left arrow\r\n */\r\nKeyboard.KEYNAME_LEFTARROW = \"Left\";\r\n/**\r\n * The Menu key\r\n */\r\nKeyboard.KEYNAME_MENU = \"Menu\";\r\n/**\r\n * The Mode Switch key\r\n */\r\nKeyboard.KEYNAME_MODESWITCH = \"ModeSw\";\r\n/**\r\n * The Next key\r\n */\r\nKeyboard.KEYNAME_NEXT = \"Next\";\r\n/**\r\n * The Page Down key\r\n */\r\nKeyboard.KEYNAME_PAGEDOWN = \"PgDn\";\r\n/**\r\n * The Page Up key\r\n */\r\nKeyboard.KEYNAME_PAGEUP = \"PgUp\";\r\n/**\r\n * The Pause key\r\n */\r\nKeyboard.KEYNAME_PAUSE = \"Pause\";\r\n/**\r\n * The Previous key\r\n */\r\nKeyboard.KEYNAME_PREV = \"Prev\";\r\n/**\r\n * The PRINT key\r\n */\r\nKeyboard.KEYNAME_PRINT = \"Print\";\r\n/**\r\n * The PRINT Screen\r\n */\r\nKeyboard.KEYNAME_PRINTSCREEN = \"PrntScrn\";\r\n/**\r\n * The Redo key\r\n */\r\nKeyboard.KEYNAME_REDO = \"Redo\";\r\n/**\r\n * The Reset key\r\n */\r\nKeyboard.KEYNAME_RESET = \"Reset\";\r\n/**\r\n * The right arrow\r\n */\r\nKeyboard.KEYNAME_RIGHTARROW = \"Right\";\r\n/**\r\n * The Scroll Lock key\r\n */\r\nKeyboard.KEYNAME_SCROLLLOCK = \"ScrlLck\";\r\n/**\r\n * The Select key\r\n */\r\nKeyboard.KEYNAME_SELECT = \"Select\";\r\n/**\r\n * The Stop key\r\n */\r\nKeyboard.KEYNAME_STOP = \"Stop\";\r\n/**\r\n * The System Request key\r\n */\r\nKeyboard.KEYNAME_SYSREQ = \"SysReq\";\r\n/**\r\n * The System key\r\n */\r\nKeyboard.KEYNAME_SYSTEM = \"Sys\";\r\n/**\r\n * The Undo key\r\n */\r\nKeyboard.KEYNAME_UNDO = \"Undo\";\r\n/**\r\n * The up arrow\r\n */\r\nKeyboard.KEYNAME_UPARROW = \"Up\";\r\n/**\r\n * The User key\r\n */\r\nKeyboard.KEYNAME_USER = \"User\";\r\n/**\r\n * Constant associated with the key code value for the L key (76).\r\n */\r\nKeyboard.L = 76;\r\n/**\r\n * Watch last channel or show watched\r\n */\r\nKeyboard.LAST = 0x01000011;\r\n/**\r\n * Constant associated with the key code value for the Left Arrow key (37).\r\n */\r\nKeyboard.LEFT = 37;\r\n/**\r\n * Constant associated with the key code value for the [ key (219).\r\n */\r\nKeyboard.LEFTBRACKET = 219;\r\n/**\r\n * Return to live [position in broadcast]\r\n */\r\nKeyboard.LIVE = 0x01000010;\r\n/**\r\n * Constant associated with the key code value for the M key (77).\r\n */\r\nKeyboard.M = 77;\r\n/**\r\n * Engage \"Master Shell\" e.g. TiVo or other vendor button\r\n */\r\nKeyboard.MASTER_SHELL = 0x0100001E;\r\n/**\r\n * Engage menu\r\n */\r\nKeyboard.MENU = 0x01000012;\r\n/**\r\n * Constant associated with the key code value for the - key (189).\r\n */\r\nKeyboard.MINUS = 189;\r\n/**\r\n * Constant associated with the key code value for the N key (78).\r\n */\r\nKeyboard.N = 78;\r\n/**\r\n * Skip to next track or chapter\r\n */\r\nKeyboard.NEXT = 0x0100000E;\r\n/**\r\n * Constant associated with the key code value for the 0 key (48).\r\n */\r\nKeyboard.NUMBER_0 = 48;\r\n/**\r\n * Constant associated with the key code value for the 1 key (49).\r\n */\r\nKeyboard.NUMBER_1 = 49;\r\n/**\r\n * Constant associated with the key code value for the 2 key (50).\r\n */\r\nKeyboard.NUMBER_2 = 50;\r\n/**\r\n * Constant associated with the key code value for the 3 key (51).\r\n */\r\nKeyboard.NUMBER_3 = 51;\r\n/**\r\n * Constant associated with the key code value for the 4 key (52).\r\n */\r\nKeyboard.NUMBER_4 = 52;\r\n/**\r\n * Constant associated with the key code value for the 5 key (53).\r\n */\r\nKeyboard.NUMBER_5 = 53;\r\n/**\r\n * Constant associated with the key code value for the 6 key (54).\r\n */\r\nKeyboard.NUMBER_6 = 54;\r\n/**\r\n * Constant associated with the key code value for the 7 key (55).\r\n */\r\nKeyboard.NUMBER_7 = 55;\r\n/**\r\n * Constant associated with the key code value for the 8 key (56).\r\n */\r\nKeyboard.NUMBER_8 = 56;\r\n/**\r\n * Constant associated with the key code value for the 9 key (57).\r\n */\r\nKeyboard.NUMBER_9 = 57;\r\n/**\r\n * Constant associated with the pseudo-key code for the the number pad (21). Use to set numpad modifier on key equivalents\r\n */\r\nKeyboard.NUMPAD = 21;\r\n/**\r\n * Constant associated with the key code value for the number 0 key on the number pad (96).\r\n */\r\nKeyboard.NUMPAD_0 = 96;\r\n/**\r\n * Constant associated with the key code value for the number 1 key on the number pad (97).\r\n */\r\nKeyboard.NUMPAD_1 = 97;\r\n/**\r\n * Constant associated with the key code value for the number 2 key on the number pad (98).\r\n */\r\nKeyboard.NUMPAD_2 = 98;\r\n/**\r\n * Constant associated with the key code value for the number 3 key on the number pad (99).\r\n */\r\nKeyboard.NUMPAD_3 = 99;\r\n/**\r\n * Constant associated with the key code value for the number 4 key on the number pad (100).\r\n */\r\nKeyboard.NUMPAD_4 = 100;\r\n/**\r\n * Constant associated with the key code value for the number 5 key on the number pad (101).\r\n */\r\nKeyboard.NUMPAD_5 = 101;\r\n/**\r\n * Constant associated with the key code value for the number 6 key on the number pad (102).\r\n */\r\nKeyboard.NUMPAD_6 = 102;\r\n/**\r\n * Constant associated with the key code value for the number 7 key on the number pad (103).\r\n */\r\nKeyboard.NUMPAD_7 = 103;\r\n/**\r\n * Constant associated with the key code value for the number 8 key on the number pad (104).\r\n */\r\nKeyboard.NUMPAD_8 = 104;\r\n/**\r\n * Constant associated with the key code value for the number 9 key on the number pad (105).\r\n */\r\nKeyboard.NUMPAD_9 = 105;\r\n/**\r\n * Constant associated with the key code value for the addition key on the number pad (107).\r\n */\r\nKeyboard.NUMPAD_ADD = 107;\r\n/**\r\n * Constant associated with the key code value for the decimal key on the number pad (110).\r\n */\r\nKeyboard.NUMPAD_DECIMAL = 110;\r\n/**\r\n * Constant associated with the key code value for the division key on the number pad (111).\r\n */\r\nKeyboard.NUMPAD_DIVIDE = 111;\r\n/**\r\n * Constant associated with the key code value for the Enter key on the number pad (108).\r\n */\r\nKeyboard.NUMPAD_ENTER = 108;\r\n/**\r\n * Constant associated with the key code value for the multiplication key on the number pad (106).\r\n */\r\nKeyboard.NUMPAD_MULTIPLY = 106;\r\n/**\r\n * Constant associated with the key code value for the subtraction key on the number pad (109).\r\n */\r\nKeyboard.NUMPAD_SUBTRACT = 109;\r\n/**\r\n * Constant associated with the key code value for the O key (79).\r\n */\r\nKeyboard.O = 79;\r\n/**\r\n * Constant associated with the key code value for the P key (80).\r\n */\r\nKeyboard.P = 80;\r\n/**\r\n * Constant associated with the key code value for the Page Down key (34).\r\n */\r\nKeyboard.PAGE_DOWN = 34;\r\n/**\r\n * Constant associated with the key code value for the Page Up key (33).\r\n */\r\nKeyboard.PAGE_UP = 33;\r\n/**\r\n * Engage pause transport mode\r\n */\r\nKeyboard.PAUSE = 0x01000008;\r\n/**\r\n * Constant associated with the key code value for the . key (190).\r\n */\r\nKeyboard.PERIOD = 190;\r\n/**\r\n * Engage play transport mode\r\n */\r\nKeyboard.PLAY = 0x01000007;\r\n/**\r\n * Skip to previous track or chapter\r\n */\r\nKeyboard.PREVIOUS = 0x0100000F;\r\n/**\r\n * Constant associated with the key code value for the Q key (81).\r\n */\r\nKeyboard.Q = 81;\r\n/**\r\n * Constant associated with the key code value for the ' key (222).\r\n */\r\nKeyboard.QUOTE = 222;\r\n/**\r\n * Constant associated with the key code value for the R key (82).\r\n */\r\nKeyboard.R = 82;\r\n/**\r\n * Record item or engage record transport mode\r\n */\r\nKeyboard.RECORD = 0x01000006;\r\n/**\r\n * Red function key button\r\n */\r\nKeyboard.RED = 0x01000000;\r\n/**\r\n * Engage rewind transport mode\r\n */\r\nKeyboard.REWIND = 0x0100000B;\r\n/**\r\n * Constant associated with the key code value for the Right Arrow key (39).\r\n */\r\nKeyboard.RIGHT = 39;\r\n/**\r\n * Constant associated with the key code value for the ] key (221).\r\n */\r\nKeyboard.RIGHTBRACKET = 221;\r\n/**\r\n * Constant associated with the key code value for the S key (83).\r\n */\r\nKeyboard.S = 83;\r\n/**\r\n * Search button\r\n */\r\nKeyboard.SEARCH = 0x0100001F;\r\n/**\r\n * Constant associated with the key code value for the ; key (186).\r\n */\r\nKeyboard.SEMICOLON = 186;\r\n/**\r\n * Engage setup application or menu\r\n */\r\nKeyboard.SETUP = 0x0100001C;\r\n/**\r\n * Constant associated with the key code value for the Shift key (16).\r\n */\r\nKeyboard.SHIFT = 16;\r\n/**\r\n * Quick skip backward (usually 7-10 seconds)\r\n */\r\nKeyboard.SKIP_BACKWARD = 0x0100000D;\r\n/**\r\n * Quick skip ahead (usually 30 seconds)\r\n */\r\nKeyboard.SKIP_FORWARD = 0x0100000C;\r\n/**\r\n * Constant associated with the key code value for the / key (191).\r\n */\r\nKeyboard.SLASH = 191;\r\n/**\r\n * Constant associated with the key code value for the Spacebar (32).\r\n */\r\nKeyboard.SPACE = 32;\r\n/**\r\n * Engage stop transport mode\r\n */\r\nKeyboard.STOP = 0x01000009;\r\n/**\r\n * Toggle subtitles\r\n */\r\nKeyboard.SUBTITLE = 0x01000018;\r\n/**\r\n * Constant associated with the key code value for the T key (84).\r\n */\r\nKeyboard.T = 84;\r\n/**\r\n * Constant associated with the key code value for the Tab key (9).\r\n */\r\nKeyboard.TAB = 9;\r\n/**\r\n * Constant associated with the key code value for the U key (85).\r\n */\r\nKeyboard.U = 85;\r\n/**\r\n * Constant associated with the key code value for the Up Arrow key (38).\r\n */\r\nKeyboard.UP = 38;\r\n/**\r\n * Constant associated with the key code value for the V key (86).\r\n */\r\nKeyboard.V = 86;\r\n/**\r\n * Engage video-on-demand\r\n */\r\nKeyboard.VOD = 0x0100001A;\r\n/**\r\n * Constant associated with the key code value for the W key (87).\r\n */\r\nKeyboard.W = 87;\r\n/**\r\n * Constant associated with the key code value for the X key (88).\r\n */\r\nKeyboard.X = 88;\r\n/**\r\n * Constant associated with the key code value for the Y key (89).\r\n */\r\nKeyboard.Y = 89;\r\n/**\r\n * Yellow function key button\r\n */\r\nKeyboard.YELLOW = 0x01000002;\r\n/**\r\n * Constant associated with the key code value for the Z key (90).\r\n */\r\nKeyboard.Z = 90;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/ui/Keyboard.js","var Byte32Array = (function () {\r\n function Byte32Array(byteLength) {\r\n if (byteLength === void 0) { byteLength = 0; }\r\n this._maxLength = -1;\r\n this.bytePosition = 0;\r\n this.byteLength = -1;\r\n this._ensureSpace(byteLength);\r\n }\r\n Object.defineProperty(Byte32Array.prototype, \"arrayBuffer\", {\r\n get: function () {\r\n return this._arrayBuffer;\r\n },\r\n set: function (value) {\r\n //reset position\r\n this.bytePosition = 0;\r\n //clear length\r\n this.byteLength = -1;\r\n this._maxLength = -1;\r\n //calc new length\r\n this._ensureSpace(value.byteLength);\r\n //write new buffer\r\n this._int32Array.set(new Int32Array(value));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Byte32Array.prototype.readByte32Array = function (byte32Array, byteLength) {\r\n if (byteLength === void 0) { byteLength = -1; }\r\n if (byteLength == -1)\r\n byteLength = byte32Array.byteLength - byte32Array.bytePosition;\r\n byte32Array.writeInt32Array(this._int32Array.subarray(this.bytePosition / 4, (this.bytePosition + byteLength) / 4));\r\n this.bytePosition += byteLength;\r\n };\r\n Byte32Array.prototype.writeByte32Array = function (byte32Array) {\r\n byte32Array.bytePosition = 0;\r\n byte32Array.readByte32Array(this, byte32Array.byteLength);\r\n };\r\n Byte32Array.prototype.writeFloat32Array = function (float32Array) {\r\n this._ensureSpace(this.bytePosition + float32Array.length * 4);\r\n this._float32Array.set(float32Array, this.bytePosition / 4);\r\n this.bytePosition += float32Array.length * 4;\r\n };\r\n Byte32Array.prototype.writeInt32Array = function (int32Array) {\r\n this._ensureSpace(this.bytePosition + int32Array.length * 4);\r\n this._uint32Array.set(int32Array, this.bytePosition / 4);\r\n this.bytePosition += int32Array.length * 4;\r\n };\r\n Byte32Array.prototype.writeUint32Array = function (uint32Array) {\r\n this._ensureSpace(this.bytePosition + uint32Array.length * 4);\r\n this._uint32Array.set(uint32Array, this.bytePosition / 4);\r\n this.bytePosition += uint32Array.length * 4;\r\n };\r\n Byte32Array.prototype.readFloat32Array = function (float32Array) {\r\n float32Array.set(this._float32Array.subarray(this.bytePosition / 4, this.bytePosition / 4 + float32Array.length));\r\n };\r\n Byte32Array.prototype.readInt32Array = function (int32Array) {\r\n int32Array.set(this._int32Array.subarray(this.bytePosition / 4, this.bytePosition / 4 + int32Array.length));\r\n };\r\n Byte32Array.prototype.readUint32Array = function (uint32Array) {\r\n uint32Array.set(this._uint32Array.subarray(this.bytePosition / 4, this.bytePosition / 4 + uint32Array.length));\r\n };\r\n Byte32Array.prototype.getBytesAvailable = function () {\r\n return this.byteLength - this.bytePosition;\r\n };\r\n Byte32Array.prototype.readUTFBytes = function (len) {\r\n var value = \"\";\r\n var max = this.bytePosition + len;\r\n var data = new DataView(this._arrayBuffer);\r\n // utf8-encode\r\n while (this.bytePosition < max) {\r\n var c = data.getUint8(this.bytePosition++);\r\n if (c < 0x80) {\r\n if (c == 0)\r\n break;\r\n value += String.fromCharCode(c);\r\n }\r\n else if (c < 0xE0) {\r\n value += String.fromCharCode(((c & 0x3F) << 6) | (data.getUint8(this.bytePosition++) & 0x7F));\r\n }\r\n else if (c < 0xF0) {\r\n var c2 = data.getUint8(this.bytePosition++);\r\n value += String.fromCharCode(((c & 0x1F) << 12) | ((c2 & 0x7F) << 6) | (data.getUint8(this.bytePosition++) & 0x7F));\r\n }\r\n else {\r\n var c2 = data.getUint8(this.bytePosition++);\r\n var c3 = data.getUint8(this.bytePosition++);\r\n value += String.fromCharCode(((c & 0x0F) << 18) | ((c2 & 0x7F) << 12) | ((c3 << 6) & 0x7F) | (data.getUint8(this.bytePosition++) & 0x7F));\r\n }\r\n }\r\n return value;\r\n };\r\n Byte32Array.prototype.writeUTFBytes = function (s) {\r\n var escstr = encodeURIComponent(s);\r\n var binstr = escstr.replace(/%([0-9A-F]{2})/g, function (match, p1) {\r\n return String.fromCharCode(parseInt('0x' + p1));\r\n });\r\n if (binstr.length % 4) {\r\n var padding = 4 - (binstr.length % 4);\r\n for (var i = 0; i < padding; i++)\r\n binstr += \" \";\r\n }\r\n this._ensureSpace(this.bytePosition + 4 + binstr.length);\r\n this.writeInt(binstr.length);\r\n for (var i = 0; i < binstr.length; i += 4)\r\n this.writeUnsignedInt((binstr.charCodeAt(i + 3) << 24) | (binstr.charCodeAt(i + 2) << 16) | (binstr.charCodeAt(i + 1) << 8) | binstr.charCodeAt(i));\r\n return binstr.length;\r\n };\r\n Byte32Array.prototype.readInt = function () {\r\n if (this.bytePosition > this.byteLength + 4)\r\n throw \"ByteArray out of bounds read. Position=\" + this.bytePosition + \", Length=\" + this.byteLength;\r\n var pa = this.bytePosition >> 2;\r\n this.bytePosition += 4;\r\n return this._int32Array[pa];\r\n };\r\n Byte32Array.prototype.writeUnsignedInt = function (b) {\r\n this._ensureSpace(this.bytePosition + 4);\r\n this._uint32Array[this.bytePosition >> 2] = (~~b) & 0xffffffff; // ~~ is cast to int in js...\r\n this.bytePosition += 4;\r\n };\r\n Byte32Array.prototype.writeInt = function (b) {\r\n this._ensureSpace(this.bytePosition + 4);\r\n this._int32Array[this.bytePosition >> 2] = (~~b); // ~~ is cast to int in js...\r\n this.bytePosition += 4;\r\n };\r\n Byte32Array.prototype.readUnsignedInt = function () {\r\n if (this.bytePosition > this.byteLength + 4)\r\n throw \"ByteArray out of bounds read. Position=\" + this.bytePosition + \", Length=\" + this.byteLength;\r\n var pa = this.bytePosition >> 2;\r\n this.bytePosition += 4;\r\n return this._uint32Array[pa];\r\n };\r\n Byte32Array.prototype.writeFloat = function (b) {\r\n this._ensureSpace(this.bytePosition + 4);\r\n this._float32Array[this.bytePosition >> 2] = b;\r\n this.bytePosition += 4;\r\n };\r\n Byte32Array.prototype.readFloat = function () {\r\n if (this.bytePosition > this.byteLength + 4)\r\n throw \"ByteArray out of bounds read. Positon=\" + this.bytePosition + \", Length=\" + this.byteLength;\r\n var pa = this.bytePosition >> 2;\r\n this.bytePosition += 4;\r\n return this._float32Array[pa];\r\n };\r\n Byte32Array.prototype._ensureSpace = function (length) {\r\n if (this.byteLength < length) {\r\n this.byteLength = length;\r\n if (this._maxLength < length) {\r\n this._maxLength = Math.max((length + 255) & (~255), 4);\r\n var newArrayBuffer = new ArrayBuffer(this._maxLength);\r\n var newInt32Array = new Int32Array(newArrayBuffer);\r\n if (this._int32Array)\r\n newInt32Array.set(this._int32Array); // memcpy\r\n this._uint32Array = new Uint32Array(newArrayBuffer);\r\n this._float32Array = new Float32Array(newArrayBuffer);\r\n this._int32Array = newInt32Array;\r\n this._arrayBuffer = newArrayBuffer;\r\n }\r\n }\r\n };\r\n return Byte32Array;\r\n}());\r\nexport { Byte32Array };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/Byte32Array.js","import * as tslib_1 from \"tslib\";\r\nimport { ByteArrayBase } from \"../utils/ByteArrayBase\";\r\nvar ByteArrayBuffer = (function (_super) {\r\n tslib_1.__extends(ByteArrayBuffer, _super);\r\n function ByteArrayBuffer() {\r\n var _this = _super.call(this) || this;\r\n _this._bytes = [];\r\n _this._mode = \"Array\";\r\n return _this;\r\n }\r\n ByteArrayBuffer.prototype.writeByte = function (b) {\r\n var bi = ~~b;\r\n this._bytes[this.position++] = bi;\r\n if (this.position > this.length) {\r\n this.length = this.position;\r\n }\r\n };\r\n ByteArrayBuffer.prototype.readByte = function () {\r\n if (this.position >= this.length) {\r\n throw \"ByteArray out of bounds read. Position=\" + this.position + \", Length=\" + this.length;\r\n }\r\n return this._bytes[this.position++];\r\n };\r\n ByteArrayBuffer.prototype.writeUnsignedByte = function (b) {\r\n var bi = ~~b;\r\n this._bytes[this.position++] = bi & 0xff;\r\n if (this.position > this.length) {\r\n this.length = this.position;\r\n }\r\n };\r\n ByteArrayBuffer.prototype.readUnsignedByte = function () {\r\n if (this.position >= this.length) {\r\n throw \"ByteArray out of bounds read. Position=\" + this.position + \", Length=\" + this.length;\r\n }\r\n return this._bytes[this.position++];\r\n };\r\n ByteArrayBuffer.prototype.writeUnsignedShort = function (b) {\r\n var bi = ~~b;\r\n this._bytes[this.position++] = bi & 0xff;\r\n this._bytes[this.position++] = (bi >> 8) & 0xff;\r\n if (this.position > this.length) {\r\n this.length = this.position;\r\n }\r\n };\r\n ByteArrayBuffer.prototype.readUnsignedShort = function () {\r\n if (this.position + 2 > this.length)\r\n throw \"ByteArray out of bounds read. Position=\" + this.position + \", Length=\" + this.length;\r\n var r = this._bytes[this.position] | (this._bytes[this.position + 1] << 8);\r\n this.position += 2;\r\n return r;\r\n };\r\n ByteArrayBuffer.prototype.writeUnsignedInt = function (b) {\r\n var bi = ~~b;\r\n this._bytes[this.position++] = bi & 0xff;\r\n this._bytes[this.position++] = (bi >>> 8) & 0xff;\r\n this._bytes[this.position++] = (bi >>> 16) & 0xff;\r\n this._bytes[this.position++] = (bi >>> 24) & 0xff;\r\n if (this.position > this.length) {\r\n this.length = this.position;\r\n }\r\n };\r\n ByteArrayBuffer.prototype.readUnsignedInt = function () {\r\n if (this.position + 4 > this.length) {\r\n throw \"ByteArray out of bounds read. Position=\" + this.position + \", Length=\" + this.length;\r\n }\r\n var r = this._bytes[this.position] | (this._bytes[this.position + 1] << 8) | (this._bytes[this.position + 2] << 16) | (this._bytes[this.position + 3] << 24);\r\n this.position += 4;\r\n return r >>> 0;\r\n };\r\n ByteArrayBuffer.prototype.writeFloat = function (b) {\r\n // this is crazy slow and silly, but as a fallback...\r\n this.writeUnsignedInt(this.toFloatBits(Number(b)));\r\n };\r\n ByteArrayBuffer.prototype.toFloatBits = function (x) {\r\n // don't handle inf/nan yet\r\n // special case zero\r\n if (x == 0) {\r\n return 0;\r\n }\r\n // remove the sign, after this we only deal with positive numbers\r\n var sign = 0;\r\n if (x < 0) {\r\n x = -x;\r\n sign = 1;\r\n }\r\n else {\r\n sign = 0;\r\n }\r\n // a float value is now defined as: x = (1+(mantissa*2^-23))*(2^(exponent-127))\r\n var exponent = Math.log(x) / Math.log(2); // rough exponent\r\n exponent = Math.floor(exponent);\r\n x = x * Math.pow(2, 23 - exponent); // normalize to 24 bits\r\n var mantissa = Math.floor(x) - 0x800000;\r\n exponent = exponent + 127;\r\n return ((sign << 31) >>> 0) | (exponent << 23) | mantissa;\r\n };\r\n ByteArrayBuffer.prototype.readFloat = function (b) {\r\n return this.fromFloatBits(this.readUnsignedInt());\r\n };\r\n ByteArrayBuffer.prototype.fromFloatBits = function (x) {\r\n if (x == 0) {\r\n return 0;\r\n }\r\n var exponent = (x >>> 23) & 0xff;\r\n var mantissa = (x & 0x7fffff) | 0x800000;\r\n var y = Math.pow(2, (exponent - 127) - 23) * mantissa;\r\n if (x >>> 31 != 0) {\r\n y = -y;\r\n }\r\n return y;\r\n };\r\n return ByteArrayBuffer;\r\n}(ByteArrayBase));\r\nexport { ByteArrayBuffer };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/ByteArrayBuffer.js","var CSS = (function () {\r\n function CSS() {\r\n }\r\n CSS.setElementSize = function (element, width, height) {\r\n if (!element)\r\n return;\r\n element.style.width = width + \"px\";\r\n element.style.height = height + \"px\";\r\n element[\"width\"] = width;\r\n element[\"height\"] = height;\r\n };\r\n CSS.setElementWidth = function (element, width) {\r\n if (!element)\r\n return;\r\n element.style.width = width + \"px\";\r\n element[\"width\"] = width;\r\n };\r\n CSS.setElementHeight = function (element, height) {\r\n if (!element)\r\n return;\r\n element.style.height = height + \"px\";\r\n element[\"height\"] = height;\r\n };\r\n CSS.setElementX = function (element, x) {\r\n if (!element)\r\n return;\r\n element.style.position = 'absolute';\r\n element.style.left = x + \"px\";\r\n };\r\n CSS.setElementY = function (element, y) {\r\n if (!element)\r\n return;\r\n element.style.position = 'absolute';\r\n element.style.top = y + \"px\";\r\n };\r\n CSS.getElementVisibility = function (element) {\r\n if (!element)\r\n return false;\r\n return element.style.visibility == 'visible';\r\n };\r\n CSS.setElementVisibility = function (element, visible) {\r\n if (!element)\r\n return;\r\n if (visible) {\r\n element.style.visibility = 'visible';\r\n }\r\n else {\r\n element.style.visibility = 'hidden';\r\n }\r\n };\r\n CSS.setElementAlpha = function (element, alpha) {\r\n if (element instanceof HTMLCanvasElement) {\r\n var context = element.getContext(\"2d\");\r\n context.globalAlpha = alpha;\r\n }\r\n };\r\n CSS.setElementPosition = function (element, x, y, absolute) {\r\n if (absolute === void 0) { absolute = false; }\r\n if (!element)\r\n return;\r\n if (absolute) {\r\n element.style.position = \"absolute\";\r\n }\r\n else {\r\n element.style.position = \"relative\";\r\n }\r\n element.style.left = x + \"px\";\r\n element.style.top = y + \"px\";\r\n };\r\n return CSS;\r\n}());\r\nexport { CSS };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/CSS.js","import { PartialImplementationError } from \"../errors/PartialImplementationError\";\r\n/**\r\n *\r\n */\r\nvar Debug = (function () {\r\n function Debug() {\r\n }\r\n Debug.breakpoint = function () {\r\n Debug['break']();\r\n };\r\n Debug.throwPIROnKeyWordOnly = function (str, enable) {\r\n if (enable === void 0) { enable = true; }\r\n if (!enable)\r\n Debug.keyword = null;\r\n else\r\n Debug.keyword = str;\r\n };\r\n Debug.throwPIR = function (clss, fnc, msg) {\r\n Debug.logPIR('PartialImplementationError ' + clss, fnc, msg);\r\n if (Debug.THROW_ERRORS) {\r\n if (Debug.keyword) {\r\n var e = clss + fnc + msg;\r\n if (e.indexOf(Debug.keyword) == -1)\r\n return;\r\n }\r\n throw new PartialImplementationError(clss + '.' + fnc + ': ' + msg);\r\n }\r\n };\r\n Debug.logPIR = function (clss, fnc, msg) {\r\n if (msg === void 0) { msg = ''; }\r\n if (Debug.LOG_PI_ERRORS)\r\n console.log(clss + '.' + fnc + ': ' + msg);\r\n };\r\n Debug.log = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (Debug.ENABLE_LOG)\r\n console.log(args);\r\n };\r\n return Debug;\r\n}());\r\nexport { Debug };\r\nDebug.THROW_ERRORS = true;\r\nDebug.ENABLE_LOG = true;\r\nDebug.LOG_PI_ERRORS = true;\r\nDebug.keyword = null;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/Debug.js","/**\r\n *\r\n */\r\nvar Extensions = (function () {\r\n function Extensions() {\r\n }\r\n return Extensions;\r\n}());\r\nexport { Extensions };\r\nExtensions.SIMD = Boolean(typeof (SIMD) !== \"undefined\");\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/Extensions.js","import { getTimer } from \"../utils/getTimer\";\r\nvar RequestAnimationFrame = (function () {\r\n function RequestAnimationFrame(callback, callbackContext) {\r\n var _this = this;\r\n this._active = false;\r\n this._argsArray = new Array();\r\n this._getTimer = getTimer;\r\n this.setCallback(callback, callbackContext);\r\n this._rafUpdateFunction = function () {\r\n if (_this._active)\r\n _this._tick();\r\n };\r\n this._argsArray.push(this._dt);\r\n }\r\n // Public\r\n /**\r\n *\r\n * @param callback\r\n * @param callbackContext\r\n */\r\n RequestAnimationFrame.prototype.setCallback = function (callback, callbackContext) {\r\n this._callback = callback;\r\n this._callbackContext = callbackContext;\r\n };\r\n /**\r\n *\r\n */\r\n RequestAnimationFrame.prototype.start = function () {\r\n this._prevTime = this._getTimer();\r\n this._active = true;\r\n if (window) {\r\n if (window.requestAnimationFrame) {\r\n window.requestAnimationFrame(this._rafUpdateFunction);\r\n }\r\n else {\r\n if (window['mozRequestAnimationFrame'])\r\n window.requestAnimationFrame = window['mozRequestAnimationFrame'];\r\n else if (window['webkitRequestAnimationFrame'])\r\n window.requestAnimationFrame = window['webkitRequestAnimationFrame'];\r\n else if (window['oRequestAnimationFrame'])\r\n window.requestAnimationFrame = window['oRequestAnimationFrame'];\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n */\r\n RequestAnimationFrame.prototype.stop = function () {\r\n this._active = false;\r\n };\r\n Object.defineProperty(RequestAnimationFrame.prototype, \"active\", {\r\n // Get / Set\r\n /**\r\n *\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this._active;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n // Private\r\n /**\r\n *\r\n * @private\r\n */\r\n RequestAnimationFrame.prototype._tick = function () {\r\n this._currentTime = this._getTimer();\r\n this._dt = this._currentTime - this._prevTime;\r\n this._argsArray[0] = this._dt;\r\n this._callback.apply(this._callbackContext, this._argsArray);\r\n window.requestAnimationFrame(this._rafUpdateFunction);\r\n this._prevTime = this._currentTime;\r\n };\r\n return RequestAnimationFrame;\r\n}());\r\nexport { RequestAnimationFrame };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/RequestAnimationFrame.js","var XmlUtils = (function () {\r\n function XmlUtils() {\r\n }\r\n XmlUtils.getChildrenWithTag = function (node, tag) {\r\n var fragment = document.createDocumentFragment();\r\n if (node) {\r\n var num = node.childNodes.length;\r\n for (var i = 0; i < num; i++) {\r\n var child = node.childNodes[i];\r\n if (child != null) {\r\n if (child.nodeName == tag) {\r\n fragment.appendChild(child);\r\n }\r\n }\r\n }\r\n }\r\n return fragment.childNodes;\r\n };\r\n XmlUtils.filterListByParam = function (nodes, paramName, paramValue) {\r\n var fragment = document.createDocumentFragment();\r\n if (nodes) {\r\n var num = nodes.length;\r\n for (var i = 0; i < num; i++) {\r\n var child = nodes[i];\r\n if (child != null) {\r\n if (child.attributes.getNamedItem(paramName).value == paramValue) {\r\n fragment.appendChild(child);\r\n }\r\n }\r\n }\r\n }\r\n return fragment.childNodes;\r\n };\r\n XmlUtils.strToXml = function (str) {\r\n var parser = new DOMParser();\r\n var node = parser.parseFromString(str, \"text/xml\");\r\n return node;\r\n };\r\n XmlUtils.nodeToString = function (node) {\r\n if (!node)\r\n return \"\";\r\n var str = (new XMLSerializer()).serializeToString(node);\r\n return str;\r\n };\r\n XmlUtils.readAttributeValue = function (node, attrName) {\r\n var attrs = node.attributes;\r\n if (attrs == undefined) {\r\n return \"\";\r\n }\r\n var attribute = attrs.getNamedItem(attrName);\r\n if (!attribute) {\r\n //console.log(\"XmlUltils - readAttributeValue() - name: \" + attrName + \", attribute does not exist.\";\r\n return \"\";\r\n }\r\n //console.log(\"XmlUltils - readAttributeValue() - name: \" + attrName + \", value: \" + attribute.value);\r\n return attribute.value;\r\n };\r\n XmlUtils.writeAttributeValue = function (node, attrName, attrValue) {\r\n var attribute = document.createAttribute(attrName);\r\n attribute.value = attrValue;\r\n attribute = node.attributes.setNamedItem(attribute);\r\n console.log(\"XmlUltils - writeAttributeValue() - name: \" + attribute.name + \", value: \" + attribute.value);\r\n };\r\n XmlUtils.hasAttribute = function (node, attrName) {\r\n var attrs = node.attributes;\r\n if (attrs == undefined) {\r\n return false;\r\n }\r\n var attribute = attrs.getNamedItem(attrName);\r\n return attribute != null;\r\n };\r\n return XmlUtils;\r\n}());\r\nexport { XmlUtils };\r\nexport default XmlUtils;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/XmlUtils.js","export * from \"@awayjs/scene\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/lib/scene.js\n// module id = 2\n// module chunks = 9","export * from \"@awayjs/parsers\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/lib/parsers.js\n// module id = 3\n// module chunks = 9","export * from \"@awayjs/view\";\nimport { Loader, WaveAudioParser, AttributesBuffer } from \"@awayjs/core\";\nimport { Image2DParser, ImageCubeParser, TextureAtlasParser, Shape, Image2D, ImageCube, BitmapImage2D, ExternalImage2D, BitmapImageCube, SpecularImage2D, Sampler2D, SamplerCube, LineElements, TriangleElements, Single2DTexture, SingleCubeTexture, BasicMaterial } from \"@awayjs/graphics\";\nimport { Stage, GL_AttributesBuffer, GL_RenderImage2D, GL_RenderImageCube, GL_BitmapImage2D, GL_ExternalImage2D, GL_BitmapImageCube, GL_Sampler2D, GL_SamplerCube, RenderablePool, ShaderBase, GL_ShapeRenderable, GL_TriangleElements, GL_Single2DTexture, GL_SingleCubeTexture, GL_BasicMaterial } from \"@awayjs/stage\";\nimport { Skybox, DisplayObjectContainer, Scene, Billboard, LineSegment, Camera, DirectionalLight, Sprite, MovieClip, TextField, LightProbe, PointLight } from \"@awayjs/scene\";\nimport { GL_SkyboxMaterial, GL_BillboardRenderable, GL_LineSegmentRenderable, GL_SkyboxRenderable, GL_LineElements, DefaultMaterialGroup } from \"@awayjs/renderer\";\nimport { MethodMaterial, GL_MethodMaterial } from \"@awayjs/materials\";\nimport { PartitionBase, CameraNode, EntityNode, SkyboxNode } from \"@awayjs/view\";\n//enable parsers\nLoader.enableParser(WaveAudioParser);\nLoader.enableParser(Image2DParser);\nLoader.enableParser(ImageCubeParser);\nLoader.enableParser(TextureAtlasParser);\n//register core attributes\nStage.registerAbstraction(GL_AttributesBuffer, AttributesBuffer);\n//register scene entities\nDefaultMaterialGroup.registerAbstraction(GL_SkyboxMaterial, Skybox);\nRenderablePool.registerAbstraction(GL_BillboardRenderable, Billboard);\nRenderablePool.registerAbstraction(GL_LineSegmentRenderable, LineSegment);\nRenderablePool.registerAbstraction(GL_ShapeRenderable, Shape);\nRenderablePool.registerAbstraction(GL_SkyboxRenderable, Skybox);\n//register graphics images\nStage.registerAbstraction(GL_RenderImage2D, Image2D);\nStage.registerAbstraction(GL_RenderImageCube, ImageCube);\nStage.registerAbstraction(GL_BitmapImage2D, BitmapImage2D);\nStage.registerAbstraction(GL_ExternalImage2D, ExternalImage2D);\nStage.registerAbstraction(GL_BitmapImageCube, BitmapImageCube);\nStage.registerAbstraction(GL_BitmapImage2D, SpecularImage2D);\nStage.registerAbstraction(GL_Sampler2D, Sampler2D);\nStage.registerAbstraction(GL_SamplerCube, SamplerCube);\n//register graphics elements\nStage.registerAbstraction(GL_LineElements, LineElements);\nStage.registerAbstraction(GL_TriangleElements, TriangleElements);\n//register graphics textures\nShaderBase.registerAbstraction(GL_Single2DTexture, Single2DTexture);\nShaderBase.registerAbstraction(GL_SingleCubeTexture, SingleCubeTexture);\n//register graphics materials\nDefaultMaterialGroup.registerAbstraction(GL_BasicMaterial, BasicMaterial);\n//regiater material materials\nDefaultMaterialGroup.registerAbstraction(GL_MethodMaterial, MethodMaterial);\n//register view nodes\nPartitionBase.registerAbstraction(CameraNode, Camera);\nPartitionBase.registerAbstraction(EntityNode, DirectionalLight);\nPartitionBase.registerAbstraction(EntityNode, Sprite);\nPartitionBase.registerAbstraction(EntityNode, DisplayObjectContainer);\nPartitionBase.registerAbstraction(EntityNode, Scene);\nPartitionBase.registerAbstraction(EntityNode, MovieClip);\nPartitionBase.registerAbstraction(EntityNode, Billboard);\nPartitionBase.registerAbstraction(EntityNode, LineSegment);\nPartitionBase.registerAbstraction(EntityNode, TextField);\nPartitionBase.registerAbstraction(EntityNode, LightProbe);\nPartitionBase.registerAbstraction(EntityNode, PointLight);\nPartitionBase.registerAbstraction(SkyboxNode, Skybox);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/lib/view.js\n// module id = 4\n// module chunks = 9","export * from \"@awayjs/graphics\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/lib/graphics.js\n// module id = 5\n// module chunks = 9","var ParticleData = (function () {\r\n function ParticleData() {\r\n }\r\n return ParticleData;\r\n}());\r\nexport { ParticleData };\r\nexport default ParticleData;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/ParticleData.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase } from \"@awayjs/core\";\r\n/**\r\n * Provides an abstract base class for nodes in an animation blend tree.\r\n */\r\nvar AnimationNodeBase = (function (_super) {\r\n tslib_1.__extends(AnimationNodeBase, _super);\r\n /**\r\n * Creates a new AnimationNodeBase object.\r\n */\r\n function AnimationNodeBase() {\r\n return _super.call(this) || this;\r\n }\r\n Object.defineProperty(AnimationNodeBase.prototype, \"stateClass\", {\r\n get: function () {\r\n return this._pStateClass;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n AnimationNodeBase.prototype.dispose = function () {\r\n };\r\n Object.defineProperty(AnimationNodeBase.prototype, \"assetType\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n return AnimationNodeBase.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AnimationNodeBase;\r\n}(AssetBase));\r\nexport { AnimationNodeBase };\r\nAnimationNodeBase.assetType = \"[asset AnimationNodeBase]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/AnimationNodeBase.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\n/**\r\n * Dispatched to notify changes in a sub geometry object's state.\r\n *\r\n * @class away.events.RenderableEvent\r\n * @see away.core.base.Graphics\r\n */\r\nvar RenderableEvent = (function (_super) {\r\n tslib_1.__extends(RenderableEvent, _super);\r\n /**\r\n * Create a new GraphicsEvent\r\n * @param type The event type.\r\n * @param dataType An optional data type of the vertex data being updated.\r\n */\r\n function RenderableEvent(type, renderable) {\r\n var _this = _super.call(this, type) || this;\r\n _this._renderable = renderable;\r\n return _this;\r\n }\r\n Object.defineProperty(RenderableEvent.prototype, \"renderable\", {\r\n /**\r\n * The renderobject owner of the renderable owner.\r\n */\r\n get: function () {\r\n return this._renderable;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the event.\r\n *\r\n * @return An exact duplicate of the current object.\r\n */\r\n RenderableEvent.prototype.clone = function () {\r\n return new RenderableEvent(this.type, this._renderable);\r\n };\r\n return RenderableEvent;\r\n}(EventBase));\r\nexport { RenderableEvent };\r\n/**\r\n * Dispatched when a Renderable has been updated.\r\n */\r\nRenderableEvent.INVALIDATE_MATERIAL = \"invalidateMaterial\";\r\n/**\r\n *\r\n */\r\nRenderableEvent.INVALIDATE_ELEMENTS = \"invalidateElements\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/RenderableEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\nvar StyleEvent = (function (_super) {\r\n tslib_1.__extends(StyleEvent, _super);\r\n function StyleEvent(type, style) {\r\n var _this = _super.call(this, type) || this;\r\n _this._style = style;\r\n return _this;\r\n }\r\n Object.defineProperty(StyleEvent.prototype, \"style\", {\r\n get: function () {\r\n return this._style;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the event.\r\n * @return An exact duplicate of the current object.\r\n */\r\n StyleEvent.prototype.clone = function () {\r\n return new StyleEvent(this.type, this._style);\r\n };\r\n return StyleEvent;\r\n}(EventBase));\r\nexport { StyleEvent };\r\n/**\r\n *\r\n */\r\nStyleEvent.INVALIDATE_PROPERTIES = \"invalidateProperties\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/StyleEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\n/**\r\n * Dispatched to notify changes in a sub geometry object's state.\r\n *\r\n * @class away.events.ShapeEvent\r\n * @see away.core.base.Graphics\r\n */\r\nvar ShapeEvent = (function (_super) {\r\n tslib_1.__extends(ShapeEvent, _super);\r\n /**\r\n * Create a new GraphicsEvent\r\n * @param type The event type.\r\n * @param dataType An optional data type of the vertex data being updated.\r\n */\r\n function ShapeEvent(type, shape) {\r\n var _this = _super.call(this, type) || this;\r\n _this._shape = shape;\r\n return _this;\r\n }\r\n Object.defineProperty(ShapeEvent.prototype, \"shape\", {\r\n /**\r\n * The renderobject owner of the renderable owner.\r\n */\r\n get: function () {\r\n return this._shape;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the event.\r\n *\r\n * @return An exact duplicate of the current object.\r\n */\r\n ShapeEvent.prototype.clone = function () {\r\n return new ShapeEvent(this.type, this._shape);\r\n };\r\n return ShapeEvent;\r\n}(EventBase));\r\nexport { ShapeEvent };\r\n/**\r\n * Dispatched when a Renderable has been updated.\r\n */\r\nShapeEvent.ADD_MATERIAL = \"addMaterial\";\r\n/**\r\n * Dispatched when a Renderable has been updated.\r\n */\r\nShapeEvent.REMOVE_MATERIAL = \"removeMaterial\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/ShapeEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { Box, AssetBase } from \"@awayjs/core\";\r\nimport { RenderableEvent } from \"../events/RenderableEvent\";\r\nimport { StyleEvent } from \"../events/StyleEvent\";\r\nimport { ShapeEvent } from \"../events/ShapeEvent\";\r\n/**\r\n * Graphic wraps a Elements as a scene graph instantiation. A Graphic is owned by a Sprite object.\r\n *\r\n *\r\n * @see away.base.ElementsBase\r\n * @see away.entities.Sprite\r\n *\r\n * @class away.base.Graphic\r\n */\r\nvar Shape = (function (_super) {\r\n tslib_1.__extends(Shape, _super);\r\n /**\r\n * Creates a new Shape object\r\n */\r\n function Shape(elements, material, style, count, offset) {\r\n if (material === void 0) { material = null; }\r\n if (style === void 0) { style = null; }\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n var _this = _super.call(this) || this;\r\n _this._boxBoundsInvalid = true;\r\n _this._sphereBoundsInvalid = true;\r\n _this._onInvalidatePropertiesDelegate = function (event) { return _this._onInvalidateProperties(event); };\r\n _this._onInvalidateVerticesDelegate = function (event) { return _this._onInvalidateVertices(event); };\r\n _this._elements = elements;\r\n _this._material = material;\r\n _this._style = style;\r\n if (_this._style)\r\n _this._style.addEventListener(StyleEvent.INVALIDATE_PROPERTIES, _this._onInvalidatePropertiesDelegate);\r\n _this.count = count;\r\n _this.offset = offset;\r\n return _this;\r\n }\r\n Shape.getShape = function (elements, material, style, count, offset) {\r\n if (material === void 0) { material = null; }\r\n if (style === void 0) { style = null; }\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n if (Shape._pool.length) {\r\n var shape = Shape._pool.pop();\r\n shape.elements = elements;\r\n shape.material = material;\r\n shape.style = style;\r\n shape.count = count;\r\n shape.offset = offset;\r\n return shape;\r\n }\r\n return new Shape(elements, material, style, count, offset);\r\n };\r\n Shape.storeShape = function (shape) {\r\n shape.elements = null;\r\n shape.material = null;\r\n shape.style = null;\r\n shape.clear();\r\n Shape._pool.push(shape);\r\n };\r\n Object.defineProperty(Shape.prototype, \"strokePath\", {\r\n /*\r\n * _strokePath provides the original stroke-path that was used to create this shape\r\n * when the strokepath is set, it should already be prepared so that its faster to update stroke for new thickness\r\n */\r\n get: function () {\r\n return this._strokePath;\r\n },\r\n set: function (value) {\r\n this._strokePath = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"isStroke\", {\r\n /*\r\n * true if this shape was created for a stroke\r\n */\r\n get: function () {\r\n return this._isStroke;\r\n },\r\n set: function (value) {\r\n this._isStroke = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"elements\", {\r\n /**\r\n * The Elements object which provides the geometry data for this Shape.\r\n */\r\n get: function () {\r\n return this._elements;\r\n },\r\n set: function (value) {\r\n if (this._elements == value)\r\n return;\r\n this._elements = value;\r\n this.invalidateElements();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return Shape.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"material\", {\r\n /**\r\n * The material used to render the current Shape. If set to null, the containing Graphics's material will be used instead.\r\n */\r\n get: function () {\r\n return this._material;\r\n },\r\n set: function (value) {\r\n if (this._material == value)\r\n return;\r\n if (this._material)\r\n this.dispatchEvent(new ShapeEvent(ShapeEvent.REMOVE_MATERIAL, this));\r\n this._material = value;\r\n if (this._material)\r\n this.dispatchEvent(new ShapeEvent(ShapeEvent.ADD_MATERIAL, this));\r\n this.invalidateMaterial();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"style\", {\r\n /**\r\n * The style used to render the current Shape. If set to null, its parent Sprite's style will be used instead.\r\n */\r\n get: function () {\r\n return this._style;\r\n },\r\n set: function (value) {\r\n if (this._style == value)\r\n return;\r\n if (this._style)\r\n this._style.removeEventListener(StyleEvent.INVALIDATE_PROPERTIES, this._onInvalidatePropertiesDelegate);\r\n this._style = value;\r\n if (this._style)\r\n this._style.addEventListener(StyleEvent.INVALIDATE_PROPERTIES, this._onInvalidatePropertiesDelegate);\r\n this.invalidateMaterial();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n Shape.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n };\r\n Shape.prototype.invalidate = function () {\r\n _super.prototype.invalidate.call(this);\r\n this._boxBoundsInvalid = true;\r\n this._sphereBoundsInvalid = true;\r\n };\r\n Shape.prototype.invalidateElements = function () {\r\n this.dispatchEvent(new RenderableEvent(RenderableEvent.INVALIDATE_ELEMENTS, this));\r\n this._boxBoundsInvalid = true;\r\n this._sphereBoundsInvalid = true;\r\n };\r\n Shape.prototype.invalidateMaterial = function () {\r\n this.dispatchEvent(new RenderableEvent(RenderableEvent.INVALIDATE_MATERIAL, this));\r\n };\r\n Shape.prototype._onInvalidateProperties = function (event) {\r\n this.invalidateMaterial();\r\n };\r\n Shape.prototype._onInvalidateVertices = function (event) {\r\n if (event.attributesView != event.target.positions)\r\n return;\r\n this.invalidate();\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * //TODO\r\n *\r\n * @param shortestCollisionDistance\r\n * @param findClosest\r\n * @returns {boolean}\r\n *\r\n * @internal\r\n */\r\n // public _iTestCollision(pickingCollision:PickingCollision, pickingCollider:IPickingCollider):boolean\r\n // {\r\n // \treturn this._elements._iTestCollision(pickingCollider, this.material, pickingCollision, this.count, this.offset)\r\n // }\r\n Shape.prototype.applyTransformation = function (transform) {\r\n this._elements.applyTransformation(transform, this.count, this.offset);\r\n };\r\n Shape.prototype.hitTestPoint = function (x, y, z) {\r\n var box;\r\n //early out for box test\r\n if (!(box = this.getBoxBounds()).contains(x, y, z))\r\n return false;\r\n return this._elements.hitTestPoint(x, y, z, box, this.count, this.offset);\r\n };\r\n Shape.prototype.scale = function (scale) {\r\n this._elements.scale(scale, this.count, this.offset);\r\n };\r\n Shape.prototype.scaleUV = function (scaleU, scaleV) {\r\n if (scaleU === void 0) { scaleU = 1; }\r\n if (scaleV === void 0) { scaleV = 1; }\r\n this._elements.scaleUV(scaleU, scaleV, this.count, this.offset);\r\n };\r\n Shape.prototype.getBoxBounds = function () {\r\n if (this._boxBoundsInvalid) {\r\n this._boxBoundsInvalid = false;\r\n this._boxBounds = this._elements.getBoxBounds(this._boxBounds || (this._boxBounds = new Box()), this.count, this.offset);\r\n }\r\n return this._boxBounds;\r\n };\r\n Shape.prototype.getSphereBounds = function (center, target) {\r\n if (target === void 0) { target = null; }\r\n return this._elements.getSphereBounds(center, target, this.count, this.offset);\r\n };\r\n return Shape;\r\n}(AssetBase));\r\nexport { Shape };\r\nShape._pool = new Array();\r\nShape.assetType = \"[asset Shape]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/Shape.js","import * as tslib_1 from \"tslib\";\r\nimport { EventDispatcher } from \"@awayjs/core\";\r\nimport { StyleEvent } from \"../events/StyleEvent\";\r\n/**\r\n *\r\n */\r\nvar Style = (function (_super) {\r\n tslib_1.__extends(Style, _super);\r\n function Style() {\r\n var _this = _super.call(this) || this;\r\n _this._samplers = new Object();\r\n _this._images = new Object();\r\n _this._color = 0xFFFFFF;\r\n return _this;\r\n }\r\n Object.defineProperty(Style.prototype, \"sampler\", {\r\n get: function () {\r\n return this._sampler;\r\n },\r\n set: function (value) {\r\n if (this._sampler == value)\r\n return;\r\n this._sampler = value;\r\n this._invalidateProperties();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Style.prototype, \"image\", {\r\n get: function () {\r\n return this._image;\r\n },\r\n set: function (value) {\r\n if (this._image == value)\r\n return;\r\n this._image = value;\r\n this._invalidateProperties();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Style.prototype, \"uvMatrix\", {\r\n get: function () {\r\n return this._uvMatrix;\r\n },\r\n set: function (value) {\r\n if (this._uvMatrix == value)\r\n return;\r\n this._uvMatrix = value;\r\n this._invalidateProperties();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Style.prototype, \"color\", {\r\n /**\r\n * The diffuse reflectivity color of the surface.\r\n */\r\n get: function () {\r\n return this._color;\r\n },\r\n set: function (value) {\r\n if (this._color == value)\r\n return;\r\n this._color = value;\r\n this._invalidateProperties();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Style.prototype.getImageAt = function (texture, index) {\r\n if (index === void 0) { index = 0; }\r\n return (this._images[texture.id] ? this._images[texture.id][index] : null) || this._image;\r\n };\r\n Style.prototype.getSamplerAt = function (texture, index) {\r\n if (index === void 0) { index = 0; }\r\n return (this._samplers[texture.id] ? this._samplers[texture.id][index] : null) || this._sampler;\r\n };\r\n Style.prototype.addImageAt = function (image, texture, index) {\r\n if (index === void 0) { index = 0; }\r\n if (!this._images[texture.id])\r\n this._images[texture.id] = new Array();\r\n this._images[texture.id][index] = image;\r\n };\r\n Style.prototype.addSamplerAt = function (sampler, texture, index) {\r\n if (index === void 0) { index = 0; }\r\n if (!this._samplers[texture.id])\r\n this._samplers[texture.id] = new Array();\r\n this._samplers[texture.id][index] = sampler;\r\n this._invalidateProperties();\r\n };\r\n Style.prototype.removeImageAt = function (texture, index) {\r\n if (index === void 0) { index = 0; }\r\n if (!this._images[texture.id])\r\n return;\r\n this._images[texture.id][index] = null;\r\n this._invalidateProperties();\r\n };\r\n Style.prototype.removeSamplerAt = function (texture, index) {\r\n if (index === void 0) { index = 0; }\r\n if (!this._samplers[texture.id])\r\n return;\r\n this._samplers[texture.id][index] = null;\r\n this._invalidateProperties();\r\n };\r\n Style.prototype._invalidateProperties = function () {\r\n this.dispatchEvent(new StyleEvent(StyleEvent.INVALIDATE_PROPERTIES, this));\r\n };\r\n return Style;\r\n}(EventDispatcher));\r\nexport { Style };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/Style.js","import * as tslib_1 from \"tslib\";\r\nimport { EventDispatcher } from \"@awayjs/core\";\r\n/**\r\n * Picks a 3d object from a view or scene by 3D raycast calculations.\r\n * Performs an initial coarse boundary calculation to return a subset of entities whose bounding volumes intersect with the specified ray,\r\n * then triggers an optional picking collider on individual renderable objects to further determine the precise values of the picking ray collision.\r\n *\r\n * @class away.pick.RaycastPicker\r\n */\r\nvar TraverserBase = (function (_super) {\r\n tslib_1.__extends(TraverserBase, _super);\r\n /**\r\n *\r\n */\r\n function TraverserBase() {\r\n var _this = _super.call(this) || this;\r\n var i;\r\n //setup defaults for all entity functions\r\n for (i = 0; i < TraverserBase.entityNames.length; i++)\r\n if (!_this[TraverserBase.entityNames[i]])\r\n _this[TraverserBase.entityNames[i]] = _this.applyEntity;\r\n //setup defaults for all renderable functions\r\n for (i = 0; i < TraverserBase.renderableNames.length; i++)\r\n if (!_this[TraverserBase.renderableNames[i]])\r\n _this[TraverserBase.renderableNames[i]] = _this.applyRenderable;\r\n return _this;\r\n }\r\n TraverserBase.addEntityName = function (name) {\r\n TraverserBase.entityNames.push(name);\r\n return name;\r\n };\r\n TraverserBase.addRenderableName = function (name) {\r\n TraverserBase.renderableNames.push(name);\r\n return name;\r\n };\r\n /**\r\n * Returns true if the current node is at least partly in the frustum. If so, the partition node knows to pass on the traverser to its children.\r\n *\r\n * @param node The Partition3DNode object to frustum-test.\r\n */\r\n TraverserBase.prototype.enterNode = function (node) {\r\n return true;\r\n };\r\n TraverserBase.prototype.dispose = function () {\r\n //TODO\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n TraverserBase.prototype.applyEntity = function (entity) {\r\n //do nothing\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n TraverserBase.prototype.applyRenderable = function (renderable) {\r\n //do nothing\r\n };\r\n return TraverserBase;\r\n}(EventDispatcher));\r\nexport { TraverserBase };\r\nTraverserBase.entityNames = new Array();\r\nTraverserBase.renderableNames = new Array();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/TraverserBase.js","/**\r\n * The CapsStyle class is an enumeration of constant values that specify the\r\n * caps style to use in drawing lines. The constants are provided for use as\r\n * values in the caps parameter of the\r\n * flash.display.Graphics.lineStyle() method. You can specify the\r\n * following three types of caps:\r\n */\r\nvar CapsStyle = (function () {\r\n function CapsStyle() {\r\n }\r\n return CapsStyle;\r\n}());\r\nexport { CapsStyle };\r\n/**\r\n * Used to specify round caps in the caps parameter of the\r\n * flash.display.Graphics.lineStyle() method.\r\n */\r\nCapsStyle.ROUND = 1;\r\n/**\r\n * Used to specify no caps in the caps parameter of the\r\n * flash.display.Graphics.lineStyle() method.\r\n */\r\nCapsStyle.NONE = 0;\r\n/**\r\n * Used to specify square caps in the caps parameter of the\r\n * flash.display.Graphics.lineStyle() method.\r\n */\r\nCapsStyle.SQUARE = 2;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/CapsStyle.js","/**\r\n * DrawMode is an enumeration of constant values that specify the\r\n * DrawMode to use when drawing.\r\n */\r\nvar DrawMode = (function () {\r\n function DrawMode() {\r\n }\r\n return DrawMode;\r\n}());\r\nexport { DrawMode };\r\n/**\r\n * Used to specify to draw both strokes and fills\r\n */\r\nDrawMode.BOTH = 1;\r\n/**\r\n * Used to specify to draw strokes only\r\n */\r\nDrawMode.STROKE = 0;\r\n/**\r\n * Used to specify to draw fills only\r\n */\r\nDrawMode.FILL = 2;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/DrawMode.js","/**\r\n * The GradientType class provides values for the type parameter\r\n * in the beginGradientFill() and\r\n * lineGradientStyle() methods of the flash.display.Graphics\r\n * class.\r\n */\r\nvar GradientType = (function () {\r\n function GradientType() {\r\n }\r\n return GradientType;\r\n}());\r\nexport { GradientType };\r\n/**\r\n * Value used to specify a linear gradient fill.\r\n */\r\nGradientType.LINEAR = \"linear\";\r\n/**\r\n * Value used to specify a radial gradient fill.\r\n */\r\nGradientType.RADIAL = \"radial\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GradientType.js","var GraphicsFillStyle = (function () {\r\n function GraphicsFillStyle(color, alpha) {\r\n if (color === void 0) { color = 0xffffff; }\r\n if (alpha === void 0) { alpha = 1; }\r\n this.color = color;\r\n this.alpha = alpha;\r\n }\r\n Object.defineProperty(GraphicsFillStyle.prototype, \"data_type\", {\r\n get: function () {\r\n return GraphicsFillStyle.data_type;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return GraphicsFillStyle;\r\n}());\r\nexport { GraphicsFillStyle };\r\nGraphicsFillStyle.data_type = \"[graphicsdata FillStyle]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GraphicsFillStyle.js","import * as tslib_1 from \"tslib\";\r\nimport { GraphicsFillStyle } from \"../draw/GraphicsFillStyle\";\r\nimport { GradientType } from \"../draw/GradientType\";\r\nimport { ColorUtils, Matrix, Rectangle } from \"@awayjs/core\";\r\nvar GradientFillStyle = (function (_super) {\r\n tslib_1.__extends(GradientFillStyle, _super);\r\n function GradientFillStyle(type, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio) {\r\n var _this = _super.call(this) || this;\r\n if (colors.length != alphas.length || colors.length != ratios.length) {\r\n throw (\"GradientFillStyle: Error - colors, alphas and ratios must be of same length\");\r\n }\r\n _this.colors = colors;\r\n _this.colors_r = [];\r\n _this.colors_g = [];\r\n _this.colors_b = [];\r\n _this.colors_r.length = _this.colors_g.length = _this.colors_g.length = _this.colors.length;\r\n _this.alphas = alphas;\r\n _this.ratios = ratios;\r\n _this.matrix = matrix;\r\n _this.type = type;\r\n _this.uvRectangle = new Rectangle();\r\n _this.ratio_min = _this.ratios[0];\r\n _this.ratio_max = _this.ratios[_this.ratios.length - 1];\r\n var r = _this.ratios.length;\r\n while (r > 1) {\r\n r--;\r\n if (_this.ratios[r] < _this.ratios[r - 1]) {\r\n throw (\"GradientFillStyle: Error - ratios are not valid\");\r\n }\r\n }\r\n var c = colors.length;\r\n var argb;\r\n while (c > 0) {\r\n c--;\r\n argb = ColorUtils.float32ColorToARGB(colors[c]);\r\n _this.colors_r[c] = argb[1];\r\n _this.colors_g[c] = argb[2];\r\n _this.colors_b[c] = argb[3];\r\n }\r\n return _this;\r\n }\r\n GradientFillStyle.prototype.getUVMatrix = function () {\r\n if (!this.matrix) {\r\n this.matrix = new Matrix();\r\n }\r\n // console.log(this.uvRectangle);\r\n // console.log(this.matrix);\r\n // todo: this is ported from exporter-cpp code\r\n // probably a lot to optimize here\r\n var projection_width = 1638.4;\r\n var projection_height = 1638.4;\r\n var projection_width_half = projection_width * 0.5;\r\n var projection_height_half = projection_height * 0.5;\r\n //\tGet and invert the uv transform:\r\n var a = this.matrix.a;\r\n var b = this.matrix.b;\r\n var c = this.matrix.c;\r\n var d = this.matrix.d;\r\n var tx = this.matrix.tx;\r\n var ty = this.matrix.ty;\r\n var a_inv = d / (a * d - b * c);\r\n var b_inv = -b / (a * d - b * c);\r\n var c_inv = -c / (a * d - b * c);\r\n var d_inv = a / (a * d - b * c);\r\n var tx_inv = (c * ty - d * tx) / (a * d - b * c);\r\n var ty_inv = -(a * ty - b * tx) / (a * d - b * c);\r\n var a_out = (a_inv / projection_width) * (1 - (1 / 256));\r\n var b_out = 0; //(b_inv / projection_width)*(1-(1/256));\r\n var c_out = (c_inv / projection_width) * (1 - (1 / 256));\r\n var d_out = 0; //(d_inv / projection_width)*(1-(1/256));\r\n var tx_out = (this.uvRectangle.x) + ((tx_inv + projection_width_half) / projection_width) * (1 - (1 / 256));\r\n var ty_out = (this.uvRectangle.y); //+((ty_inv + projection_height_half)/projection_width)*(1-(1/256));\r\n this.matrix = new Matrix(a_out, c_out, 0, 0, tx_out, ty_out);\r\n if (this.type == GradientType.RADIAL) {\r\n this.matrix = new Matrix(a_inv / projection_width_half, c_inv / projection_width_half, b_inv / projection_width_half, d_inv / projection_width_half, ((tx_inv + projection_width_half) / projection_width_half) - 1, ((ty_inv + projection_height_half) / projection_width_half) - 1);\r\n }\r\n return this.matrix;\r\n };\r\n GradientFillStyle.prototype.getColorAtPosition = function (value) {\r\n var r1 = -1;\r\n var r2 = -1;\r\n if (value <= this.ratio_min) {\r\n r1 = 0;\r\n r2 = 0;\r\n }\r\n else if (value >= this.ratio_max) {\r\n r1 = this.ratios.length - 1;\r\n r2 = this.ratios.length - 1;\r\n }\r\n else {\r\n var r = 0;\r\n for (var r = 0; r < this.ratios.length - 1; r++) {\r\n if (value == this.ratios[r]) {\r\n r1 = r;\r\n r2 = r;\r\n break;\r\n }\r\n else if (value == this.ratios[r + 1]) {\r\n r1 = r + 1;\r\n r2 = r + 1;\r\n break;\r\n }\r\n else if (value >= this.ratios[r] && value <= this.ratios[r + 1]) {\r\n r1 = r;\r\n r2 = r + 1;\r\n break;\r\n }\r\n }\r\n }\r\n if (r1 == r2) {\r\n return [this.alphas[r1], this.colors_r[r1], this.colors_g[r1], this.colors_b[r1]];\r\n }\r\n var mix = (value - this.ratios[r1]) / (this.ratios[r2] - this.ratios[r1]);\r\n var mix_neg = 1 - mix;\r\n var color_a = this.alphas[r2] * mix + this.alphas[r1] * mix_neg;\r\n var color_r = this.colors_r[r2] * mix + this.colors_r[r1] * mix_neg;\r\n var color_g = this.colors_g[r2] * mix + this.colors_g[r1] * mix_neg;\r\n var color_b = this.colors_b[r2] * mix + this.colors_b[r1] * mix_neg;\r\n return [color_a, color_r, color_g, color_b];\r\n };\r\n GradientFillStyle.prototype.toString = function () {\r\n var str = \"\";\r\n var c = this.colors.length;\r\n var argb;\r\n while (c > 0) {\r\n c--;\r\n str += this.colors[c] + \"#\" + this.alphas[c] + \"#\" + this.ratios[c] + \"#\";\r\n }\r\n return str;\r\n };\r\n Object.defineProperty(GradientFillStyle.prototype, \"data_type\", {\r\n get: function () {\r\n return GradientFillStyle.data_type;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return GradientFillStyle;\r\n}(GraphicsFillStyle));\r\nexport { GradientFillStyle };\r\nGradientFillStyle.data_type = \"[graphicsdata GradientFillStyle]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GradientFillStyle.js","import { Point, MathConsts } from \"@awayjs/core\";\r\nimport { CapsStyle } from \"../draw/CapsStyle\";\r\nvar GraphicsFactoryHelper = (function () {\r\n function GraphicsFactoryHelper() {\r\n }\r\n GraphicsFactoryHelper.isClockWiseXY = function (point1x, point1y, point2x, point2y, point3x, point3y) {\r\n var num = (point1x - point2x) * (point3y - point2y) - (point1y - point2y) * (point3x - point2x);\r\n if (num < 0)\r\n return false;\r\n return true;\r\n };\r\n GraphicsFactoryHelper.getSign = function (ax, ay, cx, cy, bx, by) {\r\n return (ax - bx) * (cy - by) - (ay - by) * (cx - bx);\r\n };\r\n GraphicsFactoryHelper.pointInTri = function (ax, ay, bx, by, cx, cy, xx, xy) {\r\n var b1 = GraphicsFactoryHelper.getSign(ax, ay, xx, xy, bx, by) > 0;\r\n var b2 = GraphicsFactoryHelper.getSign(bx, by, xx, xy, cx, cy) > 0;\r\n var b3 = GraphicsFactoryHelper.getSign(cx, cy, xx, xy, ax, ay) > 0;\r\n return ((b1 == b2) && (b2 == b3));\r\n };\r\n GraphicsFactoryHelper.getControlXForCurveX = function (a, c, b) {\r\n return c;\r\n };\r\n GraphicsFactoryHelper.getControlYForCurveY = function (a, c, b) {\r\n return c;\r\n };\r\n GraphicsFactoryHelper.drawPoint = function (startX, startY, vertices, curves) {\r\n GraphicsFactoryHelper.addTriangle(startX - 2, startY - 2, startX + 2, startY - 2, startX + 2, startY + 2, 0, vertices, curves);\r\n GraphicsFactoryHelper.addTriangle(startX - 2, startY - 2, startX - 2, startY + 2, startX + 2, startY + 2, 0, vertices, curves);\r\n };\r\n GraphicsFactoryHelper.drawElipse = function (x, y, width, height, vertices, startAngle, endAngle, stepAngle, curves) {\r\n // todo: validate input / check edge cases\r\n var degreeTotal = endAngle - startAngle;\r\n var steps = degreeTotal / stepAngle;\r\n var x_last = x + width * Math.cos(startAngle * (Math.PI / 180));\r\n var y_last = y + height * Math.sin(startAngle * (Math.PI / 180));\r\n for (var i = 1; i <= steps; i++) {\r\n var x_tmp = x + width * Math.cos((startAngle + i * stepAngle) * (Math.PI / 180));\r\n var y_tmp = y + height * Math.sin((startAngle + i * stepAngle) * (Math.PI / 180));\r\n GraphicsFactoryHelper.addTriangle(x, y, x_tmp, y_tmp, x_last, y_last, 0, vertices, curves);\r\n x_last = x_tmp;\r\n y_last = y_tmp;\r\n }\r\n };\r\n GraphicsFactoryHelper.drawElipseStrokes = function (x, y, width, height, vertices, startAngle, endAngle, stepAngle, thickness, curves) {\r\n // todo: validate input / check edge cases\r\n var degreeTotal = endAngle - startAngle;\r\n var steps = degreeTotal / stepAngle;\r\n var x_last = x + (width + thickness) * Math.cos(startAngle * (Math.PI / 180));\r\n var y_last = y + (height + thickness) * Math.sin(startAngle * (Math.PI / 180));\r\n var x_last2 = x + (width - thickness) * Math.cos(startAngle * (Math.PI / 180));\r\n var y_last2 = y + (height - thickness) * Math.sin(startAngle * (Math.PI / 180));\r\n for (var i = 1; i <= steps; i++) {\r\n var x_tmp = x + (width + thickness) * Math.cos((startAngle + i * stepAngle) * (Math.PI / 180));\r\n var y_tmp = y + (height + thickness) * Math.sin((startAngle + i * stepAngle) * (Math.PI / 180));\r\n var x_tmp2 = x + (width - thickness) * Math.cos((startAngle + i * stepAngle) * (Math.PI / 180));\r\n var y_tmp2 = y + (height - thickness) * Math.sin((startAngle + i * stepAngle) * (Math.PI / 180));\r\n GraphicsFactoryHelper.addTriangle(x_tmp, y_tmp, x_tmp2, y_tmp2, x_last, y_last, 0, vertices, curves);\r\n GraphicsFactoryHelper.addTriangle(x_last2, y_last2, x_tmp2, y_tmp2, x_last, y_last, 0, vertices, curves);\r\n x_last = x_tmp;\r\n y_last = y_tmp;\r\n x_last2 = x_tmp2;\r\n y_last2 = y_tmp2;\r\n }\r\n };\r\n GraphicsFactoryHelper.addTriangle = function (startX, startY, controlX, controlY, endX, endY, tri_type, vertices, curves) {\r\n var x1 = startX;\r\n var y1 = startY;\r\n var x2 = controlX;\r\n var y2 = controlY;\r\n var x3 = endX;\r\n var y3 = endY;\r\n if (GraphicsFactoryHelper.isClockWiseXY(x1, y1, x2, y2, x3, y3)) {\r\n startX = x3;\r\n startY = y3;\r\n controlX = x2;\r\n controlY = y2;\r\n endX = x1;\r\n endY = y1;\r\n }\r\n var final_vert_cnt = vertices.length;\r\n if (tri_type == 0) {\r\n vertices[final_vert_cnt++] = startX;\r\n vertices[final_vert_cnt++] = startY;\r\n if (curves)\r\n vertices[final_vert_cnt++] = 4.5736980577097704e-41; // ((127<<24)+(127<<16)+0+0)\r\n vertices[final_vert_cnt++] = controlX;\r\n vertices[final_vert_cnt++] = controlY;\r\n if (curves)\r\n vertices[final_vert_cnt++] = 4.5736980577097704e-41; // ((127<<24)+(127<<16)+0+0)\r\n vertices[final_vert_cnt++] = endX;\r\n vertices[final_vert_cnt++] = endY;\r\n if (curves)\r\n vertices[final_vert_cnt++] = 4.5736980577097704e-41; // ((127<<24)+(127<<16)+0+0)\r\n }\r\n else if (tri_type < 0) {\r\n vertices[final_vert_cnt++] = startX;\r\n vertices[final_vert_cnt++] = startY;\r\n if (curves)\r\n vertices[final_vert_cnt++] = 1.1708844992641982e-38; // ((127<<24)+(127<<16)+0+0)\r\n vertices[final_vert_cnt++] = controlX;\r\n vertices[final_vert_cnt++] = controlY;\r\n if (curves)\r\n vertices[final_vert_cnt++] = 2.2778106537599901e-41; // ((127<<24)+(63<<16)+0+0)\r\n vertices[final_vert_cnt++] = endX;\r\n vertices[final_vert_cnt++] = endY;\r\n if (curves)\r\n vertices[final_vert_cnt++] = 1.7796490496925177e-43; // ((127<<24)+0+0+0)\r\n }\r\n else if (tri_type > 0) {\r\n vertices[final_vert_cnt++] = startX;\r\n vertices[final_vert_cnt++] = startY;\r\n if (curves)\r\n vertices[final_vert_cnt++] = 1.1708846393940446e-38; // ((-128<<24)+(127<<16)+0+0)\r\n vertices[final_vert_cnt++] = controlX;\r\n vertices[final_vert_cnt++] = controlY;\r\n if (curves)\r\n vertices[final_vert_cnt++] = 2.2779507836064226e-41; // ((-128<<24)+(63<<16)+0+0)\r\n vertices[final_vert_cnt++] = endX;\r\n vertices[final_vert_cnt++] = endY;\r\n if (curves)\r\n vertices[final_vert_cnt++] = 1.793662034335766e-43; // ((-128<<24)+0+0+0)\r\n }\r\n };\r\n GraphicsFactoryHelper.createCap = function (startX, startY, start_le, start_ri, dir_vec, capstyle, cap_position, thickness, vertices, curves) {\r\n if (capstyle == CapsStyle.ROUND) {\r\n //console.log(\"add round cap\");\r\n var tmp1_x = startX + (cap_position * (dir_vec.x * thickness));\r\n var tmp1_y = startY + (cap_position * (dir_vec.y * thickness));\r\n tmp1_x = tmp1_x * 2 - start_le.x / 2 - start_ri.x / 2;\r\n tmp1_y = tmp1_y * 2 - start_le.y / 2 - start_ri.y / 2;\r\n GraphicsFactoryHelper.addTriangle(start_le.x, start_le.y, tmp1_x, tmp1_y, start_ri.x, start_ri.y, -1, vertices, curves);\r\n }\r\n else if (capstyle == CapsStyle.SQUARE) {\r\n //console.log(\"add square cap\");\r\n var tmp1_x = start_le.x + (cap_position * (dir_vec.x * thickness));\r\n var tmp1_y = start_le.y + (cap_position * (dir_vec.y * thickness));\r\n var tmp2_x = start_ri.x + (cap_position * (dir_vec.x * thickness));\r\n var tmp2_y = start_ri.y + (cap_position * (dir_vec.y * thickness));\r\n GraphicsFactoryHelper.addTriangle(tmp2_x, tmp2_y, tmp1_x, tmp1_y, start_le.x, start_le.y, 0, vertices, curves);\r\n GraphicsFactoryHelper.addTriangle(tmp2_x, tmp2_y, start_le.x, start_le.y, start_ri.x, start_ri.y, 0, vertices, curves);\r\n }\r\n };\r\n GraphicsFactoryHelper.getLineFormularData = function (a, b) {\r\n var tmp_x = b.x - a.x;\r\n var tmp_y = b.y - a.y;\r\n var return_point = new Point();\r\n if ((tmp_x != 0) && (tmp_y != 0))\r\n return_point.x = tmp_y / tmp_x;\r\n return_point.y = -(return_point.x * a.x - a.y);\r\n return return_point;\r\n };\r\n GraphicsFactoryHelper.getQuadricBezierPosition = function (t, start, control, end) {\r\n var xt = 1 - t;\r\n return xt * xt * start + 2 * xt * t * control + t * t * end;\r\n };\r\n GraphicsFactoryHelper.subdivideCurve = function (startx, starty, cx, cy, endx, endy, startx2, starty2, cx2, cy2, endx2, endy2, array_out, array2_out) {\r\n var angle_1 = Math.atan2(cy - starty, cx - startx) * MathConsts.RADIANS_TO_DEGREES;\r\n var angle_2 = Math.atan2(endy - cy, endx - cx) * MathConsts.RADIANS_TO_DEGREES;\r\n var angle_delta = angle_2 - angle_1;\r\n //console.log(\"angle_delta \"+angle_delta);\r\n if (angle_delta > 180) {\r\n angle_delta -= 360;\r\n }\r\n if (angle_delta < -180) {\r\n angle_delta += 360;\r\n }\r\n if (Math.abs(angle_delta) >= 175) {\r\n array_out.push(startx, starty, cx, cy, endx, endy);\r\n array2_out.push(startx2, starty2, cx2, cy2, endx2, endy2);\r\n return;\r\n }\r\n var b1 = false;\r\n var b2 = false;\r\n if (angle_delta < 0) {\r\n // curve is curved to right side. right side is convex\r\n b1 = GraphicsFactoryHelper.getSign(startx, starty, cx2, cy2, endx, endy) > 0;\r\n b2 = GraphicsFactoryHelper.getSign(startx, starty, cx, cy, endx, endy) > 0;\r\n b1 = (((starty - endy) * (cx - startx) + (endx - startx) * (cy - starty)) * ((starty - endy) * (cx2 - startx) + (endx - startx) * (cy2 - starty))) < 0;\r\n }\r\n else {\r\n // curve is curved to left side. left side is convex\r\n b1 = GraphicsFactoryHelper.getSign(startx2, starty2, cx2, cy2, endx2, endy2) > 0;\r\n b2 = GraphicsFactoryHelper.getSign(startx2, starty2, cx, cy, endx2, endy2) > 0;\r\n b1 = (((starty2 - endy) * (cx - startx2) + (endx2 - startx2) * (cy - starty2)) * ((starty2 - endy2) * (cx2 - startx2) + (endx2 - startx2) * (cy2 - starty2))) < 0;\r\n }\r\n if (b1) {\r\n array_out.push(startx, starty, cx, cy, endx, endy);\r\n array2_out.push(startx2, starty2, cx2, cy2, endx2, endy2);\r\n return;\r\n }\r\n // triangles overlap. we must subdivide:\r\n var c1x = startx + (cx - startx) * 0.5; // new controlpoint 1.1\r\n var c1y = starty + (cy - starty) * 0.5;\r\n var c2x = cx + (endx - cx) * 0.5; // new controlpoint 1.2\r\n var c2y = cy + (endy - cy) * 0.5;\r\n var ax = c1x + (c2x - c1x) * 0.5; // new middlepoint 1\r\n var ay = c1y + (c2y - c1y) * 0.5;\r\n var c1x2 = startx2 + (cx2 - startx2) * 0.5; // new controlpoint 2.1\r\n var c1y2 = starty2 + (cy2 - starty2) * 0.5;\r\n var c2x2 = cx2 + (endx2 - cx2) * 0.5; // new controlpoint 2.2\r\n var c2y2 = cy2 + (endy2 - cy2) * 0.5;\r\n var ax2 = c1x2 + (c2x2 - c1x2) * 0.5; // new middlepoint 2\r\n var ay2 = c1y2 + (c2y2 - c1y2) * 0.5;\r\n GraphicsFactoryHelper.subdivideCurve(startx, starty, c1x, c1y, ax, ay, startx2, starty2, c1x2, c1y2, ax2, ay2, array_out, array2_out);\r\n GraphicsFactoryHelper.subdivideCurve(ax, ay, c2x, c2y, endx, endy, ax2, ay2, c2x2, c2y2, endx2, endy2, array_out, array2_out);\r\n };\r\n GraphicsFactoryHelper.tesselateCurve = function (startx, starty, cx, cy, endx, endy, array_out) {\r\n var angle_1 = Math.atan2(cy - starty, cx - startx) * MathConsts.RADIANS_TO_DEGREES;\r\n var angle_2 = Math.atan2(endy - cy, endx - cx) * MathConsts.RADIANS_TO_DEGREES;\r\n var angle_delta = angle_2 - angle_1;\r\n //console.log(\"angle_delta \"+angle_delta);\r\n while (angle_delta > 180) {\r\n angle_delta -= 360;\r\n }\r\n while (angle_delta < -180) {\r\n angle_delta += 360;\r\n }\r\n var diff_x = endx - startx;\r\n var diff_y = endy - starty;\r\n var len = Math.sqrt(diff_x * diff_x + diff_y * diff_y);\r\n //console.log(\"len\", len, \"angle_delta\", angle_delta);\r\n // if the curve angle is smaller than threshold_ang_2 and the len is smaller than threshold_len, we just early out. we will not use the ctr-point at all\r\n // todo: find best constants / checks to test if a curve need more subdividing\r\n /*if(Math.abs(angle_delta)>=150 && len <=3){\r\n array_out.push(endx, endy);\r\n return;\r\n }*/\r\n if (Math.abs(angle_delta) <= 2 || len <= 5) {\r\n array_out.push(endx, endy);\r\n return;\r\n }\r\n // curve needs to be subdivided:\r\n var c1x = startx + (cx - startx) * 0.5; // new controlpoint 1\r\n var c1y = starty + (cy - starty) * 0.5;\r\n var c2x = cx + (endx - cx) * 0.5; // new controlpoint 2\r\n var c2y = cy + (endy - cy) * 0.5;\r\n var ax = c1x + (c2x - c1x) * 0.5; // new middlepoint 1\r\n var ay = c1y + (c2y - c1y) * 0.5;\r\n GraphicsFactoryHelper.tesselateCurve(startx, starty, c1x, c1y, ax, ay, array_out);\r\n GraphicsFactoryHelper.tesselateCurve(ax, ay, c2x, c2y, endx, endy, array_out);\r\n };\r\n return GraphicsFactoryHelper;\r\n}());\r\nexport { GraphicsFactoryHelper };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GraphicsFactoryHelper.js","/**\r\n * @class away.base.HitTestCache\r\n */\r\nvar HitTestCache = (function () {\r\n function HitTestCache() {\r\n /**\r\n *\r\n */\r\n this.cells = new Array();\r\n /**\r\n *\r\n */\r\n this.lastCollisionIndex = -1;\r\n }\r\n return HitTestCache;\r\n}());\r\nexport { HitTestCache };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/HitTestCache.js","import { AttributesBuffer, Float2Attributes, Float3Attributes, Float4Attributes, Byte4Attributes, Vector3D, Box, Sphere } from \"@awayjs/core\";\r\nimport { TriangleElements } from \"../elements/TriangleElements\";\r\nimport { HitTestCache } from \"./HitTestCache\";\r\nvar ElementsUtils = (function () {\r\n function ElementsUtils() {\r\n }\r\n ElementsUtils.generateFaceNormals = function (indexAttributes, positionAttributes, faceNormalAttributes, count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n var indices = indexAttributes.get(count, offset);\r\n var positions = positionAttributes.get(positionAttributes.count);\r\n if (faceNormalAttributes == null)\r\n faceNormalAttributes = new Float4Attributes(count + offset);\r\n else if (faceNormalAttributes.count < count + offset)\r\n faceNormalAttributes.count = count + offset;\r\n var indexDim = indexAttributes.stride;\r\n var posDim = positionAttributes.dimensions;\r\n var posStride = positionAttributes.stride;\r\n var faceNormals = faceNormalAttributes.get(count, offset);\r\n var len = count * indexDim;\r\n var i = 0;\r\n var j = 0;\r\n var index;\r\n var x1, x2, x3;\r\n var y1, y2, y3;\r\n var z1, z2, z3;\r\n var dx1, dy1, dz1;\r\n var dx2, dy2, dz2;\r\n var cx, cy, cz;\r\n var d;\r\n if (posDim == 3) {\r\n for (i = 0; i < len; i += indexDim) {\r\n index = indices[i] * posStride;\r\n x1 = positions[index];\r\n y1 = positions[index + 1];\r\n z1 = positions[index + 2];\r\n index = indices[i + 1] * posStride;\r\n x2 = positions[index];\r\n y2 = positions[index + 1];\r\n z2 = positions[index + 2];\r\n index = indices[i + 2] * posStride;\r\n x3 = positions[index];\r\n y3 = positions[index + 1];\r\n z3 = positions[index + 2];\r\n dx1 = x3 - x1;\r\n dy1 = y3 - y1;\r\n dz1 = z3 - z1;\r\n dx2 = x2 - x1;\r\n dy2 = y2 - y1;\r\n dz2 = z2 - z1;\r\n cx = dz1 * dy2 - dy1 * dz2;\r\n cy = dx1 * dz2 - dz1 * dx2;\r\n cz = dy1 * dx2 - dx1 * dy2;\r\n d = Math.sqrt(cx * cx + cy * cy + cz * cz);\r\n // length of cross product = 2*triangle area\r\n faceNormals[j++] = cx;\r\n faceNormals[j++] = cy;\r\n faceNormals[j++] = cz;\r\n faceNormals[j++] = d;\r\n }\r\n }\r\n else if (posDim == 2) {\r\n for (i = 0; i < len; i += indexDim) {\r\n faceNormals[j++] = 0;\r\n faceNormals[j++] = 0;\r\n faceNormals[j++] = 1;\r\n faceNormals[j++] = 1;\r\n }\r\n }\r\n return faceNormalAttributes;\r\n };\r\n ElementsUtils.generateNormals = function (indexAttributes, faceNormalAttributes, normalAttributes, concatenatedBuffer) {\r\n var indices = indexAttributes.get(indexAttributes.count);\r\n var faceNormals = faceNormalAttributes.get(faceNormalAttributes.count);\r\n if (normalAttributes == null)\r\n normalAttributes = new Float3Attributes(concatenatedBuffer);\r\n var indexDim = indexAttributes.dimensions;\r\n var normalStride = normalAttributes.stride;\r\n var normals = normalAttributes.get(normalAttributes.count);\r\n var i;\r\n var len = normalAttributes.count * normalStride;\r\n //clear normal values\r\n for (i = 0; i < len; i += normalStride) {\r\n normals[i] = 0;\r\n normals[i + 1] = 0;\r\n normals[i + 2] = 0;\r\n }\r\n len = indexAttributes.count * indexDim;\r\n var index;\r\n var f1 = 0;\r\n var f2 = 1;\r\n var f3 = 2;\r\n //collect face normals\r\n for (i = 0; i < len; i += indexDim) {\r\n index = indices[i] * normalStride;\r\n normals[index] += faceNormals[f1];\r\n normals[index + 1] += faceNormals[f2];\r\n normals[index + 2] += faceNormals[f3];\r\n index = indices[i + 1] * normalStride;\r\n normals[index] += faceNormals[f1];\r\n normals[index + 1] += faceNormals[f2];\r\n normals[index + 2] += faceNormals[f3];\r\n index = indices[i + 2] * normalStride;\r\n normals[index] += faceNormals[f1];\r\n normals[index + 1] += faceNormals[f2];\r\n normals[index + 2] += faceNormals[f3];\r\n f1 += 4;\r\n f2 += 4;\r\n f3 += 4;\r\n }\r\n len = normalAttributes.count * normalStride;\r\n var vx;\r\n var vy;\r\n var vz;\r\n var d;\r\n //normalise normals collections\r\n for (i = 0; i < len; i += normalStride) {\r\n vx = normals[i];\r\n vy = normals[i + 1];\r\n vz = normals[i + 2];\r\n d = 1.0 / Math.sqrt(vx * vx + vy * vy + vz * vz);\r\n normals[i] = vx * d;\r\n normals[i + 1] = vy * d;\r\n normals[i + 2] = vz * d;\r\n }\r\n return normalAttributes;\r\n };\r\n ElementsUtils.generateFaceTangents = function (indexAttributes, positionAttributes, uvAttributes, faceTangentAttributes, count, offset, useFaceWeights) {\r\n if (offset === void 0) { offset = 0; }\r\n if (useFaceWeights === void 0) { useFaceWeights = false; }\r\n var indices = indexAttributes.get(count, offset);\r\n var positions = positionAttributes.get(positionAttributes.count);\r\n var uvs = uvAttributes.get(uvAttributes.count);\r\n if (faceTangentAttributes == null)\r\n faceTangentAttributes = new Float4Attributes(count + offset);\r\n else if (faceTangentAttributes.count < count + offset)\r\n faceTangentAttributes.count = count + offset;\r\n var indexDim = indexAttributes.dimensions;\r\n var posDim = positionAttributes.dimensions;\r\n var posStride = positionAttributes.stride;\r\n var uvStride = uvAttributes.stride;\r\n var faceTangents = faceTangentAttributes.get(count, offset);\r\n var i = 0;\r\n var index1;\r\n var index2;\r\n var index3;\r\n var v0;\r\n var v1;\r\n var v2;\r\n var dv1;\r\n var dv2;\r\n var denom;\r\n var x0, y0, z0;\r\n var dx1, dy1, dz1;\r\n var dx2, dy2, dz2;\r\n var cx, cy, cz;\r\n //multiply by dimension to get index length\r\n var len = count * indexDim;\r\n for (i = 0; i < len; i += indexDim) {\r\n index1 = indices[i];\r\n index2 = indices[i + 1];\r\n index3 = indices[i + 2];\r\n v0 = uvs[index1 * uvStride + 1];\r\n dv1 = uvs[index2 * uvStride + 1] - v0;\r\n dv2 = uvs[index3 * uvStride + 1] - v0;\r\n v0 = index1 * posStride;\r\n v1 = index2 * posStride;\r\n v2 = index3 * posStride;\r\n x0 = positions[v0];\r\n dx1 = positions[v1] - x0;\r\n dx2 = positions[v2] - x0;\r\n cx = dv2 * dx1 - dv1 * dx2;\r\n y0 = positions[v0 + 1];\r\n dy1 = positions[v1 + 1] - y0;\r\n dy2 = positions[v2 + 1] - y0;\r\n cy = dv2 * dy1 - dv1 * dy2;\r\n if (posDim == 3) {\r\n z0 = positions[v0 + 2];\r\n dz1 = positions[v1 + 2] - z0;\r\n dz2 = positions[v2 + 2] - z0;\r\n cz = dv2 * dz1 - dv1 * dz2;\r\n }\r\n else {\r\n cz = 0;\r\n }\r\n denom = 1 / Math.sqrt(cx * cx + cy * cy + cz * cz);\r\n faceTangents[i] = denom * cx;\r\n faceTangents[i + 1] = denom * cy;\r\n faceTangents[i + 2] = denom * cz;\r\n }\r\n return faceTangentAttributes;\r\n };\r\n ElementsUtils.generateTangents = function (indexAttributes, faceTangentAttributes, faceNormalAttributes, tangentAttributes, concatenatedBuffer) {\r\n var indices = indexAttributes.get(indexAttributes.count);\r\n var faceTangents = faceTangentAttributes.get(faceTangentAttributes.count);\r\n var faceNormals = faceNormalAttributes.get(faceNormalAttributes.count);\r\n if (tangentAttributes == null)\r\n tangentAttributes = new Float3Attributes(concatenatedBuffer);\r\n var indexDim = indexAttributes.dimensions;\r\n var tangentStride = tangentAttributes.stride;\r\n var tangents = tangentAttributes.get(tangentAttributes.count);\r\n var i;\r\n var len = tangentAttributes.count * tangentStride;\r\n //clear tangent values\r\n for (i = 0; i < len; i += tangentStride) {\r\n tangents[i] = 0;\r\n tangents[i + 1] = 0;\r\n tangents[i + 2] = 0;\r\n }\r\n var weight;\r\n var index;\r\n var f1 = 0;\r\n var f2 = 1;\r\n var f3 = 2;\r\n var f4 = 3;\r\n len = indexAttributes.count * indexDim;\r\n //collect face tangents\r\n for (i = 0; i < len; i += indexDim) {\r\n weight = faceNormals[f4];\r\n index = indices[i] * tangentStride;\r\n tangents[index++] += faceTangents[f1] * weight;\r\n tangents[index++] += faceTangents[f2] * weight;\r\n tangents[index] += faceTangents[f3] * weight;\r\n index = indices[i + 1] * tangentStride;\r\n tangents[index++] += faceTangents[f1] * weight;\r\n tangents[index++] += faceTangents[f2] * weight;\r\n tangents[index] += faceTangents[f3] * weight;\r\n index = indices[i + 2] * tangentStride;\r\n tangents[index++] += faceTangents[f1] * weight;\r\n tangents[index++] += faceTangents[f2] * weight;\r\n tangents[index] += faceTangents[f3] * weight;\r\n f1 += 3;\r\n f2 += 3;\r\n f3 += 3;\r\n f4 += 4;\r\n }\r\n var vx;\r\n var vy;\r\n var vz;\r\n var d;\r\n //normalise tangents collections\r\n for (i = 0; i < len; i += tangentStride) {\r\n vx = tangents[i];\r\n vy = tangents[i + 1];\r\n vz = tangents[i + 2];\r\n d = 1.0 / Math.sqrt(vx * vx + vy * vy + vz * vz);\r\n tangents[i] = vx * d;\r\n tangents[i + 1] = vy * d;\r\n tangents[i + 2] = vz * d;\r\n }\r\n return tangentAttributes;\r\n };\r\n ElementsUtils.generateColors = function (indexAttributes, colorAttributes, concatenatedBuffer, count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (colorAttributes == null)\r\n colorAttributes = new Byte4Attributes(concatenatedBuffer);\r\n if (colorAttributes.count < count + offset)\r\n colorAttributes.count = count + offset;\r\n var colors = colorAttributes.get(count, offset);\r\n var colorStride = colorAttributes.stride;\r\n var len = colorAttributes.count * colorStride;\r\n for (var i = 0; i < len; i += colorStride) {\r\n colors[i] = 0xFF;\r\n colors[i + 1] = 0xFF;\r\n colors[i + 2] = 0xFF;\r\n colors[i + 3] = 0xFF;\r\n }\r\n return colorAttributes;\r\n };\r\n ElementsUtils.scale = function (scaleA, scaleB, scaleC, output, count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (output.count < count + offset)\r\n output.count = count + offset;\r\n var scaleArray = new Float32Array([scaleA, scaleB, scaleC]);\r\n var values = output.get(count, offset);\r\n var outputStride = output.stride;\r\n var outputDim = output.dimensions;\r\n var i;\r\n var j;\r\n var len = count * outputStride;\r\n for (i = 0; i < len; i += outputStride)\r\n for (j = 0; j < outputDim; j++)\r\n values[i + j] *= scaleArray[j];\r\n output.invalidate();\r\n };\r\n ElementsUtils.applyTransformation = function (transform, positionAttributes, normalAttributes, tangentAttributes, count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n //todo: make this compatible with 2-dimensional positions\r\n var positions = positionAttributes.get(count, offset);\r\n var positionStride = positionAttributes.stride;\r\n var normals;\r\n var normalStride;\r\n if (normalAttributes) {\r\n normals = normalAttributes.get(count, offset);\r\n normalStride = normalAttributes.stride;\r\n }\r\n var tangents;\r\n var tangentStride;\r\n if (tangentAttributes) {\r\n tangents = tangentAttributes.get(count, offset);\r\n tangentStride = tangentAttributes.stride;\r\n }\r\n var i;\r\n var i1;\r\n var i2;\r\n var vector = new Vector3D();\r\n var invTranspose;\r\n if (normalAttributes || tangentAttributes) {\r\n invTranspose = transform.clone();\r\n invTranspose.invert();\r\n invTranspose.transpose();\r\n }\r\n var vi0 = 0;\r\n var ni0 = 0;\r\n var ti0 = 0;\r\n for (i = 0; i < count; ++i) {\r\n // bake position\r\n i1 = vi0 + 1;\r\n i2 = vi0 + 2;\r\n vector.x = positions[vi0];\r\n vector.y = positions[i1];\r\n vector.z = positions[i2];\r\n vector = transform.transformVector(vector);\r\n positions[vi0] = vector.x;\r\n positions[i1] = vector.y;\r\n positions[i2] = vector.z;\r\n vi0 += positionStride;\r\n if (normals) {\r\n // bake normal\r\n i1 = ni0 + 1;\r\n i2 = ni0 + 2;\r\n vector.x = normals[ni0];\r\n vector.y = normals[i1];\r\n vector.z = normals[i2];\r\n vector = invTranspose.deltaTransformVector(vector);\r\n vector.normalize();\r\n normals[ni0] = vector.x;\r\n normals[i1] = vector.y;\r\n normals[i2] = vector.z;\r\n ni0 += normalStride;\r\n }\r\n if (tangents) {\r\n // bake tangent\r\n i1 = ti0 + 1;\r\n i2 = ti0 + 2;\r\n vector.x = tangents[ti0];\r\n vector.y = tangents[i1];\r\n vector.z = tangents[i2];\r\n vector = invTranspose.deltaTransformVector(vector);\r\n vector.normalize();\r\n tangents[ti0] = vector.x;\r\n tangents[i1] = vector.y;\r\n tangents[i2] = vector.z;\r\n ti0 += tangentStride;\r\n }\r\n }\r\n positionAttributes.invalidate();\r\n if (normalAttributes)\r\n normalAttributes.invalidate();\r\n if (tangentAttributes)\r\n tangentAttributes.invalidate();\r\n };\r\n ElementsUtils.getSubIndices = function (indexAttributes, numVertices, indexMappings, indexOffset) {\r\n if (indexOffset === void 0) { indexOffset = 0; }\r\n var buffer = indexAttributes.attributesBuffer;\r\n var numIndices = indexAttributes.length;\r\n //reset mappings\r\n indexMappings.length = 0;\r\n //shortcut for those buffers that fit into the maximum buffer sizes\r\n if (numIndices < ElementsUtils.LIMIT_INDICES && numVertices < ElementsUtils.LIMIT_VERTS)\r\n return buffer;\r\n var i;\r\n var indices = indexAttributes.get(indexAttributes.count, indexOffset);\r\n var splitIndices = new Array();\r\n var indexSwap = ElementsUtils._indexSwap;\r\n indexSwap.length = numIndices;\r\n for (i = 0; i < numIndices; i++)\r\n indexSwap[i] = -1;\r\n var originalIndex;\r\n var splitIndex;\r\n var index = 0;\r\n var offsetLength = indexOffset * indexAttributes.dimensions;\r\n // Loop over all triangles\r\n i = 0;\r\n while (i < numIndices + offsetLength && i + 1 < ElementsUtils.LIMIT_INDICES && index + 1 < ElementsUtils.LIMIT_VERTS) {\r\n originalIndex = indices[i];\r\n if (indexSwap[originalIndex] >= 0) {\r\n splitIndex = indexSwap[originalIndex];\r\n }\r\n else {\r\n // This vertex does not yet exist in the split list and\r\n // needs to be copied from the long list.\r\n splitIndex = index++;\r\n indexSwap[originalIndex] = splitIndex;\r\n indexMappings[splitIndex] = originalIndex;\r\n }\r\n // Store new index, which may have come from the swap look-up,\r\n // or from copying a new set of vertex data from the original vector\r\n splitIndices[i++] = splitIndex;\r\n }\r\n buffer = new AttributesBuffer(indexAttributes.size * indexAttributes.dimensions, splitIndices.length / indexAttributes.dimensions);\r\n indexAttributes = indexAttributes.clone(buffer);\r\n indexAttributes.set(splitIndices);\r\n return buffer;\r\n };\r\n ElementsUtils.getSubVertices = function (vertexBuffer, indexMappings) {\r\n if (!indexMappings.length)\r\n return vertexBuffer;\r\n var stride = vertexBuffer.stride;\r\n var vertices = vertexBuffer.bufferView;\r\n var splitVerts = new Uint8Array(indexMappings.length * stride);\r\n var splitIndex;\r\n var originalIndex;\r\n var i = 0;\r\n var j = 0;\r\n var len = indexMappings.length;\r\n for (i = 0; i < len; i++) {\r\n splitIndex = i * stride;\r\n originalIndex = indexMappings[i] * stride;\r\n for (j = 0; j < stride; j++)\r\n splitVerts[splitIndex + j] = vertices[originalIndex + j];\r\n }\r\n vertexBuffer = new AttributesBuffer(stride, len);\r\n vertexBuffer.bufferView = splitVerts;\r\n return vertexBuffer;\r\n };\r\n //TODO - generate this dyanamically based on num tris\r\n ElementsUtils.hitTestTriangleElements = function (x, y, z, box, triangleElements, count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n var positionAttributes = triangleElements.positions;\r\n var curveAttributes = triangleElements.getCustomAtributes(\"curves\");\r\n var posStride = positionAttributes.stride;\r\n var curveStride = curveAttributes ? curveAttributes.stride : null;\r\n var positions = positionAttributes.get(count, offset);\r\n var curves = curveAttributes ? curveAttributes.get(count, offset) : null;\r\n var indices;\r\n var len;\r\n if (triangleElements.indices) {\r\n indices = triangleElements.indices.get(count, offset);\r\n positions = positionAttributes.get(positionAttributes.count);\r\n curves = curveAttributes ? curveAttributes.get(curveAttributes.count) : null;\r\n len = count * triangleElements.indices.dimensions;\r\n }\r\n else {\r\n positions = positionAttributes.get(count, offset);\r\n curves = curveAttributes ? curveAttributes.get(count, offset) : null;\r\n len = count;\r\n }\r\n var id0;\r\n var id1;\r\n var id2;\r\n var ax;\r\n var ay;\r\n var bx;\r\n var by;\r\n var cx;\r\n var cy;\r\n var hitTestCache = triangleElements.hitTestCache[offset] || (triangleElements.hitTestCache[offset] = new HitTestCache());\r\n var index = hitTestCache.lastCollisionIndex;\r\n if (index != -1 && index < len) {\r\n precheck: {\r\n if (indices) {\r\n id0 = indices[index + 2];\r\n id1 = indices[index + 1];\r\n id2 = indices[index];\r\n }\r\n else {\r\n id0 = index + 2;\r\n id1 = index + 1;\r\n id2 = index;\r\n }\r\n ax = positions[id0 * posStride];\r\n ay = positions[id0 * posStride + 1];\r\n bx = positions[id1 * posStride];\r\n by = positions[id1 * posStride + 1];\r\n cx = positions[id2 * posStride];\r\n cy = positions[id2 * posStride + 1];\r\n //from a to p\r\n var dx = ax - x;\r\n var dy = ay - y;\r\n //edge normal (a-b)\r\n var nx = by - ay;\r\n var ny = -(bx - ax);\r\n var dot = (dx * nx) + (dy * ny);\r\n if (dot > 0)\r\n break precheck;\r\n dx = bx - x;\r\n dy = by - y;\r\n nx = cy - by;\r\n ny = -(cx - bx);\r\n dot = (dx * nx) + (dy * ny);\r\n if (dot > 0)\r\n break precheck;\r\n dx = cx - x;\r\n dy = cy - y;\r\n nx = ay - cy;\r\n ny = -(ax - cx);\r\n dot = (dx * nx) + (dy * ny);\r\n if (dot > 0)\r\n break precheck;\r\n if (curves) {\r\n //check if not solid\r\n if (curves[id0 * curveStride + 2] != -128) {\r\n var v0x = bx - ax;\r\n var v0y = by - ay;\r\n var v1x = cx - ax;\r\n var v1y = cy - ay;\r\n var v2x = x - ax;\r\n var v2y = y - ay;\r\n var den = v0x * v1y - v1x * v0y;\r\n var v = (v2x * v1y - v1x * v2y) / den;\r\n var w = (v0x * v2y - v2x * v0y) / den;\r\n //var u:number = 1 - v - w;\t//commented out as inlined away\r\n //here be dragons\r\n var uu = 0.5 * v + w;\r\n var vv = w;\r\n var d = uu * uu - vv;\r\n var az = curves[id0 * curveStride];\r\n if (d > 0 && az == -128) {\r\n break precheck;\r\n }\r\n else if (d < 0 && az == 127) {\r\n break precheck;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n //hard coded min vertex count to bother using a grid for\r\n if (len > 150) {\r\n var cells = hitTestCache.cells;\r\n var divisions = cells.length ? hitTestCache.divisions : (hitTestCache.divisions = Math.min(Math.ceil(Math.sqrt(len)), 32));\r\n var conversionX = divisions / box.width;\r\n var conversionY = divisions / box.height;\r\n var minx = box.x;\r\n var miny = box.y;\r\n if (!cells.length) {\r\n //now we have bounds start creating grid cells and filling\r\n cells.length = divisions * divisions;\r\n for (var k = 0; k < len; k += 3) {\r\n if (indices) {\r\n id0 = indices[k + 2];\r\n id1 = indices[k + 1];\r\n id2 = indices[k];\r\n }\r\n else {\r\n id0 = k + 2;\r\n id1 = k + 1;\r\n id2 = k;\r\n }\r\n ax = positions[id0 * posStride];\r\n ay = positions[id0 * posStride + 1];\r\n bx = positions[id1 * posStride];\r\n by = positions[id1 * posStride + 1];\r\n cx = positions[id2 * posStride];\r\n cy = positions[id2 * posStride + 1];\r\n //subtractions to push into positive space\r\n var min_index_x = Math.floor((Math.min(ax, bx, cx) - minx) * conversionX);\r\n var min_index_y = Math.floor((Math.min(ay, by, cy) - miny) * conversionY);\r\n var max_index_x = Math.floor((Math.max(ax, bx, cx) - minx) * conversionX);\r\n var max_index_y = Math.floor((Math.max(ay, by, cy) - miny) * conversionY);\r\n for (var i = min_index_x; i <= max_index_x; i++) {\r\n for (var j = min_index_y; j <= max_index_y; j++) {\r\n var c = i + j * divisions;\r\n var nodes = cells[c] || (cells[c] = new Array());\r\n //push in the triangle ids\r\n nodes.push(k);\r\n }\r\n }\r\n }\r\n }\r\n var index_x = Math.floor((x - minx) * conversionX);\r\n var index_y = Math.floor((y - miny) * conversionY);\r\n var nodes = cells[index_x + index_y * divisions];\r\n if (nodes == null) {\r\n hitTestCache.lastCollisionIndex = -1;\r\n return false;\r\n }\r\n var nodeCount = nodes.length;\r\n for (var n = 0; n < nodeCount; n++) {\r\n var k = nodes[n];\r\n if (indices) {\r\n id2 = indices[k];\r\n }\r\n else {\r\n id2 = k;\r\n }\r\n if (id2 == index)\r\n continue;\r\n if (indices) {\r\n id0 = indices[k + 2];\r\n id1 = indices[k + 1];\r\n }\r\n else {\r\n id0 = k + 2;\r\n id1 = k + 1;\r\n }\r\n ax = positions[id0 * posStride];\r\n ay = positions[id0 * posStride + 1];\r\n bx = positions[id1 * posStride];\r\n by = positions[id1 * posStride + 1];\r\n cx = positions[id2 * posStride];\r\n cy = positions[id2 * posStride + 1];\r\n //from a to p\r\n var dx = ax - x;\r\n var dy = ay - y;\r\n //edge normal (a-b)\r\n var nx = by - ay;\r\n var ny = -(bx - ax);\r\n var dot = (dx * nx) + (dy * ny);\r\n if (dot > 0)\r\n continue;\r\n dx = bx - x;\r\n dy = by - y;\r\n nx = cy - by;\r\n ny = -(cx - bx);\r\n dot = (dx * nx) + (dy * ny);\r\n if (dot > 0)\r\n continue;\r\n dx = cx - x;\r\n dy = cy - y;\r\n nx = ay - cy;\r\n ny = -(ax - cx);\r\n dot = (dx * nx) + (dy * ny);\r\n if (dot > 0)\r\n continue;\r\n if (curves) {\r\n //check if not solid\r\n if (curves[id0 * curveStride + 2] != -128) {\r\n var v0x = bx - ax;\r\n var v0y = by - ay;\r\n var v1x = cx - ax;\r\n var v1y = cy - ay;\r\n var v2x = x - ax;\r\n var v2y = y - ay;\r\n var den = v0x * v1y - v1x * v0y;\r\n var v = (v2x * v1y - v1x * v2y) / den;\r\n var w = (v0x * v2y - v2x * v0y) / den;\r\n //var u:number = 1 - v - w;\t//commented out as inlined away\r\n //here be dragons\r\n var uu = 0.5 * v + w;\r\n var vv = w;\r\n var d = uu * uu - vv;\r\n var az = curves[id0 * curveStride];\r\n if (d > 0 && az == -128) {\r\n continue;\r\n }\r\n else if (d < 0 && az == 127) {\r\n continue;\r\n }\r\n }\r\n }\r\n hitTestCache.lastCollisionIndex = k;\r\n return true;\r\n }\r\n hitTestCache.lastCollisionIndex = -1;\r\n return false;\r\n }\r\n //brute force\r\n for (var k = 0; k < len; k += 3) {\r\n if (indices) {\r\n id2 = indices[k];\r\n }\r\n else {\r\n id2 = k;\r\n }\r\n if (id2 == index)\r\n continue;\r\n if (indices) {\r\n id0 = indices[k + 2];\r\n id1 = indices[k + 1];\r\n }\r\n else {\r\n id0 = k + 2;\r\n id1 = k + 1;\r\n }\r\n ax = positions[id0 * posStride];\r\n ay = positions[id0 * posStride + 1];\r\n bx = positions[id1 * posStride];\r\n by = positions[id1 * posStride + 1];\r\n cx = positions[id2 * posStride];\r\n cy = positions[id2 * posStride + 1];\r\n //from a to p\r\n var dx = ax - x;\r\n var dy = ay - y;\r\n //edge normal (a-b)\r\n var nx = by - ay;\r\n var ny = -(bx - ax);\r\n var dot = (dx * nx) + (dy * ny);\r\n if (dot > 0)\r\n continue;\r\n dx = bx - x;\r\n dy = by - y;\r\n nx = cy - by;\r\n ny = -(cx - bx);\r\n dot = (dx * nx) + (dy * ny);\r\n if (dot > 0)\r\n continue;\r\n dx = cx - x;\r\n dy = cy - y;\r\n nx = ay - cy;\r\n ny = -(ax - cx);\r\n dot = (dx * nx) + (dy * ny);\r\n if (dot > 0)\r\n continue;\r\n if (curves) {\r\n //check if not solid\r\n if (curves[id0 * curveStride + 2] != -128) {\r\n var v0x = bx - ax;\r\n var v0y = by - ay;\r\n var v1x = cx - ax;\r\n var v1y = cy - ay;\r\n var v2x = x - ax;\r\n var v2y = y - ay;\r\n var den = v0x * v1y - v1x * v0y;\r\n var v = (v2x * v1y - v1x * v2y) / den;\r\n var w = (v0x * v2y - v2x * v0y) / den;\r\n //var u:number = 1 - v - w;\t//commented out as inlined away\r\n //here be dragons\r\n var uu = 0.5 * v + w;\r\n var vv = w;\r\n var d = uu * uu - vv;\r\n var az = curves[id0 * curveStride];\r\n if (d > 0 && az == -128) {\r\n continue;\r\n }\r\n else if (d < 0 && az == 127) {\r\n continue;\r\n }\r\n }\r\n }\r\n hitTestCache.lastCollisionIndex = k;\r\n return true;\r\n }\r\n hitTestCache.lastCollisionIndex = -1;\r\n return false;\r\n };\r\n ElementsUtils.getTriangleGraphicsBoxBounds = function (positionAttributes, indexAttributes, output, count, offset, halfThickness) {\r\n if (offset === void 0) { offset = 0; }\r\n if (halfThickness === void 0) { halfThickness = 0; }\r\n var positions;\r\n var posDim = positionAttributes.dimensions;\r\n var posStride = positionAttributes.stride;\r\n var pos;\r\n var minX = 0, minY = 0, minZ = 0;\r\n var maxX = 0, maxY = 0, maxZ = 0;\r\n var indices;\r\n var len;\r\n if (indexAttributes) {\r\n len = count * indexAttributes.dimensions;\r\n indices = indexAttributes.get(count, offset);\r\n positions = positionAttributes.get(positionAttributes.count);\r\n }\r\n else {\r\n len = count;\r\n positions = positionAttributes.get(count, offset);\r\n }\r\n var index;\r\n for (var i = 0; i < len; i++) {\r\n index = (indices) ? indices[i] * posStride : i * posStride;\r\n if (i == 0) {\r\n maxX = minX = positions[index];\r\n maxY = minY = positions[index + 1];\r\n maxZ = minZ = (posDim == 3) ? positions[index + 2] : 0;\r\n }\r\n else {\r\n pos = positions[index];\r\n if (pos < minX)\r\n minX = pos;\r\n else if (pos > maxX)\r\n maxX = pos;\r\n pos = positions[index + 1];\r\n if (pos < minY)\r\n minY = pos;\r\n else if (pos > maxY)\r\n maxY = pos;\r\n if (posDim == 3) {\r\n pos = positions[index + 2];\r\n if (pos < minZ)\r\n minZ = pos;\r\n else if (pos > maxZ)\r\n maxZ = pos;\r\n }\r\n }\r\n }\r\n if (output == null)\r\n output = new Box();\r\n output.x = minX + halfThickness;\r\n output.y = minY + halfThickness;\r\n output.z = minZ;\r\n output.right = maxX - halfThickness;\r\n output.bottom = maxY - halfThickness;\r\n output.back = maxZ;\r\n return output;\r\n };\r\n ElementsUtils.getTriangleGraphicsSphereBounds = function (positionAttributes, center, output, count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n var positions = positionAttributes.get(count, offset);\r\n var posDim = positionAttributes.dimensions;\r\n var posStride = positionAttributes.stride;\r\n var maxRadiusSquared = 0;\r\n var radiusSquared;\r\n var len = count * posStride;\r\n var distanceX;\r\n var distanceY;\r\n var distanceZ;\r\n for (var i = 0; i < len; i += posStride) {\r\n distanceX = positions[i] - center.x;\r\n distanceY = positions[i + 1] - center.y;\r\n distanceZ = (posDim == 3) ? positions[i + 2] - center.z : -center.z;\r\n radiusSquared = distanceX * distanceX + distanceY * distanceY + distanceZ * distanceZ;\r\n if (maxRadiusSquared < radiusSquared)\r\n maxRadiusSquared = radiusSquared;\r\n }\r\n if (output == null)\r\n output = new Sphere();\r\n output.x = center.x;\r\n output.y = center.y;\r\n output.z = center.z;\r\n output.radius = Math.sqrt(maxRadiusSquared);\r\n return output;\r\n };\r\n ElementsUtils.updateTriangleGraphicsSlice9 = function (triangleElements, originalRect, scaleX, scaleY, init, copy) {\r\n // todo: for now this only works for Float2Attributes.\r\n if (init === void 0) { init = false; }\r\n if (copy === void 0) { copy = false; }\r\n if (triangleElements.slice9Indices.length != 9) {\r\n throw (\"ElementUtils: Error - triangleElement does not provide valid slice9Indices!\");\r\n }\r\n var s_len = triangleElements.slice9Indices.length;\r\n var innerWidth = originalRect.width - (triangleElements.slice9offsets.x + triangleElements.slice9offsets.width) / scaleX;\r\n var innerHeight = originalRect.height - (triangleElements.slice9offsets.y + triangleElements.slice9offsets.height) / scaleY;\r\n if (innerWidth < 0) {\r\n innerWidth = 0;\r\n scaleX = (triangleElements.slice9offsets.x + triangleElements.slice9offsets.width) / originalRect.width;\r\n }\r\n if (innerHeight < 0) {\r\n innerHeight = 0;\r\n scaleY = (triangleElements.slice9offsets.y + triangleElements.slice9offsets.height) / originalRect.height;\r\n }\r\n var newElem;\r\n var positions;\r\n if (copy) {\r\n var newverts = new Uint8Array(triangleElements.positions.count * 8);\r\n while (v < triangleElements.positions.count * 2) {\r\n newverts[v] = positions[v++];\r\n newverts[v] = positions[v++];\r\n }\r\n var vertexBuffer = new AttributesBuffer(8, triangleElements.positions.count);\r\n vertexBuffer.bufferView = newverts;\r\n var newElem = new TriangleElements(vertexBuffer);\r\n newElem.setPositions(new Float2Attributes(vertexBuffer));\r\n newElem.slice9offsets = triangleElements.slice9offsets;\r\n newElem.initialSlice9Positions = triangleElements.initialSlice9Positions;\r\n newElem.slice9Indices = triangleElements.slice9Indices;\r\n positions = newElem.positions.get(newElem.positions.count);\r\n v = 0;\r\n }\r\n else {\r\n positions = triangleElements.positions.get(triangleElements.positions.count);\r\n }\r\n // todo: i had trouble when just cloning the positions \r\n //\tfor now i just create the initialSlice9Positions by iterating the positions\r\n var v = 0;\r\n var init_positions;\r\n if (init) {\r\n init_positions = [];\r\n init_positions.length = triangleElements.positions.count * 2;\r\n while (v < triangleElements.positions.count * 2) {\r\n init_positions[v] = positions[v++];\r\n init_positions[v] = positions[v++];\r\n }\r\n triangleElements.initialSlice9Positions = init_positions;\r\n }\r\n else {\r\n init_positions = triangleElements.initialSlice9Positions;\r\n }\r\n var slice9Indices = triangleElements.slice9Indices;\r\n var s = 0;\r\n v = 0;\r\n var slice9Offsets_x = [];\r\n slice9Offsets_x.length = 3;\r\n var slice9Offsets_y = [];\r\n slice9Offsets_y.length = 3;\r\n slice9Offsets_x[0] = originalRect.x;\r\n slice9Offsets_x[1] = originalRect.x + triangleElements.slice9offsets.x / scaleX;\r\n slice9Offsets_x[2] = originalRect.x + triangleElements.slice9offsets.x / scaleX + innerWidth;\r\n slice9Offsets_y[0] = originalRect.y;\r\n slice9Offsets_y[1] = originalRect.y + triangleElements.slice9offsets.y / scaleY;\r\n slice9Offsets_y[2] = originalRect.y + triangleElements.slice9offsets.y / scaleY + innerHeight;\r\n //console.log(\"slice9Offsets_x\",slice9Offsets_x);\r\n //console.log(\"slice9Offsets_y\",slice9Offsets_x);\r\n var row_cnt = -1;\r\n var col_cnt = 0;\r\n var scalex = 0;\r\n var scaley = 0;\r\n var offsetx = 0;\r\n var offsety = 0;\r\n // iterating over the 9 chunks - keep in mind that we are constructing a 3x3 grid:\r\n for (s = 0; s < s_len; s++) {\r\n // keep track of column and row index\r\n if (row_cnt == 2) {\r\n col_cnt++;\r\n row_cnt = -1;\r\n }\r\n row_cnt++;\r\n // only need to x-scale if this is the middle column\r\n // if the innerWidth<=0 we can skip this complete column\r\n if (col_cnt == 1) {\r\n scalex = innerWidth;\r\n }\r\n else {\r\n scalex = 1 / scaleX;\r\n }\r\n // only need to y-scale if this is the middle row\r\n // if the innerHeight<=0 we can skip this complete row\r\n if (row_cnt == 1) {\r\n scaley = innerHeight;\r\n }\r\n else {\r\n scaley = 1 / scaleY;\r\n }\r\n // offsetx is different for each column\r\n offsetx = slice9Offsets_x[col_cnt];\r\n // offsety is different for each row\r\n offsety = slice9Offsets_y[row_cnt];\r\n // iterate the verts and apply the translation / scale\r\n while (v < slice9Indices[s]) {\r\n positions[v] = offsetx + (init_positions[v++] * scalex);\r\n positions[v] = offsety + (init_positions[v++] * scaley);\r\n }\r\n }\r\n //console.log(\"positions\",positions);\r\n if (copy) {\r\n newElem.positions.invalidate();\r\n return newElem;\r\n }\r\n triangleElements.positions.invalidate();\r\n return triangleElements;\r\n };\r\n return ElementsUtils;\r\n}());\r\nexport { ElementsUtils };\r\nElementsUtils.tempFloat32x4 = new Float32Array(4);\r\nElementsUtils.LIMIT_VERTS = 0xffff;\r\nElementsUtils.LIMIT_INDICES = 0xffffff;\r\nElementsUtils._indexSwap = new Array();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/ElementsUtils.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\n/**\r\n * Dispatched to notify changes in a sub geometry object's state.\r\n *\r\n * @class away.events.ElementsEvent\r\n * @see away.core.base.Graphics\r\n */\r\nvar ElementsEvent = (function (_super) {\r\n tslib_1.__extends(ElementsEvent, _super);\r\n /**\r\n * Create a new GraphicsEvent\r\n * @param type The event type.\r\n * @param attributesView An optional data type of the vertex data being updated.\r\n */\r\n function ElementsEvent(type, attributesView) {\r\n var _this = _super.call(this, type) || this;\r\n _this._attributesView = attributesView;\r\n return _this;\r\n }\r\n Object.defineProperty(ElementsEvent.prototype, \"attributesView\", {\r\n /**\r\n * The attributes view of the vertex data.\r\n */\r\n get: function () {\r\n return this._attributesView;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the event.\r\n *\r\n * @return An exact duplicate of the current object.\r\n */\r\n ElementsEvent.prototype.clone = function () {\r\n return new ElementsEvent(this.type, this._attributesView);\r\n };\r\n return ElementsEvent;\r\n}(EventBase));\r\nexport { ElementsEvent };\r\n/**\r\n * Dispatched when a Elements's index data has been updated.\r\n */\r\nElementsEvent.INVALIDATE_INDICES = \"invalidateIndices\";\r\n/**\r\n * Dispatched when a Elements's index data has been disposed.\r\n */\r\nElementsEvent.CLEAR_INDICES = \"clearIndices\";\r\n/**\r\n * Dispatched when a Elements's vertex data has been updated.\r\n */\r\nElementsEvent.INVALIDATE_VERTICES = \"invalidateVertices\";\r\n/**\r\n * Dispatched when a Elements's vertex data has been disposed.\r\n */\r\nElementsEvent.CLEAR_VERTICES = \"clearVertices\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/ElementsEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView, Float3Attributes, Short3Attributes, AbstractMethodError, AssetBase } from \"@awayjs/core\";\r\nimport { ElementsEvent } from \"../events/ElementsEvent\";\r\n/**\r\n * @class away.base.TriangleElements\r\n */\r\nvar ElementsBase = (function (_super) {\r\n tslib_1.__extends(ElementsBase, _super);\r\n /**\r\n *\r\n */\r\n function ElementsBase(concatenatedBuffer) {\r\n if (concatenatedBuffer === void 0) { concatenatedBuffer = null; }\r\n var _this = _super.call(this) || this;\r\n _this._customAttributesNames = new Array();\r\n _this._customAttributes = new Object();\r\n _this._numElements = 0;\r\n _this._numVertices = 0;\r\n _this._verticesDirty = new Object();\r\n _this._invalidateVertices = new Object();\r\n _this._concatenatedBuffer = concatenatedBuffer;\r\n return _this;\r\n }\r\n Object.defineProperty(ElementsBase.prototype, \"traverseName\", {\r\n get: function () {\r\n throw new AbstractMethodError();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ElementsBase.prototype, \"concatenatedBuffer\", {\r\n get: function () {\r\n return this._concatenatedBuffer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ElementsBase.prototype, \"indices\", {\r\n /**\r\n * The raw index data that define the faces.\r\n */\r\n get: function () {\r\n return this._indices;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n ElementsBase.prototype.getCustomAtributesNames = function () {\r\n return this._customAttributesNames;\r\n };\r\n /**\r\n *\r\n */\r\n ElementsBase.prototype.getCustomAtributes = function (name) {\r\n return this._customAttributes[name];\r\n };\r\n Object.defineProperty(ElementsBase.prototype, \"numElements\", {\r\n /**\r\n * The total amount of triangles in the TriangleElements.\r\n */\r\n get: function () {\r\n return this._numElements;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ElementsBase.prototype, \"numVertices\", {\r\n get: function () {\r\n return this._numVertices;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ElementsBase.prototype.copyTo = function (elements) {\r\n if (this.indices)\r\n elements.setIndices(this.indices.clone());\r\n for (var name in this._customAttributes)\r\n elements.setCustomAttributes(name, this.getCustomAtributes(name).clone());\r\n };\r\n /**\r\n *\r\n */\r\n ElementsBase.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this._indices) {\r\n this._indices.dispose();\r\n this._indices = null;\r\n }\r\n for (var name in this._customAttributes) {\r\n this._customAttributes[name].dispose();\r\n delete this._customAttributes;\r\n }\r\n };\r\n ElementsBase.prototype.setIndices = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (values instanceof Short3Attributes) {\r\n if (this._indices)\r\n this.clearIndices();\r\n this._indices = values;\r\n }\r\n else if (values) {\r\n if (!this._indices)\r\n this._indices = new Short3Attributes();\r\n this._indices.set(values, offset);\r\n }\r\n else if (this._indices) {\r\n this._indices.dispose();\r\n this._indices = null;\r\n this.clearIndices();\r\n }\r\n if (this._indices) {\r\n this._numElements = this._indices.count;\r\n this.invalidateIndices();\r\n }\r\n else {\r\n this._numElements = 0;\r\n }\r\n };\r\n ElementsBase.prototype.setCustomAttributes = function (name, values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (values == this._customAttributes[name])\r\n return;\r\n if (values instanceof AttributesView) {\r\n this.clearVertices(this._customAttributes[name]);\r\n this._customAttributes[name] = values;\r\n }\r\n else if (values) {\r\n if (!this._customAttributes[name])\r\n this._customAttributes[name] = new Float3Attributes(this._concatenatedBuffer); //default custom atrributes is Float3\r\n this._customAttributes[name].set(values, offset);\r\n }\r\n else if (this._customAttributes[name]) {\r\n this.clearVertices(this._customAttributes[name]);\r\n this._customAttributesNames.splice(this._customAttributesNames.indexOf(name), 1);\r\n delete this._customAttributes[name];\r\n return;\r\n }\r\n this.invalidateVertices(this._customAttributes[name]);\r\n this._verticesDirty[this._customAttributes[name].id] = false;\r\n if (this._customAttributesNames.indexOf(name) == -1)\r\n this._customAttributesNames.push(name);\r\n };\r\n /**\r\n * Clones the current object\r\n * @return An exact duplicate of the current object.\r\n */\r\n ElementsBase.prototype.clone = function () {\r\n throw new AbstractMethodError();\r\n };\r\n ElementsBase.prototype.applyTransformation = function (transform, count, offset) {\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n throw new AbstractMethodError();\r\n };\r\n /**\r\n * Scales the geometry.\r\n * @param scale The amount by which to scale.\r\n */\r\n ElementsBase.prototype.scale = function (scale, count, offset) {\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n throw new AbstractMethodError();\r\n };\r\n ElementsBase.prototype.scaleUV = function (scaleU, scaleV, count, offset) {\r\n if (scaleU === void 0) { scaleU = 1; }\r\n if (scaleV === void 0) { scaleV = 1; }\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n throw new AbstractMethodError();\r\n };\r\n ElementsBase.prototype.getBoxBounds = function (target, count, offset) {\r\n if (target === void 0) { target = null; }\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n throw new AbstractMethodError();\r\n };\r\n ElementsBase.prototype.getSphereBounds = function (center, target, count, offset) {\r\n if (target === void 0) { target = null; }\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n throw new AbstractMethodError();\r\n };\r\n ElementsBase.prototype.hitTestPoint = function (x, y, z, box, count, offset) {\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n throw new AbstractMethodError();\r\n };\r\n ElementsBase.prototype.invalidateIndices = function () {\r\n if (!this._invalidateIndices)\r\n this._invalidateIndices = new ElementsEvent(ElementsEvent.INVALIDATE_INDICES, this._indices);\r\n this.dispatchEvent(this._invalidateIndices);\r\n };\r\n ElementsBase.prototype.clearIndices = function () {\r\n this.dispatchEvent(new ElementsEvent(ElementsEvent.CLEAR_INDICES, this._indices));\r\n };\r\n ElementsBase.prototype.invalidateVertices = function (attributesView) {\r\n if (!attributesView || this._verticesDirty[attributesView.id])\r\n return;\r\n this._verticesDirty[attributesView.id] = true;\r\n if (!this._invalidateVertices[attributesView.id])\r\n this._invalidateVertices[attributesView.id] = new ElementsEvent(ElementsEvent.INVALIDATE_VERTICES, attributesView);\r\n this.dispatchEvent(this._invalidateVertices[attributesView.id]);\r\n };\r\n ElementsBase.prototype.clearVertices = function (attributesView) {\r\n if (!attributesView)\r\n return;\r\n attributesView.dispose();\r\n this.dispatchEvent(new ElementsEvent(ElementsEvent.CLEAR_VERTICES, attributesView));\r\n this._verticesDirty[attributesView.id] = null;\r\n this._invalidateVertices[attributesView.id] = null;\r\n };\r\n return ElementsBase;\r\n}(AssetBase));\r\nexport { ElementsBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/elements/ElementsBase.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView, Float3Attributes, Float2Attributes } from \"@awayjs/core\";\r\nimport { TraverserBase } from \"../base/TraverserBase\";\r\nimport { ElementsUtils } from \"../utils/ElementsUtils\";\r\nimport { ElementsBase } from \"./ElementsBase\";\r\n/**\r\n * @class away.base.TriangleElements\r\n */\r\nvar TriangleElements = (function (_super) {\r\n tslib_1.__extends(TriangleElements, _super);\r\n function TriangleElements() {\r\n var _this = _super.apply(this, arguments) || this;\r\n _this._faceNormalsDirty = true;\r\n _this._faceTangentsDirty = true;\r\n _this._autoDeriveNormals = true;\r\n _this._autoDeriveTangents = true;\r\n //used for hittesting geometry\r\n _this.hitTestCache = new Object();\r\n _this.halfStrokeThickness = 0;\r\n return _this;\r\n // public _iTestCollision(pickingCollider:IPickingCollider, material:MaterialBase, pickingCollision:PickingCollision, count:number = 0, offset:number = 0):boolean\r\n // {\r\n // \treturn pickingCollider.testTriangleCollision(this, material, pickingCollision, count || this._numVertices, offset);\r\n // }\r\n }\r\n TriangleElements.prototype.updateSlice9 = function (width, height) {\r\n };\r\n Object.defineProperty(TriangleElements.prototype, \"assetType\", {\r\n get: function () {\r\n return TriangleElements.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"traverseName\", {\r\n get: function () {\r\n return TriangleElements.traverseName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"useCondensedIndices\", {\r\n /**\r\n * Offers the option of enabling GPU accelerated animation on skeletons larger than 32 joints\r\n * by condensing the number of joint index values required per sprite. Only applicable to\r\n * skeleton animations that utilise more than one sprite object. Defaults to false.\r\n */\r\n get: function () {\r\n return this._useCondensedIndices;\r\n },\r\n set: function (value) {\r\n if (this._useCondensedIndices == value)\r\n return;\r\n this._useCondensedIndices = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"jointsPerVertex\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._jointsPerVertex;\r\n },\r\n set: function (value) {\r\n if (this._jointsPerVertex == value)\r\n return;\r\n this._jointsPerVertex = value;\r\n if (this._jointIndices)\r\n this._jointIndices.dimensions = this._jointsPerVertex;\r\n if (this._jointWeights)\r\n this._jointWeights.dimensions = this._jointsPerVertex;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"autoDeriveNormals\", {\r\n /**\r\n * True if the vertex normals should be derived from the geometry, false if the vertex normals are set\r\n * explicitly.\r\n */\r\n get: function () {\r\n return this._autoDeriveNormals;\r\n },\r\n set: function (value) {\r\n if (this._autoDeriveNormals == value)\r\n return;\r\n this._autoDeriveNormals = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"autoDeriveTangents\", {\r\n /**\r\n * True if the vertex tangents should be derived from the geometry, false if the vertex normals are set\r\n * explicitly.\r\n */\r\n get: function () {\r\n return this._autoDeriveTangents;\r\n },\r\n set: function (value) {\r\n if (this._autoDeriveTangents == value)\r\n return;\r\n this._autoDeriveTangents = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"positions\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._positions)\r\n this.setPositions(new Float3Attributes(this._concatenatedBuffer));\r\n return this._positions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"normals\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._normals || this._verticesDirty[this._normals.id])\r\n this.setNormals(this._normals);\r\n return this._normals;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"tangents\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._tangents || this._verticesDirty[this._tangents.id])\r\n this.setTangents(this._tangents);\r\n return this._tangents;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"faceNormals\", {\r\n /**\r\n * The raw data of the face normals, in the same order as the faces are listed in the index list.\r\n */\r\n get: function () {\r\n if (this._faceNormalsDirty)\r\n this.updateFaceNormals();\r\n return this._faceNormals;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"faceTangents\", {\r\n /**\r\n * The raw data of the face tangets, in the same order as the faces are listed in the index list.\r\n */\r\n get: function () {\r\n if (this._faceTangentsDirty)\r\n this.updateFaceTangents();\r\n return this._faceTangents;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"uvs\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._uvs && TriangleElements.isIE) {\r\n var attributesView2 = new AttributesView(Float32Array, 2);\r\n attributesView2.set(this._positions.get(this._positions.count));\r\n var attributesBuffer2 = attributesView2.attributesBuffer;\r\n attributesView2.dispose();\r\n this._uvs = new Float2Attributes(attributesBuffer2);\r\n }\r\n return this._uvs;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"jointIndices\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._jointIndices;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"jointWeights\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._jointWeights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleElements.prototype, \"condensedIndexLookUp\", {\r\n get: function () {\r\n return this._condensedIndexLookUp;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TriangleElements.prototype.getBoxBounds = function (target, count, offset) {\r\n if (target === void 0) { target = null; }\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n return ElementsUtils.getTriangleGraphicsBoxBounds(this.positions, this.indices, target, count || this._numElements || this._numVertices, offset, this.halfStrokeThickness);\r\n };\r\n TriangleElements.prototype.getSphereBounds = function (center, target, count, offset) {\r\n if (target === void 0) { target = null; }\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n return ElementsUtils.getTriangleGraphicsSphereBounds(this.positions, center, target, count || this._numVertices, offset);\r\n };\r\n TriangleElements.prototype.hitTestPoint = function (x, y, z, box, count, offset, idx_count, idx_offset) {\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n if (idx_count === void 0) { idx_count = 0; }\r\n if (idx_offset === void 0) { idx_offset = 0; }\r\n return ElementsUtils.hitTestTriangleElements(x, y, 0, box, this, count || this._numElements || this._numVertices, offset);\r\n };\r\n TriangleElements.prototype.setPositions = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (values == this._positions)\r\n return;\r\n if (values instanceof AttributesView) {\r\n this.clearVertices(this._positions);\r\n this._positions = values;\r\n }\r\n else if (values) {\r\n if (!this._positions)\r\n this._positions = new Float3Attributes(this._concatenatedBuffer);\r\n this._positions.set(values, offset);\r\n }\r\n else {\r\n this.clearVertices(this._positions);\r\n this._positions = new Float3Attributes(this._concatenatedBuffer); //positions cannot be null\r\n }\r\n this._numVertices = this._positions.count;\r\n if (this._autoDeriveNormals)\r\n this.invalidateVertices(this._normals);\r\n if (this._autoDeriveTangents)\r\n this.invalidateVertices(this._tangents);\r\n this.invalidateVertices(this._positions);\r\n this._verticesDirty[this._positions.id] = false;\r\n };\r\n TriangleElements.prototype.setNormals = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (!this._autoDeriveNormals) {\r\n if (values == this._normals)\r\n return;\r\n if (values instanceof Float3Attributes) {\r\n this.clearVertices(this._normals);\r\n this._normals = values;\r\n }\r\n else if (values) {\r\n if (!this._normals)\r\n this._normals = new Float3Attributes(this._concatenatedBuffer);\r\n this._normals.set(values, offset);\r\n }\r\n else if (this._normals) {\r\n this.clearVertices(this._normals);\r\n this._normals = null;\r\n return;\r\n }\r\n }\r\n else {\r\n this._normals = ElementsUtils.generateNormals(this.indices, this.faceNormals, this._normals, this._concatenatedBuffer);\r\n }\r\n this.invalidateVertices(this._normals);\r\n this._verticesDirty[this._normals.id] = false;\r\n };\r\n TriangleElements.prototype.setTangents = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (!this._autoDeriveTangents) {\r\n if (values == this._tangents)\r\n return;\r\n if (values instanceof Float3Attributes) {\r\n this.clearVertices(this._tangents);\r\n this._tangents = values;\r\n }\r\n else if (values) {\r\n if (!this._tangents)\r\n this._tangents = new Float3Attributes(this._concatenatedBuffer);\r\n this._tangents.set(values, offset);\r\n }\r\n else if (this._tangents) {\r\n this.clearVertices(this._tangents);\r\n this._tangents = null;\r\n return;\r\n }\r\n }\r\n else {\r\n this._tangents = ElementsUtils.generateTangents(this.indices, this.faceTangents, this.faceNormals, this._tangents, this._concatenatedBuffer);\r\n }\r\n this.invalidateVertices(this._tangents);\r\n this._verticesDirty[this._tangents.id] = false;\r\n };\r\n TriangleElements.prototype.setUVs = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (values == this._uvs)\r\n return;\r\n if (values instanceof AttributesView) {\r\n this.clearVertices(this._uvs);\r\n this._uvs = values;\r\n }\r\n else if (values) {\r\n if (!this._uvs)\r\n this._uvs = new Float2Attributes(this._concatenatedBuffer);\r\n this._uvs.set(values, offset);\r\n }\r\n else if (this._uvs) {\r\n this.clearVertices(this._uvs);\r\n this._uvs = null;\r\n return;\r\n }\r\n this.invalidateVertices(this._uvs);\r\n this._verticesDirty[this._uvs.id] = false;\r\n };\r\n TriangleElements.prototype.setJointIndices = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (values == this._jointIndices)\r\n return;\r\n if (values instanceof AttributesView) {\r\n this.clearVertices(this._jointIndices);\r\n this._jointIndices = values;\r\n }\r\n else if (values) {\r\n if (!this._jointIndices)\r\n this._jointIndices = new AttributesView(Float32Array, this._jointsPerVertex, this._concatenatedBuffer);\r\n if (this._useCondensedIndices) {\r\n var i = 0;\r\n var oldIndex;\r\n var newIndex = 0;\r\n var dic = new Object();\r\n this._condensedIndexLookUp = new Array();\r\n while (i < values.length) {\r\n oldIndex = values[i];\r\n // if we encounter a new index, assign it a new condensed index\r\n if (dic[oldIndex] == undefined) {\r\n dic[oldIndex] = newIndex;\r\n this._condensedIndexLookUp[newIndex++] = oldIndex;\r\n }\r\n //reset value to dictionary lookup\r\n values[i++] = dic[oldIndex];\r\n }\r\n }\r\n this._jointIndices.set(values, offset);\r\n }\r\n else if (this._jointIndices) {\r\n this.clearVertices(this._jointIndices);\r\n this._jointIndices = null;\r\n return;\r\n }\r\n this.invalidateVertices(this._jointIndices);\r\n this._verticesDirty[this._jointIndices.id] = false;\r\n };\r\n TriangleElements.prototype.setJointWeights = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (values == this._jointWeights)\r\n return;\r\n if (values instanceof AttributesView) {\r\n this.clearVertices(this._jointWeights);\r\n this._jointWeights = values;\r\n }\r\n else if (values) {\r\n if (!this._jointWeights)\r\n this._jointWeights = new AttributesView(Float32Array, this._jointsPerVertex, this._concatenatedBuffer);\r\n this._jointWeights.set(values, offset);\r\n }\r\n else if (this._jointWeights) {\r\n this.clearVertices(this._jointWeights);\r\n this._jointWeights = null;\r\n return;\r\n }\r\n this.invalidateVertices(this._jointWeights);\r\n this._verticesDirty[this._jointWeights.id] = false;\r\n };\r\n /**\r\n *\r\n */\r\n TriangleElements.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this._positions) {\r\n this._positions.dispose();\r\n this._positions = null;\r\n }\r\n if (this._normals) {\r\n this._normals.dispose();\r\n this._normals = null;\r\n }\r\n if (this._tangents) {\r\n this._tangents.dispose();\r\n this._tangents = null;\r\n }\r\n if (this._uvs) {\r\n this._uvs.dispose();\r\n this._uvs = null;\r\n }\r\n if (this._jointIndices) {\r\n this._jointIndices.dispose();\r\n this._jointIndices = null;\r\n }\r\n if (this._jointWeights) {\r\n this._jointWeights.dispose();\r\n this._jointWeights = null;\r\n }\r\n if (this._faceNormals) {\r\n this._faceNormals.dispose();\r\n this._faceNormals = null;\r\n }\r\n if (this._faceTangents) {\r\n this._faceTangents.dispose();\r\n this._faceTangents = null;\r\n }\r\n };\r\n TriangleElements.prototype.setIndices = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n _super.prototype.setIndices.call(this, values, offset);\r\n this._faceNormalsDirty = true;\r\n this._faceTangentsDirty = true;\r\n if (this._autoDeriveNormals)\r\n this.invalidateVertices(this._normals);\r\n if (this._autoDeriveTangents)\r\n this.invalidateVertices(this._tangents);\r\n };\r\n TriangleElements.prototype.copyTo = function (elements) {\r\n _super.prototype.copyTo.call(this, elements);\r\n //temp disable auto derives\r\n var autoDeriveNormals = this._autoDeriveNormals;\r\n var autoDeriveTangents = this._autoDeriveTangents;\r\n elements.autoDeriveNormals = this._autoDeriveNormals = false;\r\n elements.autoDeriveTangents = this._autoDeriveTangents = false;\r\n elements.setPositions(this.positions.clone());\r\n if (this.normals)\r\n elements.setNormals(this.normals.clone());\r\n if (this.tangents)\r\n elements.setTangents(this.tangents.clone());\r\n if (this.uvs)\r\n elements.setUVs(this.uvs.clone());\r\n elements.jointsPerVertex = this._jointsPerVertex;\r\n if (this.jointIndices)\r\n elements.setJointIndices(this.jointIndices.clone());\r\n if (this.jointWeights)\r\n elements.setJointWeights(this.jointWeights.clone());\r\n //return auto derives to cloned values\r\n elements.autoDeriveNormals = this._autoDeriveNormals = autoDeriveNormals;\r\n elements.autoDeriveTangents = this._autoDeriveTangents = autoDeriveTangents;\r\n if (this.slice9Indices) {\r\n elements.originalSlice9Size = this.originalSlice9Size;\r\n elements.slice9offsets = this.slice9offsets;\r\n elements.slice9Indices = this.slice9Indices;\r\n elements.initialSlice9Positions = this.initialSlice9Positions;\r\n }\r\n };\r\n /**\r\n * Clones the current object\r\n * @return An exact duplicate of the current object.\r\n */\r\n TriangleElements.prototype.clone = function () {\r\n var clone = new TriangleElements(this._concatenatedBuffer ? this._concatenatedBuffer.clone() : null);\r\n this.copyTo(clone);\r\n return clone;\r\n };\r\n TriangleElements.prototype.scaleUV = function (scaleU, scaleV, count, offset) {\r\n if (scaleU === void 0) { scaleU = 1; }\r\n if (scaleV === void 0) { scaleV = 1; }\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n if (this.uvs)\r\n ElementsUtils.scale(scaleU, scaleV, 0, this.uvs, count || this._numVertices, offset);\r\n };\r\n /**\r\n * Scales the geometry.\r\n * @param scale The amount by which to scale.\r\n */\r\n TriangleElements.prototype.scale = function (scale, count, offset) {\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n ElementsUtils.scale(scale, scale, scale, this.positions, count || this._numVertices, offset);\r\n };\r\n TriangleElements.prototype.applyTransformation = function (transform, count, offset) {\r\n if (count === void 0) { count = 0; }\r\n if (offset === void 0) { offset = 0; }\r\n ElementsUtils.applyTransformation(transform, this.positions, this.normals, this.tangents, count || this._numVertices, offset);\r\n };\r\n /**\r\n * Updates the tangents for each face.\r\n */\r\n TriangleElements.prototype.updateFaceTangents = function () {\r\n this._faceTangents = ElementsUtils.generateFaceTangents(this.indices, this.positions, this.uvs || this.positions, this._faceTangents, this.numElements);\r\n this._faceTangentsDirty = false;\r\n };\r\n /**\r\n * Updates the normals for each face.\r\n */\r\n TriangleElements.prototype.updateFaceNormals = function () {\r\n this._faceNormals = ElementsUtils.generateFaceNormals(this.indices, this.positions, this._faceNormals, this.numElements);\r\n this._faceNormalsDirty = false;\r\n };\r\n return TriangleElements;\r\n}(ElementsBase));\r\nexport { TriangleElements };\r\nTriangleElements.isIE = !!navigator.userAgent.match(/Trident/g) || !!navigator.userAgent.match(/MSIE/g);\r\nTriangleElements.traverseName = TraverserBase.addRenderableName(\"applyTriangleShape\");\r\nTriangleElements.assetType = \"[asset TriangleElements]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/elements/TriangleElements.js","/**\r\n * Defines the values to use for specifying path-drawing commands.\r\n * The values in this class are used by the Graphics.drawPath() method,\r\n *or stored in the commands vector of a GraphicsPath object.\r\n */\r\nvar GraphicsPathCommand = (function () {\r\n function GraphicsPathCommand() {\r\n }\r\n return GraphicsPathCommand;\r\n}());\r\nexport { GraphicsPathCommand };\r\n/**\r\n * Represents the default \"do nothing\" command.\r\n */\r\nGraphicsPathCommand.NO_OP = 0;\r\n/**\r\n * Specifies a drawing command that moves the current drawing position\r\n * to the x- and y-coordinates specified in the data vector.\r\n */\r\nGraphicsPathCommand.MOVE_TO = 1;\r\n/**\r\n * Specifies a drawing command that draws a line from the current drawing position\r\n * to the x- and y-coordinates specified in the data vector.\r\n */\r\nGraphicsPathCommand.LINE_TO = 2;\r\n/**\r\n * Specifies a drawing command that draws a curve from the current drawing position\r\n * to the x- and y-coordinates specified in the data vector, using a control point.\r\n */\r\nGraphicsPathCommand.CURVE_TO = 3;\r\n/**\r\n * Specifies a drawing command that draws a curve from the current drawing position\r\n * to the x- and y-coordinates specified in the data vector, using a control point.\r\n */\r\nGraphicsPathCommand.BUILD_JOINT = 13;\r\nGraphicsPathCommand.BUILD_ROUND_JOINT = 14;\r\n/**\r\n * Specifies a \"line to\" drawing command,\r\n * but uses two sets of coordinates (four values) instead of one set.\r\n */\r\nGraphicsPathCommand.WIDE_LINE_TO = 4;\r\n/**\r\n * Specifies a \"move to\" drawing command,\r\n * but uses two sets of coordinates (four values) instead of one set.\r\n */\r\nGraphicsPathCommand.WIDE_MOVE_TO = 5;\r\n/**\r\n * Specifies a drawing command that draws a curve from the current drawing position\r\n * to the x- and y-coordinates specified in the data vector, using 2 control points.\r\n */\r\nGraphicsPathCommand.CUBIC_CURVE = 6;\r\nexport default GraphicsPathCommand;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GraphicsPathCommand.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase } from \"@awayjs/core\";\r\n/**\r\n *\r\n */\r\nvar SamplerBase = (function (_super) {\r\n tslib_1.__extends(SamplerBase, _super);\r\n /**\r\n *\r\n */\r\n function SamplerBase(smooth, mipmap) {\r\n if (smooth === void 0) { smooth = false; }\r\n if (mipmap === void 0) { mipmap = false; }\r\n var _this = _super.call(this) || this;\r\n _this._smooth = smooth;\r\n _this._mipmap = mipmap;\r\n return _this;\r\n }\r\n Object.defineProperty(SamplerBase.prototype, \"smooth\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._smooth;\r\n },\r\n set: function (value) {\r\n if (this._smooth == value)\r\n return;\r\n this._smooth = value;\r\n //TODO: update dependencies\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SamplerBase.prototype, \"mipmap\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._mipmap;\r\n },\r\n set: function (value) {\r\n if (this._mipmap == value)\r\n return;\r\n this._mipmap = value;\r\n //TODO: update dependencies\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SamplerBase;\r\n}(AssetBase));\r\nexport { SamplerBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/SamplerBase.js","import * as tslib_1 from \"tslib\";\r\nimport { SamplerBase } from \"../image/SamplerBase\";\r\n/**\r\n * The Sampler2D export class represents display objects that represent bitmap images.\r\n * These can be images that you load with the flash.Assets or\r\n * flash.display.Loader classes, or they can be images that you\r\n * create with the Sampler2D() constructor.\r\n *\r\n *

The Sampler2D() constructor allows you to create a Sampler2D\r\n * object that contains a reference to a Image2D object. After you create a\r\n * Sampler2D object, use the addChild() or addChildAt()\r\n * method of the parent DisplayObjectContainer instance to place the bitmap on\r\n * the display list.

\r\n *\r\n *

A Sampler2D object can share its Image2D reference among several Sampler2D\r\n * objects, independent of translation or rotation properties. Because you can\r\n * create multiple Sampler2D objects that reference the same Image2D object,\r\n * multiple texture objects can use the same complex Image2D object without\r\n * incurring the memory overhead of a Image2D object for each texture\r\n * object instance.

\r\n\r\n */\r\nvar Sampler2D = (function (_super) {\r\n tslib_1.__extends(Sampler2D, _super);\r\n /**\r\n *\r\n * @param image2D\r\n * @param smoothing\r\n */\r\n function Sampler2D(repeat, smooth, mipmap) {\r\n if (repeat === void 0) { repeat = false; }\r\n if (smooth === void 0) { smooth = false; }\r\n if (mipmap === void 0) { mipmap = false; }\r\n var _this = _super.call(this, smooth, mipmap) || this;\r\n _this._repeat = repeat;\r\n _this._updateRect();\r\n return _this;\r\n }\r\n Object.defineProperty(Sampler2D.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Sampler2D.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sampler2D.prototype, \"repeat\", {\r\n /**\r\n * Controls whether or not the Sampler2D object is snapped to the nearest pixel.\r\n * This value is ignored in the native and HTML5 targets.\r\n * The PixelSnapping export class includes possible values:\r\n *
    \r\n *
  • PixelSnapping.NEVER - No pixel snapping occurs.
  • \r\n *
  • PixelSnapping.ALWAYS - The image is always snapped to\r\n * the nearest pixel, independent of transformation.
  • \r\n *
  • PixelSnapping.AUTO - The image is snapped to the\r\n * nearest pixel if it is drawn with no rotation or skew and it is drawn at a\r\n * scale factor of 99.9% to 100.1%. If these conditions are satisfied, the\r\n * bitmap image is drawn at 100% scale, snapped to the nearest pixel.\r\n * When targeting Flash Player, this value allows the image to be drawn as fast\r\n * as possible using the internal vector renderer.
  • \r\n *
\r\n */\r\n //var pixelSnapping:PixelSnapping;\r\n /**\r\n * Controls whether or not the bitmap is smoothed when scaled. If\r\n * true, the bitmap is smoothed when scaled. If\r\n * false, the bitmap is not smoothed when scaled.\r\n */\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._repeat;\r\n },\r\n set: function (value) {\r\n if (this._repeat == value)\r\n return;\r\n this._repeat = value;\r\n //TODO: update dependencies\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sampler2D.prototype, \"imageRect\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._imageRect;\r\n },\r\n set: function (value) {\r\n if (this._imageRect == value)\r\n return;\r\n this._imageRect = value;\r\n this._updateRect();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sampler2D.prototype, \"frameRect\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._frameRect;\r\n },\r\n set: function (value) {\r\n if (this._frameRect == value)\r\n return;\r\n this._frameRect = value;\r\n this._updateRect();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sampler2D.prototype._updateRect = function () {\r\n };\r\n return Sampler2D;\r\n}(SamplerBase));\r\nexport { Sampler2D };\r\nSampler2D.assetType = \"[asset Sampler2D]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/Sampler2D.js","/**\r\n * The GraphicsPathWinding class provides values for the\r\n * flash.display.GraphicsPath.winding property and the\r\n * flash.display.Graphics.drawPath() method to determine the\r\n * direction to draw a path. A clockwise path is positively wound, and a\r\n * counter-clockwise path is negatively wound:\r\n *\r\n *

When paths intersect or overlap, the winding direction determines the\r\n * rules for filling the areas created by the intersection or overlap:

\r\n */\r\nvar GraphicsPathWinding = (function () {\r\n function GraphicsPathWinding() {\r\n }\r\n return GraphicsPathWinding;\r\n}());\r\nexport { GraphicsPathWinding };\r\nGraphicsPathWinding.EVEN_ODD = \"evenOdd\";\r\nGraphicsPathWinding.NON_ZERO = \"nonZero\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GraphicsPathWinding.js","/**\r\n * The JointStyle class is an enumeration of constant values that specify the\r\n * joint style to use in drawing lines. These constants are provided for use\r\n * as values in the joints parameter of the\r\n * flash.display.Graphics.lineStyle() method. The method supports\r\n * three types of joints: miter, round, and bevel, as the following example\r\n * shows:\r\n */\r\nvar JointStyle = (function () {\r\n function JointStyle() {\r\n }\r\n return JointStyle;\r\n}());\r\nexport { JointStyle };\r\n/**\r\n * Specifies beveled joints in the joints parameter of the\r\n * flash.display.Graphics.lineStyle() method.\r\n */\r\nJointStyle.BEVEL = 2;\r\n/**\r\n * Specifies mitered joints in the joints parameter of the\r\n * flash.display.Graphics.lineStyle() method.\r\n */\r\nJointStyle.MITER = 0;\r\n/**\r\n * Specifies round joints in the joints parameter of the\r\n * flash.display.Graphics.lineStyle() method.\r\n */\r\nJointStyle.ROUND = 1;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/JointStyle.js","import { JointStyle } from \"../draw/JointStyle\";\r\nimport { CapsStyle } from \"../draw/CapsStyle\";\r\nvar GraphicsStrokeStyle = (function () {\r\n function GraphicsStrokeStyle(color, alpha, thickness, jointstyle, capstyle, miter_limit) {\r\n if (color === void 0) { color = 0xffffff; }\r\n if (alpha === void 0) { alpha = 1; }\r\n if (thickness === void 0) { thickness = 10; }\r\n if (jointstyle === void 0) { jointstyle = JointStyle.ROUND; }\r\n if (capstyle === void 0) { capstyle = CapsStyle.SQUARE; }\r\n if (miter_limit === void 0) { miter_limit = 10; }\r\n this._color = color;\r\n this._alpha = alpha;\r\n this._thickness = thickness;\r\n this._jointstyle = jointstyle;\r\n this._capstyle = capstyle;\r\n this._miter_limit = miter_limit;\r\n }\r\n Object.defineProperty(GraphicsStrokeStyle.prototype, \"data_type\", {\r\n get: function () {\r\n return GraphicsStrokeStyle.data_type;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphicsStrokeStyle.prototype, \"color\", {\r\n get: function () {\r\n return this._color;\r\n },\r\n set: function (value) {\r\n this._color = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphicsStrokeStyle.prototype, \"alpha\", {\r\n get: function () {\r\n return this._alpha;\r\n },\r\n set: function (value) {\r\n this._alpha = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphicsStrokeStyle.prototype, \"half_thickness\", {\r\n get: function () {\r\n return this._thickness / 2;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphicsStrokeStyle.prototype, \"thickness\", {\r\n get: function () {\r\n return this._thickness;\r\n },\r\n set: function (value) {\r\n this._thickness = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphicsStrokeStyle.prototype, \"jointstyle\", {\r\n get: function () {\r\n return this._jointstyle;\r\n },\r\n set: function (value) {\r\n this._jointstyle = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphicsStrokeStyle.prototype, \"miter_limit\", {\r\n get: function () {\r\n return this._miter_limit;\r\n },\r\n set: function (value) {\r\n this._miter_limit = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphicsStrokeStyle.prototype, \"capstyle\", {\r\n get: function () {\r\n return this._capstyle;\r\n },\r\n set: function (value) {\r\n this._capstyle = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return GraphicsStrokeStyle;\r\n}());\r\nexport { GraphicsStrokeStyle };\r\nGraphicsStrokeStyle.data_type = \"[graphicsdata StrokeStyle]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GraphicsStrokeStyle.js","import { Point, MathConsts } from \"@awayjs/core\";\r\nimport { GraphicsPathWinding } from \"../draw/GraphicsPathWinding\";\r\nimport { GraphicsPathCommand } from \"../draw/GraphicsPathCommand\";\r\nimport { GraphicsFillStyle } from \"../draw/GraphicsFillStyle\";\r\nimport { GraphicsStrokeStyle } from \"../draw/GraphicsStrokeStyle\";\r\nimport { GraphicsFactoryHelper } from \"../draw/GraphicsFactoryHelper\";\r\n/**\r\n\r\n * Defines the values to use for specifying path-drawing commands.\r\n * The values in this class are used by the Graphics.drawPath() method,\r\n *or stored in the commands vector of a GraphicsPath object.\r\n */\r\nvar GraphicsPath = (function () {\r\n function GraphicsPath(commands, data, winding_rule) {\r\n if (commands === void 0) { commands = null; }\r\n if (data === void 0) { data = null; }\r\n if (winding_rule === void 0) { winding_rule = GraphicsPathWinding.EVEN_ODD; }\r\n this.forceClose = false;\r\n this._data = [];\r\n this._commands = [];\r\n this._style = null;\r\n this.verts = [];\r\n this._positions = [];\r\n this._newCommands = [];\r\n if (commands != null && data != null) {\r\n this._data[0] = data;\r\n this._commands[0] = commands;\r\n }\r\n else {\r\n this._data[0] = [];\r\n this._commands[0] = [];\r\n }\r\n this._startPoint = new Point();\r\n this._cur_point = new Point();\r\n this._winding_rule = winding_rule;\r\n this._winding_directions = [];\r\n }\r\n Object.defineProperty(GraphicsPath.prototype, \"data_type\", {\r\n get: function () {\r\n return GraphicsPath.data_type;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphicsPath.prototype, \"style\", {\r\n get: function () {\r\n return this._style;\r\n },\r\n set: function (value) {\r\n this._style = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n GraphicsPath.prototype.fill = function () {\r\n if (this._style == null)\r\n return null;\r\n if (this._style.data_type == GraphicsFillStyle.data_type)\r\n return this._style;\r\n return null;\r\n };\r\n GraphicsPath.prototype.stroke = function () {\r\n if (this._style == null)\r\n return null;\r\n if (this._style.data_type == GraphicsStrokeStyle.data_type)\r\n return this._style;\r\n return null;\r\n };\r\n Object.defineProperty(GraphicsPath.prototype, \"commands\", {\r\n get: function () {\r\n return this._commands;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphicsPath.prototype, \"data\", {\r\n get: function () {\r\n return this._data;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n GraphicsPath.prototype.curveTo = function (controlX, controlY, anchorX, anchorY) {\r\n // if controlpoint and anchor are same, we add lineTo command\r\n if ((controlX == anchorX) && (controlY == anchorY)) {\r\n this.lineTo(controlX, controlY);\r\n this.moveTo(anchorX, anchorY);\r\n return;\r\n }\r\n // if anchor is current point, but controlpoint is different, we lineto controlpoint\r\n if (((this._cur_point.x == anchorX) && (this._cur_point.y == anchorY)) && ((this._cur_point.x != controlX) || (this._cur_point.y != controlY))) {\r\n this.lineTo(controlX, controlY);\r\n this.moveTo(anchorX, anchorY);\r\n return;\r\n }\r\n // if controlpoint is current point, but anchor is different, we lineto anchor\r\n if (((this._cur_point.x != anchorX) || (this._cur_point.y != anchorY)) && ((this._cur_point.x == controlX) && (this._cur_point.y == controlY))) {\r\n this.lineTo(anchorX, anchorY);\r\n return;\r\n }\r\n // if controlpoint and anchor are same as current point\r\n if (((this._cur_point.x == anchorX) && (this._cur_point.y == anchorY)) && ((this._cur_point.x == controlX) && (this._cur_point.y == controlY))) {\r\n //console.log(\"curveTo command not added because startpoint and endpoint are the same.\");\r\n this.lineTo(anchorX, anchorY);\r\n return;\r\n }\r\n if (this._commands[this._commands.length - 1].length == 0) {\r\n // every contour must start with a moveTo command, so we make sure we have correct startpoint\r\n this._commands[this._commands.length - 1].push(GraphicsPathCommand.MOVE_TO);\r\n this._data[this._data.length - 1].push(this._cur_point.x);\r\n this._data[this._data.length - 1].push(this._cur_point.y);\r\n }\r\n this._commands[this._commands.length - 1].push(GraphicsPathCommand.CURVE_TO);\r\n this._data[this._data.length - 1].push(controlX);\r\n this._data[this._data.length - 1].push(controlY);\r\n this._data[this._data.length - 1].push(anchorX);\r\n this._data[this._data.length - 1].push(anchorY);\r\n this._cur_point.x = anchorX;\r\n this._cur_point.y = anchorY;\r\n };\r\n GraphicsPath.prototype.cubicCurveTo = function (controlX, controlY, control2X, control2Y, anchorX, anchorY) {\r\n console.log(\"cubicCurveTo not yet fully supported.\");\r\n if ((this._cur_point.x == anchorX) && (this._cur_point.y == anchorY)) {\r\n //console.log(\"curveTo command not added because startpoint and endpoint are the same.\");\r\n return;\r\n }\r\n if (this._commands[this._commands.length - 1].length == 0) {\r\n // every contour must start with a moveTo command, so we make sure we have correct startpoint\r\n this._commands[this._commands.length - 1].push(GraphicsPathCommand.MOVE_TO);\r\n this._data[this._data.length - 1].push(this._cur_point.x);\r\n this._data[this._data.length - 1].push(this._cur_point.y);\r\n }\r\n this._commands[this._commands.length - 1].push(GraphicsPathCommand.CURVE_TO);\r\n this._data[this._data.length - 1].push(controlX);\r\n this._data[this._data.length - 1].push(controlY);\r\n this._data[this._data.length - 1].push(anchorX);\r\n this._data[this._data.length - 1].push(anchorY);\r\n this._cur_point.x = anchorX;\r\n this._cur_point.y = anchorY;\r\n };\r\n GraphicsPath.prototype.lineTo = function (x, y) {\r\n if ((this._cur_point.x == x) && (this._cur_point.y == y)) {\r\n //console.log(\"lineTo command not added because startpoint and endpoint are the same.\");\r\n return;\r\n }\r\n if (this._commands[this._commands.length - 1].length == 0) {\r\n // every contour must start with a moveTo command, so we make sure we have correct startpoint\r\n this._commands[this._commands.length - 1].push(GraphicsPathCommand.MOVE_TO);\r\n this._data[this._data.length - 1].push(this._cur_point.x);\r\n this._data[this._data.length - 1].push(this._cur_point.y);\r\n }\r\n this._commands[this._commands.length - 1].push(GraphicsPathCommand.LINE_TO);\r\n this._data[this._data.length - 1].push(x);\r\n this._data[this._data.length - 1].push(y);\r\n this._cur_point.x = x;\r\n this._cur_point.y = y;\r\n };\r\n GraphicsPath.prototype.moveTo = function (x, y) {\r\n if ((this._cur_point.x == x) && (this._cur_point.y == y)) {\r\n //console.log(\"moveTo command not added because startpoint and endpoint are the same.\");\r\n return;\r\n }\r\n // whenever a moveTo command apears, we start a new contour\r\n if (this._commands[this._commands.length - 1].length > 0) {\r\n this._commands.push([GraphicsPathCommand.MOVE_TO]);\r\n this._data.push([x, y]);\r\n }\r\n this._startPoint.x = x;\r\n this._startPoint.y = y;\r\n this._cur_point.x = x;\r\n this._cur_point.y = y;\r\n };\r\n GraphicsPath.prototype.wideLineTo = function (x, y) {\r\n // not used\r\n /*\r\n this._commands.push(GraphicsPathCommand.WIDE_LINE_TO);\r\n this._data.push(0);\r\n this._data.push(0);\r\n this._data.push(x);\r\n this._data.push(y);\r\n */\r\n };\r\n GraphicsPath.prototype.wideMoveTo = function (x, y) {\r\n // not used\r\n /*\r\n this._commands.push(GraphicsPathCommand.WIDE_MOVE_TO);\r\n this._data.push(0);\r\n this._data.push(0);\r\n this._data.push(x);\r\n this._data.push(y);\r\n */\r\n };\r\n GraphicsPath.prototype.prepare = function () {\r\n var new_dir;\r\n var dir_delta;\r\n var last_direction;\r\n var closed;\r\n var tmp_dir_point = new Point();\r\n var prev_dir_vec = new Point();\r\n var prev_point = new Point();\r\n var end_point = new Point();\r\n var commands;\r\n var data;\r\n var c, i = 0;\r\n var cmd_len = this.commands.length;\r\n for (c = 0; c < cmd_len; c++) {\r\n commands = this.commands[c];\r\n data = this.data[c];\r\n new_dir = 0;\r\n dir_delta = 0;\r\n last_direction = 0;\r\n tmp_dir_point.x = 0;\r\n tmp_dir_point.y = 0;\r\n prev_dir_vec.x = 0;\r\n prev_dir_vec.y = 0;\r\n this._positions[c] = [];\r\n this._newCommands[c] = [];\r\n // check if the path is closed. \r\n // if its not closed, we optionally close it by adding the extra lineTo-cmd\r\n closed = true;\r\n if ((data[0] != data[data.length - 2]) || (data[1] != data[data.length - 1])) {\r\n if (this.forceClose) {\r\n commands[commands.length] = GraphicsPathCommand.LINE_TO;\r\n data[data.length] = data[0];\r\n data[data.length] = data[1];\r\n }\r\n else {\r\n closed = false;\r\n }\r\n }\r\n // if the path is closed, we init the prevDirection with the last segments direction\r\n if (closed) {\r\n //console.log(\"path is closed\");\r\n prev_dir_vec.x = data[data.length - 2] - data[data.length - 4];\r\n prev_dir_vec.y = data[data.length - 1] - data[data.length - 3];\r\n prev_dir_vec.normalize();\r\n last_direction = Math.atan2(prev_dir_vec.y, prev_dir_vec.x) * MathConsts.RADIANS_TO_DEGREES;\r\n }\r\n else {\r\n }\r\n var data_cnt = 0;\r\n prev_point.x = data[data_cnt++];\r\n prev_point.y = data[data_cnt++];\r\n var prev_x = prev_point.x;\r\n var prev_y = prev_point.y;\r\n this._positions[c].push(prev_point.x);\r\n this._positions[c].push(prev_point.y);\r\n this._newCommands[c].push(GraphicsPathCommand.MOVE_TO);\r\n var ctr_point = new Point();\r\n for (i = 1; i < commands.length; i++) {\r\n switch (commands[i]) {\r\n case GraphicsPathCommand.MOVE_TO:\r\n console.log(\"ERROR ! ONLY THE FIRST COMMAND FOR A CONTOUR IS ALLOWED TO BE A 'MOVE_TO' COMMAND\");\r\n break;\r\n case GraphicsPathCommand.LINE_TO:\r\n end_point = new Point(data[data_cnt++], data[data_cnt++]);\r\n // console.log(\"LINE_TO \", i, end_point.x, end_point.y);\r\n this._positions[c].push(end_point.x);\r\n this._positions[c].push(end_point.y);\r\n this._newCommands[c].push(GraphicsPathCommand.LINE_TO);\r\n prev_x = end_point.x;\r\n prev_y = end_point.y;\r\n break;\r\n case GraphicsPathCommand.CURVE_TO:\r\n end_point = new Point(data[data_cnt++], data[data_cnt++]);\r\n ctr_point = new Point(data[data_cnt++], data[data_cnt++]);\r\n //console.log(\"CURVE_TO \", i, ctr_point.x, ctr_point.y, end_point.x, end_point.y);\r\n var curve_verts = [];\r\n GraphicsFactoryHelper.tesselateCurve(prev_x, prev_y, ctr_point.x, ctr_point.y, end_point.x, end_point.y, curve_verts);\r\n var k_len = curve_verts.length;\r\n var k = 0;\r\n for (k = 0; k < k_len; k += 2) {\r\n var newPoint = new Point(curve_verts[k], curve_verts[k + 1]);\r\n // console.log(\"tesselated curve to \", k, newPoint.x, newPoint.y);\r\n this._newCommands[c].push(GraphicsPathCommand.LINE_TO);\r\n this._positions[c].push(newPoint.x);\r\n this._positions[c].push(newPoint.y);\r\n }\r\n prev_x = end_point.x;\r\n prev_y = end_point.y;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n return GraphicsPath;\r\n}());\r\nexport { GraphicsPath };\r\nGraphicsPath.data_type = \"[graphicsdata path]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GraphicsPath.js","/**\r\n * The LineScaleMode class provides values for the scaleMode\r\n * parameter in the Graphics.lineStyle() method.\r\n */\r\nvar LineScaleMode = (function () {\r\n function LineScaleMode() {\r\n }\r\n return LineScaleMode;\r\n}());\r\nexport { LineScaleMode };\r\n/**\r\n * With this setting used as the scaleMode parameter of the\r\n * lineStyle() method, the thickness of the line scales\r\n * only vertically. For example, consider the following circles, drawn\r\n * with a one-pixel line, and each with the scaleMode parameter\r\n * set to LineScaleMode.VERTICAL. The circle on the left is\r\n * scaled only vertically, and the circle on the right is scaled both\r\n * vertically and horizontally.\r\n */\r\nLineScaleMode.HORIZONTAL = \"horizontal\";\r\n/**\r\n * With this setting used as the scaleMode parameter of the\r\n * lineStyle() method, the thickness of the line never scales.\r\n */\r\nLineScaleMode.NONE = \"none\";\r\n/**\r\n * With this setting used as the scaleMode parameter of the\r\n * lineStyle() method, the thickness of the line always scales\r\n * when the object is scaled(the default).\r\n */\r\nLineScaleMode.NORMAL = \"normal\";\r\n/**\r\n * With this setting used as the scaleMode parameter of the\r\n * lineStyle() method, the thickness of the line scales\r\n * only horizontally. For example, consider the following circles,\r\n * drawn with a one-pixel line, and each with the scaleMode\r\n * parameter set to LineScaleMode.HORIZONTAL. The circle on the\r\n * left is scaled only horizontally, and the circle on the right is scaled\r\n * both vertically and horizontally.\r\n */\r\nLineScaleMode.VERTICAL = \"vertical\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/LineScaleMode.js","import { Point, AttributesView, Float2Attributes, MathConsts, Matrix } from \"@awayjs/core\";\r\nimport { TriangleElements } from \"../elements/TriangleElements\";\r\nimport { JointStyle } from \"../draw/JointStyle\";\r\nimport { GraphicsPathCommand } from \"../draw/GraphicsPathCommand\";\r\nimport { GraphicsFactoryHelper } from \"../draw/GraphicsFactoryHelper\";\r\nimport { LineScaleMode } from \"../draw/LineScaleMode\";\r\nimport { Shape } from \"../base/Shape\";\r\nimport { Graphics } from \"../Graphics\";\r\nimport { Style } from \"../base/Style\";\r\nimport { Sampler2D } from \"../image/Sampler2D\";\r\n/**\r\n * The Graphics class contains a set of methods that you can use to create a\r\n * vector shape. Display objects that support drawing include Sprite and Shape\r\n * objects. Each of these classes includes a graphics property\r\n * that is a Graphics object. The following are among those helper functions\r\n * provided for ease of use: drawRect(),\r\n * drawRoundRect(), drawCircle(), and\r\n * drawEllipse().\r\n *\r\n *

You cannot create a Graphics object directly from ActionScript code. If\r\n * you call new Graphics(), an exception is thrown.

\r\n *\r\n *

The Graphics class is final; it cannot be subclassed.

\r\n */\r\nvar GraphicsFactoryStrokes = (function () {\r\n function GraphicsFactoryStrokes() {\r\n }\r\n GraphicsFactoryStrokes.draw_pathes = function (targetGraphics) {\r\n var len = targetGraphics.queued_stroke_pathes.length;\r\n var i = 0;\r\n for (i = 0; i < len; i++) {\r\n var strokePath = targetGraphics.queued_stroke_pathes[i];\r\n var strokeStyle = strokePath.style;\r\n var obj = Graphics.get_material_for_color(strokeStyle.color, strokeStyle.alpha);\r\n var material = obj.material;\r\n var final_vert_list = [];\r\n strokePath.prepare();\r\n GraphicsFactoryStrokes.draw_path([strokePath], final_vert_list, material.curves);\r\n final_vert_list = final_vert_list.concat(strokePath.verts);\r\n var attributesView = new AttributesView(Float32Array, material.curves ? 3 : 2);\r\n attributesView.set(final_vert_list);\r\n var attributesBuffer = attributesView.attributesBuffer;\r\n attributesView.dispose();\r\n var elements = new TriangleElements(attributesBuffer);\r\n elements.setPositions(new Float2Attributes(attributesBuffer));\r\n elements.halfStrokeThickness = strokeStyle.half_thickness;\r\n //\tif(material.curves)\r\n //\t\telements.setCustomAttributes(\"curves\", new Byte4Attributes(attributesBuffer, false));\r\n //\tmaterial.alpha=(this.queued_stroke_pathes[i].style).alpha;\r\n var shape = targetGraphics.addShape(Shape.getShape(elements, material));\r\n shape.isStroke = true;\r\n shape.strokePath = strokePath;\r\n shape.elements;\r\n if (obj.colorPos) {\r\n shape.style = new Style();\r\n var sampler = new Sampler2D();\r\n material.animateUVs = true;\r\n shape.style.addSamplerAt(sampler, material.getTextureAt(0));\r\n shape.style.uvMatrix = new Matrix(0, 0, 0, 0, obj.colorPos.x, obj.colorPos.y);\r\n }\r\n }\r\n targetGraphics.queued_stroke_pathes.length = 0;\r\n /*\r\n var len=graphic_pathes.length;\r\n var one_path:GraphicsPath;\r\n var cp, i=0;\r\n for(cp=0; cp 180) {\r\n dir_delta -= 360;\r\n }\r\n if (dir_delta < -180) {\r\n dir_delta += 360;\r\n }\r\n //console.log(\"DIRECTION DELTA: \"+dir_delta);\r\n last_direction = new_dir;\r\n //console.log(\"segment \"+i+\" direction: \"+dir_delta);\r\n // rotate direction around 90 degree\r\n tmp_point.x = -1 * tmp_dir_point.y;\r\n tmp_point.y = tmp_dir_point.x;\r\n ri_point = new Point(lastPoint.x + (tmp_point.x * half_thickness), lastPoint.y + (tmp_point.y * half_thickness));\r\n le_point = new Point(lastPoint.x - (tmp_point.x * half_thickness), lastPoint.y - (tmp_point.y * half_thickness));\r\n var add_segment = false;\r\n // check if this is the first segment, and the path is not closed\r\n // in this case, we can just set the points to the contour points\r\n if ((i == 1) && (!closed)) {\r\n //console.log(\"segment \"+i+\"Path is not closed, we can just add the first segment\")\r\n add_segment = true;\r\n }\r\n else {\r\n // we need to figure out if we need to add a joint or not\r\n if ((dir_delta == 0) || (dir_delta == 180)) {\r\n // check if this and the prev segment was a line. if yes, than they can be merged\r\n if ((i != 1) && (commands[i] == GraphicsPathCommand.LINE_TO) && (new_cmds[new_cmds.length - 1] == GraphicsPathCommand.LINE_TO)) {\r\n //console.log(\"straight line can be merged in prev straight line\");\r\n add_segment = false;\r\n }\r\n else {\r\n add_segment = true;\r\n }\r\n }\r\n if (Math.abs(dir_delta) >= 179.9997 && Math.abs(dir_delta) <= 180.0003) {\r\n add_segment = true;\r\n }\r\n else if (dir_delta != 0) {\r\n add_segment = true;\r\n var half_angle = (180 - (dir_delta));\r\n if (dir_delta < 0) {\r\n half_angle = (-180 - (dir_delta));\r\n }\r\n half_angle = half_angle * -0.5 * MathConsts.DEGREES_TO_RADIANS;\r\n var distance = half_thickness / Math.sin(half_angle);\r\n tmp_point2.x = tmp_dir_point.x * Math.cos(half_angle) + tmp_dir_point.y * Math.sin(half_angle);\r\n tmp_point2.y = tmp_dir_point.y * Math.cos(half_angle) - tmp_dir_point.x * Math.sin(half_angle);\r\n tmp_point2.normalize();\r\n var merged_pnt_ri = new Point(lastPoint.x - (tmp_point2.x * distance), lastPoint.y - (tmp_point2.y * distance));\r\n var merged_pnt_le = new Point(lastPoint.x + (tmp_point2.x * distance), lastPoint.y + (tmp_point2.y * distance));\r\n if (dir_delta > 0) {\r\n ri_point = merged_pnt_ri;\r\n var contour_le = new Point(lastPoint.x - (tmp_point.x * half_thickness), lastPoint.y - (tmp_point.y * half_thickness));\r\n var contour_prev_le = new Point(lastPoint.x - (prev_normal.x * half_thickness), lastPoint.y - (prev_normal.y * half_thickness));\r\n le_point = contour_le;\r\n }\r\n else {\r\n le_point = merged_pnt_le;\r\n var contour_ri = new Point(lastPoint.x + (tmp_point.x * half_thickness), lastPoint.y + (tmp_point.y * half_thickness));\r\n var contour_prev_ri = new Point(lastPoint.x + (prev_normal.x * half_thickness), lastPoint.y + (prev_normal.y * half_thickness));\r\n ri_point = contour_ri;\r\n }\r\n var addJoints = true;\r\n if (strokeStyle.jointstyle == JointStyle.MITER) {\r\n var distance_miter = (Math.sqrt((distance * distance) - (half_thickness * half_thickness)) / half_thickness);\r\n if (distance_miter <= strokeStyle.miter_limit) {\r\n addJoints = false;\r\n ri_point = merged_pnt_ri;\r\n le_point = merged_pnt_le;\r\n }\r\n else {\r\n if (dir_delta > 0) {\r\n contour_le.x = contour_le.x - (tmp_dir_point.x * (strokeStyle.miter_limit * half_thickness));\r\n contour_le.y = contour_le.y - (tmp_dir_point.y * (strokeStyle.miter_limit * half_thickness));\r\n tmp_point3.x = prev_normal.y * -1;\r\n tmp_point3.y = prev_normal.x;\r\n contour_prev_le.x = contour_prev_le.x - (tmp_point3.x * (strokeStyle.miter_limit * half_thickness));\r\n contour_prev_le.y = contour_prev_le.y - (tmp_point3.y * (strokeStyle.miter_limit * half_thickness));\r\n }\r\n else {\r\n contour_ri.x = contour_ri.x - (tmp_dir_point.x * (strokeStyle.miter_limit * half_thickness));\r\n contour_ri.y = contour_ri.y - (tmp_dir_point.y * (strokeStyle.miter_limit * half_thickness));\r\n tmp_point3.x = prev_normal.y * -1;\r\n tmp_point3.y = prev_normal.x;\r\n contour_prev_ri.x = contour_prev_ri.x - (tmp_point3.x * (strokeStyle.miter_limit * half_thickness));\r\n contour_prev_ri.y = contour_prev_ri.y - (tmp_point3.y * (strokeStyle.miter_limit * half_thickness));\r\n }\r\n }\r\n }\r\n if (addJoints) {\r\n new_cmds[new_cmds_cnt++] = (strokeStyle.jointstyle != JointStyle.ROUND) ? GraphicsPathCommand.BUILD_JOINT : GraphicsPathCommand.BUILD_ROUND_JOINT;\r\n if (dir_delta > 0) {\r\n new_pnts[new_pnts_cnt++] = merged_pnt_ri;\r\n new_pnts[new_pnts_cnt++] = contour_prev_le;\r\n new_pnts[new_pnts_cnt++] = contour_le;\r\n }\r\n else {\r\n new_pnts[new_pnts_cnt++] = contour_prev_ri;\r\n new_pnts[new_pnts_cnt++] = merged_pnt_le;\r\n new_pnts[new_pnts_cnt++] = contour_ri;\r\n }\r\n if (strokeStyle.jointstyle == JointStyle.ROUND) {\r\n new_pnts[new_pnts_cnt++] = new Point(lastPoint.x - (tmp_point2.x * Math.abs(distance)), lastPoint.y - (tmp_point2.y * Math.abs(distance)));\r\n if (dir_delta > 0) {\r\n new_pnts[new_pnts_cnt++] = contour_prev_le;\r\n new_pnts[new_pnts_cnt++] = contour_le;\r\n }\r\n else {\r\n new_pnts[new_pnts_cnt++] = contour_prev_ri;\r\n new_pnts[new_pnts_cnt++] = contour_ri;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n prev_normal.x = tmp_point.x;\r\n prev_normal.y = tmp_point.y;\r\n if (add_segment) {\r\n if (commands[i] == GraphicsPathCommand.LINE_TO) {\r\n new_cmds[new_cmds_cnt++] = GraphicsPathCommand.LINE_TO;\r\n new_pnts[new_pnts_cnt++] = ri_point;\r\n new_pnts[new_pnts_cnt++] = le_point;\r\n }\r\n else if (commands[i] == GraphicsPathCommand.CURVE_TO) {\r\n tmp_dir_point.x = curve_end_point.x - end_point.x;\r\n tmp_dir_point.y = curve_end_point.y - end_point.y;\r\n tmp_dir_point.normalize();\r\n new_dir = Math.atan2(tmp_dir_point.y, tmp_dir_point.x) * MathConsts.RADIANS_TO_DEGREES;\r\n dir_delta = new_dir - last_direction;\r\n last_direction = new_dir;\r\n tmp_point.x = -1 * tmp_dir_point.y;\r\n tmp_point.y = tmp_dir_point.x;\r\n if ((dir_delta != 0) && (dir_delta != 180)) {\r\n new_cmds[new_cmds_cnt++] = GraphicsPathCommand.CURVE_TO;\r\n new_pnts[new_pnts_cnt++] = ri_point;\r\n new_pnts[new_pnts_cnt++] = le_point;\r\n new_pnts[new_pnts_cnt++] = new Point(lastPoint.x, lastPoint.y);\r\n new_pnts[new_pnts_cnt++] = new Point(end_point.x, end_point.y);\r\n new_pnts[new_pnts_cnt++] = curve_end_point;\r\n }\r\n else {\r\n new_cmds[new_cmds_cnt++] = GraphicsPathCommand.LINE_TO;\r\n new_pnts[new_pnts_cnt++] = ri_point;\r\n new_pnts[new_pnts_cnt++] = le_point;\r\n }\r\n prev_normal.x = tmp_point.x;\r\n prev_normal.y = tmp_point.y;\r\n lastPoint = curve_end_point;\r\n }\r\n }\r\n if (commands[i] == GraphicsPathCommand.LINE_TO) {\r\n lastPoint = end_point;\r\n }\r\n if (i == commands.length - 1) {\r\n if (!closed) {\r\n new_cmds[new_cmds_cnt++] = GraphicsPathCommand.NO_OP;\r\n new_pnts[new_pnts_cnt++] = new Point(lastPoint.x + (tmp_point.x * half_thickness), lastPoint.y + (tmp_point.y * half_thickness));\r\n new_pnts[new_pnts_cnt++] = new Point(lastPoint.x - (tmp_point.x * half_thickness), lastPoint.y - (tmp_point.y * half_thickness));\r\n }\r\n else {\r\n new_cmds[new_cmds_cnt++] = GraphicsPathCommand.NO_OP;\r\n new_pnts[new_pnts_cnt++] = new_pnts[0];\r\n new_pnts[new_pnts_cnt++] = new_pnts[1];\r\n }\r\n }\r\n }\r\n }\r\n // first we draw all the curves:\r\n new_cmds_cnt = 0;\r\n new_pnts_cnt = 0;\r\n for (i = 0; i < new_cmds.length; i++) {\r\n if (new_cmds[i] == GraphicsPathCommand.LINE_TO) {\r\n new_pnts_cnt += 2;\r\n }\r\n else if (new_cmds[i] == GraphicsPathCommand.CURVE_TO) {\r\n if (curves) {\r\n start_right = new_pnts[new_pnts_cnt++];\r\n start_left = new_pnts[new_pnts_cnt++];\r\n start_point = new_pnts[new_pnts_cnt++];\r\n ctr_point = new_pnts[new_pnts_cnt++];\r\n end_point = new_pnts[new_pnts_cnt++];\r\n end_right = new_pnts[new_pnts_cnt];\r\n end_left = new_pnts[new_pnts_cnt + 1];\r\n // get the directional vector for the first part of the curve\r\n tmp_dir_point.x = ctr_point.x - start_point.x;\r\n tmp_dir_point.y = ctr_point.y - start_point.y;\r\n tmp_point3.x = ctr_point.x - start_point.x;\r\n tmp_point3.y = ctr_point.y - start_point.y;\r\n var length1 = tmp_point3.length;\r\n tmp_dir_point.normalize();\r\n // get the directional vector for the second part of the curve\r\n tmp_point2.x = end_point.x - ctr_point.x;\r\n tmp_point2.y = end_point.y - ctr_point.y;\r\n var length2 = tmp_point2.length;\r\n tmp_point2.normalize();\r\n var length_calc = 0.5 - ((length2 - length1) / length1) * 0.5;\r\n if (length1 > length2) {\r\n length_calc = 0.5 + ((length1 - length2) / length2) * 0.5;\r\n }\r\n // get angle to positive x-axis for both dir-vectors, than get the difference between those\r\n var angle_1 = Math.atan2(tmp_dir_point.y, tmp_dir_point.x) * MathConsts.RADIANS_TO_DEGREES;\r\n var angle_2 = Math.atan2(tmp_point2.y, tmp_point2.x) * MathConsts.RADIANS_TO_DEGREES;\r\n dir_delta = angle_2 - angle_1;\r\n if (dir_delta > 180)\r\n dir_delta -= 360;\r\n if (dir_delta < -180)\r\n dir_delta += 360;\r\n //var half_angle:number=dir_delta*0.5*MathConsts.DEGREES_TO_RADIANS;\r\n //var distance:number=half_thickness / Math.sin(half_angle);\r\n //tmp_point3.x = tmp_point2.x * Math.cos(half_angle) + tmp_point2.y * Math.sin(half_angle);\r\n //tmp_point3.y = tmp_point2.y * Math.cos(half_angle) - tmp_point2.x * Math.sin(half_angle);\r\n //tmp_point3.normalize();\r\n //var merged_pnt_ri:Point = new Point(ctr_point.x - (tmp_point3.x * distance), ctr_point.y - (tmp_point3.y * distance));\r\n //var merged_pnt_le:Point = new Point(ctr_point.x + (tmp_point3.x * distance), ctr_point.y + (tmp_point3.y * distance));\r\n var curve_x = GraphicsFactoryHelper.getQuadricBezierPosition(0.5, start_point.x, ctr_point.x, end_point.x);\r\n var curve_y = GraphicsFactoryHelper.getQuadricBezierPosition(0.5, start_point.y, ctr_point.y, end_point.y);\r\n var curve_2x = GraphicsFactoryHelper.getQuadricBezierPosition(0.501, start_point.x, ctr_point.x, end_point.x);\r\n var curve_2y = GraphicsFactoryHelper.getQuadricBezierPosition(0.501, start_point.y, ctr_point.y, end_point.y);\r\n tmp_point3.x = -1 * (curve_y - curve_2y);\r\n tmp_point3.y = curve_x - curve_2x;\r\n tmp_point3.normalize();\r\n //GraphicsFactoryHelper.drawPoint(curve_x,curve_y, final_vert_list);\r\n // move the point on the curve to use correct thickness\r\n ctr_right.x = curve_x - (tmp_point3.x * half_thickness);\r\n ctr_right.y = curve_y - (tmp_point3.y * half_thickness);\r\n ctr_left.x = curve_x + (tmp_point3.x * half_thickness);\r\n ctr_left.y = curve_y + (tmp_point3.y * half_thickness);\r\n //GraphicsFactoryHelper.drawPoint(ctr_right.x, ctr_right.y , final_vert_list);\r\n //GraphicsFactoryHelper.drawPoint(ctr_left.x, ctr_left.y , final_vert_list);\r\n // calculate the actual controlpoints\r\n ctr_right.x = ctr_right.x * 2 - start_right.x / 2 - end_right.x / 2;\r\n ctr_right.y = ctr_right.y * 2 - start_right.y / 2 - end_right.y / 2;\r\n ctr_left.x = ctr_left.x * 2 - start_left.x / 2 - end_left.x / 2;\r\n ctr_left.y = ctr_left.y * 2 - start_left.y / 2 - end_left.y / 2;\r\n //ctr_right=merged_pnt_ri;\r\n //ctr_left=merged_pnt_le;\r\n /*\r\n // controlpoints version2:\r\n tmp_dir_point.x = start_left.x-start_right.x;\r\n tmp_dir_point.y = start_left.y-start_right.y;\r\n tmp_point2.x = end_left.x-end_right.x;\r\n tmp_point2.y = end_left.y-end_right.y;\r\n\r\n ctr_right.x = ctr_point.x-(tmp_dir_point.x/2);\r\n ctr_right.y = ctr_point.y-(tmp_dir_point.y/2);\r\n var new_end_ri:Point = new Point(end_point.x+(tmp_dir_point.x/2), end_point.y+(tmp_dir_point.y/2));\r\n\r\n ctr_left.x = ctr_point.x+(tmp_dir_point.x/2);\r\n ctr_left.y = ctr_point.y+(tmp_dir_point.y/2);\r\n var new_end_le:Point = new Point(end_point.x-(tmp_dir_point.x/2), end_point.y-(tmp_dir_point.y/2));\r\n\r\n */\r\n /*\r\n tmp_point2.x=ctr_point.x-start_point.x;\r\n tmp_point2.y=ctr_point.y-start_point.y;\r\n var m1:number=tmp_point2.y/tmp_point2.x;\r\n tmp_point2.x=end_point.x-ctr_point.x;\r\n tmp_point2.y=end_point.y-ctr_point.y;\r\n var m2:number=tmp_point2.y/tmp_point2.x;\r\n\r\n if(m1==m2){\r\n console.log(\"lines for curve are parallel - this should not be possible!\")\r\n }\r\n if((!isFinite(m1))&&(!isFinite(m2))){\r\n console.log(\"both lines are vertical - this should not be possible!\")\r\n }\r\n else if((isFinite(m1))&&(isFinite(m2))) {\r\n var b_r1:number = start_right.y - (m1 * start_right.x);\r\n var b_l1:number = start_left.y - (m1 * start_left.x);\r\n var b_r2:number = end_right.y - (m2 * end_right.x);\r\n var b_l2:number = end_left.y - (m2 * end_left.x);\r\n ctr_right.x = (b_r2 - b_r1) / (m1 - m2);\r\n ctr_right.y = m1 * ctr_right.x + b_r1;\r\n ctr_left.x = (b_l2 - b_l1) / (m1 - m2);\r\n ctr_left.y = m1 * ctr_left.x + b_l1;\r\n }\r\n else if((!isFinite(m1))&&(isFinite(m2))) {\r\n console.log(\"second part of curve is vertical line\");\r\n var b_r2:number = end_right.y - (m2 * end_right.x);\r\n var b_l2:number = end_left.y - (m2 * end_left.x);\r\n ctr_right.x = start_right.x;\r\n ctr_right.y = m2 * ctr_right.x + b_r2;\r\n ctr_left.x = start_left.x;\r\n ctr_left.y = m2 * ctr_left.x + b_l2;\r\n }\r\n else if((isFinite(m1))&&(!isFinite(m2))) {\r\n console.log(\"first part of curve is vertical line\");\r\n var b_r1:number = start_right.y - (m1 * start_right.x);\r\n var b_l1:number = start_left.y - (m1 * start_left.x);\r\n ctr_right.x = end_right.x;\r\n ctr_right.y = m1 * ctr_right.x + b_r1;\r\n ctr_left.x = end_left.x;\r\n ctr_left.y = m1 * ctr_left.x + b_l1;\r\n }\r\n */\r\n /*\r\n tmp_point2.x=ctr_right.x-ctr_left.x;\r\n tmp_point2.y=ctr_right.y-ctr_left.y;\r\n if(tmp_point2.length!=strokeStyle.thickness){\r\n\r\n tmp_point.x=ctr_left.x+tmp_point2.x*0.5;\r\n tmp_point.y=ctr_left.y+tmp_point2.y*0.5;\r\n tmp_point2.normalize();\r\n ctr_left.x=tmp_point.x-tmp_point2.x*half_thickness;\r\n ctr_left.y=tmp_point.y-tmp_point2.y*half_thickness;\r\n ctr_right.x=tmp_point.x+tmp_point2.x*half_thickness;\r\n ctr_right.y=tmp_point.y+tmp_point2.y*half_thickness;\r\n }\r\n */\r\n //ctr_right=ctr_point;\r\n //ctr_left=ctr_point;\r\n //console.log(start_point.x);\r\n //console.log(start_point.y);\r\n //console.log(ctr_point.x);\r\n //console.log(ctr_point.y);\r\n //console.log(end_point.x);\r\n //console.log(end_point.y);\r\n var subdivided = [];\r\n var subdivided2 = [];\r\n GraphicsFactoryHelper.subdivideCurve(start_right.x, start_right.y, ctr_right.x, ctr_right.y, end_right.x, end_right.y, start_left.x, start_left.y, ctr_left.x, ctr_left.y, end_left.x, end_left.y, subdivided, subdivided2);\r\n if (dir_delta > 0) {\r\n for (var sc = 0; sc < subdivided.length / 6; sc++) {\r\n // right curved\r\n // concave curves:\r\n GraphicsFactoryHelper.addTriangle(subdivided[sc * 6], subdivided[sc * 6 + 1], subdivided[sc * 6 + 2], subdivided[sc * 6 + 3], subdivided[sc * 6 + 4], subdivided[sc * 6 + 5], -128, final_vert_list, curves);\r\n // fills\r\n GraphicsFactoryHelper.addTriangle(subdivided2[sc * 6], subdivided2[sc * 6 + 1], subdivided[sc * 6], subdivided[sc * 6 + 1], subdivided[sc * 6 + 2], subdivided[sc * 6 + 3], 0, final_vert_list, curves);\r\n GraphicsFactoryHelper.addTriangle(subdivided2[sc * 6], subdivided2[sc * 6 + 1], subdivided2[sc * 6 + 4], subdivided2[sc * 6 + 5], subdivided[sc * 6 + 2], subdivided[sc * 6 + 3], 0, final_vert_list, curves);\r\n GraphicsFactoryHelper.addTriangle(subdivided2[sc * 6 + 4], subdivided2[sc * 6 + 5], subdivided[sc * 6 + 2], subdivided[sc * 6 + 3], subdivided[sc * 6 + 4], subdivided[sc * 6 + 5], 0, final_vert_list, curves);\r\n // convex curves:\r\n GraphicsFactoryHelper.addTriangle(subdivided2[sc * 6], subdivided2[sc * 6 + 1], subdivided2[sc * 6 + 2], subdivided2[sc * 6 + 3], subdivided2[sc * 6 + 4], subdivided2[sc * 6 + 5], 127, final_vert_list, curves);\r\n }\r\n }\r\n else {\r\n for (var sc = 0; sc < subdivided.length / 6; sc++) {\r\n // left curved\r\n // convex curves:\r\n GraphicsFactoryHelper.addTriangle(subdivided[sc * 6], subdivided[sc * 6 + 1], subdivided[sc * 6 + 2], subdivided[sc * 6 + 3], subdivided[sc * 6 + 4], subdivided[sc * 6 + 5], 127, final_vert_list, curves);\r\n // fills\r\n GraphicsFactoryHelper.addTriangle(subdivided[sc * 6], subdivided[sc * 6 + 1], subdivided2[sc * 6], subdivided2[sc * 6 + 1], subdivided2[sc * 6 + 2], subdivided2[sc * 6 + 3], 0, final_vert_list, curves);\r\n GraphicsFactoryHelper.addTriangle(subdivided[sc * 6], subdivided[sc * 6 + 1], subdivided[sc * 6 + 4], subdivided[sc * 6 + 5], subdivided2[sc * 6 + 2], subdivided2[sc * 6 + 3], 0, final_vert_list, curves);\r\n GraphicsFactoryHelper.addTriangle(subdivided[sc * 6 + 4], subdivided[sc * 6 + 5], subdivided2[sc * 6 + 2], subdivided2[sc * 6 + 3], subdivided2[sc * 6 + 4], subdivided2[sc * 6 + 5], 0, final_vert_list, curves);\r\n // concave curves:\r\n GraphicsFactoryHelper.addTriangle(subdivided2[sc * 6], subdivided2[sc * 6 + 1], subdivided2[sc * 6 + 2], subdivided2[sc * 6 + 3], subdivided2[sc * 6 + 4], subdivided2[sc * 6 + 5], -128, final_vert_list, curves);\r\n }\r\n }\r\n }\r\n else {\r\n start_right = new_pnts[new_pnts_cnt++];\r\n start_left = new_pnts[new_pnts_cnt++];\r\n start_point = new_pnts[new_pnts_cnt++];\r\n ctr_point = new_pnts[new_pnts_cnt++];\r\n end_point = new_pnts[new_pnts_cnt++];\r\n end_right = new_pnts[new_pnts_cnt];\r\n end_left = new_pnts[new_pnts_cnt + 1];\r\n var curve_verts = [];\r\n GraphicsFactoryHelper.tesselateCurve(start_point.x, start_point.y, ctr_point.x, ctr_point.y, end_right.x, end_right.y, curve_verts);\r\n var c_cnt = curve_verts.length;\r\n while (c_cnt > 0) {\r\n c_cnt -= 2;\r\n }\r\n }\r\n }\r\n else if (new_cmds[i] >= GraphicsPathCommand.BUILD_JOINT) {\r\n new_pnts_cnt += 3;\r\n if (new_cmds[i] == GraphicsPathCommand.BUILD_ROUND_JOINT) {\r\n end_left = new_pnts[new_pnts_cnt++]; // concave curves:\r\n start_right = new_pnts[new_pnts_cnt++];\r\n start_left = new_pnts[new_pnts_cnt++];\r\n GraphicsFactoryHelper.addTriangle(start_right.x, start_right.y, end_left.x, end_left.y, start_left.x, start_left.y, -1, final_vert_list, curves);\r\n }\r\n }\r\n }\r\n // now we draw all the normal triangles.\r\n // we do it in 2 steps, to prevent curves cut anything out of underlying normal tris\r\n new_cmds_cnt = 0;\r\n new_pnts_cnt = 0;\r\n for (i = 0; i < new_cmds.length; i++) {\r\n if (new_cmds[i] == GraphicsPathCommand.LINE_TO) {\r\n start_right = new_pnts[new_pnts_cnt++];\r\n start_left = new_pnts[new_pnts_cnt++];\r\n end_right = new_pnts[new_pnts_cnt];\r\n end_left = new_pnts[new_pnts_cnt + 1];\r\n //0GraphicsFactoryHelper.drawPoint(start_right.x,start_right.y, final_vert_list, false);\r\n //GraphicsFactoryHelper.drawPoint(start_left.x,start_left.y, final_vert_list, false);\r\n //GraphicsFactoryHelper.drawPoint(end_right.x,end_right.y, final_vert_list, false);\r\n //GraphicsFactoryHelper.drawPoint(end_left.x,end_left.y, final_vert_list, false);\r\n GraphicsFactoryHelper.addTriangle(start_right.x, start_right.y, end_right.x, end_right.y, start_left.x, start_left.y, 0, final_vert_list, curves);\r\n GraphicsFactoryHelper.addTriangle(start_left.x, start_left.y, end_right.x, end_right.y, end_left.x, end_left.y, 0, final_vert_list, curves);\r\n }\r\n else if (new_cmds[i] == GraphicsPathCommand.CURVE_TO) {\r\n new_pnts_cnt += 5;\r\n }\r\n else if (new_cmds[i] >= GraphicsPathCommand.BUILD_JOINT) {\r\n end_right = new_pnts[new_pnts_cnt++];\r\n start_right = new_pnts[new_pnts_cnt++];\r\n start_left = new_pnts[new_pnts_cnt++];\r\n GraphicsFactoryHelper.addTriangle(start_right.x, start_right.y, start_left.x, start_left.y, end_right.x, end_right.y, 0, final_vert_list, curves);\r\n if (new_cmds[i] == GraphicsPathCommand.BUILD_ROUND_JOINT) {\r\n new_pnts_cnt += 3;\r\n }\r\n }\r\n }\r\n if (!closed) {\r\n last_dir_vec.x = data[2] - data[0];\r\n last_dir_vec.y = data[3] - data[1];\r\n last_dir_vec.normalize();\r\n GraphicsFactoryHelper.createCap(data[0], data[1], new_pnts[0], new_pnts[1], last_dir_vec, strokeStyle.capstyle, -128, half_thickness, final_vert_list, curves);\r\n last_dir_vec.x = data[data.length - 2] - data[data.length - 4];\r\n last_dir_vec.y = data[data.length - 1] - data[data.length - 3];\r\n last_dir_vec.normalize();\r\n GraphicsFactoryHelper.createCap(data[data.length - 2], data[data.length - 1], new_pnts[new_pnts.length - 2], new_pnts[new_pnts.length - 1], last_dir_vec, strokeStyle.capstyle, 127, half_thickness, final_vert_list, curves);\r\n }\r\n }\r\n }\r\n //targetGraphic.queued_stroke_pathes.length=0;\r\n };\r\n return GraphicsFactoryStrokes;\r\n}());\r\nexport { GraphicsFactoryStrokes };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GraphicsFactoryStrokes.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView, Byte4Attributes, Float1Attributes } from \"@awayjs/core\";\r\nimport { TraverserBase } from \"../base/TraverserBase\";\r\nimport { ElementsUtils } from \"../utils/ElementsUtils\";\r\nimport { ElementsBase } from \"./ElementsBase\";\r\n/**\r\n * @class LineElements\r\n */\r\nvar LineElements = (function (_super) {\r\n tslib_1.__extends(LineElements, _super);\r\n /**\r\n *\r\n */\r\n function LineElements(concatenatedBuffer) {\r\n if (concatenatedBuffer === void 0) { concatenatedBuffer = null; }\r\n var _this = _super.call(this, concatenatedBuffer) || this;\r\n _this._positions = new AttributesView(Float32Array, 6, concatenatedBuffer);\r\n return _this;\r\n }\r\n Object.defineProperty(LineElements.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return LineElements.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineElements.prototype, \"traverseName\", {\r\n get: function () {\r\n return LineElements.traverseName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineElements.prototype, \"positions\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._positions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineElements.prototype, \"thickness\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._thickness;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineElements.prototype, \"colors\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (!this._colors)\r\n this.setColors(this._colors);\r\n return this._colors;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LineElements.prototype.getBoxBounds = function (target) {\r\n if (target === void 0) { target = null; }\r\n //TODO bounding calculations for lines\r\n return target;\r\n };\r\n LineElements.prototype.getSphereBounds = function (center, target) {\r\n if (target === void 0) { target = null; }\r\n //TODO bounding calculations for lines\r\n return target;\r\n };\r\n LineElements.prototype.setPositions = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (values instanceof AttributesView) {\r\n this.clearVertices(this._positions);\r\n this._positions = values;\r\n }\r\n else if (values) {\r\n var i = 0;\r\n var j = 0;\r\n var index = 0;\r\n var positions = new Float32Array(values.length * 4);\r\n var indices = new Uint16Array(values.length);\r\n while (i < values.length) {\r\n if (index / 6 & 1) {\r\n positions[index] = values[i + 3];\r\n positions[index + 1] = values[i + 4];\r\n positions[index + 2] = values[i + 5];\r\n positions[index + 3] = values[i];\r\n positions[index + 4] = values[i + 1];\r\n positions[index + 5] = values[i + 2];\r\n }\r\n else {\r\n positions[index] = values[i];\r\n positions[index + 1] = values[i + 1];\r\n positions[index + 2] = values[i + 2];\r\n positions[index + 3] = values[i + 3];\r\n positions[index + 4] = values[i + 4];\r\n positions[index + 5] = values[i + 5];\r\n }\r\n index += 6;\r\n if (++j == 4) {\r\n var o = index / 6 - 4;\r\n indices.set([o, o + 1, o + 2, o + 3, o + 2, o + 1], i);\r\n j = 0;\r\n i += 6;\r\n }\r\n }\r\n this._positions.set(positions, offset * 4);\r\n this.setIndices(indices, offset);\r\n }\r\n else {\r\n this.clearVertices(this._positions);\r\n this._positions = new AttributesView(Float32Array, 6, this._concatenatedBuffer);\r\n }\r\n this._numVertices = this._positions.count;\r\n this.invalidateVertices(this._positions);\r\n this._verticesDirty[this._positions.id] = false;\r\n };\r\n LineElements.prototype.setThickness = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (values instanceof Float1Attributes) {\r\n this._thickness = values;\r\n }\r\n else if (values) {\r\n if (!this._thickness)\r\n this._thickness = new Float1Attributes(this._concatenatedBuffer);\r\n var i = 0;\r\n var j = 0;\r\n var index = 0;\r\n var thickness = new Float32Array(values.length * 4);\r\n while (i < values.length) {\r\n thickness[index] = (Math.floor(0.5 * index + 0.5) & 1) ? -values[i] : values[i];\r\n if (++j == 4) {\r\n j = 0;\r\n i++;\r\n }\r\n index++;\r\n }\r\n this._thickness.set(thickness, offset * 4);\r\n }\r\n else if (this._thickness) {\r\n this._thickness.dispose();\r\n this._thickness = null;\r\n }\r\n this.invalidateVertices(this._thickness);\r\n this._verticesDirty[this._thickness.id] = false;\r\n };\r\n LineElements.prototype.setColors = function (values, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n if (values) {\r\n if (values == this._colors)\r\n return;\r\n if (values instanceof Byte4Attributes) {\r\n this.clearVertices(this._colors);\r\n this._colors = values;\r\n }\r\n else {\r\n if (!this._colors)\r\n this._colors = new Byte4Attributes(this._concatenatedBuffer);\r\n var i = 0;\r\n var j = 0;\r\n var index = 0;\r\n var colors = new Uint8Array(values.length * 4);\r\n while (i < values.length) {\r\n if (index / 4 & 1) {\r\n colors[index] = values[i + 4];\r\n colors[index + 1] = values[i + 5];\r\n colors[index + 2] = values[i + 6];\r\n colors[index + 3] = values[i + 7];\r\n }\r\n else {\r\n colors[index] = values[i];\r\n colors[index + 1] = values[i + 1];\r\n colors[index + 2] = values[i + 2];\r\n colors[index + 3] = values[i + 3];\r\n }\r\n if (++j == 4) {\r\n j = 0;\r\n i += 8;\r\n }\r\n index += 4;\r\n }\r\n this._colors.set(colors, offset * 4);\r\n }\r\n }\r\n else {\r\n //auto-derive colors\r\n this._colors = ElementsUtils.generateColors(this.indices, this._colors, this._concatenatedBuffer, this._numVertices);\r\n }\r\n this.invalidateVertices(this._colors);\r\n this._verticesDirty[this._colors.id] = false;\r\n };\r\n /**\r\n *\r\n */\r\n LineElements.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n this._positions.dispose();\r\n this._positions = null;\r\n this._thickness.dispose();\r\n this._thickness = null;\r\n this._colors.dispose();\r\n this._colors = null;\r\n };\r\n /**\r\n * Clones the current object\r\n * @return An exact duplicate of the current object.\r\n */\r\n LineElements.prototype.clone = function () {\r\n var clone = new LineElements(this._concatenatedBuffer ? this._concatenatedBuffer.clone() : null);\r\n clone.setIndices(this.indices.clone());\r\n clone.setPositions(this._positions.clone());\r\n clone.setThickness(this._thickness.clone());\r\n clone.setColors(this._colors.clone());\r\n return clone;\r\n };\r\n return LineElements;\r\n}(ElementsBase));\r\nexport { LineElements };\r\nLineElements.traverseName = TraverserBase.addRenderableName(\"applyLineShape\");\r\nLineElements.assetType = \"[asset LineElements]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/elements/LineElements.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\nvar ImageEvent = (function (_super) {\r\n tslib_1.__extends(ImageEvent, _super);\r\n /**\r\n * Create a new ImageEvent\r\n * @param type The event type.\r\n * @param image The instance of the image being updated.\r\n */\r\n function ImageEvent(type, image) {\r\n var _this = _super.call(this, type) || this;\r\n _this._image = image;\r\n return _this;\r\n }\r\n Object.defineProperty(ImageEvent.prototype, \"image\", {\r\n /**\r\n * The image of the material.\r\n */\r\n get: function () {\r\n return this._image;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ImageEvent;\r\n}(EventBase));\r\nexport { ImageEvent };\r\n/**\r\n *\r\n */\r\nImageEvent.INVALIDATE_MIPMAPS = \"invalidateMipmaps\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/ImageEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase } from \"@awayjs/core\";\r\nimport { ImageEvent } from \"../events/ImageEvent\";\r\nvar ImageBase = (function (_super) {\r\n tslib_1.__extends(ImageBase, _super);\r\n /**\r\n *\r\n */\r\n function ImageBase() {\r\n var _this = _super.call(this) || this;\r\n _this._pFormat = \"bgra\";\r\n return _this;\r\n }\r\n Object.defineProperty(ImageBase.prototype, \"format\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return this._pFormat;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n ImageBase.prototype.invalidateMipmaps = function () {\r\n this.dispatchEvent(new ImageEvent(ImageEvent.INVALIDATE_MIPMAPS, this));\r\n };\r\n return ImageBase;\r\n}(AssetBase));\r\nexport { ImageBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/ImageBase.js","import { BitmapImage2D } from \"../image/BitmapImage2D\";\r\nvar DefaultGraphicsFactory = (function () {\r\n function DefaultGraphicsFactory() {\r\n }\r\n DefaultGraphicsFactory.prototype.createImage2D = function (width, height, transparent, fillColor, powerOfTwo) {\r\n if (transparent === void 0) { transparent = true; }\r\n if (fillColor === void 0) { fillColor = null; }\r\n if (powerOfTwo === void 0) { powerOfTwo = true; }\r\n return new BitmapImage2D(width, height, transparent, fillColor, powerOfTwo);\r\n };\r\n return DefaultGraphicsFactory;\r\n}());\r\nexport { DefaultGraphicsFactory };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/factories/DefaultGraphicsFactory.js","import { DefaultGraphicsFactory } from \"../factories/DefaultGraphicsFactory\";\r\nvar ImageUtils = (function () {\r\n function ImageUtils() {\r\n }\r\n /**\r\n *\r\n */\r\n ImageUtils.imageToBitmapImage2D = function (img, powerOfTwo, factory) {\r\n if (powerOfTwo === void 0) { powerOfTwo = true; }\r\n if (factory === void 0) { factory = null; }\r\n if (!factory)\r\n factory = new DefaultGraphicsFactory();\r\n var image2D = factory.createImage2D(img.naturalWidth, img.naturalHeight, true, null, powerOfTwo);\r\n image2D.draw(img);\r\n return image2D;\r\n };\r\n ImageUtils.isImage2DValid = function (image2D) {\r\n if (image2D == null)\r\n return true;\r\n return ImageUtils.isDimensionValid(image2D.width, image2D.powerOfTwo) && ImageUtils.isDimensionValid(image2D.height, image2D.powerOfTwo);\r\n };\r\n ImageUtils.isHTMLImageElementValid = function (image) {\r\n if (image == null)\r\n return true;\r\n return ImageUtils.isDimensionValid(image.width) && ImageUtils.isDimensionValid(image.height);\r\n };\r\n ImageUtils.isDimensionValid = function (d, powerOfTwo) {\r\n if (powerOfTwo === void 0) { powerOfTwo = true; }\r\n return d >= 1 && d <= ImageUtils.MAX_SIZE && (!powerOfTwo || ImageUtils.isPowerOfTwo(d));\r\n };\r\n ImageUtils.isPowerOfTwo = function (value) {\r\n return value ? ((value & -value) == value) : false;\r\n };\r\n ImageUtils.getBestPowerOf2 = function (value) {\r\n var p = 1;\r\n while (p < value)\r\n p <<= 1;\r\n if (p > ImageUtils.MAX_SIZE)\r\n p = ImageUtils.MAX_SIZE;\r\n return p;\r\n };\r\n return ImageUtils;\r\n}());\r\nexport { ImageUtils };\r\nImageUtils.MAX_SIZE = 8192;\r\nexport default ImageUtils;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/ImageUtils.js","import * as tslib_1 from \"tslib\";\r\nimport { Rectangle, AbstractMethodError } from \"@awayjs/core\";\r\nimport { ImageBase } from \"../image/ImageBase\";\r\nimport { ImageUtils } from \"../utils/ImageUtils\";\r\nvar Image2D = (function (_super) {\r\n tslib_1.__extends(Image2D, _super);\r\n /**\r\n *\r\n */\r\n function Image2D(width, height, powerOfTwo) {\r\n if (powerOfTwo === void 0) { powerOfTwo = true; }\r\n var _this = _super.call(this) || this;\r\n _this._powerOfTwo = true;\r\n _this._rect = new Rectangle(0, 0, Math.round(width), Math.round(height));\r\n _this._powerOfTwo = powerOfTwo;\r\n _this._testDimensions();\r\n return _this;\r\n }\r\n Object.defineProperty(Image2D.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Image2D.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image2D.prototype, \"height\", {\r\n /**\r\n * The height of the image in pixels.\r\n */\r\n get: function () {\r\n return this._rect.height;\r\n },\r\n set: function (value) {\r\n this._setSize(this._rect.width, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image2D.prototype, \"rect\", {\r\n /**\r\n * The rectangle that defines the size and location of the bitmap image. The\r\n * top and left of the rectangle are 0; the width and height are equal to the\r\n * width and height in pixels of the BitmapData object.\r\n */\r\n get: function () {\r\n return this._rect;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image2D.prototype, \"width\", {\r\n /**\r\n * The width of the bitmap image in pixels.\r\n */\r\n get: function () {\r\n return this._rect.width;\r\n },\r\n set: function (value) {\r\n this._setSize(value, this._rect.height);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n * @param width\r\n * @param height\r\n * @private\r\n */\r\n Image2D.prototype._setSize = function (width, height) {\r\n width = Math.round(width);\r\n height = Math.round(height);\r\n if (this._rect.width == width && this._rect.height == height)\r\n return;\r\n this.clear();\r\n this._rect.width = width;\r\n this._rect.height = height;\r\n this._testDimensions();\r\n };\r\n /**\r\n *\r\n * @private\r\n */\r\n Image2D.prototype._testDimensions = function () {\r\n if (this._powerOfTwo && (!ImageUtils.isDimensionValid(this._rect.width) || !ImageUtils.isDimensionValid(this._rect.height)))\r\n throw new Error(\"Invalid dimension: Width and height must be power of 2 and cannot exceed 2048\");\r\n };\r\n Object.defineProperty(Image2D.prototype, \"powerOfTwo\", {\r\n /**\r\n * Enable POT texture size validation\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this._powerOfTwo;\r\n },\r\n set: function (value) {\r\n if (this._powerOfTwo == value)\r\n return;\r\n this._powerOfTwo = value;\r\n this._testDimensions();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n * @returns {ImageData}\r\n */\r\n Image2D.prototype.getImageData = function () {\r\n throw new AbstractMethodError();\r\n };\r\n return Image2D;\r\n}(ImageBase));\r\nexport { Image2D };\r\nImage2D.assetType = \"[image Image2D]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/Image2D.js","import { ColorUtils } from \"@awayjs/core\";\r\nvar BitmapImageUtils = (function () {\r\n function BitmapImageUtils() {\r\n }\r\n BitmapImageUtils._fillRect = function (context, rect, color, transparent) {\r\n if ((color & 0xff000000) >>> 24 != 0xFF && transparent)\r\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\r\n var argb = ColorUtils.float32ColorToARGB(color);\r\n if (transparent)\r\n context.fillStyle = 'rgba(' + argb[1] + ',' + argb[2] + ',' + argb[3] + ',' + argb[0] / 255 + ')';\r\n else\r\n context.fillStyle = 'rgba(' + argb[1] + ',' + argb[2] + ',' + argb[3] + ',1)';\r\n context.fillRect(rect.x, rect.y, rect.width, rect.height);\r\n };\r\n BitmapImageUtils._copyPixels = function (context, bmpd, sourceRect, destPoint) {\r\n if (sourceRect.width > 0 && sourceRect.height > 0)\r\n context.drawImage(bmpd, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height, destPoint.x, destPoint.y, sourceRect.width, sourceRect.height);\r\n };\r\n BitmapImageUtils._draw = function (context, source, matrix, colorTransform, blendMode, clipRect, smoothing) {\r\n context.save();\r\n if (matrix != null)\r\n context.setTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);\r\n if (source instanceof Uint8Array) {\r\n if (clipRect != null) {\r\n var imageData = context.getImageData(0, 0, clipRect.width, clipRect.height);\r\n imageData.data = source;\r\n context.putImageData(imageData, 0, 0);\r\n }\r\n else {\r\n console.log(\" no rect\");\r\n }\r\n }\r\n else {\r\n if (clipRect != null)\r\n context.drawImage(source, clipRect.x, clipRect.y, clipRect.width, clipRect.height);\r\n else\r\n context.drawImage(source, 0, 0);\r\n }\r\n context.restore();\r\n };\r\n return BitmapImageUtils;\r\n}());\r\nexport { BitmapImageUtils };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/BitmapImageUtils.js","import { Matrix, Point } from \"@awayjs/core\";\r\nimport { BitmapImage2D } from \"../image/BitmapImage2D\";\r\n//TODO: implement all methods\r\nvar CPURenderingContext2D = (function () {\r\n function CPURenderingContext2D(cpuCanvas) {\r\n this.point = new Point();\r\n this.point2 = new Point();\r\n this.cpuCanvas = cpuCanvas;\r\n }\r\n CPURenderingContext2D.prototype.restore = function () {\r\n this.matrix = null;\r\n };\r\n CPURenderingContext2D.prototype.setTransform = function (m11, m12, m21, m22, dx, dy) {\r\n this.matrix = new Matrix(m11, m12, m21, m22, dx, dy);\r\n };\r\n CPURenderingContext2D.prototype.save = function () {\r\n };\r\n CPURenderingContext2D.prototype.arc = function (x, y, radius, startAngle, endAngle, anticlockwise) {\r\n };\r\n CPURenderingContext2D.prototype.measureText = function (text) {\r\n return undefined;\r\n };\r\n CPURenderingContext2D.prototype.isPointInPath = function (x, y, fillRule) {\r\n return undefined;\r\n };\r\n CPURenderingContext2D.prototype.quadraticCurveTo = function (cpx, cpy, x, y) {\r\n };\r\n CPURenderingContext2D.prototype.putImageData = function (imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {\r\n };\r\n CPURenderingContext2D.prototype.rotate = function (angle) {\r\n };\r\n CPURenderingContext2D.prototype.fillText = function (text, x, y, maxWidth) {\r\n };\r\n CPURenderingContext2D.prototype.translate = function (x, y) {\r\n };\r\n CPURenderingContext2D.prototype.scale = function (x, y) {\r\n };\r\n CPURenderingContext2D.prototype.createRadialGradient = function (x0, y0, r0, x1, y1, r1) {\r\n return undefined;\r\n };\r\n CPURenderingContext2D.prototype.ellipse = function (x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {\r\n };\r\n CPURenderingContext2D.prototype.lineTo = function (x, y) {\r\n };\r\n CPURenderingContext2D.prototype.getLineDash = function () {\r\n return undefined;\r\n };\r\n CPURenderingContext2D.prototype.fill = function (fillRule) {\r\n };\r\n CPURenderingContext2D.prototype.createImageData = function (imageDataOrSw, sh) {\r\n return undefined;\r\n };\r\n CPURenderingContext2D.prototype.createPattern = function (image, repetition) {\r\n return undefined;\r\n };\r\n CPURenderingContext2D.prototype.closePath = function () {\r\n };\r\n CPURenderingContext2D.prototype.rect = function (x, y, w, h) {\r\n };\r\n CPURenderingContext2D.prototype.clip = function (fillRule) {\r\n };\r\n CPURenderingContext2D.prototype.clearRect = function (x, y, w, h) {\r\n var imageData = this.cpuCanvas.getImageData();\r\n for (var i = x; i < x + w; i++) {\r\n for (var j = y; j < y + h; j++) {\r\n var index = (i + j * imageData.width) * 4;\r\n imageData.data[index] = 0;\r\n imageData.data[index + 1] = 0;\r\n imageData.data[index + 2] = 0;\r\n imageData.data[index + 3] = 0;\r\n }\r\n }\r\n };\r\n CPURenderingContext2D.prototype.moveTo = function (x, y) {\r\n };\r\n CPURenderingContext2D.prototype.getImageData = function (sx, sy, sw, sh) {\r\n //var result:ImageData = new ImageData(sw, sh);\r\n //var i:number = 0;\r\n //\r\n //for (i = 0; i < sw * sh * 4; i += 4) {\r\n // result.data[i] = 255;\r\n // result.data[i + 1] = 255;\r\n // result.data[i + 2] = 255;\r\n // result.data[i + 3] = 255;\r\n //}\r\n //\r\n //var imageData:ImageData = this.cpuCanvas.getImageData();\r\n //for (i = sx; i < sx + sw; i++) {\r\n // for (var j:number = sy; j < sy + sh; j++) {\r\n // this.copyPixel32(result, i - sx, i - sy, imageData, i, j);\r\n // }\r\n //}\r\n return this.cpuCanvas.getImageData();\r\n };\r\n CPURenderingContext2D.prototype.applyPixel32 = function (target, x, y, color) {\r\n //todo: blending support\r\n x = Math.floor(x);\r\n y = Math.floor(y);\r\n if (x < 0 || x >= target.width || y >= target.height || y < 0)\r\n return;\r\n var index = (x + y * target.width) * 4;\r\n //var alpha:number = color[3] / 255;\r\n // target.data[index] += color[0];\r\n // target.data[index + 1] += color[1];\r\n // target.data[index + 2] += color[2];\r\n // target.data[index + 3] += color[3];\r\n target.data[index] = color[0];\r\n target.data[index + 1] = color[1];\r\n target.data[index + 2] = color[2];\r\n target.data[index + 3] = color[3];\r\n target.data[index] = target.data[index] & 0xFF;\r\n target.data[index + 1] = target.data[index + 1] & 0xFF;\r\n target.data[index + 2] = target.data[index + 2] & 0xFF;\r\n target.data[index + 3] = target.data[index + 3] & 0xFF;\r\n };\r\n CPURenderingContext2D.prototype.copyPixel32 = function (target, x, y, source, fromX, fromY) {\r\n x = Math.floor(x);\r\n y = Math.floor(y);\r\n fromX = Math.floor(fromX);\r\n fromY = Math.floor(fromY);\r\n if (x < 0 || x >= target.width || y >= target.height || y < 0)\r\n return;\r\n if (fromX < 0 || fromX >= source.width || fromY >= source.height || fromY < 0)\r\n return;\r\n var index = (x + y * target.width) * 4;\r\n var fromIndex = (fromX + fromY * source.width) * 4;\r\n target.data[index] = source.data[fromIndex];\r\n target.data[index + 1] = source.data[fromIndex + 1];\r\n target.data[index + 2] = source.data[fromIndex + 2];\r\n target.data[index + 3] = source.data[fromIndex + 3];\r\n };\r\n CPURenderingContext2D.prototype.fillRect = function (x, y, w, h) {\r\n if (this.fillStyle) {\r\n if (this.parsedFillStyle != this.fillStyle) {\r\n var colorStrings = this.fillStyle.substring(5, this.fillStyle.lastIndexOf(\")\")).split(\",\");\r\n this.parsedA = parseFloat(colorStrings[3]) * 255;\r\n this.parsedR = parseInt(colorStrings[0]);\r\n this.parsedG = parseInt(colorStrings[1]);\r\n this.parsedB = parseInt(colorStrings[2]);\r\n this.parsedFillStyle = this.fillStyle;\r\n }\r\n var imageData = this.cpuCanvas.getImageData();\r\n for (var i = x; i < x + w; i++) {\r\n for (var j = y; j < y + h; j++) {\r\n var index = (i + j * imageData.width) * 4;\r\n imageData.data[index] = this.parsedR;\r\n imageData.data[index + 1] = this.parsedG;\r\n imageData.data[index + 2] = this.parsedB;\r\n imageData.data[index + 3] = this.parsedA;\r\n }\r\n }\r\n }\r\n };\r\n CPURenderingContext2D.prototype.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\r\n };\r\n CPURenderingContext2D.prototype.drawImage = function (image, offsetX, offsetY, width, height, canvasOffsetX, canvasOffsetY, canvasImageWidth, canvasImageHeight) {\r\n var b = image;\r\n if (image.constructor.toString().indexOf(\"BitmapImage2D\") > -1) {\r\n var bitmap = b;\r\n bitmap.lock();\r\n this.drawBitmap(bitmap, offsetX, offsetY, width, height, canvasOffsetX, canvasOffsetY, canvasImageWidth, canvasImageHeight);\r\n bitmap.unlock();\r\n }\r\n else if (image.constructor.toString().indexOf(\"HTMLImage\") > -1) {\r\n var htmlImage = image;\r\n var htmlCanvas = document.createElement(\"canvas\");\r\n htmlCanvas.width = htmlImage.width;\r\n htmlCanvas.height = htmlImage.height;\r\n var htmlContext = htmlCanvas.getContext(\"2d\");\r\n htmlContext.drawImage(htmlImage, 0, 0);\r\n var htmlImageData = htmlContext.getImageData(0, 0, htmlImage.width, htmlImage.height);\r\n var resultBitmap = new BitmapImage2D(htmlImage.width, htmlImage.height, true, 0, false);\r\n resultBitmap.getImageData().data = htmlImageData.data;\r\n var passBitmap = resultBitmap;\r\n this.drawImage(passBitmap, offsetX, offsetY, width, height, canvasOffsetX, canvasOffsetY, canvasImageWidth, canvasImageHeight);\r\n }\r\n else if (image.constructor.toString().indexOf(\"CPUCanvas\") > -1) {\r\n //\r\n var canvas = b;\r\n this.drawBitmap(canvas, offsetX, offsetY, width, height, canvasOffsetX, canvasOffsetY, canvasImageWidth, canvasImageHeight);\r\n }\r\n };\r\n CPURenderingContext2D.prototype.drawBitmap = function (bitmap, offsetX, offsetY, width, height, canvasOffsetX, canvasOffsetY, canvasImageWidth, canvasImageHeight) {\r\n if (!width || width == 0) {\r\n width = bitmap.width;\r\n height = bitmap.height;\r\n }\r\n if (!canvasOffsetX || canvasOffsetX == 0) {\r\n canvasOffsetX = 0;\r\n canvasOffsetY = 0;\r\n }\r\n if (!canvasImageWidth || canvasImageWidth == 0 || this.matrix) {\r\n canvasImageWidth = width;\r\n canvasImageHeight = height;\r\n }\r\n //console.log(\"CPURenderingContext2D:drawBitmap(width: \" + width + \" height: \" + height + \" canvasImageWidth: \" + canvasImageWidth + \" canvasImageHeight: \" + canvasImageHeight);\r\n var sourceData = bitmap.getImageData();\r\n var canvasImageData = this.cpuCanvas.getImageData();\r\n if (this.matrix || (canvasImageWidth != width || canvasImageHeight != height)) {\r\n var matrix = this.matrix;\r\n if (!matrix) {\r\n matrix = new Matrix();\r\n matrix.scale(canvasImageWidth / width, canvasImageHeight / height);\r\n }\r\n var scaleX = Math.sqrt(matrix.a * matrix.a + matrix.b * matrix.b);\r\n var scaleY = Math.sqrt(matrix.c * matrix.c + matrix.d * matrix.d);\r\n canvasImageWidth = width * scaleX;\r\n canvasImageHeight = height * scaleY;\r\n matrix.tx += canvasOffsetX;\r\n matrix.ty += canvasOffsetY;\r\n canvasOffsetX = Math.floor(matrix.tx);\r\n canvasOffsetY = Math.floor(matrix.ty);\r\n matrix.invert();\r\n if (scaleX >= 1 || scaleY >= 1) {\r\n var p = new Point();\r\n for (var i = canvasOffsetX; i < canvasOffsetX + canvasImageWidth; i++) {\r\n for (var j = canvasOffsetY; j < canvasOffsetY + canvasImageHeight; j++) {\r\n p.x = i;\r\n p.y = j;\r\n p = matrix.transformPoint(p);\r\n var color = CPURenderingContext2D.sampleBilinear(p.x, p.y, sourceData);\r\n this.applyPixel32(canvasImageData, i, j, color);\r\n }\r\n }\r\n }\r\n else {\r\n //decimate\r\n var p1 = this.point;\r\n var p2 = this.point2;\r\n for (var i = canvasOffsetX; i < canvasOffsetX + canvasImageWidth; i++) {\r\n for (var j = canvasOffsetY; j < canvasOffsetY + canvasImageHeight; j++) {\r\n p1.x = i;\r\n p1.y = j;\r\n p1 = matrix.transformPoint(p1);\r\n p2.x = i + 1;\r\n p2.y = j + 1;\r\n p2 = matrix.transformPoint(p2);\r\n var color = CPURenderingContext2D.sampleBox(p1.x + offsetX, p1.y + offsetY, p2.x + offsetX, p2.y + offsetY, sourceData);\r\n this.applyPixel32(canvasImageData, i, j, color);\r\n }\r\n }\r\n }\r\n matrix.invert();\r\n }\r\n else {\r\n for (var i = canvasOffsetX; i < canvasOffsetX + canvasImageWidth; i++) {\r\n for (var j = canvasOffsetY; j < canvasOffsetY + canvasImageHeight; j++) {\r\n var color = CPURenderingContext2D.sample(i - canvasOffsetX + offsetX, j - canvasOffsetY + offsetY, sourceData);\r\n this.applyPixel32(canvasImageData, i, j, color);\r\n }\r\n }\r\n }\r\n };\r\n CPURenderingContext2D.prototype.transform = function (m11, m12, m21, m22, dx, dy) {\r\n };\r\n CPURenderingContext2D.prototype.stroke = function () {\r\n };\r\n CPURenderingContext2D.prototype.strokeRect = function (x, y, w, h) {\r\n };\r\n CPURenderingContext2D.prototype.setLineDash = function (segments) {\r\n };\r\n CPURenderingContext2D.prototype.strokeText = function (text, x, y, maxWidth) {\r\n };\r\n CPURenderingContext2D.prototype.beginPath = function () {\r\n };\r\n CPURenderingContext2D.prototype.arcTo = function (x1, y1, x2, y2, radius) {\r\n };\r\n CPURenderingContext2D.prototype.createLinearGradient = function (x0, y0, x1, y1) {\r\n return undefined;\r\n };\r\n CPURenderingContext2D.sampleBilinear = function (u, v, texture, texelSizeX, texelSizeY) {\r\n if (texelSizeX === void 0) { texelSizeX = 1; }\r\n if (texelSizeY === void 0) { texelSizeY = 1; }\r\n var color00 = CPURenderingContext2D.sample(u, v, texture);\r\n var color10 = CPURenderingContext2D.sample(u + texelSizeX, v, texture);\r\n var color01 = CPURenderingContext2D.sample(u, v + texelSizeY, texture);\r\n var color11 = CPURenderingContext2D.sample(u + texelSizeX, v + texelSizeY, texture);\r\n var a = u;\r\n a = a - Math.floor(a);\r\n var interColor0 = CPURenderingContext2D.interpolateColor(color00, color10, a);\r\n var interColor1 = CPURenderingContext2D.interpolateColor(color01, color11, a);\r\n var b = v;\r\n b = b - Math.floor(b);\r\n return CPURenderingContext2D.interpolateColor(interColor0, interColor1, b);\r\n };\r\n CPURenderingContext2D.sample = function (u, v, imageData) {\r\n u = Math.floor(u);\r\n v = Math.floor(v);\r\n var result = [0, 0, 0, 0];\r\n if (u < 0 || u >= imageData.width || v < 0 || v >= imageData.height) {\r\n return result;\r\n }\r\n var index = (u + v * imageData.width) * 4;\r\n result[0] = imageData.data[index];\r\n result[1] = imageData.data[index + 1];\r\n result[2] = imageData.data[index + 2];\r\n result[3] = imageData.data[index + 3];\r\n return result;\r\n };\r\n CPURenderingContext2D.sampleBox = function (x0, y0, x1, y1, texture) {\r\n var area = 0; // -- total area accumulated in pixels\r\n var result = [0, 0, 0, 0];\r\n var x;\r\n var y;\r\n var xsize;\r\n var ysize;\r\n var fromY = Math.floor(y0);\r\n var toY = Math.ceil(y1);\r\n fromY = Math.max(Math.min(fromY, texture.height - 1), 0);\r\n toY = Math.max(Math.min(toY, texture.height - 1), 0);\r\n for (y = fromY; y < toY; y++) {\r\n ysize = 1;\r\n if (y < y0) {\r\n ysize = ysize * (1.0 - (y0 - y));\r\n }\r\n if (y > y1) {\r\n ysize = ysize * (1.0 - (y - y1));\r\n }\r\n var fromX = Math.floor(x0);\r\n var toX = Math.ceil(x1);\r\n fromX = Math.max(Math.min(fromX, texture.width - 1), 0);\r\n toX = Math.max(Math.min(toX, texture.width - 1), 0);\r\n for (x = fromX; x < toX; x++) {\r\n xsize = ysize;\r\n var color = CPURenderingContext2D.sample(x, y, texture);\r\n if (x < x0) {\r\n xsize = xsize * (1.0 - (x0 - x));\r\n }\r\n if (x > x1) {\r\n xsize = xsize * (1.0 - (x - x1));\r\n }\r\n result[0] += color[0] * xsize;\r\n result[1] += color[1] * xsize;\r\n result[2] += color[2] * xsize;\r\n result[3] += color[3] * xsize;\r\n area = area + xsize;\r\n }\r\n }\r\n result[0] /= area;\r\n result[1] /= area;\r\n result[2] /= area;\r\n result[3] /= area;\r\n result[0] = result[0] & 0xFF;\r\n result[1] = result[1] & 0xFF;\r\n result[2] = result[2] & 0xFF;\r\n result[3] = result[3] & 0xFF;\r\n return result;\r\n };\r\n CPURenderingContext2D.interpolateColor = function (source, target, a) {\r\n var result = [];\r\n result[0] = source[0] + (target[0] - source[0]) * a;\r\n result[1] = source[1] + (target[1] - source[1]) * a;\r\n result[2] = source[2] + (target[2] - source[2]) * a;\r\n result[3] = source[3] + (target[3] - source[3]) * a;\r\n return result;\r\n };\r\n return CPURenderingContext2D;\r\n}());\r\nexport { CPURenderingContext2D };\r\nexport default CPURenderingContext2D;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/CPURenderingContext2D.js","var ImageData = (function () {\r\n function ImageData(width, height) {\r\n this.width = width;\r\n this.height = height;\r\n this.data = new Uint8Array(width * height * 4);\r\n }\r\n return ImageData;\r\n}());\r\nexport { ImageData };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/ImageData.js","import { CPURenderingContext2D } from \"../image/CPURenderingContext2D\";\r\nimport { ImageData } from \"../image/ImageData\";\r\nvar CPUCanvas = (function () {\r\n function CPUCanvas() {\r\n this.width = 1;\r\n this.height = 1;\r\n this.reset();\r\n }\r\n CPUCanvas.prototype.getContext = function (contextId) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n return new CPURenderingContext2D(this);\r\n };\r\n CPUCanvas.prototype.reset = function () {\r\n if (!this.imageData) {\r\n this.imageData = new ImageData(this.width, this.height);\r\n }\r\n else {\r\n this.imageData.width = this.width;\r\n this.imageData.height = this.height;\r\n if (this.imageData.data) {\r\n //this.imageData.data.length = 0;\r\n this.imageData.data = null;\r\n }\r\n this.imageData.data = new Uint8Array(this.width * this.height * 4);\r\n }\r\n for (var i = 0; i < this.width * this.height * 4; i += 4) {\r\n this.imageData.data[i] = 255;\r\n this.imageData.data[i + 1] = 255;\r\n this.imageData.data[i + 2] = 255;\r\n this.imageData.data[i + 3] = 255;\r\n }\r\n };\r\n CPUCanvas.prototype.getImageData = function () {\r\n if (this.imageData.width != this.width || this.imageData.height != this.height) {\r\n this.reset();\r\n }\r\n return this.imageData;\r\n };\r\n return CPUCanvas;\r\n}());\r\nexport { CPUCanvas };\r\nexport default CPUCanvas;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/CPUCanvas.js","import * as tslib_1 from \"tslib\";\r\nimport { Point, ColorUtils } from \"@awayjs/core\";\r\nimport { Image2D } from \"../image/Image2D\";\r\nimport { BitmapImageUtils } from \"../utils/BitmapImageUtils\";\r\nimport { CPUCanvas } from \"../image/CPUCanvas\";\r\n/**\r\n * The BitmapImage2D export class lets you work with the data(pixels) of a Bitmap\r\n * object. You can use the methods of the BitmapImage2D export class to create\r\n * arbitrarily sized transparent or opaque bitmap images and manipulate them\r\n * in various ways at runtime. You can also access the BitmapImage2D for a bitmap\r\n * image that you load with the flash.Assets or\r\n * flash.display.Loader classes.\r\n *\r\n *

This export class lets you separate bitmap rendering operations from the\r\n * internal display updating routines of flash. By manipulating a\r\n * BitmapImage2D object directly, you can create complex images without incurring\r\n * the per-frame overhead of constantly redrawing the content from vector\r\n * data.

\r\n *\r\n *

The methods of the BitmapImage2D export class support effects that are not\r\n * available through the filters available to non-bitmap display objects.

\r\n *\r\n *

A BitmapImage2D object contains an array of pixel data. This data can\r\n * represent either a fully opaque bitmap or a transparent bitmap that\r\n * contains alpha channel data. Either type of BitmapImage2D object is stored as\r\n * a buffer of 32-bit integers. Each 32-bit integer determines the properties\r\n * of a single pixel in the bitmap.

\r\n *\r\n *

Each 32-bit integer is a combination of four 8-bit channel values(from\r\n * 0 to 255) that describe the alpha transparency and the red, green, and blue\r\n * (ARGB) values of the pixel.(For ARGB values, the most significant byte\r\n * represents the alpha channel value, followed by red, green, and blue.)

\r\n *\r\n *

The four channels(alpha, red, green, and blue) are represented as\r\n * numbers when you use them with the BitmapImage2D.copyChannel()\r\n * method or the DisplacementMapFilter.componentX and\r\n * DisplacementMapFilter.componentY properties, and these numbers\r\n * are represented by the following constants in the BitmapImage2DChannel\r\n * class:

\r\n *\r\n *
    \r\n *
  • BitmapImage2DChannel.ALPHA
  • \r\n *
  • BitmapImage2DChannel.RED
  • \r\n *
  • BitmapImage2DChannel.GREEN
  • \r\n *
  • BitmapImage2DChannel.BLUE
  • \r\n *
\r\n *\r\n *

You can attach BitmapImage2D objects to a Bitmap object by using the\r\n * bitmapData property of the Bitmap object.

\r\n *\r\n *

You can use a BitmapImage2D object to fill a Graphics object by using the\r\n * Graphics.beginBitmapFill() method.

\r\n *\r\n *

You can also use a BitmapImage2D object to perform batch tile rendering\r\n * using the flash.display.Tilesheet class.

\r\n *\r\n *

In Flash Player 10, the maximum size for a BitmapImage2D object\r\n * is 8,191 pixels in width or height, and the total number of pixels cannot\r\n * exceed 16,777,215 pixels.(So, if a BitmapImage2D object is 8,191 pixels wide,\r\n * it can only be 2,048 pixels high.) In Flash Player 9 and earlier, the limitation\r\n * is 2,880 pixels in height and 2,880 in width.

\r\n */\r\nvar BitmapImage2D = (function (_super) {\r\n tslib_1.__extends(BitmapImage2D, _super);\r\n /**\r\n * Creates a BitmapImage2D object with a specified width and height. If you\r\n * specify a value for the fillColor parameter, every pixel in\r\n * the bitmap is set to that color.\r\n *\r\n *

By default, the bitmap is created as transparent, unless you pass\r\n * the value false for the transparent parameter. After you\r\n * create an opaque bitmap, you cannot change it to a transparent bitmap.\r\n * Every pixel in an opaque bitmap uses only 24 bits of color channel\r\n * information. If you define the bitmap as transparent, every pixel uses 32\r\n * bits of color channel information, including an alpha transparency\r\n * channel.

\r\n *\r\n * @param width The width of the bitmap image in pixels.\r\n * @param height The height of the bitmap image in pixels.\r\n * @param transparent Specifies whether the bitmap image supports per-pixel\r\n * transparency. The default value is true\r\n * (transparent). To create a fully transparent bitmap,\r\n * set the value of the transparent\r\n * parameter to true and the value of the\r\n * fillColor parameter to 0x00000000(or to\r\n * 0). Setting the transparent property to\r\n * false can result in minor improvements\r\n * in rendering performance.\r\n * @param fillColor A 32-bit ARGB color value that you use to fill the\r\n * bitmap image area. The default value is\r\n * 0xFFFFFFFF(solid white).\r\n */\r\n function BitmapImage2D(width, height, transparent, fillColor, powerOfTwo) {\r\n if (transparent === void 0) { transparent = true; }\r\n if (fillColor === void 0) { fillColor = null; }\r\n if (powerOfTwo === void 0) { powerOfTwo = true; }\r\n var _this = _super.call(this, width, height, powerOfTwo) || this;\r\n _this._locked = false;\r\n _this._transparent = transparent;\r\n if (typeof document !== \"undefined\") {\r\n _this._imageCanvas = document.createElement(\"canvas\");\r\n }\r\n else {\r\n _this._imageCanvas = new CPUCanvas();\r\n }\r\n _this._imageCanvas.width = _this._rect.width;\r\n _this._imageCanvas.height = _this._rect.height;\r\n _this._context = _this._imageCanvas.getContext(\"2d\");\r\n if (fillColor != null)\r\n _this.fillRect(_this._rect, fillColor);\r\n return _this;\r\n }\r\n Object.defineProperty(BitmapImage2D.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return BitmapImage2D.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BitmapImage2D.prototype, \"transparent\", {\r\n /**\r\n * Defines whether the bitmap image supports per-pixel transparency. You can\r\n * set this value only when you construct a BitmapImage2D object by passing in\r\n * true for the transparent parameter of the\r\n * constructor. Then, after you create a BitmapImage2D object, you can check\r\n * whether it supports per-pixel transparency by determining if the value of\r\n * the transparent property is true.\r\n */\r\n get: function () {\r\n return this._transparent;\r\n },\r\n set: function (value) {\r\n this._transparent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new BitmapImage2D object that is a clone of the original instance\r\n * with an exact copy of the contained bitmap.\r\n *\r\n * @return A new BitmapImage2D object that is identical to the original.\r\n */\r\n BitmapImage2D.prototype.clone = function () {\r\n var t = new BitmapImage2D(this.width, this.height, this.transparent, null, this.powerOfTwo);\r\n t.copyPixels(this, this.rect, new Point());\r\n return t;\r\n };\r\n /**\r\n * Adjusts the color values in a specified area of a bitmap image by using a\r\n * ColorTransform object. If the rectangle matches the\r\n * boundaries of the bitmap image, this method transforms the color values of\r\n * the entire image.\r\n *\r\n * @param rect A Rectangle object that defines the area of the\r\n * image in which the ColorTransform object is applied.\r\n * @param colorTransform A ColorTransform object that describes the color\r\n * transformation values to apply.\r\n */\r\n BitmapImage2D.prototype.colorTransform = function (rect, colorTransform) {\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n var data = this._imageData.data;\r\n var i, j, index;\r\n for (i = 0; i < rect.width; ++i) {\r\n for (j = 0; j < rect.height; ++j) {\r\n index = (i + rect.x + (j + rect.y) * this.width) * 4;\r\n data[index] = data[index] * colorTransform.redMultiplier + colorTransform.redOffset;\r\n data[index + 1] = data[index + 1] * colorTransform.greenMultiplier + colorTransform.greenOffset;\r\n data[index + 2] = data[index + 2] * colorTransform.blueMultiplier + colorTransform.blueOffset;\r\n data[index + 3] = data[index + 3] * colorTransform.alphaMultiplier + colorTransform.alphaOffset;\r\n }\r\n }\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n /**\r\n * Transfers data from one channel of another BitmapImage2D object or the\r\n * current BitmapImage2D object into a channel of the current BitmapImage2D object.\r\n * All of the data in the other channels in the destination BitmapImage2D object\r\n * are preserved.\r\n *\r\n *

The source channel value and destination channel value can be one of\r\n * following values:

\r\n *\r\n *
    \r\n *
  • BitmapImage2DChannel.RED
  • \r\n *
  • BitmapImage2DChannel.GREEN
  • \r\n *
  • BitmapImage2DChannel.BLUE
  • \r\n *
  • BitmapImage2DChannel.ALPHA
  • \r\n *
\r\n *\r\n * @param sourceBitmapImage2D The input bitmap image to use. The source image\r\n * can be a different BitmapImage2D object or it can\r\n * refer to the current BitmapImage2D object.\r\n * @param sourceRect The source Rectangle object. To copy only channel\r\n * data from a smaller area within the bitmap,\r\n * specify a source rectangle that is smaller than\r\n * the overall size of the BitmapImage2D object.\r\n * @param destPoint The destination Point object that represents the\r\n * upper-left corner of the rectangular area where\r\n * the new channel data is placed. To copy only\r\n * channel data from one area to a different area in\r\n * the destination image, specify a point other than\r\n * (0,0).\r\n * @param sourceChannel The source channel. Use a value from the\r\n * BitmapImage2DChannel class\r\n * (BitmapImage2DChannel.RED,\r\n * BitmapImage2DChannel.BLUE,\r\n * BitmapImage2DChannel.GREEN,\r\n * BitmapImage2DChannel.ALPHA).\r\n * @param destChannel The destination channel. Use a value from the\r\n * BitmapImage2DChannel class\r\n * (BitmapImage2DChannel.RED,\r\n * BitmapImage2DChannel.BLUE,\r\n * BitmapImage2DChannel.GREEN,\r\n * BitmapImage2DChannel.ALPHA).\r\n * @throws TypeError The sourceBitmapImage2D, sourceRect or destPoint are null.\r\n */\r\n BitmapImage2D.prototype.copyChannel = function (sourceBitmap, sourceRect, destPoint, sourceChannel, destChannel) {\r\n var imageData = sourceBitmap.getImageData();\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n var sourceData = imageData.data;\r\n var destData = this._imageData.data;\r\n var sourceOffset = Math.round(Math.log(sourceChannel) / Math.log(2));\r\n var destOffset = Math.round(Math.log(destChannel) / Math.log(2));\r\n var sourceX = Math.round(sourceRect.x);\r\n var sourceY = Math.round(sourceRect.y);\r\n var destX = Math.round(destPoint.x);\r\n var destY = Math.round(destPoint.y);\r\n var i, j, sourceIndex, destIndex;\r\n for (i = 0; i < sourceRect.width; ++i) {\r\n for (j = 0; j < sourceRect.height; ++j) {\r\n sourceIndex = (i + sourceX + (j + sourceY) * imageData.width) * 4;\r\n destIndex = (i + destX + (j + destY) * this._rect.width) * 4;\r\n destData[destIndex + destOffset] = sourceData[sourceIndex + sourceOffset];\r\n }\r\n }\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n BitmapImage2D.prototype.copyPixels = function (source, sourceRect, destPoint) {\r\n if (source instanceof BitmapImage2D)\r\n source = source.getCanvas();\r\n if (this._imageData)\r\n this._context.putImageData(this._imageData, 0, 0); // at coords 0,0\r\n BitmapImageUtils._copyPixels(this._context, source, sourceRect, destPoint);\r\n this._imageData = null;\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n BitmapImage2D.prototype.merge = function (source, sourceRect, destPoint, redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier) {\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n var dest = this._imageData.data;\r\n var src = source.getImageData().data;\r\n redMultiplier = ~~redMultiplier;\r\n greenMultiplier = ~~greenMultiplier;\r\n blueMultiplier = ~~blueMultiplier;\r\n alphaMultiplier = ~~alphaMultiplier;\r\n var i, j, index;\r\n for (i = 0; i < sourceRect.width; ++i) {\r\n for (j = 0; j < sourceRect.height; ++j) {\r\n index = (i + sourceRect.x + (j + sourceRect.y) * this.width) * 4;\r\n dest[index] = ~~((src[index] * redMultiplier + dest[index] * (0x100 - redMultiplier)) / 0x100);\r\n dest[index + 1] = ~~((src[index + 1] * greenMultiplier + dest[index + 1] * (0x100 - greenMultiplier)) / 0x100);\r\n dest[index + 2] = ~~((src[index + 2] * blueMultiplier + dest[index + 2] * (0x100 - blueMultiplier)) / 0x100);\r\n dest[index + 3] = ~~((src[index + 3] * alphaMultiplier + dest[index + 3] * (0x100 - alphaMultiplier)) / 0x100);\r\n }\r\n }\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n /**\r\n * Frees memory that is used to store the BitmapImage2D object.\r\n *\r\n *

When the dispose() method is called on an image, the width\r\n * and height of the image are set to 0. All subsequent calls to methods or\r\n * properties of this BitmapImage2D instance fail, and an exception is thrown.\r\n *

\r\n *\r\n *

BitmapImage2D.dispose() releases the memory occupied by the\r\n * actual bitmap data, immediately(a bitmap can consume up to 64 MB of\r\n * memory). After using BitmapImage2D.dispose(), the BitmapImage2D\r\n * object is no longer usable and an exception may be thrown if\r\n * you call functions on the BitmapImage2D object. However,\r\n * BitmapImage2D.dispose() does not garbage collect the BitmapImage2D\r\n * object(approximately 128 bytes); the memory occupied by the actual\r\n * BitmapImage2D object is released at the time the BitmapImage2D object is\r\n * collected by the garbage collector.

\r\n *\r\n */\r\n BitmapImage2D.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n this._context = null;\r\n this._imageCanvas = null;\r\n this._imageData = null;\r\n this._rect = null;\r\n this._transparent = null;\r\n this._locked = null;\r\n };\r\n BitmapImage2D.prototype.draw = function (source, matrix, colorTransform, blendMode, clipRect, smoothing) {\r\n if (source instanceof BitmapImage2D && source.getCanvas())\r\n source = source.getCanvas();\r\n if (this._imageData)\r\n this._context.putImageData(this._imageData, 0, 0); // at coords 0,0\r\n BitmapImageUtils._draw(this._context, source, matrix, colorTransform, blendMode, clipRect, smoothing);\r\n this._imageData = null;\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n /**\r\n * Fills a rectangular area of pixels with a specified ARGB color.\r\n *\r\n * @param rect The rectangular area to fill.\r\n * @param color The ARGB color value that fills the area. ARGB colors are\r\n * often specified in hexadecimal format; for example,\r\n * 0xFF336699.\r\n * @throws TypeError The rect is null.\r\n */\r\n BitmapImage2D.prototype.fillRect = function (rect, color) {\r\n if (this._imageData)\r\n this._context.putImageData(this._imageData, 0, 0); // at coords 0,0\r\n rect.x = Math.ceil(rect.x);\r\n rect.y = Math.ceil(rect.y);\r\n rect.width = Math.ceil(rect.width);\r\n rect.height = Math.ceil(rect.height);\r\n BitmapImageUtils._fillRect(this._context, rect, color, this._transparent);\r\n this._imageData = null;\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n /**\r\n * Returns an integer that represents an RGB pixel value from a BitmapImage2D\r\n * object at a specific point(x, y). The\r\n * getPixel() method returns an unmultiplied pixel value. No\r\n * alpha information is returned.\r\n *\r\n *

All pixels in a BitmapImage2D object are stored as premultiplied color\r\n * values. A premultiplied image pixel has the red, green, and blue color\r\n * channel values already multiplied by the alpha data. For example, if the\r\n * alpha value is 0, the values for the RGB channels are also 0, independent\r\n * of their unmultiplied values. This loss of data can cause some problems\r\n * when you perform operations. All BitmapImage2D methods take and return\r\n * unmultiplied values. The internal pixel representation is converted from\r\n * premultiplied to unmultiplied before it is returned as a value. During a\r\n * set operation, the pixel value is premultiplied before the raw image pixel\r\n * is set.

\r\n *\r\n * @param x The x position of the pixel.\r\n * @param y The y position of the pixel.\r\n * @return A number that represents an RGB pixel value. If the(x,\r\n * y) coordinates are outside the bounds of the image, the\r\n * method returns 0.\r\n */\r\n BitmapImage2D.prototype.getPixel = function (x, y) {\r\n var r;\r\n var g;\r\n var b;\r\n var a;\r\n if (!this._imageData) {\r\n var pixelData = this._context.getImageData(x, y, 1, 1);\r\n r = pixelData.data[0];\r\n g = pixelData.data[1];\r\n b = pixelData.data[2];\r\n a = pixelData.data[3];\r\n }\r\n else {\r\n var index = (x + y * this._imageData.width) * 4;\r\n r = this._imageData.data[index + 0];\r\n g = this._imageData.data[index + 1];\r\n b = this._imageData.data[index + 2];\r\n a = this._imageData.data[index + 3];\r\n }\r\n //returns black if fully transparent\r\n if (!a)\r\n return 0x0;\r\n return (r << 16) | (g << 8) | b;\r\n };\r\n /**\r\n * Returns an ARGB color value that contains alpha channel data and RGB data.\r\n * This method is similar to the getPixel() method, which\r\n * returns an RGB color without alpha channel data.\r\n *\r\n *

All pixels in a BitmapImage2D object are stored as premultiplied color\r\n * values. A premultiplied image pixel has the red, green, and blue color\r\n * channel values already multiplied by the alpha data. For example, if the\r\n * alpha value is 0, the values for the RGB channels are also 0, independent\r\n * of their unmultiplied values. This loss of data can cause some problems\r\n * when you perform operations. All BitmapImage2D methods take and return\r\n * unmultiplied values. The internal pixel representation is converted from\r\n * premultiplied to unmultiplied before it is returned as a value. During a\r\n * set operation, the pixel value is premultiplied before the raw image pixel\r\n * is set.

\r\n *\r\n * @param x The x position of the pixel.\r\n * @param y The y position of the pixel.\r\n * @return A number representing an ARGB pixel value. If the(x,\r\n * y) coordinates are outside the bounds of the image, 0 is\r\n * returned.\r\n */\r\n BitmapImage2D.prototype.getPixel32 = function (x, y) {\r\n var r;\r\n var g;\r\n var b;\r\n var a;\r\n if (!this._imageData) {\r\n var pixelData = this._context.getImageData(~~x, ~~y, 1, 1);\r\n r = pixelData.data[0];\r\n g = pixelData.data[1];\r\n b = pixelData.data[2];\r\n a = pixelData.data[3];\r\n }\r\n else {\r\n var index = (~~x + ~~y * this._imageData.width) * 4;\r\n r = this._imageData.data[index + 0];\r\n g = this._imageData.data[index + 1];\r\n b = this._imageData.data[index + 2];\r\n a = this._imageData.data[index + 3];\r\n }\r\n return (a << 24) | (r << 16) | (g << 8) | b;\r\n };\r\n BitmapImage2D.prototype.getPixelData = function (x, y, imagePixel) {\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n var index = (x + y * this._imageData.width) * 4;\r\n imagePixel[0] = this._imageData.data[index + 0];\r\n imagePixel[1] = this._imageData.data[index + 1];\r\n imagePixel[2] = this._imageData.data[index + 2];\r\n imagePixel[3] = this._imageData.data[index + 3];\r\n };\r\n BitmapImage2D.prototype.setPixelData = function (x, y, imagePixel) {\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n var index = (x + y * this._imageData.width) * 4;\r\n this._imageData.data[index + 0] = imagePixel[0];\r\n this._imageData.data[index + 1] = imagePixel[1];\r\n this._imageData.data[index + 2] = imagePixel[2];\r\n this._imageData.data[index + 3] = this._transparent ? imagePixel[3] : 0xFF;\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n /**\r\n * Locks an image so that any objects that reference the BitmapImage2D object,\r\n * such as Bitmap objects, are not updated when this BitmapImage2D object\r\n * changes. To improve performance, use this method along with the\r\n * unlock() method before and after numerous calls to the\r\n * setPixel() or setPixel32() method.\r\n *\r\n */\r\n BitmapImage2D.prototype.lock = function () {\r\n if (this._locked)\r\n return;\r\n this._locked = true;\r\n };\r\n /**\r\n * Converts an Array into a rectangular region of pixel data. For each pixel,\r\n * an Array element is read and written into the BitmapImage2D pixel. The data\r\n * in the Array is expected to be 32-bit ARGB pixel values.\r\n *\r\n * @param rect Specifies the rectangular region of the BitmapImage2D\r\n * object.\r\n * @param inputArray An Array that consists of 32-bit unmultiplied pixel\r\n * values to be used in the rectangular region.\r\n * @throws RangeError The vector array is not large enough to read all the\r\n * pixel data.\r\n */\r\n BitmapImage2D.prototype.setArray = function (rect, inputArray) {\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n var i, j, index, argb;\r\n for (i = 0; i < rect.width; ++i) {\r\n for (j = 0; j < rect.height; ++j) {\r\n argb = ColorUtils.float32ColorToARGB(inputArray[i + j * rect.width]);\r\n index = (i + rect.x + (j + rect.y) * this._imageData.width) * 4;\r\n this._imageData.data[index + 0] = argb[1];\r\n this._imageData.data[index + 1] = argb[2];\r\n this._imageData.data[index + 2] = argb[3];\r\n this._imageData.data[index + 3] = this._transparent ? argb[0] : 0xFF;\r\n }\r\n }\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n /**\r\n * Sets a single pixel of a BitmapImage2D object. The current alpha channel\r\n * value of the image pixel is preserved during this operation. The value of\r\n * the RGB color parameter is treated as an unmultiplied color value.\r\n *\r\n *

Note: To increase performance, when you use the\r\n * setPixel() or setPixel32() method repeatedly,\r\n * call the lock() method before you call the\r\n * setPixel() or setPixel32() method, and then call\r\n * the unlock() method when you have made all pixel changes.\r\n * This process prevents objects that reference this BitmapImage2D instance from\r\n * updating until you finish making the pixel changes.

\r\n *\r\n * @param x The x position of the pixel whose value changes.\r\n * @param y The y position of the pixel whose value changes.\r\n * @param color The resulting RGB color for the pixel.\r\n */\r\n BitmapImage2D.prototype.setPixel = function (x, y, color) {\r\n var argb = ColorUtils.float32ColorToARGB(color);\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n var index = (~~x + ~~y * this._imageData.width) * 4;\r\n this._imageData.data[index + 0] = argb[1];\r\n this._imageData.data[index + 1] = argb[2];\r\n this._imageData.data[index + 2] = argb[3];\r\n this._imageData.data[index + 3] = 0xff;\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n BitmapImage2D.prototype.setPixelFromArray = function (x, y, colors) {\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n var index = (x + y * this._imageData.width) * 4;\r\n this._imageData.data[index + 0] = colors[1];\r\n this._imageData.data[index + 1] = colors[2];\r\n this._imageData.data[index + 2] = colors[3];\r\n this._imageData.data[index + 3] = colors[0] * 0xff;\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n /**\r\n * Sets the color and alpha transparency values of a single pixel of a\r\n * BitmapImage2D object. This method is similar to the setPixel()\r\n * method; the main difference is that the setPixel32() method\r\n * takes an ARGB color value that contains alpha channel information.\r\n *\r\n *

All pixels in a BitmapImage2D object are stored as premultiplied color\r\n * values. A premultiplied image pixel has the red, green, and blue color\r\n * channel values already multiplied by the alpha data. For example, if the\r\n * alpha value is 0, the values for the RGB channels are also 0, independent\r\n * of their unmultiplied values. This loss of data can cause some problems\r\n * when you perform operations. All BitmapImage2D methods take and return\r\n * unmultiplied values. The internal pixel representation is converted from\r\n * premultiplied to unmultiplied before it is returned as a value. During a\r\n * set operation, the pixel value is premultiplied before the raw image pixel\r\n * is set.

\r\n *\r\n *

Note: To increase performance, when you use the\r\n * setPixel() or setPixel32() method repeatedly,\r\n * call the lock() method before you call the\r\n * setPixel() or setPixel32() method, and then call\r\n * the unlock() method when you have made all pixel changes.\r\n * This process prevents objects that reference this BitmapImage2D instance from\r\n * updating until you finish making the pixel changes.

\r\n *\r\n * @param x The x position of the pixel whose value changes.\r\n * @param y The y position of the pixel whose value changes.\r\n * @param color The resulting ARGB color for the pixel. If the bitmap is\r\n * opaque(not transparent), the alpha transparency portion of\r\n * this color value is ignored.\r\n */\r\n BitmapImage2D.prototype.setPixel32 = function (x, y, color) {\r\n var argb = ColorUtils.float32ColorToARGB(color);\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n var index = (~~x + ~~y * this._imageData.width) * 4;\r\n this._imageData.data[index + 0] = argb[1];\r\n this._imageData.data[index + 1] = argb[2];\r\n this._imageData.data[index + 2] = argb[3];\r\n this._imageData.data[index + 3] = this._transparent ? argb[0] : 0xFF;\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n /**\r\n * Converts a byte array into a rectangular region of pixel data. For each\r\n * pixel, the ByteArray.readUnsignedInt() method is called and\r\n * the return value is written into the pixel. If the byte array ends before\r\n * the full rectangle is written, the function returns. The data in the byte\r\n * array is expected to be 32-bit ARGB pixel values. No seeking is performed\r\n * on the byte array before or after the pixels are read.\r\n *\r\n * @param rect Specifies the rectangular region of the BitmapImage2D\r\n * object.\r\n * @param inputByteArray A ByteArray object that consists of 32-bit\r\n * unmultiplied pixel values to be used in the\r\n * rectangular region.\r\n * @throws EOFError The inputByteArray object does not include\r\n * enough data to fill the area of the rect\r\n * rectangle. The method fills as many pixels as possible\r\n * before throwing the exception.\r\n * @throws TypeError The rect or inputByteArray are null.\r\n */\r\n BitmapImage2D.prototype.setPixels = function (rect, input) {\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n //fast path for full imageData\r\n if (rect.equals(this._rect)) {\r\n this._imageData.data.set(input);\r\n }\r\n else {\r\n var i;\r\n var imageWidth = this._rect.width;\r\n var inputWidth = rect.width;\r\n for (i = 0; i < rect.height; ++i)\r\n this._imageData.data.set(input.subarray(i * inputWidth * 4, (i + 1) * inputWidth * 4), (rect.x + (i + rect.y) * imageWidth) * 4);\r\n }\r\n if (!this._locked)\r\n this.invalidate();\r\n };\r\n /**\r\n * Unlocks an image so that any objects that reference the BitmapImage2D object,\r\n * such as Bitmap objects, are updated when this BitmapImage2D object changes.\r\n * To improve performance, use this method along with the lock()\r\n * method before and after numerous calls to the setPixel() or\r\n * setPixel32() method.\r\n *\r\n * @param changeRect The area of the BitmapImage2D object that has changed. If\r\n * you do not specify a value for this parameter, the\r\n * entire area of the BitmapImage2D object is considered\r\n * changed.\r\n */\r\n BitmapImage2D.prototype.unlock = function () {\r\n if (!this._locked)\r\n return;\r\n this._locked = false;\r\n this.invalidate();\r\n };\r\n /**\r\n *\r\n * @returns {ImageData}\r\n */\r\n BitmapImage2D.prototype.getImageData = function () {\r\n if (!this._imageData)\r\n this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);\r\n return this._imageData;\r\n };\r\n /**\r\n *\r\n * @returns {HTMLCanvasElement}\r\n */\r\n BitmapImage2D.prototype.getCanvas = function () {\r\n if (this._imageData)\r\n this._context.putImageData(this._imageData, 0, 0);\r\n this._imageData = null;\r\n return this._imageCanvas;\r\n };\r\n /**\r\n *\r\n * @param width\r\n * @param height\r\n * @private\r\n */\r\n BitmapImage2D.prototype._setSize = function (width, height) {\r\n if (this._imageData)\r\n this._context.putImageData(this._imageData, 0, 0);\r\n if (this._imageCanvas) {\r\n this._imageCanvas.width = width;\r\n this._imageCanvas.height = height;\r\n }\r\n _super.prototype._setSize.call(this, width, height);\r\n this._imageData = null;\r\n };\r\n return BitmapImage2D;\r\n}(Image2D));\r\nexport { BitmapImage2D };\r\nBitmapImage2D.assetType = \"[image BitmapImage2D]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/BitmapImage2D.js","import * as tslib_1 from \"tslib\";\r\nimport { AbstractMethodError } from \"@awayjs/core\";\r\nimport { ImageBase } from \"../image/ImageBase\";\r\nimport { ImageUtils } from \"../utils/ImageUtils\";\r\nvar ImageCube = (function (_super) {\r\n tslib_1.__extends(ImageCube, _super);\r\n /**\r\n *\r\n */\r\n function ImageCube(size) {\r\n var _this = _super.call(this) || this;\r\n _this._size = size;\r\n _this._testDimensions();\r\n return _this;\r\n }\r\n Object.defineProperty(ImageCube.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return ImageCube.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ImageCube.prototype, \"size\", {\r\n /**\r\n * The size of the cube bitmap in pixels.\r\n */\r\n get: function () {\r\n return this._size;\r\n },\r\n set: function (value) {\r\n if (this._size == value)\r\n return;\r\n this._setSize(this._size);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n * @returns {ImageData}\r\n */\r\n ImageCube.prototype.getImageData = function (side) {\r\n throw new AbstractMethodError();\r\n };\r\n /**\r\n *\r\n * @param width\r\n * @param height\r\n * @private\r\n */\r\n ImageCube.prototype._setSize = function (size) {\r\n if (this._size != size)\r\n this.clear();\r\n this._size = size;\r\n this._testDimensions();\r\n };\r\n /**\r\n *\r\n * @private\r\n */\r\n ImageCube.prototype._testDimensions = function () {\r\n if (!ImageUtils.isDimensionValid(this._size))\r\n throw new Error(\"Invalid dimension: Width and height must be power of 2 and cannot exceed 2048\");\r\n };\r\n return ImageCube;\r\n}(ImageBase));\r\nexport { ImageCube };\r\nImageCube.assetType = \"[image ImageCube]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/ImageCube.js","import * as tslib_1 from \"tslib\";\r\nimport { Rectangle, ColorUtils } from \"@awayjs/core\";\r\nimport { BitmapImage2D } from \"../image/BitmapImage2D\";\r\nimport { ImageCube } from \"../image/ImageCube\";\r\nimport { BitmapImageUtils } from \"../utils/BitmapImageUtils\";\r\nimport { CPUCanvas } from \"../image/CPUCanvas\";\r\n/**\r\n * The BitmapImage2D export class lets you work with the data(pixels) of a Bitmap\r\n * object. You can use the methods of the BitmapImage2D export class to create\r\n * arbitrarily sized transparent or opaque bitmap images and manipulate them\r\n * in various ways at runtime. You can also access the BitmapImage2D for a bitmap\r\n * image that you load with the flash.Assets or\r\n * flash.display.Loader classes.\r\n *\r\n *

This export class lets you separate bitmap rendering operations from the\r\n * internal display updating routines of flash. By manipulating a\r\n * BitmapImage2D object directly, you can create complex images without incurring\r\n * the per-frame overhead of constantly redrawing the content from vector\r\n * data.

\r\n *\r\n *

The methods of the BitmapImage2D export class support effects that are not\r\n * available through the filters available to non-bitmap display objects.

\r\n *\r\n *

A BitmapImage2D object contains an array of pixel data. This data can\r\n * represent either a fully opaque bitmap or a transparent bitmap that\r\n * contains alpha channel data. Either type of BitmapImage2D object is stored as\r\n * a buffer of 32-bit integers. Each 32-bit integer determines the properties\r\n * of a single pixel in the bitmap.

\r\n *\r\n *

Each 32-bit integer is a combination of four 8-bit channel values(from\r\n * 0 to 255) that describe the alpha transparency and the red, green, and blue\r\n * (ARGB) values of the pixel.(For ARGB values, the most significant byte\r\n * represents the alpha channel value, followed by red, green, and blue.)

\r\n *\r\n *

The four channels(alpha, red, green, and blue) are represented as\r\n * numbers when you use them with the BitmapImage2D.copyChannel()\r\n * method or the DisplacementMapFilter.componentX and\r\n * DisplacementMapFilter.componentY properties, and these numbers\r\n * are represented by the following constants in the BitmapImage2DChannel\r\n * class:

\r\n *\r\n *
    \r\n *
  • BitmapImage2DChannel.ALPHA
  • \r\n *
  • BitmapImage2DChannel.RED
  • \r\n *
  • BitmapImage2DChannel.GREEN
  • \r\n *
  • BitmapImage2DChannel.BLUE
  • \r\n *
\r\n *\r\n *

You can attach BitmapImage2D objects to a Bitmap object by using the\r\n * bitmapData property of the Bitmap object.

\r\n *\r\n *

You can use a BitmapImage2D object to fill a Graphics object by using the\r\n * Graphics.beginBitmapFill() method.

\r\n *\r\n *

You can also use a BitmapImage2D object to perform batch tile rendering\r\n * using the flash.display.Tilesheet class.

\r\n *\r\n *

In Flash Player 10, the maximum size for a BitmapImage2D object\r\n * is 8,191 pixels in width or height, and the total number of pixels cannot\r\n * exceed 16,777,215 pixels.(So, if a BitmapImage2D object is 8,191 pixels wide,\r\n * it can only be 2,048 pixels high.) In Flash Player 9 and earlier, the limitation\r\n * is 2,880 pixels in height and 2,880 in width.

\r\n */\r\nvar BitmapImageCube = (function (_super) {\r\n tslib_1.__extends(BitmapImageCube, _super);\r\n /**\r\n * Creates a BitmapImage2D object with a specified width and height. If you\r\n * specify a value for the fillColor parameter, every pixel in\r\n * the bitmap is set to that color.\r\n *\r\n *

By default, the bitmap is created as transparent, unless you pass\r\n * the value false for the transparent parameter. After you\r\n * create an opaque bitmap, you cannot change it to a transparent bitmap.\r\n * Every pixel in an opaque bitmap uses only 24 bits of color channel\r\n * information. If you define the bitmap as transparent, every pixel uses 32\r\n * bits of color channel information, including an alpha transparency\r\n * channel.

\r\n *\r\n * @param width The width of the bitmap image in pixels.\r\n * @param height The height of the bitmap image in pixels.\r\n * @param transparent Specifies whether the bitmap image supports per-pixel\r\n * transparency. The default value is true\r\n * (transparent). To create a fully transparent bitmap,\r\n * set the value of the transparent\r\n * parameter to true and the value of the\r\n * fillColor parameter to 0x00000000(or to\r\n * 0). Setting the transparent property to\r\n * false can result in minor improvements\r\n * in rendering performance.\r\n * @param fillColor A 32-bit ARGB color value that you use to fill the\r\n * bitmap image area. The default value is\r\n * 0xFFFFFFFF(solid white).\r\n */\r\n function BitmapImageCube(size, transparent, fillColor) {\r\n if (transparent === void 0) { transparent = true; }\r\n if (fillColor === void 0) { fillColor = null; }\r\n var _this = _super.call(this, size) || this;\r\n _this._imageCanvas = new Array(6);\r\n _this._context = new Array(6);\r\n _this._imageData = new Array(6);\r\n _this._locked = false;\r\n _this._transparent = transparent;\r\n for (var i = 0; i < 6; i++) {\r\n if (typeof document !== \"undefined\") {\r\n _this._imageCanvas[i] = document.createElement(\"canvas\");\r\n }\r\n else {\r\n _this._imageCanvas[i] = new CPUCanvas();\r\n }\r\n _this._imageCanvas[i].width = size;\r\n _this._imageCanvas[i].height = size;\r\n _this._context[i] = _this._imageCanvas[i].getContext(\"2d\");\r\n if (fillColor != null)\r\n _this.fillRect(i, new Rectangle(0, 0, size, size), fillColor);\r\n }\r\n return _this;\r\n }\r\n Object.defineProperty(BitmapImageCube.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return BitmapImageCube.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BitmapImageCube.prototype, \"transparent\", {\r\n /**\r\n * Defines whether the bitmap image supports per-pixel transparency. You can\r\n * set this value only when you construct a BitmapImage2D object by passing in\r\n * true for the transparent parameter of the\r\n * constructor. Then, after you create a BitmapImage2D object, you can check\r\n * whether it supports per-pixel transparency by determining if the value of\r\n * the transparent property is true.\r\n */\r\n get: function () {\r\n return this._transparent;\r\n },\r\n set: function (value) {\r\n this._transparent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new BitmapImage2D object that is a clone of the original instance\r\n * with an exact copy of the contained bitmap.\r\n *\r\n * @return A new BitmapImage2D object that is identical to the original.\r\n */\r\n BitmapImageCube.prototype.clone = function () {\r\n var t = new BitmapImageCube(this._size, this.transparent);\r\n for (var i = 0; i < 6; i++) {\r\n t.draw(i, this.getCanvas(i));\r\n }\r\n return t;\r\n };\r\n /**\r\n * Adjusts the color values in a specified area of a bitmap image by using a\r\n * ColorTransform object. If the rectangle matches the\r\n * boundaries of the bitmap image, this method transforms the color values of\r\n * the entire image.\r\n *\r\n * @param rect A Rectangle object that defines the area of the\r\n * image in which the ColorTransform object is applied.\r\n * @param colorTransform A ColorTransform object that describes the color\r\n * transformation values to apply.\r\n */\r\n BitmapImageCube.prototype.colorTransform = function (side, rect, colorTransform) {\r\n if (!this._locked)\r\n this._imageData[side] = this._context[side].getImageData(0, 0, this._size, this._size);\r\n var data = this._imageData[side].data;\r\n var i, j, index;\r\n for (i = 0; i < rect.width; ++i) {\r\n for (j = 0; j < rect.height; ++j) {\r\n index = (i + rect.x + (j + rect.y) * this._size) * 4;\r\n data[index] = data[index] * colorTransform.redMultiplier + colorTransform.redOffset;\r\n data[index + 1] = data[index + 1] * colorTransform.greenMultiplier + colorTransform.greenOffset;\r\n data[index + 2] = data[index + 2] * colorTransform.blueMultiplier + colorTransform.blueOffset;\r\n data[index + 3] = data[index + 3] * colorTransform.alphaMultiplier + colorTransform.alphaOffset;\r\n }\r\n }\r\n if (!this._locked) {\r\n this._context[side].putImageData(this._imageData[side], 0, 0);\r\n this._imageData[side] = null;\r\n }\r\n this.invalidate();\r\n };\r\n /**\r\n * Transfers data from one channel of another BitmapImage2D object or the\r\n * current BitmapImage2D object into a channel of the current BitmapImage2D object.\r\n * All of the data in the other channels in the destination BitmapImage2D object\r\n * are preserved.\r\n *\r\n *

The source channel value and destination channel value can be one of\r\n * following values:

\r\n *\r\n *
    \r\n *
  • BitmapImage2DChannel.RED
  • \r\n *
  • BitmapImage2DChannel.GREEN
  • \r\n *
  • BitmapImage2DChannel.BLUE
  • \r\n *
  • BitmapImage2DChannel.ALPHA
  • \r\n *
\r\n *\r\n * @param sourceBitmapImage2D The input bitmap image to use. The source image\r\n * can be a different BitmapImage2D object or it can\r\n * refer to the current BitmapImage2D object.\r\n * @param sourceRect The source Rectangle object. To copy only channel\r\n * data from a smaller area within the bitmap,\r\n * specify a source rectangle that is smaller than\r\n * the overall size of the BitmapImage2D object.\r\n * @param destPoint The destination Point object that represents the\r\n * upper-left corner of the rectangular area where\r\n * the new channel data is placed. To copy only\r\n * channel data from one area to a different area in\r\n * the destination image, specify a point other than\r\n * (0,0).\r\n * @param sourceChannel The source channel. Use a value from the\r\n * BitmapImage2DChannel class\r\n * (BitmapImage2DChannel.RED,\r\n * BitmapImage2DChannel.BLUE,\r\n * BitmapImage2DChannel.GREEN,\r\n * BitmapImage2DChannel.ALPHA).\r\n * @param destChannel The destination channel. Use a value from the\r\n * BitmapImage2DChannel class\r\n * (BitmapImage2DChannel.RED,\r\n * BitmapImage2DChannel.BLUE,\r\n * BitmapImage2DChannel.GREEN,\r\n * BitmapImage2DChannel.ALPHA).\r\n * @throws TypeError The sourceBitmapImage2D, sourceRect or destPoint are null.\r\n */\r\n BitmapImageCube.prototype.copyChannel = function (side, sourceBitmap, sourceRect, destPoint, sourceChannel, destChannel) {\r\n var imageData = sourceBitmap.getImageData();\r\n if (!this._locked)\r\n this._imageData[side] = this._context[side].getImageData(0, 0, this._size, this._size);\r\n var sourceData = sourceBitmap.getImageData().data;\r\n var destData = this._imageData[side].data;\r\n var sourceOffset = Math.round(Math.log(sourceChannel) / Math.log(2));\r\n var destOffset = Math.round(Math.log(destChannel) / Math.log(2));\r\n var i, j, sourceIndex, destIndex;\r\n for (i = 0; i < sourceRect.width; ++i) {\r\n for (j = 0; j < sourceRect.height; ++j) {\r\n sourceIndex = (i + sourceRect.x + (j + sourceRect.y) * sourceBitmap.width) * 4;\r\n destIndex = (i + destPoint.x + (j + destPoint.y) * this._size) * 4;\r\n destData[destIndex + destOffset] = sourceData[sourceIndex + sourceOffset];\r\n }\r\n }\r\n if (!this._locked) {\r\n this._context[side].putImageData(this._imageData[side], 0, 0);\r\n this._imageData[side] = null;\r\n }\r\n this.invalidate();\r\n };\r\n BitmapImageCube.prototype.copyPixels = function (side, source, sourceRect, destPoint) {\r\n if (source instanceof BitmapImage2D)\r\n source = source.getCanvas();\r\n if (this._locked) {\r\n // If canvas is locked:\r\n //\r\n // 1) copy image data back to canvas\r\n // 2) draw object\r\n // 3) read _imageData back out\r\n this._context[side].putImageData(this._imageData[side], 0, 0); // at coords 0,0\r\n BitmapImageUtils._copyPixels(this._context[side], source, sourceRect, destPoint);\r\n this._imageData[side] = this._context[side].getImageData(0, 0, this._size, this._size);\r\n }\r\n else {\r\n BitmapImageUtils._copyPixels(this._context[side], source, sourceRect, destPoint);\r\n }\r\n this.invalidate();\r\n };\r\n /**\r\n * Frees memory that is used to store the BitmapImage2D object.\r\n *\r\n *

When the dispose() method is called on an image, the width\r\n * and height of the image are set to 0. All subsequent calls to methods or\r\n * properties of this BitmapImage2D instance fail, and an exception is thrown.\r\n *

\r\n *\r\n *

BitmapImage2D.dispose() releases the memory occupied by the\r\n * actual bitmap data, immediately(a bitmap can consume up to 64 MB of\r\n * memory). After using BitmapImage2D.dispose(), the BitmapImage2D\r\n * object is no longer usable and an exception may be thrown if\r\n * you call functions on the BitmapImage2D object. However,\r\n * BitmapImage2D.dispose() does not garbage collect the BitmapImage2D\r\n * object(approximately 128 bytes); the memory occupied by the actual\r\n * BitmapImage2D object is released at the time the BitmapImage2D object is\r\n * collected by the garbage collector.

\r\n *\r\n */\r\n BitmapImageCube.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n for (var i = 0; i < 6; i++) {\r\n this._context[i] = null;\r\n this._imageCanvas[i] = null;\r\n this._imageData[i] = null;\r\n }\r\n this._transparent = null;\r\n this._locked = null;\r\n };\r\n BitmapImageCube.prototype.draw = function (side, source, matrix, colorTransform, blendMode, clipRect, smoothing) {\r\n if (source instanceof BitmapImage2D)\r\n source = source.getCanvas();\r\n if (this._locked) {\r\n // If canvas is locked:\r\n //\r\n // 1) copy image data back to canvas\r\n // 2) draw object\r\n // 3) read _imageData back out\r\n this._context[side].putImageData(this._imageData[side], 0, 0); // at coords 0,0\r\n BitmapImageUtils._draw(this._context[side], source, matrix, colorTransform, blendMode, clipRect, smoothing);\r\n this._imageData[side] = this._context[side].getImageData(0, 0, this._size, this._size);\r\n }\r\n else {\r\n BitmapImageUtils._draw(this._context[side], source, matrix, colorTransform, blendMode, clipRect, smoothing);\r\n }\r\n this.invalidate();\r\n };\r\n /**\r\n * Fills a rectangular area of pixels with a specified ARGB color.\r\n *\r\n * @param rect The rectangular area to fill.\r\n * @param color The ARGB color value that fills the area. ARGB colors are\r\n * often specified in hexadecimal format; for example,\r\n * 0xFF336699.\r\n * @throws TypeError The rect is null.\r\n */\r\n BitmapImageCube.prototype.fillRect = function (side, rect, color) {\r\n if (this._locked) {\r\n // If canvas is locked:\r\n //\r\n // 1) copy image data back to canvas\r\n // 2) apply fill\r\n // 3) read _imageData back out\r\n if (this._imageData[side])\r\n this._context[side].putImageData(this._imageData[side], 0, 0); // at coords 0,0\r\n BitmapImageUtils._fillRect(this._context[side], rect, color, this._transparent);\r\n if (this._imageData[side])\r\n this._imageData[side] = this._context[side].getImageData(0, 0, this._size, this._size);\r\n }\r\n else {\r\n BitmapImageUtils._fillRect(this._context[side], rect, color, this._transparent);\r\n }\r\n this.invalidate();\r\n };\r\n /**\r\n * Returns an integer that represents an RGB pixel value from a BitmapImage2D\r\n * object at a specific point(x, y). The\r\n * getPixel() method returns an unmultiplied pixel value. No\r\n * alpha information is returned.\r\n *\r\n *

All pixels in a BitmapImage2D object are stored as premultiplied color\r\n * values. A premultiplied image pixel has the red, green, and blue color\r\n * channel values already multiplied by the alpha data. For example, if the\r\n * alpha value is 0, the values for the RGB channels are also 0, independent\r\n * of their unmultiplied values. This loss of data can cause some problems\r\n * when you perform operations. All BitmapImage2D methods take and return\r\n * unmultiplied values. The internal pixel representation is converted from\r\n * premultiplied to unmultiplied before it is returned as a value. During a\r\n * set operation, the pixel value is premultiplied before the raw image pixel\r\n * is set.

\r\n *\r\n * @param x The x position of the pixel.\r\n * @param y The y position of the pixel.\r\n * @return A number that represents an RGB pixel value. If the(x,\r\n * y) coordinates are outside the bounds of the image, the\r\n * method returns 0.\r\n */\r\n BitmapImageCube.prototype.getPixel = function (side, x, y) {\r\n var r;\r\n var g;\r\n var b;\r\n var a;\r\n if (!this._locked) {\r\n var pixelData = this._context[side].getImageData(x, y, 1, 1);\r\n r = pixelData.data[0];\r\n g = pixelData.data[1];\r\n b = pixelData.data[2];\r\n a = pixelData.data[3];\r\n }\r\n else {\r\n var index = (x + y * this._size) * 4;\r\n r = this._imageData[side].data[index + 0];\r\n g = this._imageData[side].data[index + 1];\r\n b = this._imageData[side].data[index + 2];\r\n a = this._imageData[side].data[index + 3];\r\n }\r\n //returns black if fully transparent\r\n if (!a)\r\n return 0x0;\r\n return (r << 16) | (g << 8) | b;\r\n };\r\n /**\r\n * Returns an ARGB color value that contains alpha channel data and RGB data.\r\n * This method is similar to the getPixel() method, which\r\n * returns an RGB color without alpha channel data.\r\n *\r\n *

All pixels in a BitmapImage2D object are stored as premultiplied color\r\n * values. A premultiplied image pixel has the red, green, and blue color\r\n * channel values already multiplied by the alpha data. For example, if the\r\n * alpha value is 0, the values for the RGB channels are also 0, independent\r\n * of their unmultiplied values. This loss of data can cause some problems\r\n * when you perform operations. All BitmapImage2D methods take and return\r\n * unmultiplied values. The internal pixel representation is converted from\r\n * premultiplied to unmultiplied before it is returned as a value. During a\r\n * set operation, the pixel value is premultiplied before the raw image pixel\r\n * is set.

\r\n *\r\n * @param x The x position of the pixel.\r\n * @param y The y position of the pixel.\r\n * @return A number representing an ARGB pixel value. If the(x,\r\n * y) coordinates are outside the bounds of the image, 0 is\r\n * returned.\r\n */\r\n BitmapImageCube.prototype.getPixel32 = function (side, x, y) {\r\n var r;\r\n var g;\r\n var b;\r\n var a;\r\n if (!this._locked) {\r\n var pixelData = this._context[side].getImageData(x, y, 1, 1);\r\n r = pixelData.data[0];\r\n g = pixelData.data[1];\r\n b = pixelData.data[2];\r\n a = pixelData.data[3];\r\n }\r\n else {\r\n var index = (x + y * this._size) * 4;\r\n r = this._imageData[side].data[index + 0];\r\n g = this._imageData[side].data[index + 1];\r\n b = this._imageData[side].data[index + 2];\r\n a = this._imageData[side].data[index + 3];\r\n }\r\n return (a << 24) | (r << 16) | (g << 8) | b;\r\n };\r\n /**\r\n * Locks an image so that any objects that reference the BitmapImage2D object,\r\n * such as Bitmap objects, are not updated when this BitmapImage2D object\r\n * changes. To improve performance, use this method along with the\r\n * unlock() method before and after numerous calls to the\r\n * setPixel() or setPixel32() method.\r\n *\r\n */\r\n BitmapImageCube.prototype.lock = function () {\r\n if (this._locked)\r\n return;\r\n this._locked = true;\r\n for (var i = 0; i < 6; i++)\r\n this._imageData[i] = this._context[i].getImageData(0, 0, this._size, this._size);\r\n };\r\n /**\r\n * Converts an Array into a rectangular region of pixel data. For each pixel,\r\n * an Array element is read and written into the BitmapImage2D pixel. The data\r\n * in the Array is expected to be 32-bit ARGB pixel values.\r\n *\r\n * @param rect Specifies the rectangular region of the BitmapImage2D\r\n * object.\r\n * @param inputArray An Array that consists of 32-bit unmultiplied pixel\r\n * values to be used in the rectangular region.\r\n * @throws RangeError The vector array is not large enough to read all the\r\n * pixel data.\r\n */\r\n BitmapImageCube.prototype.setArray = function (side, rect, inputArray) {\r\n if (!this._locked)\r\n this._imageData[side] = this._context[side].getImageData(0, 0, this._size, this._size);\r\n var i, j, index, argb;\r\n for (i = 0; i < rect.width; ++i) {\r\n for (j = 0; j < rect.height; ++j) {\r\n argb = ColorUtils.float32ColorToARGB(inputArray[i + j * rect.width]);\r\n index = (i + rect.x + (j + rect.y) * this._size) * 4;\r\n this._imageData[side].data[index + 0] = argb[1];\r\n this._imageData[side].data[index + 1] = argb[2];\r\n this._imageData[side].data[index + 2] = argb[3];\r\n this._imageData[side].data[index + 3] = argb[0];\r\n }\r\n }\r\n if (!this._locked) {\r\n this._context[side].putImageData(this._imageData[side], 0, 0);\r\n this._imageData[side] = null;\r\n }\r\n this.invalidate();\r\n };\r\n /**\r\n * Sets a single pixel of a BitmapImage2D object. The current alpha channel\r\n * value of the image pixel is preserved during this operation. The value of\r\n * the RGB color parameter is treated as an unmultiplied color value.\r\n *\r\n *

Note: To increase performance, when you use the\r\n * setPixel() or setPixel32() method repeatedly,\r\n * call the lock() method before you call the\r\n * setPixel() or setPixel32() method, and then call\r\n * the unlock() method when you have made all pixel changes.\r\n * This process prevents objects that reference this BitmapImage2D instance from\r\n * updating until you finish making the pixel changes.

\r\n *\r\n * @param x The x position of the pixel whose value changes.\r\n * @param y The y position of the pixel whose value changes.\r\n * @param color The resulting RGB color for the pixel.\r\n */\r\n BitmapImageCube.prototype.setPixel = function (side, x, y, color) {\r\n var argb = ColorUtils.float32ColorToARGB(color);\r\n if (!this._locked)\r\n this._imageData[side] = this._context[side].getImageData(0, 0, this._size, this._size);\r\n var index = (x + y * this._size) * 4;\r\n this._imageData[side].data[index + 0] = argb[1];\r\n this._imageData[side].data[index + 1] = argb[2];\r\n this._imageData[side].data[index + 2] = argb[3];\r\n this._imageData[side].data[index + 3] = 255;\r\n if (!this._locked) {\r\n this._context[side].putImageData(this._imageData[side], 0, 0);\r\n this._imageData = null;\r\n }\r\n this.invalidate();\r\n };\r\n /**\r\n * Sets the color and alpha transparency values of a single pixel of a\r\n * BitmapImage2D object. This method is similar to the setPixel()\r\n * method; the main difference is that the setPixel32() method\r\n * takes an ARGB color value that contains alpha channel information.\r\n *\r\n *

All pixels in a BitmapImage2D object are stored as premultiplied color\r\n * values. A premultiplied image pixel has the red, green, and blue color\r\n * channel values already multiplied by the alpha data. For example, if the\r\n * alpha value is 0, the values for the RGB channels are also 0, independent\r\n * of their unmultiplied values. This loss of data can cause some problems\r\n * when you perform operations. All BitmapImage2D methods take and return\r\n * unmultiplied values. The internal pixel representation is converted from\r\n * premultiplied to unmultiplied before it is returned as a value. During a\r\n * set operation, the pixel value is premultiplied before the raw image pixel\r\n * is set.

\r\n *\r\n *

Note: To increase performance, when you use the\r\n * setPixel() or setPixel32() method repeatedly,\r\n * call the lock() method before you call the\r\n * setPixel() or setPixel32() method, and then call\r\n * the unlock() method when you have made all pixel changes.\r\n * This process prevents objects that reference this BitmapImage2D instance from\r\n * updating until you finish making the pixel changes.

\r\n *\r\n * @param x The x position of the pixel whose value changes.\r\n * @param y The y position of the pixel whose value changes.\r\n * @param color The resulting ARGB color for the pixel. If the bitmap is\r\n * opaque(not transparent), the alpha transparency portion of\r\n * this color value is ignored.\r\n */\r\n BitmapImageCube.prototype.setPixel32 = function (side, x, y, color) {\r\n var argb = ColorUtils.float32ColorToARGB(color);\r\n if (!this._locked)\r\n this._imageData[side] = this._context[side].getImageData(0, 0, this._size, this._size);\r\n var index = (x + y * this._size) * 4;\r\n this._imageData[side].data[index + 0] = argb[1];\r\n this._imageData[side].data[index + 1] = argb[2];\r\n this._imageData[side].data[index + 2] = argb[3];\r\n this._imageData[side].data[index + 3] = argb[0];\r\n if (!this._locked) {\r\n this._context[side].putImageData(this._imageData[side], 0, 0);\r\n this._imageData[side] = null;\r\n }\r\n this.invalidate();\r\n };\r\n /**\r\n * Converts a byte array into a rectangular region of pixel data. For each\r\n * pixel, the ByteArray.readUnsignedInt() method is called and\r\n * the return value is written into the pixel. If the byte array ends before\r\n * the full rectangle is written, the function returns. The data in the byte\r\n * array is expected to be 32-bit ARGB pixel values. No seeking is performed\r\n * on the byte array before or after the pixels are read.\r\n *\r\n * @param rect Specifies the rectangular region of the BitmapImage2D\r\n * object.\r\n * @param inputByteArray A ByteArray object that consists of 32-bit\r\n * unmultiplied pixel values to be used in the\r\n * rectangular region.\r\n * @throws EOFError The inputByteArray object does not include\r\n * enough data to fill the area of the rect\r\n * rectangle. The method fills as many pixels as possible\r\n * before throwing the exception.\r\n * @throws TypeError The rect or inputByteArray are null.\r\n */\r\n BitmapImageCube.prototype.setPixels = function (side, rect, inputByteArray) {\r\n if (!this._locked)\r\n this._imageData[side] = this._context[side].getImageData(0, 0, this._size, this._size);\r\n inputByteArray.position = 0;\r\n var i, j, index;\r\n for (i = 0; i < rect.width; ++i) {\r\n for (j = 0; j < rect.height; ++j) {\r\n index = (i + rect.x + (j + rect.y) * this._size) * 4;\r\n this._imageData[side].data[index + 0] = inputByteArray.readUnsignedInt();\r\n this._imageData[side].data[index + 1] = inputByteArray.readUnsignedInt();\r\n this._imageData[side].data[index + 2] = inputByteArray.readUnsignedInt();\r\n this._imageData[side].data[index + 3] = inputByteArray.readUnsignedInt();\r\n }\r\n }\r\n if (!this._locked) {\r\n this._context[side].putImageData(this._imageData[side], 0, 0);\r\n this._imageData[side] = null;\r\n }\r\n this.invalidate();\r\n };\r\n /**\r\n * Unlocks an image so that any objects that reference the BitmapImage2D object,\r\n * such as Bitmap objects, are updated when this BitmapImage2D object changes.\r\n * To improve performance, use this method along with the lock()\r\n * method before and after numerous calls to the setPixel() or\r\n * setPixel32() method.\r\n *\r\n * @param changeRect The area of the BitmapImage2D object that has changed. If\r\n * you do not specify a value for this parameter, the\r\n * entire area of the BitmapImage2D object is considered\r\n * changed.\r\n */\r\n BitmapImageCube.prototype.unlock = function () {\r\n if (!this._locked)\r\n return;\r\n this._locked = false;\r\n for (var i = 0; i < 6; i++) {\r\n this._context[i].putImageData(this._imageData[i], 0, 0); // at coords 0,0\r\n this._imageData[i] = null;\r\n }\r\n };\r\n /**\r\n *\r\n * @returns {ImageData}\r\n */\r\n BitmapImageCube.prototype.getImageData = function (side) {\r\n if (!this._locked)\r\n return this._context[side].getImageData(0, 0, this._size, this._size);\r\n return this._imageData[side];\r\n };\r\n /**\r\n *\r\n * @returns {HTMLCanvasElement}\r\n */\r\n BitmapImageCube.prototype.getCanvas = function (side) {\r\n return this._imageCanvas[side];\r\n };\r\n /**\r\n *\r\n * @param width\r\n * @param height\r\n * @private\r\n */\r\n BitmapImageCube.prototype._setSize = function (size) {\r\n _super.prototype._setSize.call(this, size);\r\n for (var i = 0; i < 6; i++) {\r\n if (this._locked)\r\n this._context[i].putImageData(this._imageData[i], 0, 0);\r\n this._imageCanvas[i].width = size;\r\n this._imageCanvas[i].height = size;\r\n if (this._locked)\r\n this._imageData[i] = this._context[i].getImageData(0, 0, this._size, this._size);\r\n }\r\n };\r\n return BitmapImageCube;\r\n}(ImageCube));\r\nexport { BitmapImageCube };\r\nBitmapImageCube.assetType = \"[image BitmapImageCube]\";\r\nBitmapImageCube.posX = 0;\r\nBitmapImageCube.negX = 1;\r\nBitmapImageCube.posY = 2;\r\nBitmapImageCube.negY = 3;\r\nBitmapImageCube.posZ = 4;\r\nBitmapImageCube.negZ = 5;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/BitmapImageCube.js","/**\r\n * A export class that provides constant values for visual blend mode effects. These\r\n * constants are used in the following:\r\n *
    \r\n *
  • The blendMode property of the\r\n * flash.display.DisplayObject class.
  • \r\n *
  • The blendMode parameter of the draw()\r\n * method of the flash.display.BitmapData class
  • \r\n *
\r\n */\r\nvar BlendMode = (function () {\r\n function BlendMode() {\r\n }\r\n return BlendMode;\r\n}());\r\nexport { BlendMode };\r\n/**\r\n * Adds the values of the constituent colors of the display object to the\r\n * colors of its background, applying a ceiling of 0xFF. This setting is\r\n * commonly used for animating a lightening dissolve between two objects.\r\n *\r\n *

For example, if the display object has a pixel with an RGB value of\r\n * 0xAAA633, and the background pixel has an RGB value of 0xDD2200, the\r\n * resulting RGB value for the displayed pixel is 0xFFC833(because 0xAA +\r\n * 0xDD > 0xFF, 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33).

\r\n */\r\nBlendMode.ADD = \"add\";\r\n/**\r\n * Applies the alpha value of each pixel of the display object to the\r\n * background. This requires the blendMode property of the\r\n * parent display object be set to\r\n * away.base.BlendMode.LAYER.\r\n *\r\n *

Not supported under GPU rendering.

\r\n */\r\nBlendMode.ALPHA = \"alpha\";\r\n/**\r\n * Selects the darker of the constituent colors of the display object and the\r\n * colors of the background(the colors with the smaller values). This\r\n * setting is commonly used for superimposing type.\r\n *\r\n *

For example, if the display object has a pixel with an RGB value of\r\n * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the\r\n * resulting RGB value for the displayed pixel is 0xDDCC00(because 0xFF >\r\n * 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).

\r\n *\r\n *

Not supported under GPU rendering.

\r\n */\r\nBlendMode.DARKEN = \"darken\";\r\n/**\r\n * Compares the constituent colors of the display object with the colors of\r\n * its background, and subtracts the darker of the values of the two\r\n * constituent colors from the lighter value. This setting is commonly used\r\n * for more vibrant colors.\r\n *\r\n *

For example, if the display object has a pixel with an RGB value of\r\n * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the\r\n * resulting RGB value for the displayed pixel is 0x222C33(because 0xFF -\r\n * 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, and 0x33 - 0x00 = 0x33).

\r\n */\r\nBlendMode.DIFFERENCE = \"difference\";\r\n/**\r\n * Erases the background based on the alpha value of the display object. This\r\n * process requires that the blendMode property of the parent\r\n * display object be set to flash.display.BlendMode.LAYER.\r\n *\r\n *

Not supported under GPU rendering.

\r\n */\r\nBlendMode.ERASE = \"erase\";\r\n/**\r\n * Adjusts the color of each pixel based on the darkness of the display\r\n * object. If the display object is lighter than 50% gray, the display object\r\n * and background colors are screened, which results in a lighter color. If\r\n * the display object is darker than 50% gray, the colors are multiplied,\r\n * which results in a darker color. This setting is commonly used for shading\r\n * effects.\r\n *\r\n *

Not supported under GPU rendering.

\r\n */\r\nBlendMode.HARDLIGHT = \"hardlight\";\r\n/**\r\n * Inverts the background.\r\n */\r\nBlendMode.INVERT = \"invert\";\r\n/**\r\n * Forces the creation of a transparency group for the display object. This\r\n * means that the display object is precomposed in a temporary buffer before\r\n * it is processed further. The precomposition is done automatically if the\r\n * display object is precached by means of bitmap caching or if the display\r\n * object is a display object container that has at least one child object\r\n * with a blendMode setting other than \"normal\".\r\n *\r\n *

Not supported under GPU rendering.

\r\n */\r\nBlendMode.LAYER = \"layer\";\r\n/**\r\n * Selects the lighter of the constituent colors of the display object and\r\n * the colors of the background(the colors with the larger values). This\r\n * setting is commonly used for superimposing type.\r\n *\r\n *

For example, if the display object has a pixel with an RGB value of\r\n * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the\r\n * resulting RGB value for the displayed pixel is 0xFFF833(because 0xFF >\r\n * 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).

\r\n *\r\n *

Not supported under GPU rendering.

\r\n */\r\nBlendMode.LIGHTEN = \"lighten\";\r\n/**\r\n * Multiplies the values of the display object constituent colors by the\r\n * constituent colors of the background color, and normalizes by dividing by\r\n * 0xFF, resulting in darker colors. This setting is commonly used for\r\n * shadows and depth effects.\r\n *\r\n *

For example, if a constituent color(such as red) of one pixel in the\r\n * display object and the corresponding color of the pixel in the background\r\n * both have the value 0x88, the multiplied result is 0x4840. Dividing by\r\n * 0xFF yields a value of 0x48 for that constituent color, which is a darker\r\n * shade than the color of the display object or the color of the\r\n * background.

\r\n */\r\nBlendMode.MULTIPLY = \"multiply\";\r\n/**\r\n * The display object appears in front of the background. Pixel values of the\r\n * display object override the pixel values of the background. Where the\r\n * display object is transparent, the background is visible.\r\n */\r\nBlendMode.NORMAL = \"normal\";\r\n/**\r\n * Adjusts the color of each pixel based on the darkness of the background.\r\n * If the background is lighter than 50% gray, the display object and\r\n * background colors are screened, which results in a lighter color. If the\r\n * background is darker than 50% gray, the colors are multiplied, which\r\n * results in a darker color. This setting is commonly used for shading\r\n * effects.\r\n *\r\n *

Not supported under GPU rendering.

\r\n */\r\nBlendMode.OVERLAY = \"overlay\";\r\n/**\r\n * Multiplies the complement(inverse) of the display object color by the\r\n * complement of the background color, resulting in a bleaching effect. This\r\n * setting is commonly used for highlights or to remove black areas of the\r\n * display object.\r\n */\r\nBlendMode.SCREEN = \"screen\";\r\n/**\r\n * Uses a shader to define the blend between objects.\r\n *\r\n *

Setting the blendShader property to a Shader instance\r\n * automatically sets the display object's blendMode property to\r\n * BlendMode.SHADER. If the blendMode property is\r\n * set to BlendMode.SHADER without first setting the\r\n * blendShader property, the blendMode property is\r\n * set to BlendMode.NORMAL instead. If the\r\n * blendShader property is set(which sets the\r\n * blendMode property to BlendMode.SHADER), then\r\n * later the value of the blendMode property is changed, the\r\n * blend mode can be reset to use the blend shader simply by setting the\r\n * blendMode property to BlendMode.SHADER. The\r\n * blendShader property does not need to be set again except to\r\n * change the shader that's used to define the blend mode.

\r\n *\r\n *

Not supported under GPU rendering.

\r\n */\r\nBlendMode.SHADER = \"shader\";\r\n/**\r\n * Subtracts the values of the constituent colors in the display object from\r\n * the values of the background color, applying a floor of 0. This setting is\r\n * commonly used for animating a darkening dissolve between two objects.\r\n *\r\n *

For example, if the display object has a pixel with an RGB value of\r\n * 0xAA2233, and the background pixel has an RGB value of 0xDDA600, the\r\n * resulting RGB value for the displayed pixel is 0x338400(because 0xDD -\r\n * 0xAA = 0x33, 0xA6 - 0x22 = 0x84, and 0x00 - 0x33 < 0x00).

\r\n */\r\nBlendMode.SUBTRACT = \"subtract\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/BlendMode.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\nvar MaterialEvent = (function (_super) {\r\n tslib_1.__extends(MaterialEvent, _super);\r\n /**\r\n * Create a new GraphicsEvent\r\n * @param type The event type.\r\n * @param dataType An optional data type of the vertex data being updated.\r\n */\r\n function MaterialEvent(type, material) {\r\n var _this = _super.call(this, type) || this;\r\n _this._material = material;\r\n return _this;\r\n }\r\n Object.defineProperty(MaterialEvent.prototype, \"material\", {\r\n /**\r\n * The material of the renderable.\r\n */\r\n get: function () {\r\n return this._material;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the event.\r\n *\r\n * @return An exact duplicate of the current object.\r\n */\r\n MaterialEvent.prototype.clone = function () {\r\n return new MaterialEvent(this.type, this._material);\r\n };\r\n return MaterialEvent;\r\n}(EventBase));\r\nexport { MaterialEvent };\r\nMaterialEvent.INVALIDATE_TEXTURE = \"invalidateTexture\";\r\nMaterialEvent.INVALIDATE_ANIMATION = \"invalidateAnimation\";\r\nMaterialEvent.INVALIDATE_PASSES = \"invalidatePasses\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/MaterialEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { ColorTransform, AssetEvent, AssetBase } from \"@awayjs/core\";\r\nimport { BlendMode } from \"../image/BlendMode\";\r\nimport { ImageBase } from \"../image/ImageBase\";\r\nimport { MaterialEvent } from \"../events/MaterialEvent\";\r\nimport { Style } from \"../base/Style\";\r\nimport { StyleEvent } from \"../events/StyleEvent\";\r\n/**\r\n * MaterialBase forms an abstract base class for any material.\r\n * A material consists of several passes, each of which constitutes at least one render call. Several passes could\r\n * be used for special effects (render lighting for many lights in several passes, render an outline in a separate\r\n * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space\r\n * subsurface scattering, or rendering a depth map for specialized self-shadowing).\r\n *\r\n * Away3D provides default materials trough SinglePassMaterialBase and TriangleMaterial, which use modular\r\n * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom\r\n * shaders, or entire new material frameworks.\r\n */\r\nvar MaterialBase = (function (_super) {\r\n tslib_1.__extends(MaterialBase, _super);\r\n function MaterialBase(imageColor, alpha) {\r\n if (imageColor === void 0) { imageColor = 0xFFFFFF; }\r\n if (alpha === void 0) { alpha = 1; }\r\n var _this = _super.call(this) || this;\r\n _this._textures = new Array();\r\n _this._pUseColorTransform = false;\r\n _this._alphaBlending = false;\r\n _this._alpha = 1;\r\n _this._pAlphaThreshold = 0;\r\n _this._pAnimateUVs = false;\r\n _this._style = new Style();\r\n _this._iBaseScreenPassIndex = 0;\r\n _this._bothSides = false; // update\r\n /**\r\n * A list of material owners, renderables or custom Entities.\r\n */\r\n _this._owners = new Array();\r\n _this._pBlendMode = BlendMode.NORMAL;\r\n _this._imageRect = false;\r\n _this._curves = false;\r\n _this._onInvalidatePropertiesDelegate = function (event) { return _this._onInvalidateProperties(event); };\r\n _this._style.addEventListener(StyleEvent.INVALIDATE_PROPERTIES, _this._onInvalidatePropertiesDelegate);\r\n if (imageColor instanceof ImageBase)\r\n _this._style.image = imageColor;\r\n else\r\n _this._style.color = Number(imageColor);\r\n _this.alpha = alpha;\r\n _this._onTextureInvalidateDelegate = function (event) { return _this.onTextureInvalidate(event); };\r\n _this.alphaPremultiplied = false; //TODO: work out why this is different for WebGL\r\n return _this;\r\n }\r\n Object.defineProperty(MaterialBase.prototype, \"alpha\", {\r\n /**\r\n * The alpha of the surface.\r\n */\r\n get: function () {\r\n return this._alpha;\r\n },\r\n set: function (value) {\r\n if (value > 1)\r\n value = 1;\r\n else if (value < 0)\r\n value = 0;\r\n if (this._alpha == value)\r\n return;\r\n this._alpha = value;\r\n if (this._colorTransform == null)\r\n this._colorTransform = new ColorTransform();\r\n this._colorTransform.alphaMultiplier = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"colorTransform\", {\r\n /**\r\n * The ColorTransform object to transform the colour of the material with. Defaults to null.\r\n */\r\n get: function () {\r\n return this._colorTransform;\r\n },\r\n set: function (value) {\r\n this._colorTransform = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"alphaBlending\", {\r\n /**\r\n * Indicates whether or not the material has transparency. If binary transparency is sufficient, for\r\n * example when using textures of foliage, consider using alphaThreshold instead.\r\n */\r\n get: function () {\r\n return this._alphaBlending;\r\n },\r\n set: function (value) {\r\n if (this._alphaBlending == value)\r\n return;\r\n this._alphaBlending = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"animationSet\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._animationSet;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"curves\", {\r\n /**\r\n * Indicates whether material should use curves. Defaults to false.\r\n */\r\n get: function () {\r\n return this._curves;\r\n },\r\n set: function (value) {\r\n if (this._curves == value)\r\n return;\r\n this._curves = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"imageRect\", {\r\n /**\r\n * Indicates whether or not any used textures should use an atlas. Defaults to false.\r\n */\r\n get: function () {\r\n return this._imageRect;\r\n },\r\n set: function (value) {\r\n if (this._imageRect == value)\r\n return;\r\n this._imageRect = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"style\", {\r\n /**\r\n * The style used to render the current TriangleGraphic. If set to null, its parent Sprite's style will be used instead.\r\n */\r\n get: function () {\r\n return this._style;\r\n },\r\n set: function (value) {\r\n if (this._style == value)\r\n return;\r\n if (this._style)\r\n this._style.removeEventListener(StyleEvent.INVALIDATE_PROPERTIES, this._onInvalidatePropertiesDelegate);\r\n this._style = value;\r\n if (this._style)\r\n this._style.addEventListener(StyleEvent.INVALIDATE_PROPERTIES, this._onInvalidatePropertiesDelegate);\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"animateUVs\", {\r\n /**\r\n * Specifies whether or not the UV coordinates should be animated using a transformation matrix.\r\n */\r\n get: function () {\r\n return this._pAnimateUVs;\r\n },\r\n set: function (value) {\r\n if (this._pAnimateUVs == value)\r\n return;\r\n this._pAnimateUVs = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"useColorTransform\", {\r\n /**\r\n * Specifies whether or not the UV coordinates should be animated using a transformation matrix.\r\n */\r\n get: function () {\r\n return this._pUseColorTransform;\r\n },\r\n set: function (value) {\r\n if (this._pUseColorTransform == value)\r\n return;\r\n this._pUseColorTransform = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"bothSides\", {\r\n /**\r\n * Defines whether or not the material should cull triangles facing away from the camera.\r\n */\r\n get: function () {\r\n return this._bothSides;\r\n },\r\n set: function (value) {\r\n if (this._bothSides = value)\r\n return;\r\n this._bothSides = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"blendMode\", {\r\n /**\r\n * The blend mode to use when drawing this renderable. The following blend modes are supported:\r\n *
    \r\n *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \r\n *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \r\n *
  • BlendMode.MULTIPLY
  • \r\n *
  • BlendMode.ADD
  • \r\n *
  • BlendMode.ALPHA
  • \r\n *
\r\n */\r\n get: function () {\r\n return this._pBlendMode;\r\n },\r\n set: function (value) {\r\n if (this._pBlendMode == value)\r\n return;\r\n this._pBlendMode = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"alphaPremultiplied\", {\r\n /**\r\n * Indicates whether visible textures (or other pixels) used by this material have\r\n * already been premultiplied. Toggle this if you are seeing black halos around your\r\n * blended alpha edges.\r\n */\r\n get: function () {\r\n return this._alphaPremultiplied;\r\n },\r\n set: function (value) {\r\n if (this._alphaPremultiplied == value)\r\n return;\r\n this._alphaPremultiplied = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MaterialBase.prototype, \"alphaThreshold\", {\r\n /**\r\n * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either\r\n * invisible or entirely opaque, often used with textures for foliage, etc.\r\n * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled).\r\n */\r\n get: function () {\r\n return this._pAlphaThreshold;\r\n },\r\n set: function (value) {\r\n if (value < 0)\r\n value = 0;\r\n else if (value > 1)\r\n value = 1;\r\n if (this._pAlphaThreshold == value)\r\n return;\r\n this._pAlphaThreshold = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n //\r\n // MATERIAL MANAGEMENT\r\n //\r\n /**\r\n * Mark an IEntity as owner of this material.\r\n * Assures we're not using the same material across renderables with different animations, since the\r\n * Programs depend on animation. This method needs to be called when a material is assigned.\r\n *\r\n * @param owner The IEntity that had this material assigned\r\n *\r\n * @internal\r\n */\r\n MaterialBase.prototype.iAddOwner = function (owner) {\r\n this._owners.push(owner);\r\n var animationSet;\r\n var animator = owner.animator;\r\n if (animator)\r\n animationSet = animator.animationSet;\r\n if (owner.animator) {\r\n if (this._animationSet && animationSet != this._animationSet) {\r\n throw new Error(\"A Material instance cannot be shared across material owners with different animation sets\");\r\n }\r\n else {\r\n if (this._animationSet != animationSet) {\r\n this._animationSet = animationSet;\r\n this.invalidateAnimation();\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Removes an IEntity as owner.\r\n * @param owner\r\n *\r\n * @internal\r\n */\r\n MaterialBase.prototype.iRemoveOwner = function (owner) {\r\n this._owners.splice(this._owners.indexOf(owner), 1);\r\n if (this._owners.length == 0) {\r\n this._animationSet = null;\r\n this.invalidateAnimation();\r\n }\r\n };\r\n Object.defineProperty(MaterialBase.prototype, \"iOwners\", {\r\n /**\r\n * A list of the IEntities that use this material\r\n *\r\n * @private\r\n */\r\n get: function () {\r\n return this._owners;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n MaterialBase.prototype.getNumTextures = function () {\r\n return this._textures.length;\r\n };\r\n MaterialBase.prototype.getTextureAt = function (index) {\r\n return this._textures[index];\r\n };\r\n /**\r\n * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.\r\n *\r\n * @private\r\n */\r\n MaterialBase.prototype.invalidatePasses = function () {\r\n this.dispatchEvent(new MaterialEvent(MaterialEvent.INVALIDATE_PASSES, this));\r\n };\r\n MaterialBase.prototype.invalidateAnimation = function () {\r\n this.dispatchEvent(new MaterialEvent(MaterialEvent.INVALIDATE_ANIMATION, this));\r\n };\r\n MaterialBase.prototype.invalidateMaterials = function () {\r\n var len = this._owners.length;\r\n for (var i = 0; i < len; i++)\r\n this._owners[i].invalidateMaterial();\r\n };\r\n MaterialBase.prototype.invalidateTexture = function () {\r\n this.dispatchEvent(new MaterialEvent(MaterialEvent.INVALIDATE_TEXTURE, this));\r\n };\r\n MaterialBase.prototype.addTextureAt = function (texture, index) {\r\n var i = this._textures.indexOf(texture);\r\n if (i == index)\r\n return;\r\n else if (i != -1)\r\n this._textures.splice(i, 1);\r\n this._textures.splice(index, 0, texture);\r\n texture.addEventListener(AssetEvent.INVALIDATE, this._onTextureInvalidateDelegate);\r\n this.onTextureInvalidate();\r\n };\r\n MaterialBase.prototype.addTexture = function (texture) {\r\n if (this._textures.indexOf(texture) != -1)\r\n return;\r\n this._textures.push(texture);\r\n texture.addEventListener(AssetEvent.INVALIDATE, this._onTextureInvalidateDelegate);\r\n this.onTextureInvalidate();\r\n };\r\n MaterialBase.prototype.removeTexture = function (texture) {\r\n this._textures.splice(this._textures.indexOf(texture), 1);\r\n texture.removeEventListener(AssetEvent.INVALIDATE, this._onTextureInvalidateDelegate);\r\n this.onTextureInvalidate();\r\n };\r\n MaterialBase.prototype.onTextureInvalidate = function (event) {\r\n if (event === void 0) { event = null; }\r\n this.invalidatePasses();\r\n //invalidate renderables for number of images getter (in case it has changed)\r\n this.invalidateMaterials();\r\n };\r\n MaterialBase.prototype._onInvalidateProperties = function (event) {\r\n this.invalidatePasses();\r\n };\r\n return MaterialBase;\r\n}(AssetBase));\r\nexport { MaterialBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/MaterialBase.js","/**\r\n *\r\n */\r\n/**\r\n *\r\n */ export var MappingMode;\r\n(function (MappingMode) {\r\n /**\r\n *\r\n */\r\n MappingMode[MappingMode[\"CUBE\"] = 0] = \"CUBE\";\r\n /**\r\n *\r\n */\r\n MappingMode[MappingMode[\"LINEAR\"] = 1] = \"LINEAR\";\r\n /**\r\n *\r\n */\r\n MappingMode[MappingMode[\"RADIAL\"] = 2] = \"RADIAL\";\r\n})(MappingMode || (MappingMode = {}));\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/textures/MappingMode.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase } from \"@awayjs/core\";\r\n/**\r\n *\r\n */\r\nvar TextureBase = (function (_super) {\r\n tslib_1.__extends(TextureBase, _super);\r\n /**\r\n *\r\n */\r\n function TextureBase() {\r\n var _this = _super.call(this) || this;\r\n _this._numImages = 0;\r\n _this._images = new Array();\r\n _this._samplers = new Array();\r\n return _this;\r\n }\r\n Object.defineProperty(TextureBase.prototype, \"mappingMode\", {\r\n get: function () {\r\n return this._mappingMode;\r\n },\r\n set: function (value) {\r\n if (this._mappingMode == value)\r\n return;\r\n this._mappingMode = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TextureBase.prototype.getNumImages = function () {\r\n return this._numImages;\r\n };\r\n TextureBase.prototype.setNumImages = function (value) {\r\n if (this._numImages == value)\r\n return;\r\n this._numImages = value;\r\n this._images.length = value;\r\n this._samplers.length = value;\r\n this.invalidate();\r\n };\r\n TextureBase.prototype.getImageAt = function (index) {\r\n return this._images[index];\r\n };\r\n TextureBase.prototype.setImageAt = function (image, index) {\r\n this._images[index] = image;\r\n this.invalidate();\r\n };\r\n TextureBase.prototype.getSamplerAt = function (index) {\r\n return this._samplers[index];\r\n };\r\n TextureBase.prototype.setSamplerAt = function (sampler, index) {\r\n this._samplers[index] = sampler;\r\n this.invalidate();\r\n };\r\n return TextureBase;\r\n}(AssetBase));\r\nexport { TextureBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/textures/TextureBase.js","import * as tslib_1 from \"tslib\";\r\nimport { ErrorBase } from \"@awayjs/core\";\r\nimport { ImageUtils } from \"../utils/ImageUtils\";\r\nimport { MappingMode } from \"./MappingMode\";\r\nimport { TextureBase } from \"./TextureBase\";\r\nvar Single2DTexture = (function (_super) {\r\n tslib_1.__extends(Single2DTexture, _super);\r\n function Single2DTexture(image2D) {\r\n if (image2D === void 0) { image2D = null; }\r\n var _this = _super.call(this) || this;\r\n _this._mappingMode = MappingMode.LINEAR;\r\n _this.setNumImages(1);\r\n _this.image2D = image2D;\r\n return _this;\r\n }\r\n Object.defineProperty(Single2DTexture.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return Single2DTexture.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Single2DTexture.prototype, \"sampler2D\", {\r\n /**\r\n *\r\n * @returns {Image2D}\r\n */\r\n get: function () {\r\n return this._samplers[0];\r\n },\r\n set: function (value) {\r\n if (this._samplers[0] == value)\r\n return;\r\n this.setSamplerAt(value, 0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Single2DTexture.prototype, \"image2D\", {\r\n /**\r\n *\r\n * @returns {Image2D}\r\n */\r\n get: function () {\r\n return this._images[0];\r\n },\r\n set: function (value) {\r\n if (this._images[0] == value)\r\n return;\r\n if (!ImageUtils.isImage2DValid(value))\r\n throw new ErrorBase(\"Invalid image2DData: Width and height must be power of 2 and cannot exceed 2048\");\r\n this.setImageAt(value, 0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Single2DTexture;\r\n}(TextureBase));\r\nexport { Single2DTexture };\r\nSingle2DTexture.assetType = \"[texture Single2DTexture]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/textures/Single2DTexture.js","import * as tslib_1 from \"tslib\";\r\nimport { Image2D } from \"../image/Image2D\";\r\nimport { MaterialBase } from \"../materials/MaterialBase\";\r\nimport { Single2DTexture } from \"../textures/Single2DTexture\";\r\n/**\r\n * BasicMaterial forms an abstract base class for the default shaded materials provided by Stage,\r\n * using material methods to define their appearance.\r\n */\r\nvar BasicMaterial = (function (_super) {\r\n tslib_1.__extends(BasicMaterial, _super);\r\n function BasicMaterial(imageColor, alpha) {\r\n if (imageColor === void 0) { imageColor = null; }\r\n if (alpha === void 0) { alpha = 1; }\r\n var _this = _super.call(this, imageColor, alpha) || this;\r\n _this._preserveAlpha = false;\r\n //set a texture if an image is present\r\n if (imageColor instanceof Image2D)\r\n _this.texture = new Single2DTexture();\r\n return _this;\r\n }\r\n Object.defineProperty(BasicMaterial.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return BasicMaterial.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BasicMaterial.prototype, \"preserveAlpha\", {\r\n /**\r\n * Indicates whether alpha should be preserved - defaults to false\r\n */\r\n get: function () {\r\n return this._preserveAlpha;\r\n },\r\n set: function (value) {\r\n if (this._preserveAlpha == value)\r\n return;\r\n this._preserveAlpha = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BasicMaterial.prototype, \"texture\", {\r\n /**\r\n * The texture object to use for the albedo colour.\r\n */\r\n get: function () {\r\n return this._texture;\r\n },\r\n set: function (value) {\r\n if (this._texture == value)\r\n return;\r\n if (this._texture)\r\n this.removeTexture(this._texture);\r\n this._texture = value;\r\n if (this._texture)\r\n this.addTexture(this._texture);\r\n this.invalidateTexture();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BasicMaterial;\r\n}(MaterialBase));\r\nexport { BasicMaterial };\r\nBasicMaterial.assetType = \"[materials BasicMaterial]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/BasicMaterial.js","import * as tslib_1 from \"tslib\";\r\nimport { MappingMode } from \"./MappingMode\";\r\nimport { TextureBase } from \"./TextureBase\";\r\nvar SingleCubeTexture = (function (_super) {\r\n tslib_1.__extends(SingleCubeTexture, _super);\r\n function SingleCubeTexture(imageCube) {\r\n if (imageCube === void 0) { imageCube = null; }\r\n var _this = _super.call(this) || this;\r\n _this._mappingMode = MappingMode.CUBE;\r\n _this.setNumImages(1);\r\n _this.imageCube = imageCube;\r\n return _this;\r\n }\r\n Object.defineProperty(SingleCubeTexture.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return SingleCubeTexture.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SingleCubeTexture.prototype, \"samplerCube\", {\r\n /**\r\n *\r\n * @returns {Image2D}\r\n */\r\n get: function () {\r\n return this._samplers[0];\r\n },\r\n set: function (value) {\r\n if (this._samplers[0] == value)\r\n return;\r\n this.setSamplerAt(value, 0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SingleCubeTexture.prototype, \"imageCube\", {\r\n /**\r\n *\r\n * @returns {ImageCube}\r\n */\r\n get: function () {\r\n return this._images[0];\r\n },\r\n set: function (value) {\r\n if (this._images[0] == value)\r\n return;\r\n this.setImageAt(value, 0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SingleCubeTexture;\r\n}(TextureBase));\r\nexport { SingleCubeTexture };\r\nSingleCubeTexture.assetType = \"[texture SingleCubeTexture]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/textures/SingleCubeTexture.js","import { LineElements } from \"../elements/LineElements\";\r\nimport { Sampler2D } from \"../image/Sampler2D\";\r\nimport { BitmapImage2D } from \"../image/BitmapImage2D\";\r\nimport { BitmapImageCube } from \"../image/BitmapImageCube\";\r\nimport { BasicMaterial } from \"../materials/BasicMaterial\";\r\nimport { Single2DTexture } from \"../textures/Single2DTexture\";\r\nimport { SingleCubeTexture } from \"../textures/SingleCubeTexture\";\r\nimport { Shape } from \"../base/Shape\";\r\nvar DefaultMaterialManager = (function () {\r\n function DefaultMaterialManager() {\r\n }\r\n DefaultMaterialManager.getDefaultMaterial = function (renderable) {\r\n if (renderable === void 0) { renderable = null; }\r\n if (renderable != null && renderable.isAsset(Shape) && renderable.elements.isAsset(LineElements)) {\r\n if (!DefaultMaterialManager._defaultColorMaterial)\r\n DefaultMaterialManager.createDefaultColorMaterial();\r\n return DefaultMaterialManager._defaultColorMaterial;\r\n }\r\n if (renderable != null && renderable.assetType == \"[asset Skybox]\") {\r\n if (!DefaultMaterialManager._defaultCubeTextureMaterial)\r\n DefaultMaterialManager.createDefaultCubeTextureMaterial();\r\n return DefaultMaterialManager._defaultCubeTextureMaterial;\r\n }\r\n if (!DefaultMaterialManager._defaultTextureMaterial)\r\n DefaultMaterialManager.createDefaultTextureMaterial();\r\n return DefaultMaterialManager._defaultTextureMaterial;\r\n };\r\n DefaultMaterialManager.getDefaultTexture = function (renderable) {\r\n if (renderable === void 0) { renderable = null; }\r\n if (renderable != null && renderable.assetType == \"[asset Skybox]\") {\r\n if (!DefaultMaterialManager._defaultCubeTexture)\r\n DefaultMaterialManager.createDefaultCubeTexture();\r\n return DefaultMaterialManager._defaultCubeTexture;\r\n }\r\n if (!DefaultMaterialManager._defaultTexture)\r\n DefaultMaterialManager.createDefaultTexture();\r\n return DefaultMaterialManager._defaultTexture;\r\n };\r\n DefaultMaterialManager.getDefaultImage2D = function () {\r\n if (!DefaultMaterialManager._defaultBitmapImage2D)\r\n DefaultMaterialManager.createDefaultImage2D();\r\n return DefaultMaterialManager._defaultBitmapImage2D;\r\n };\r\n DefaultMaterialManager.getDefaultImageCube = function () {\r\n if (!DefaultMaterialManager._defaultBitmapImageCube)\r\n DefaultMaterialManager.createDefaultImageCube();\r\n return DefaultMaterialManager._defaultBitmapImageCube;\r\n };\r\n DefaultMaterialManager.getDefaultSampler = function () {\r\n if (!DefaultMaterialManager._defaultSampler2D)\r\n DefaultMaterialManager.createDefaultSampler2D();\r\n return DefaultMaterialManager._defaultSampler2D;\r\n };\r\n DefaultMaterialManager.createDefaultTexture = function () {\r\n DefaultMaterialManager._defaultTexture = new Single2DTexture();\r\n DefaultMaterialManager._defaultTexture.name = \"defaultTexture\";\r\n };\r\n DefaultMaterialManager.createDefaultCubeTexture = function () {\r\n DefaultMaterialManager._defaultCubeTexture = new SingleCubeTexture();\r\n DefaultMaterialManager._defaultCubeTexture.name = \"defaultCubeTexture\";\r\n };\r\n DefaultMaterialManager.createDefaultImageCube = function () {\r\n if (!DefaultMaterialManager._defaultBitmapImage2D)\r\n DefaultMaterialManager.createDefaultImage2D();\r\n var b = new BitmapImageCube(DefaultMaterialManager._defaultBitmapImage2D.width);\r\n for (var i = 0; i < 6; i++)\r\n b.draw(i, DefaultMaterialManager._defaultBitmapImage2D);\r\n DefaultMaterialManager._defaultBitmapImageCube = b;\r\n };\r\n DefaultMaterialManager.createDefaultImage2D = function () {\r\n var b = new BitmapImage2D(8, 8, false, 0x000000);\r\n //create chekerboard\r\n var i, j;\r\n for (i = 0; i < 8; i++)\r\n for (j = 0; j < 8; j++)\r\n if ((j & 1) ^ (i & 1))\r\n b.setPixel(i, j, 0XFFFFFF);\r\n DefaultMaterialManager._defaultBitmapImage2D = b;\r\n };\r\n DefaultMaterialManager.createDefaultTextureMaterial = function () {\r\n if (!DefaultMaterialManager._defaultTexture)\r\n DefaultMaterialManager.createDefaultTexture();\r\n DefaultMaterialManager._defaultTextureMaterial = new BasicMaterial();\r\n DefaultMaterialManager._defaultTextureMaterial.texture = DefaultMaterialManager._defaultTexture;\r\n DefaultMaterialManager._defaultTextureMaterial.name = \"defaultTextureMaterial\";\r\n };\r\n DefaultMaterialManager.createDefaultCubeTextureMaterial = function () {\r\n if (!DefaultMaterialManager._defaultCubeTexture)\r\n DefaultMaterialManager.createDefaultCubeTexture();\r\n DefaultMaterialManager._defaultCubeTextureMaterial = new BasicMaterial();\r\n DefaultMaterialManager._defaultCubeTextureMaterial.texture = DefaultMaterialManager._defaultCubeTexture;\r\n DefaultMaterialManager._defaultCubeTextureMaterial.name = \"defaultCubeTextureMaterial\";\r\n };\r\n DefaultMaterialManager.createDefaultColorMaterial = function () {\r\n DefaultMaterialManager._defaultColorMaterial = new BasicMaterial(0xFFFFFF);\r\n DefaultMaterialManager._defaultColorMaterial.name = \"defaultColorMaterial\";\r\n };\r\n DefaultMaterialManager.createDefaultSampler2D = function () {\r\n DefaultMaterialManager._defaultSampler2D = new Sampler2D();\r\n };\r\n return DefaultMaterialManager;\r\n}());\r\nexport { DefaultMaterialManager };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/DefaultMaterialManager.js","import * as tslib_1 from \"tslib\";\r\nimport { ArgumentError, RangeError, PartialImplementationError, Point, Box, AssetBase } from \"@awayjs/core\";\r\nimport { Shape } from \"./base/Shape\";\r\nimport { GraphicsPath } from \"./draw/GraphicsPath\";\r\nimport { GraphicsFactoryFills } from \"./draw/GraphicsFactoryFills\";\r\nimport { GraphicsFactoryStrokes } from \"./draw/GraphicsFactoryStrokes\";\r\nimport { GraphicsFactoryHelper } from \"./draw/GraphicsFactoryHelper\";\r\nimport { ElementsUtils } from \"./utils/ElementsUtils\";\r\nimport { JointStyle } from \"./draw/JointStyle\";\r\nimport { LineScaleMode } from \"./draw/LineScaleMode\";\r\nimport { CapsStyle } from \"./draw/CapsStyle\";\r\nimport { GraphicsStrokeStyle } from \"./draw/GraphicsStrokeStyle\";\r\nimport { GraphicsFillStyle } from \"./draw/GraphicsFillStyle\";\r\nimport { GradientFillStyle } from \"./draw/GradientFillStyle\";\r\nimport { ElementsEvent } from \"./events/ElementsEvent\";\r\nimport { ShapeEvent } from \"./events/ShapeEvent\";\r\nimport { StyleEvent } from \"./events/StyleEvent\";\r\nimport { DefaultMaterialManager } from \"./managers/DefaultMaterialManager\";\r\nimport { Rectangle } from \"@awayjs/core\";\r\n/**\r\n *\r\n * Graphics is a collection of Shapes, each of which contain the actual geometrical data such as vertices,\r\n * normals, uvs, etc. It also contains a reference to an animation class, which defines how the geometry moves.\r\n * A Graphics object is assigned to a Sprite, a scene graph occurence of the geometry, which in turn assigns\r\n * the SubGeometries to its respective TriangleGraphic objects.\r\n *\r\n *\r\n *\r\n *\r\n * @class Graphics\r\n */\r\nvar Graphics = (function (_super) {\r\n tslib_1.__extends(Graphics, _super);\r\n /**\r\n * Creates a new Graphics object.\r\n */\r\n function Graphics(entity) {\r\n if (entity === void 0) { entity = null; }\r\n var _this = _super.call(this) || this;\r\n _this._boxBoundsInvalid = true;\r\n _this._sphereBoundsInvalid = true;\r\n _this._shapes = [];\r\n _this._current_position = new Point();\r\n _this._scaleX = 1;\r\n _this._scaleY = 1;\r\n // todo: this is a temp workarpound to prevent strokes from getting scaled, if they are not coming from awd\r\n _this.scaleStrokes = LineScaleMode.NONE;\r\n _this._drawingDirty = false;\r\n //store associated entity object, otherwise assign itself as entity\r\n _this._entity = entity;\r\n _this._drawingDirty = false;\r\n _this._current_position = new Point();\r\n _this._queued_fill_pathes = [];\r\n _this._queued_stroke_pathes = [];\r\n _this._active_fill_path = null;\r\n _this._active_stroke_path = null;\r\n _this._onInvalidatePropertiesDelegate = function (event) { return _this._onInvalidateProperties(event); };\r\n _this._onInvalidateVerticesDelegate = function (event) { return _this._onInvalidateVertices(event); };\r\n _this._onAddMaterialDelegate = function (event) { return _this._onAddMaterial(event); };\r\n _this._onRemoveMaterialDelegate = function (event) { return _this._onRemoveMaterial(event); };\r\n return _this;\r\n }\r\n Graphics.getGraphics = function (entity) {\r\n if (Graphics._pool.length) {\r\n var graphics = Graphics._pool.pop();\r\n graphics._entity = entity;\r\n return graphics;\r\n }\r\n return new Graphics(entity);\r\n };\r\n Graphics.storeGraphics = function (graphics) {\r\n graphics.clear();\r\n Graphics._pool.push(graphics);\r\n };\r\n Graphics.prototype.updateScale = function (scaleX, scaleY) {\r\n if (this._scaleX == scaleX && this._scaleY == scaleY)\r\n return;\r\n this._scaleX = scaleX;\r\n this._scaleY = scaleY;\r\n var len = this._shapes.length;\r\n var doInvalid = false;\r\n for (var i = 0; i < len; i++) {\r\n if (this._shapes[i].isStroke) {\r\n doInvalid = true;\r\n GraphicsFactoryStrokes.updateStrokesForShape(this._shapes[i], this._scaleX, this.scaleStrokes);\r\n }\r\n }\r\n if (doInvalid) {\r\n this.invalidate();\r\n }\r\n };\r\n Graphics.prototype.updateSlice9 = function (scaleX, scaleY) {\r\n if (this._scaleX == scaleX && this._scaleY == scaleY)\r\n return;\r\n this._scaleX = scaleX;\r\n this._scaleY = scaleY;\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; i++) {\r\n ElementsUtils.updateTriangleGraphicsSlice9(this._shapes[i].elements, this.originalSlice9Size, scaleX, scaleY);\r\n }\r\n this.invalidate();\r\n };\r\n Object.defineProperty(Graphics.prototype, \"assetType\", {\r\n get: function () {\r\n return Graphics.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Graphics.prototype, \"count\", {\r\n get: function () {\r\n return (this._shapes.length + this._queued_stroke_pathes.length + this._queued_fill_pathes.length);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Graphics.prototype, \"animator\", {\r\n /**\r\n * Defines the animator of the graphics object. Default value is null.\r\n */\r\n get: function () {\r\n return this._animator;\r\n },\r\n set: function (value) {\r\n if (this._animator)\r\n this._animator.removeOwner(this._entity);\r\n this._animator = value;\r\n if (this._animator)\r\n this._animator.addOwner(this._entity);\r\n if (this._material) {\r\n this._material.iRemoveOwner(this._entity);\r\n this._material.iAddOwner(this._entity);\r\n }\r\n var shape;\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; ++i) {\r\n shape = this._shapes[i];\r\n // cause material to be unregistered and registered again to work with the new animation type (if possible)\r\n if (shape.material && shape.material != this._material) {\r\n shape.material.iRemoveOwner(this._entity);\r\n shape.material.iAddOwner(this._entity);\r\n }\r\n //invalidate any existing shape objects in case they need to pull new elements\r\n shape.invalidateElements();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Graphics.prototype, \"style\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._style;\r\n },\r\n set: function (value) {\r\n if (this._style == value)\r\n return;\r\n if (this._style)\r\n this._style.removeEventListener(StyleEvent.INVALIDATE_PROPERTIES, this._onInvalidatePropertiesDelegate);\r\n this._style = value;\r\n if (this._style)\r\n this._style.addEventListener(StyleEvent.INVALIDATE_PROPERTIES, this._onInvalidatePropertiesDelegate);\r\n this.invalidateMaterials();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Graphics.prototype, \"queued_stroke_pathes\", {\r\n get: function () {\r\n return this._queued_stroke_pathes;\r\n },\r\n set: function (value) {\r\n this._queued_stroke_pathes = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Graphics.prototype, \"queued_fill_pathes\", {\r\n get: function () {\r\n return this._queued_fill_pathes;\r\n },\r\n set: function (value) {\r\n this._queued_fill_pathes = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Graphics.prototype, \"material\", {\r\n /**\r\n * The material with which to render the Graphics.\r\n */\r\n get: function () {\r\n return this._material;\r\n },\r\n set: function (value) {\r\n if (value == this._material)\r\n return;\r\n if (this._material && !this._isShapeMaterial(this._material))\r\n this._material.iRemoveOwner(this._entity);\r\n this._material = value;\r\n if (this._material && !this._isShapeMaterial(this._material))\r\n this._material.iAddOwner(this._entity);\r\n this.invalidateMaterials();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds a GraphicBase wrapping a Elements.\r\n *\r\n * @param elements\r\n */\r\n Graphics.prototype.addShape = function (shape) {\r\n var shapeIndex = this.getShapeIndex(shape);\r\n if (shapeIndex != -1)\r\n this.removeShapeAt(shapeIndex);\r\n this._shapes.push(shape);\r\n shape.addEventListener(ElementsEvent.INVALIDATE_VERTICES, this._onInvalidateVerticesDelegate);\r\n //shape.addEventListener(ShapeEvent.ADD_MATERIAL, this._onAddMaterialDelegate);\r\n //shape.addEventListener(ShapeEvent.REMOVE_MATERIAL, this._onRemoveMaterialDelegate);\r\n this.invalidate();\r\n return shape;\r\n };\r\n Graphics.prototype.removeShape = function (shape) {\r\n var shapeIndex = this.getShapeIndex(shape);\r\n if (shapeIndex == -1)\r\n throw new ArgumentError(\"Shape parameter is not a shape of the caller\");\r\n this.removeShapeAt(shapeIndex);\r\n };\r\n Graphics.prototype.removeShapeAt = function (index) {\r\n if (index < 0 || index >= this._shapes.length)\r\n throw new RangeError(\"Index is out of range\");\r\n var shape = this._shapes.splice(index, 1)[0];\r\n shape.removeEventListener(ElementsEvent.INVALIDATE_VERTICES, this._onInvalidateVerticesDelegate);\r\n //shape.removeEventListener(ShapeEvent.ADD_MATERIAL, this._onAddMaterialDelegate);\r\n //shape.removeEventListener(ShapeEvent.REMOVE_MATERIAL, this._onRemoveMaterialDelegate);\r\n this.invalidate();\r\n };\r\n Graphics.prototype.getShapeAt = function (index) {\r\n return this._shapes[index];\r\n };\r\n Graphics.prototype.getShapeIndex = function (shape) {\r\n return this._shapes.indexOf(shape);\r\n };\r\n Graphics.prototype.applyTransformation = function (transform) {\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; ++i) {\r\n this._shapes[i].applyTransformation(transform);\r\n }\r\n };\r\n Graphics.prototype.copyTo = function (graphics, cloneShapes) {\r\n if (cloneShapes === void 0) { cloneShapes = false; }\r\n graphics.material = this._material;\r\n graphics.style = this._style;\r\n graphics.particles = this.particles;\r\n graphics.numParticles = this.numParticles;\r\n graphics.scaleStrokes = this.scaleStrokes;\r\n if (this.slice9Rectangle) {\r\n graphics.slice9Rectangle = new Rectangle();\r\n graphics.slice9Rectangle.copyFrom(this.slice9Rectangle);\r\n graphics.originalSlice9Size = new Rectangle();\r\n graphics.originalSlice9Size.copyFrom(this.originalSlice9Size);\r\n graphics.minSlice9Width = this.minSlice9Width;\r\n graphics.minSlice9Height = this.minSlice9Height;\r\n }\r\n graphics._addShapes(this._shapes, cloneShapes);\r\n if (this._animator)\r\n graphics.animator = this._animator.clone();\r\n };\r\n /**\r\n * Scales the geometry.\r\n * @param scale The amount by which to scale.\r\n */\r\n Graphics.prototype.scale = function (scale) {\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; ++i)\r\n this._shapes[i].scale(scale);\r\n };\r\n Graphics.prototype.clearInternal = function () {\r\n for (var i = this._shapes.length - 1; i >= 0; i--)\r\n this._shapes[i].clear();\r\n //this.invalidateElements();\r\n };\r\n Graphics.prototype.clear = function () {\r\n var shape;\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; i++) {\r\n shape = this._shapes[i];\r\n shape.clear();\r\n shape.removeEventListener(ElementsEvent.INVALIDATE_VERTICES, this._onInvalidateVerticesDelegate);\r\n shape.removeEventListener(ShapeEvent.ADD_MATERIAL, this._onAddMaterialDelegate);\r\n shape.removeEventListener(ShapeEvent.REMOVE_MATERIAL, this._onRemoveMaterialDelegate);\r\n }\r\n this._shapes.length = 0;\r\n this.invalidate();\r\n this._active_fill_path = null;\r\n this._active_stroke_path = null;\r\n this._queued_fill_pathes.length = 0;\r\n this._queued_stroke_pathes.length = 0;\r\n this._drawingDirty = false;\r\n //this.invalidateElements();\r\n };\r\n /**\r\n * Clears all resources used by the Graphics object, including SubGeometries.\r\n */\r\n Graphics.prototype.dispose = function () {\r\n this.material = null;\r\n this.clear();\r\n if (this._animator)\r\n this._animator.dispose();\r\n };\r\n /**\r\n * Scales the uv coordinates (tiling)\r\n * @param scaleU The amount by which to scale on the u axis. Default is 1;\r\n * @param scaleV The amount by which to scale on the v axis. Default is 1;\r\n */\r\n Graphics.prototype.scaleUV = function (scaleU, scaleV) {\r\n if (scaleU === void 0) { scaleU = 1; }\r\n if (scaleV === void 0) { scaleV = 1; }\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; ++i)\r\n this._shapes[i].scaleUV(scaleU, scaleV);\r\n };\r\n Graphics.prototype.getBoxBounds = function () {\r\n if (this._drawingDirty) {\r\n this.endFill();\r\n }\r\n if (this._boxBoundsInvalid) {\r\n this._boxBoundsInvalid = false;\r\n if (!this._boxBounds)\r\n this._boxBounds = new Box();\r\n this._boxBounds.setEmpty();\r\n var numShapes = this._shapes.length;\r\n if (numShapes) {\r\n var shapeBox;\r\n var first = true;\r\n for (var i = 0; i < numShapes; i++) {\r\n shapeBox = this._shapes[i].getBoxBounds();\r\n if (shapeBox.isEmpty())\r\n continue;\r\n if (first) {\r\n first = false;\r\n this._boxBounds.copyFrom(shapeBox);\r\n }\r\n else {\r\n this._boxBounds = this._boxBounds.union(shapeBox, this._boxBounds);\r\n }\r\n }\r\n }\r\n }\r\n return this._boxBounds;\r\n };\r\n Graphics.prototype.getSphereBounds = function (center, target) {\r\n if (target === void 0) { target = null; }\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; i++) {\r\n target = this._shapes[i].getSphereBounds(center, target);\r\n }\r\n return target;\r\n };\r\n Graphics.prototype.invalidate = function () {\r\n _super.prototype.invalidate.call(this);\r\n this._boxBoundsInvalid = true;\r\n this._sphereBoundsInvalid = true;\r\n };\r\n Graphics.prototype.invalidateMaterials = function () {\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; ++i)\r\n this._shapes[i].invalidateMaterial();\r\n };\r\n Graphics.prototype.invalidateElements = function () {\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; ++i)\r\n this._shapes[i].invalidateElements();\r\n };\r\n Graphics.prototype._hitTestPointInternal = function (x, y) {\r\n //TODO: handle lines as well\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; i++)\r\n if (this._shapes[i].hitTestPoint(x, y, 0))\r\n return true;\r\n return false;\r\n };\r\n Graphics.prototype.acceptTraverser = function (traverser) {\r\n if (this._drawingDirty) {\r\n this.endFill();\r\n }\r\n var len = this._shapes.length;\r\n for (var i = len - 1; i >= 0; i--)\r\n traverser[this._shapes[i].elements.traverseName](this._shapes[i]);\r\n };\r\n Graphics.prototype._onInvalidateProperties = function (event) {\r\n this.invalidateMaterials();\r\n };\r\n Graphics.prototype._onInvalidateVertices = function (event) {\r\n //callback for bounds update\r\n if (event.attributesView != event.target.positions)\r\n return;\r\n this.invalidate();\r\n };\r\n Graphics.prototype._onAddMaterial = function (event) {\r\n var material = event.shape.material;\r\n if (material != this._material)\r\n material.iAddOwner(this._entity);\r\n };\r\n Graphics.prototype._onRemoveMaterial = function (event) {\r\n var material = event.shape.material;\r\n if (material != this._material)\r\n material.iRemoveOwner(this._entity);\r\n };\r\n Graphics.prototype.draw_fills = function () {\r\n GraphicsFactoryFills.draw_pathes(this);\r\n };\r\n Graphics.prototype.draw_strokes = function () {\r\n GraphicsFactoryStrokes.draw_pathes(this);\r\n };\r\n /**\r\n * Fills a drawing area with a bitmap image. The bitmap can be repeated or\r\n * tiled to fill the area. The fill remains in effect until you call the\r\n * beginFill(), beginBitmapFill(),\r\n * beginGradientFill(), or beginShaderFill()\r\n * method. Calling the clear() method clears the fill.\r\n *\r\n *

The application renders the fill whenever three or more points are\r\n * drawn, or when the endFill() method is called.

\r\n *\r\n * @param bitmap A transparent or opaque bitmap image that contains the bits\r\n * to be displayed.\r\n * @param matrix A matrix object(of the flash.geom.Matrix class), which you\r\n * can use to define transformations on the bitmap. For\r\n * example, you can use the following matrix to rotate a bitmap\r\n * by 45 degrees(pi/4 radians):\r\n * @param repeat If true, the bitmap image repeats in a tiled\r\n * pattern. If false, the bitmap image does not\r\n * repeat, and the edges of the bitmap are used for any fill\r\n * area that extends beyond the bitmap.\r\n *\r\n *

For example, consider the following bitmap(a 20 x\r\n * 20-pixel checkerboard pattern):

\r\n *\r\n *

When repeat is set to true(as\r\n * in the following example), the bitmap fill repeats the\r\n * bitmap:

\r\n *\r\n *

When repeat is set to false,\r\n * the bitmap fill uses the edge pixels for the fill area\r\n * outside the bitmap:

\r\n * @param smooth If false, upscaled bitmap images are rendered\r\n * by using a nearest-neighbor algorithm and look pixelated. If\r\n * true, upscaled bitmap images are rendered by\r\n * using a bilinear algorithm. Rendering by using the nearest\r\n * neighbor algorithm is faster.\r\n */\r\n Graphics.prototype.beginBitmapFill = function (bitmap, matrix, repeat, smooth) {\r\n if (matrix === void 0) { matrix = null; }\r\n if (repeat === void 0) { repeat = true; }\r\n if (smooth === void 0) { smooth = false; }\r\n this.draw_fills();\r\n this._drawingDirty = true;\r\n // start a new fill path\r\n this._active_fill_path = new GraphicsPath();\r\n // todo: create bitmap fill style\r\n this._active_fill_path.style = new GraphicsFillStyle(0xffffff, 1);\r\n if (this._current_position.x != 0 || this._current_position.y != 0)\r\n this._active_fill_path.moveTo(this._current_position.x, this._current_position.y);\r\n this._queued_fill_pathes.push(this._active_fill_path);\r\n this.invalidate();\r\n };\r\n /**\r\n * Specifies a simple one-color fill that subsequent calls to other Graphics\r\n * methods(such as lineTo() or drawCircle()) use\r\n * when drawing. The fill remains in effect until you call the\r\n * beginFill(), beginBitmapFill(),\r\n * beginGradientFill(), or beginShaderFill()\r\n * method. Calling the clear() method clears the fill.\r\n *\r\n *

The application renders the fill whenever three or more points are\r\n * drawn, or when the endFill() method is called.

\r\n *\r\n * @param color The color of the fill(0xRRGGBB).\r\n * @param alpha The alpha value of the fill(0.0 to 1.0).\r\n */\r\n Graphics.prototype.beginFill = function (color /*int*/, alpha) {\r\n if (alpha === void 0) { alpha = 1; }\r\n if (color == 0) {\r\n color = 0x010101;\r\n }\r\n this.draw_fills();\r\n this._drawingDirty = true;\r\n // start a new fill path\r\n this._active_fill_path = new GraphicsPath();\r\n this._active_fill_path.style = new GraphicsFillStyle(color, alpha);\r\n if (this._current_position.x != 0 || this._current_position.y != 0)\r\n this._active_fill_path.moveTo(this._current_position.x, this._current_position.y);\r\n this._queued_fill_pathes.push(this._active_fill_path);\r\n this.invalidate();\r\n };\r\n /**\r\n * Specifies a gradient fill used by subsequent calls to other Graphics\r\n * methods(such as lineTo() or drawCircle()) for\r\n * the object. The fill remains in effect until you call the\r\n * beginFill(), beginBitmapFill(),\r\n * beginGradientFill(), or beginShaderFill()\r\n * method. Calling the clear() method clears the fill.\r\n *\r\n *

The application renders the fill whenever three or more points are\r\n * drawn, or when the endFill() method is called.

\r\n *\r\n * @param type A value from the GradientType class that\r\n * specifies which gradient type to use:\r\n * GradientType.LINEAR or\r\n * GradientType.RADIAL.\r\n * @param colors An array of RGB hexadecimal color values used\r\n * in the gradient; for example, red is 0xFF0000,\r\n * blue is 0x0000FF, and so on. You can specify\r\n * up to 15 colors. For each color, specify a\r\n * corresponding value in the alphas and ratios\r\n * parameters.\r\n * @param alphas An array of alpha values for the corresponding\r\n * colors in the colors array; valid values are 0\r\n * to 1. If the value is less than 0, the default\r\n * is 0. If the value is greater than 1, the\r\n * default is 1.\r\n * @param ratios An array of color distribution ratios; valid\r\n * values are 0-255. This value defines the\r\n * percentage of the width where the color is\r\n * sampled at 100%. The value 0 represents the\r\n * left position in the gradient box, and 255\r\n * represents the right position in the gradient\r\n * box.\r\n * @param matrix A transformation matrix as defined by the\r\n * flash.geom.Matrix class. The flash.geom.Matrix\r\n * class includes a\r\n * createGradientBox() method, which\r\n * lets you conveniently set up the matrix for use\r\n * with the beginGradientFill()\r\n * method.\r\n * @param spreadMethod A value from the SpreadMethod class that\r\n * specifies which spread method to use, either:\r\n * SpreadMethod.PAD,\r\n * SpreadMethod.REFLECT, or\r\n * SpreadMethod.REPEAT.\r\n *\r\n *

For example, consider a simple linear\r\n * gradient between two colors:

\r\n *\r\n *

This example uses\r\n * SpreadMethod.PAD for the spread\r\n * method, and the gradient fill looks like the\r\n * following:

\r\n *\r\n *

If you use SpreadMethod.REFLECT\r\n * for the spread method, the gradient fill looks\r\n * like the following:

\r\n *\r\n *

If you use SpreadMethod.REPEAT\r\n * for the spread method, the gradient fill looks\r\n * like the following:

\r\n * @param interpolationMethod A value from the InterpolationMethod class that\r\n * specifies which value to use:\r\n * InterpolationMethod.LINEAR_RGB or\r\n * InterpolationMethod.RGB\r\n *\r\n *

For example, consider a simple linear\r\n * gradient between two colors(with the\r\n * spreadMethod parameter set to\r\n * SpreadMethod.REFLECT). The\r\n * different interpolation methods affect the\r\n * appearance as follows:

\r\n * @param focalPointRatio A number that controls the location of the\r\n * focal point of the gradient. 0 means that the\r\n * focal point is in the center. 1 means that the\r\n * focal point is at one border of the gradient\r\n * circle. -1 means that the focal point is at the\r\n * other border of the gradient circle. A value\r\n * less than -1 or greater than 1 is rounded to -1\r\n * or 1. For example, the following example shows\r\n * a focalPointRatio set to 0.75:\r\n * @throws ArgumentError If the type parameter is not valid.\r\n */\r\n Graphics.prototype.beginGradientFill = function (type, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio) {\r\n if (matrix === void 0) { matrix = null; }\r\n if (spreadMethod === void 0) { spreadMethod = \"pad\"; }\r\n if (interpolationMethod === void 0) { interpolationMethod = \"rgb\"; }\r\n if (focalPointRatio === void 0) { focalPointRatio = 0; }\r\n this.draw_fills();\r\n // start a new fill path\r\n this._drawingDirty = true;\r\n this._active_fill_path = new GraphicsPath();\r\n // todo: create gradient fill style\r\n //this._active_fill_path.style=new GraphicsFillStyle(colors[0], alphas[0]);//, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio);\r\n this._active_fill_path.style = new GradientFillStyle(type, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio);\r\n if (this._current_position.x != 0 || this._current_position.y != 0)\r\n this._active_fill_path.moveTo(this._current_position.x, this._current_position.y);\r\n this._queued_fill_pathes.push(this._active_fill_path);\r\n this.invalidate();\r\n };\r\n /**\r\n * Copies all of drawing commands from the source Graphics object into the\r\n * calling Graphics object.\r\n *\r\n * @param sourceGraphics The Graphics object from which to copy the drawing\r\n * commands.\r\n */\r\n Graphics.prototype.copyFrom = function (sourceGraphics) {\r\n sourceGraphics.copyTo(this);\r\n };\r\n /**\r\n * Draws a cubic Bezier curve from the current drawing position to the\r\n * specified anchor point. Cubic Bezier curves consist of two anchor points\r\n * and two control points. The curve interpolates the two anchor points and\r\n * curves toward the two control points.\r\n *\r\n * The four points you use to draw a cubic Bezier curve with the\r\n * cubicCurveTo() method are as follows:\r\n *\r\n *
    \r\n *
  • The current drawing position is the first anchor point.
  • \r\n *
  • The anchorX and anchorY parameters specify the second anchor point.\r\n *
  • \r\n *
  • The controlX1 and controlY1 parameters\r\n * specify the first control point.
  • \r\n *
  • The controlX2 and controlY2 parameters\r\n * specify the second control point.
  • \r\n *
\r\n *\r\n * If you call the cubicCurveTo() method before calling the\r\n * moveTo() method, your curve starts at position (0, 0).\r\n *\r\n * If the cubicCurveTo() method succeeds, the Flash runtime sets\r\n * the current drawing position to (anchorX,\r\n * anchorY). If the cubicCurveTo() method fails,\r\n * the current drawing position remains unchanged.\r\n *\r\n * If your movie clip contains content created with the Flash drawing tools,\r\n * the results of calls to the cubicCurveTo() method are drawn\r\n * underneath that content.\r\n *\r\n * @param controlX1 Specifies the horizontal position of the first control\r\n * point relative to the registration point of the parent\r\n * display object.\r\n * @param controlY1 Specifies the vertical position of the first control\r\n * point relative to the registration point of the parent\r\n * display object.\r\n * @param controlX2 Specifies the horizontal position of the second control\r\n * point relative to the registration point of the parent\r\n * display object.\r\n * @param controlY2 Specifies the vertical position of the second control\r\n * point relative to the registration point of the parent\r\n * display object.\r\n * @param anchorX Specifies the horizontal position of the anchor point\r\n * relative to the registration point of the parent display\r\n * object.\r\n * @param anchorY Specifies the vertical position of the anchor point\r\n * relative to the registration point of the parent display\r\n * object.\r\n */\r\n Graphics.prototype.cubicCurveTo = function (controlX1, controlY1, controlX2, controlY2, anchorX, anchorY) {\r\n throw new PartialImplementationError(\"cubicCurveTo\");\r\n /*\r\n t = 0.5; // given example value\r\n x = (1 - t) * (1 - t) * p[0].x + 2 * (1 - t) * t * p[1].x + t * t * p[2].x;\r\n y = (1 - t) * (1 - t) * p[0].y + 2 * (1 - t) * t * p[1].y + t * t * p[2].y;\r\n\r\n this.queued_command_types.push(Graphics.CMD_BEZIER);\r\n this.queued_command_data.push(controlX1);\r\n this.queued_command_data.push(controlY1);\r\n this.queued_command_data.push(controlX2);\r\n this.queued_command_data.push(controlY2);\r\n this.queued_command_data.push(anchorX);\r\n this.queued_command_data.push(anchorY);\r\n\r\n // todo: somehow convert cubic bezier curve into 2 quadric curves...\r\n\r\n this.draw_direction+=0;\r\n */\r\n };\r\n /**\r\n * Draws a curve using the current line style from the current drawing\r\n * position to(anchorX, anchorY) and using the control point that\r\n * (controlX, controlY) specifies. The current\r\n * drawing position is then set to(anchorX,\r\n * anchorY). If the movie clip in which you are drawing contains\r\n * content created with the Flash drawing tools, calls to the\r\n * curveTo() method are drawn underneath this content. If you\r\n * call the curveTo() method before any calls to the\r\n * moveTo() method, the default of the current drawing position\r\n * is(0, 0). If any of the parameters are missing, this method fails and the\r\n * current drawing position is not changed.\r\n *\r\n *

The curve drawn is a quadratic Bezier curve. Quadratic Bezier curves\r\n * consist of two anchor points and one control point. The curve interpolates\r\n * the two anchor points and curves toward the control point.

\r\n *\r\n * @param controlX A number that specifies the horizontal position of the\r\n * control point relative to the registration point of the\r\n * parent display object.\r\n * @param controlY A number that specifies the vertical position of the\r\n * control point relative to the registration point of the\r\n * parent display object.\r\n * @param anchorX A number that specifies the horizontal position of the\r\n * next anchor point relative to the registration point of\r\n * the parent display object.\r\n * @param anchorY A number that specifies the vertical position of the next\r\n * anchor point relative to the registration point of the\r\n * parent display object.\r\n */\r\n Graphics.prototype.curveTo = function (controlX, controlY, anchorX, anchorY) {\r\n this._drawingDirty = true;\r\n if (this._active_fill_path != null) {\r\n this._active_fill_path.curveTo(controlX, controlY, anchorX, anchorY);\r\n }\r\n if (this._active_stroke_path != null) {\r\n this._active_stroke_path.curveTo(controlX, controlY, anchorX, anchorY);\r\n }\r\n this._current_position.x = anchorX;\r\n this._current_position.y = anchorY;\r\n };\r\n /**\r\n * Draws a circle. Set the line style, fill, or both before you call the\r\n * drawCircle() method, by calling the linestyle(),\r\n * lineGradientStyle(), beginFill(),\r\n * beginGradientFill(), or beginBitmapFill()\r\n * method.\r\n *\r\n * @param x The x location of the center of the circle relative\r\n * to the registration point of the parent display object(in\r\n * pixels).\r\n * @param y The y location of the center of the circle relative\r\n * to the registration point of the parent display object(in\r\n * pixels).\r\n * @param radius The radius of the circle(in pixels).\r\n */\r\n Graphics.prototype.drawCircle = function (x, y, radius) {\r\n this._drawingDirty = true;\r\n //var radius2=radius*1.065;\r\n if (this._active_fill_path != null) {\r\n this._active_fill_path.moveTo(x, y);\r\n /*\r\n for(var i=8; i>=0;i--){\r\n\r\n var degree = (i) *(360/8)*Math.PI/180;\r\n var degree2 = degree + ((360/16)*Math.PI/180);\r\n this._active_fill_path.curveTo(x-(Math.cos(degree2)*radius2), y+(Math.sin(degree2)*radius2),x-(Math.cos(degree)*radius), y+(Math.sin(degree)*radius));\r\n }*/\r\n var r = radius;\r\n if (this._active_stroke_path != null) {\r\n r -= this._active_stroke_path.style.thickness / 2;\r\n }\r\n GraphicsFactoryHelper.drawElipse(x, y, r, r, this._active_fill_path.verts, 0, 360, 5, false);\r\n }\r\n if (this._active_stroke_path != null) {\r\n this._active_stroke_path.moveTo(x, y);\r\n /*\r\n var radius2=radius*0.93;\r\n this._active_stroke_path.curveTo(x-(radius2), y+(radius2), x-radius, y);\r\n this._active_stroke_path.curveTo(x-(radius2), y-(radius2), x, y-radius);\r\n this._active_stroke_path.curveTo(x+(radius2), y-(radius2), x+radius, y);\r\n this._active_stroke_path.curveTo(x+(radius2), y+(radius2), x, y+radius);\r\n */\r\n GraphicsFactoryHelper.drawElipseStrokes(x, y, radius, radius, this._active_stroke_path.verts, 0, 360, 5, this._active_stroke_path.style.thickness / 2, false);\r\n }\r\n };\r\n /**\r\n * Draws an ellipse. Set the line style, fill, or both before you call the\r\n * drawEllipse() method, by calling the\r\n * linestyle(), lineGradientStyle(),\r\n * beginFill(), beginGradientFill(), or\r\n * beginBitmapFill() method.\r\n *\r\n * @param x The x location of the top-left of the bounding-box of\r\n * the ellipse relative to the registration point of the parent\r\n * display object(in pixels).\r\n * @param y The y location of the top left of the bounding-box of\r\n * the ellipse relative to the registration point of the parent\r\n * display object(in pixels).\r\n * @param width The width of the ellipse(in pixels).\r\n * @param height The height of the ellipse(in pixels).\r\n */\r\n Graphics.prototype.drawEllipse = function (x, y, width, height) {\r\n this._drawingDirty = true;\r\n //var radius2=radius*1.065;\r\n if (this._active_fill_path != null) {\r\n this._active_fill_path.moveTo(x, y);\r\n /*\r\n for(var i=8; i>=0;i--){\r\n\r\n var degree = (i) *(360/8)*Math.PI/180;\r\n var degree2 = degree + ((360/16)*Math.PI/180);\r\n this._active_fill_path.curveTo(x-(Math.cos(degree2)*radius2), y+(Math.sin(degree2)*radius2),x-(Math.cos(degree)*radius), y+(Math.sin(degree)*radius));\r\n }*/\r\n var w = width;\r\n var h = height;\r\n if (this._active_stroke_path != null) {\r\n w -= this._active_stroke_path.style.thickness / 2;\r\n h -= this._active_stroke_path.style.thickness / 2;\r\n }\r\n GraphicsFactoryHelper.drawElipse(x, y, w, h, this._active_fill_path.verts, 0, 360, 5, false);\r\n }\r\n if (this._active_stroke_path != null) {\r\n this._active_stroke_path.moveTo(x, y);\r\n GraphicsFactoryHelper.drawElipseStrokes(x, y, width, height, this._active_stroke_path.verts, 0, 360, 5, this._active_stroke_path.style.thickness / 2, false);\r\n }\r\n };\r\n /**\r\n * Submits a series of IGraphicsData instances for drawing. This method\r\n * accepts a Vector containing objects including paths, fills, and strokes\r\n * that implement the IGraphicsData interface. A Vector of IGraphicsData\r\n * instances can refer to a part of a shape, or a complex fully defined set\r\n * of data for rendering a complete shape.\r\n *\r\n *

Graphics paths can contain other graphics paths. If the\r\n * graphicsData Vector includes a path, that path and all its\r\n * sub-paths are rendered during this operation.

\r\n *\r\n */\r\n Graphics.prototype.drawGraphicsData = function (graphicsData) {\r\n //this.draw_fills();\r\n /*\r\n for (var i:number=0; idrawPath()\r\n * method uses vector arrays to consolidate individual moveTo(),\r\n * lineTo(), and curveTo() drawing commands into a\r\n * single call. The drawPath() method parameters combine drawing\r\n * commands with x- and y-coordinate value pairs and a drawing direction. The\r\n * drawing commands are values from the GraphicsPathCommand class. The x- and\r\n * y-coordinate value pairs are Numbers in an array where each pair defines a\r\n * coordinate location. The drawing direction is a value from the\r\n * GraphicsPathWinding class.\r\n *\r\n *

Generally, drawings render faster with drawPath() than\r\n * with a series of individual lineTo() and\r\n * curveTo() methods.

\r\n *\r\n *

The drawPath() method uses a uses a floating computation\r\n * so rotation and scaling of shapes is more accurate and gives better\r\n * results. However, curves submitted using the drawPath()\r\n * method can have small sub-pixel alignment errors when used in conjunction\r\n * with the lineTo() and curveTo() methods.

\r\n *\r\n *

The drawPath() method also uses slightly different rules\r\n * for filling and drawing lines. They are:

\r\n *\r\n *
    \r\n *
  • When a fill is applied to rendering a path:\r\n *
      \r\n *
    • A sub-path of less than 3 points is not rendered.(But note that the\r\n * stroke rendering will still occur, consistent with the rules for strokes\r\n * below.)
    • \r\n *
    • A sub-path that isn't closed(the end point is not equal to the\r\n * begin point) is implicitly closed.
    • \r\n *
    \r\n *
  • \r\n *
  • When a stroke is applied to rendering a path:\r\n *
      \r\n *
    • The sub-paths can be composed of any number of points.
    • \r\n *
    • The sub-path is never implicitly closed.
    • \r\n *
    \r\n *
  • \r\n *
\r\n *\r\n * @param winding Specifies the winding rule using a value defined in the\r\n * GraphicsPathWinding class.\r\n */\r\n Graphics.prototype.drawPath = function (commands, data, winding) {\r\n //todo\r\n /*\r\n if(this._active_fill_path!=null){\r\n this._active_fill_path.curveTo(controlX, controlY, anchorX, anchorY);\r\n }\r\n if(this._active_stroke_path!=null){\r\n this._active_stroke_path.curveTo(controlX, controlY, anchorX, anchorY);\r\n }\r\n this._current_position.x=anchorX;\r\n this._current_position.y=anchorY;\r\n */\r\n };\r\n /**\r\n * Draws a rectangle. Set the line style, fill, or both before you call the\r\n * drawRect() method, by calling the linestyle(),\r\n * lineGradientStyle(), beginFill(),\r\n * beginGradientFill(), or beginBitmapFill()\r\n * method.\r\n *\r\n * @param x A number indicating the horizontal position relative to the\r\n * registration point of the parent display object(in pixels).\r\n * @param y A number indicating the vertical position relative to the\r\n * registration point of the parent display object(in pixels).\r\n * @param width The width of the rectangle(in pixels).\r\n * @param height The height of the rectangle(in pixels).\r\n * @throws ArgumentError If the width or height\r\n * parameters are not a number\r\n * (Number.NaN).\r\n */\r\n Graphics.prototype.drawRect = function (x, y, width, height) {\r\n this._drawingDirty = true;\r\n if (this._active_fill_path != null) {\r\n this._active_fill_path.moveTo(x, y);\r\n /*\r\n this._active_fill_path.lineTo(x+width, y);\r\n this._active_fill_path.lineTo(x+width, y+height);\r\n this._active_fill_path.lineTo(x, y+height);\r\n this._active_fill_path.lineTo(x, y);\r\n */\r\n var w = width;\r\n var h = height;\r\n var t = 0;\r\n if (this._active_stroke_path != null) {\r\n t = this._active_stroke_path.style.thickness / 2;\r\n w -= this._active_stroke_path.style.thickness;\r\n h -= this._active_stroke_path.style.thickness;\r\n }\r\n GraphicsFactoryHelper.addTriangle(x + t, y + h + t, x + t, y + t, x + w + t, y + t, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + t, y + h + t, x + t + w, y + t, x + w + t, y + h + t, 0, this._active_fill_path.verts, false);\r\n }\r\n if (this._active_stroke_path != null) {\r\n this._active_stroke_path.moveTo(x, y);\r\n //var t:number=(this._active_stroke_path.style).thickness/2;\r\n // todo: respect Jointstyle here (?)\r\n /*\r\n GraphicsFactoryHelper.addTriangle(x-t, y+height+t, x-t, y-t, x+t, y+t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x-t, y+height+t, x+t, y+height-t, x+t, y+t, 0, this._active_stroke_path.verts, false);\r\n\r\n GraphicsFactoryHelper.addTriangle(x-t, y-t, x+width+t, y-t, x+t, y+t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x+t, y+t, x+width+t, y-t, x+width-t, y+t, 0, this._active_stroke_path.verts, false);\r\n\r\n GraphicsFactoryHelper.addTriangle(x+width-t, y+height-t, x+width-t, y+t, x+width+t, y+height+t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x+width+t, y+height+t, x+width+t, y-t, x+width-t, y+t, 0, this._active_stroke_path.verts, false);\r\n\r\n GraphicsFactoryHelper.addTriangle(x-t, y+height+t, x+width+t, y+height+t, x+t, y+height-t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x+t, y+height-t, x+width+t, y+height+t, x+width-t, y+height-t, 0, this._active_stroke_path.verts, false);\r\n */\r\n this._active_stroke_path.lineTo(x + width, y);\r\n this._active_stroke_path.lineTo(x + width, y + height);\r\n this._active_stroke_path.lineTo(x, y + height);\r\n this._active_stroke_path.lineTo(x, y);\r\n }\r\n };\r\n /**\r\n * Draws a rounded rectangle. Set the line style, fill, or both before you\r\n * call the drawRoundRect() method, by calling the\r\n * linestyle(), lineGradientStyle(),\r\n * beginFill(), beginGradientFill(), or\r\n * beginBitmapFill() method.\r\n *\r\n * @param x A number indicating the horizontal position relative\r\n * to the registration point of the parent display\r\n * object(in pixels).\r\n * @param y A number indicating the vertical position relative to\r\n * the registration point of the parent display object\r\n * (in pixels).\r\n * @param width The width of the round rectangle(in pixels).\r\n * @param height The height of the round rectangle(in pixels).\r\n * @param ellipseWidth The width of the ellipse used to draw the rounded\r\n * corners(in pixels).\r\n * @param ellipseHeight The height of the ellipse used to draw the rounded\r\n * corners(in pixels). Optional; if no value is\r\n * specified, the default value matches that provided\r\n * for the ellipseWidth parameter.\r\n * @throws ArgumentError If the width, height,\r\n * ellipseWidth or\r\n * ellipseHeight parameters are not a\r\n * number(Number.NaN).\r\n */\r\n Graphics.prototype.drawRoundRect = function (x, y, width, height, ellipseWidth, ellipseHeight) {\r\n if (ellipseHeight === void 0) { ellipseHeight = NaN; }\r\n this._drawingDirty = true;\r\n if (isNaN(ellipseHeight)) {\r\n ellipseHeight = ellipseWidth;\r\n }\r\n var w = width;\r\n var h = height;\r\n var ew = ellipseWidth / 2;\r\n var eh = ellipseHeight / 2;\r\n var t = 0;\r\n if (this._active_fill_path != null) {\r\n this._active_fill_path.moveTo(x, y);\r\n if (this._active_stroke_path != null) {\r\n t = this._active_stroke_path.style.thickness / 2;\r\n w -= this._active_stroke_path.style.thickness;\r\n h -= this._active_stroke_path.style.thickness;\r\n }\r\n GraphicsFactoryHelper.addTriangle(x + t, y + h - eh, x + t, y + eh, x + w - t, y + eh, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + t, y + h - eh, x + w - t, y + eh, x + w - t, y + h - eh, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + ew, y + t, x + w - ew, y + eh, x + ew, y + eh, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + ew, y + t, x + w - ew, y + t, x + w - ew, y + eh, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + ew, y + h - eh, x + w - ew, y + h - t, x + ew, y + h - t, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + ew, y + h - eh, x + w - ew, y + h - eh, x + w - ew, y + h - t, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.drawElipse(x + ew, y + eh, ew - t, eh - t, this._active_fill_path.verts, 180, 270, 5, false);\r\n GraphicsFactoryHelper.drawElipse(x + w - ew, y + eh, ew - t, eh - t, this._active_fill_path.verts, 270, 360, 5, false);\r\n GraphicsFactoryHelper.drawElipse(x + w - ew, y + h - eh, ew - t, eh - t, this._active_fill_path.verts, 0, 90, 5, false);\r\n GraphicsFactoryHelper.drawElipse(x + ew, y + h - eh, ew - t, eh - t, this._active_fill_path.verts, 90, 180, 5, false);\r\n }\r\n if (this._active_stroke_path != null) {\r\n this._active_stroke_path.moveTo(x, y);\r\n t = this._active_stroke_path.style.thickness / 2;\r\n GraphicsFactoryHelper.addTriangle(x - t, y + h - eh, x - t, y + eh, x + t, y + eh, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x - t, y + h - eh, x + t, y + h - eh, x + t, y + eh, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + ew, y - t, x + w - ew, y - t, x + ew, y + t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + ew, y + t, x + w - ew, y - t, x + w - ew, y + t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + w - t, y + h - eh, x + w - t, y + eh, x + w + t, y + h - eh, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + w + t, y + h - eh, x + w + t, y + eh, x + w - t, y + eh, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + ew, y + h + t, x + w - ew, y + h + t, x + ew, y + h - t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + ew, y + h - t, x + w - ew, y + h + t, x + w - ew, y + h - t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.drawElipseStrokes(x + ew, y + eh, ew, eh, this._active_stroke_path.verts, 180, 270, 5, t, false);\r\n GraphicsFactoryHelper.drawElipseStrokes(x + w - ew, y + eh, ew, eh, this._active_stroke_path.verts, 270, 360, 5, t, false);\r\n GraphicsFactoryHelper.drawElipseStrokes(x + w - ew, y + h - eh, ew, eh, this._active_stroke_path.verts, 0, 90, 5, t, false);\r\n GraphicsFactoryHelper.drawElipseStrokes(x + ew, y + h - eh, ew, eh, this._active_stroke_path.verts, 90, 180, 5, t, false);\r\n }\r\n };\r\n Graphics.prototype.drawRoundRectComplex = function (x, y, width, height, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius) {\r\n var w = width;\r\n var h = height;\r\n var tl = topLeftRadius;\r\n var tr = topRightRadius;\r\n var bl = bottomLeftRadius;\r\n var br = bottomRightRadius;\r\n this._drawingDirty = true;\r\n var t = 0;\r\n if (this._active_fill_path != null) {\r\n this._active_fill_path.moveTo(x, y);\r\n if (this._active_stroke_path != null) {\r\n t = this._active_stroke_path.style.thickness / 2;\r\n w -= this._active_stroke_path.style.thickness;\r\n h -= this._active_stroke_path.style.thickness;\r\n }\r\n GraphicsFactoryHelper.addTriangle(x + tl, y + tl, x + w - tr, y + tr, x + w - br, y + h - br, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + tl, y + tl, x + w - br, y + h - br, x + bl, y + h - bl, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + t, y + tl, x + tl, y + tl, x + t, y + h - bl, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + tl, y + tl, x + t, y + h - bl, x + bl, y + h - bl, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + tl, y + t, x + tl, y + tl, x + w - tr, y + t, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + tl, y + tl, x + w - tr, y + tr, x + w - tr, y + t, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + w - t, y + tr, x + w - tr, y + tr, x + w - t, y + h - br, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + w - tr, y + tr, x + w - br, y + h - br, x + w - t, y + h - br, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + bl, y + h - t, x + w - br, y + h - t, x + bl, y + h - bl, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + bl, y + h - bl, x + w - br, y + h - t, x + w - br, y + h - br, 0, this._active_fill_path.verts, false);\r\n GraphicsFactoryHelper.drawElipse(x + tl, y + tl, tl - t, tl - t, this._active_fill_path.verts, 180, 270, 5, false);\r\n GraphicsFactoryHelper.drawElipse(x + w - tr, y + tr, tr - t, tr - t, this._active_fill_path.verts, 270, 360, 5, false);\r\n GraphicsFactoryHelper.drawElipse(x + w - br, y + h - br, br - t, br - t, this._active_fill_path.verts, 0, 90, 5, false);\r\n GraphicsFactoryHelper.drawElipse(x + bl, y + h - bl, bl - t, bl - t, this._active_fill_path.verts, 90, 180, 5, false);\r\n }\r\n if (this._active_stroke_path != null) {\r\n this._active_stroke_path.moveTo(x, y);\r\n t = this._active_stroke_path.style.thickness / 2;\r\n GraphicsFactoryHelper.addTriangle(x - t, y + h - bl, x - t, y + tl, x + t, y + tl, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x - t, y + h - bl, x + t, y + h - bl, x + t, y + tl, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + tl, y - t, x + w - tr, y - t, x + tr, y + t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + tl, y + t, x + w - tr, y - t, x + w - tr, y + t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + w - t, y + h - br, x + w - t, y + tr, x + w + t, y + h - br, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + w + t, y + h - br, x + w + t, y + tr, x + w - t, y + tr, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + bl, y + h + t, x + w - br, y + h + t, x + bl, y + h - t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.addTriangle(x + bl, y + h - t, x + w - br, y + h + t, x + w - br, y + h - t, 0, this._active_stroke_path.verts, false);\r\n GraphicsFactoryHelper.drawElipseStrokes(x + tl, y + tl, tl, tl, this._active_stroke_path.verts, 180, 270, 5, t, false);\r\n GraphicsFactoryHelper.drawElipseStrokes(x + w - tr, y + tr, tr, tr, this._active_stroke_path.verts, 270, 360, 5, t, false);\r\n GraphicsFactoryHelper.drawElipseStrokes(x + w - br, y + h - br, br, br, this._active_stroke_path.verts, 0, 90, 5, t, false);\r\n GraphicsFactoryHelper.drawElipseStrokes(x + bl, y + h - bl, bl, bl, this._active_stroke_path.verts, 90, 180, 5, t, false);\r\n }\r\n };\r\n /**\r\n * Renders a set of triangles, typically to distort bitmaps and give them a\r\n * three-dimensional appearance. The drawTriangles() method maps\r\n * either the current fill, or a bitmap fill, to the triangle faces using a\r\n * set of(u,v) coordinates.\r\n *\r\n *

Any type of fill can be used, but if the fill has a transform matrix\r\n * that transform matrix is ignored.

\r\n *\r\n *

A uvtData parameter improves texture mapping when a\r\n * bitmap fill is used.

\r\n *\r\n * @param culling Specifies whether to render triangles that face in a\r\n * specified direction. This parameter prevents the rendering\r\n * of triangles that cannot be seen in the current view. This\r\n * parameter can be set to any value defined by the\r\n * TriangleCulling class.\r\n */\r\n Graphics.prototype.drawTriangles = function (vertices, indices, uvtData, culling) {\r\n if (indices === void 0) { indices = null; }\r\n if (uvtData === void 0) { uvtData = null; }\r\n if (culling === void 0) { culling = null; }\r\n this._drawingDirty = true;\r\n if (this._active_fill_path != null) {\r\n }\r\n if (this._active_stroke_path != null) {\r\n }\r\n };\r\n /**\r\n * Applies a fill to the lines and curves that were added since the last call\r\n * to the beginFill(), beginGradientFill(), or\r\n * beginBitmapFill() method. Flash uses the fill that was\r\n * specified in the previous call to the beginFill(),\r\n * beginGradientFill(), or beginBitmapFill()\r\n * method. If the current drawing position does not equal the previous\r\n * position specified in a moveTo() method and a fill is\r\n * defined, the path is closed with a line and then filled.\r\n *\r\n */\r\n Graphics.prototype.endFill = function () {\r\n this._drawingDirty = false;\r\n this.draw_fills();\r\n this.draw_strokes();\r\n this._active_fill_path = null;\r\n this._active_stroke_path = null;\r\n //this.invalidate();\r\n //this.invalidateElements();\r\n };\r\n /**\r\n * Specifies a bitmap to use for the line stroke when drawing lines.\r\n *\r\n *

The bitmap line style is used for subsequent calls to Graphics methods\r\n * such as the lineTo() method or the drawCircle()\r\n * method. The line style remains in effect until you call the\r\n * lineStyle() or lineGradientStyle() methods, or\r\n * the lineBitmapStyle() method again with different parameters.\r\n *

\r\n *\r\n *

You can call the lineBitmapStyle() method in the middle of\r\n * drawing a path to specify different styles for different line segments\r\n * within a path.

\r\n *\r\n *

Call the lineStyle() method before you call the\r\n * lineBitmapStyle() method to enable a stroke, or else the\r\n * value of the line style is undefined.

\r\n *\r\n *

Calls to the clear() method set the line style back to\r\n * undefined.

\r\n *\r\n * @param bitmap The bitmap to use for the line stroke.\r\n * @param matrix An optional transformation matrix as defined by the\r\n * flash.geom.Matrix class. The matrix can be used to scale or\r\n * otherwise manipulate the bitmap before applying it to the\r\n * line style.\r\n * @param repeat Whether to repeat the bitmap in a tiled fashion.\r\n * @param smooth Whether smoothing should be applied to the bitmap.\r\n */\r\n Graphics.prototype.lineBitmapStyle = function (bitmap, matrix, repeat, smooth) {\r\n if (matrix === void 0) { matrix = null; }\r\n if (repeat === void 0) { repeat = true; }\r\n if (smooth === void 0) { smooth = false; }\r\n this._drawingDirty = true;\r\n // start a new stroke path\r\n this._active_stroke_path = new GraphicsPath();\r\n if (this._current_position.x != 0 || this._current_position.y != 0)\r\n this._active_stroke_path.moveTo(this._current_position.x, this._current_position.y);\r\n this._queued_stroke_pathes.push(this._active_stroke_path);\r\n this.invalidate();\r\n };\r\n /**\r\n * Specifies a gradient to use for the stroke when drawing lines.\r\n *\r\n *

The gradient line style is used for subsequent calls to Graphics\r\n * methods such as the lineTo() methods or the\r\n * drawCircle() method. The line style remains in effect until\r\n * you call the lineStyle() or lineBitmapStyle()\r\n * methods, or the lineGradientStyle() method again with\r\n * different parameters.

\r\n *\r\n *

You can call the lineGradientStyle() method in the middle\r\n * of drawing a path to specify different styles for different line segments\r\n * within a path.

\r\n *\r\n *

Call the lineStyle() method before you call the\r\n * lineGradientStyle() method to enable a stroke, or else the\r\n * value of the line style is undefined.

\r\n *\r\n *

Calls to the clear() method set the line style back to\r\n * undefined.

\r\n *\r\n * @param type A value from the GradientType class that\r\n * specifies which gradient type to use, either\r\n * GradientType.LINEAR or GradientType.RADIAL.\r\n * @param colors An array of RGB hexadecimal color values used\r\n * in the gradient; for example, red is 0xFF0000,\r\n * blue is 0x0000FF, and so on. You can specify\r\n * up to 15 colors. For each color, specify a\r\n * corresponding value in the alphas and ratios\r\n * parameters.\r\n * @param alphas An array of alpha values for the corresponding\r\n * colors in the colors array; valid values are 0\r\n * to 1. If the value is less than 0, the default\r\n * is 0. If the value is greater than 1, the\r\n * default is 1.\r\n * @param ratios An array of color distribution ratios; valid\r\n * values are 0-255. This value defines the\r\n * percentage of the width where the color is\r\n * sampled at 100%. The value 0 represents the\r\n * left position in the gradient box, and 255\r\n * represents the right position in the gradient\r\n * box.\r\n * @param matrix A transformation matrix as defined by the\r\n * flash.geom.Matrix class. The flash.geom.Matrix\r\n * class includes a\r\n * createGradientBox() method, which\r\n * lets you conveniently set up the matrix for use\r\n * with the lineGradientStyle()\r\n * method.\r\n * @param spreadMethod A value from the SpreadMethod class that\r\n * specifies which spread method to use:\r\n * @param interpolationMethod A value from the InterpolationMethod class that\r\n * specifies which value to use. For example,\r\n * consider a simple linear gradient between two\r\n * colors(with the spreadMethod\r\n * parameter set to\r\n * SpreadMethod.REFLECT). The\r\n * different interpolation methods affect the\r\n * appearance as follows:\r\n * @param focalPointRatio A number that controls the location of the\r\n * focal point of the gradient. The value 0 means\r\n * the focal point is in the center. The value 1\r\n * means the focal point is at one border of the\r\n * gradient circle. The value -1 means that the\r\n * focal point is at the other border of the\r\n * gradient circle. Values less than -1 or greater\r\n * than 1 are rounded to -1 or 1. The following\r\n * image shows a gradient with a\r\n * focalPointRatio of -0.75:\r\n */\r\n Graphics.prototype.lineGradientStyle = function (type, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio) {\r\n if (matrix === void 0) { matrix = null; }\r\n if (spreadMethod === void 0) { spreadMethod = null; }\r\n if (interpolationMethod === void 0) { interpolationMethod = null; }\r\n if (focalPointRatio === void 0) { focalPointRatio = 0; }\r\n this._drawingDirty = true;\r\n // start a new stroke path\r\n this._active_stroke_path = new GraphicsPath();\r\n this._active_stroke_path.style = new GraphicsStrokeStyle(colors[0], alphas[0], 1); //, jointstyle, capstyle, miterLimit);\r\n if (this._current_position.x != 0 || this._current_position.y != 0)\r\n this._active_stroke_path.moveTo(this._current_position.x, this._current_position.y);\r\n this._queued_stroke_pathes.push(this._active_stroke_path);\r\n this.invalidate();\r\n };\r\n /**\r\n * Specifies a shader to use for the line stroke when drawing lines.\r\n *\r\n *

The shader line style is used for subsequent calls to Graphics methods\r\n * such as the lineTo() method or the drawCircle()\r\n * method. The line style remains in effect until you call the\r\n * lineStyle() or lineGradientStyle() methods, or\r\n * the lineBitmapStyle() method again with different parameters.\r\n *

\r\n *\r\n *

You can call the lineShaderStyle() method in the middle of\r\n * drawing a path to specify different styles for different line segments\r\n * within a path.

\r\n *\r\n *

Call the lineStyle() method before you call the\r\n * lineShaderStyle() method to enable a stroke, or else the\r\n * value of the line style is undefined.

\r\n *\r\n *

Calls to the clear() method set the line style back to\r\n * undefined.

\r\n *\r\n * @param shader The shader to use for the line stroke.\r\n * @param matrix An optional transformation matrix as defined by the\r\n * flash.geom.Matrix class. The matrix can be used to scale or\r\n * otherwise manipulate the bitmap before applying it to the\r\n * line style.\r\n */\r\n //\t\tpublic lineShaderStyle(shader:Shader, matrix:Matrix = null)\r\n //\t\t{\r\n //\r\n //\t\t}\r\n /**\r\n * Specifies a line style used for subsequent calls to Graphics methods such\r\n * as the lineTo() method or the drawCircle()\r\n * method. The line style remains in effect until you call the\r\n * lineGradientStyle() method, the\r\n * lineBitmapStyle() method, or the lineStyle()\r\n * method with different parameters.\r\n *\r\n *

You can call the lineStyle() method in the middle of\r\n * drawing a path to specify different styles for different line segments\r\n * within the path.

\r\n *\r\n *

Note: Calls to the clear() method set the line\r\n * style back to undefined.

\r\n *\r\n *

Note: Flash Lite 4 supports only the first three parameters\r\n * (thickness, color, and alpha).

\r\n *\r\n * @param thickness An integer that indicates the thickness of the line in\r\n * points; valid values are 0-255. If a number is not\r\n * specified, or if the parameter is undefined, a line is\r\n * not drawn. If a value of less than 0 is passed, the\r\n * default is 0. The value 0 indicates hairline\r\n * thickness; the maximum thickness is 255. If a value\r\n * greater than 255 is passed, the default is 255.\r\n * @param color A hexadecimal color value of the line; for example,\r\n * red is 0xFF0000, blue is 0x0000FF, and so on. If a\r\n * value is not indicated, the default is 0x000000\r\n * (black). Optional.\r\n * @param alpha A number that indicates the alpha value of the color\r\n * of the line; valid values are 0 to 1. If a value is\r\n * not indicated, the default is 1(solid). If the value\r\n * is less than 0, the default is 0. If the value is\r\n * greater than 1, the default is 1.\r\n * @param pixelHinting(Not supported in Flash Lite 4) A Boolean value that\r\n * specifies whether to hint strokes to full pixels. This\r\n * affects both the position of anchors of a curve and\r\n * the line stroke size itself. With\r\n * pixelHinting set to true,\r\n * line widths are adjusted to full pixel widths. With\r\n * pixelHinting set to false,\r\n * disjoints can appear for curves and straight lines.\r\n * For example, the following illustrations show how\r\n * Flash Player or Adobe AIR renders two rounded\r\n * rectangles that are identical, except that the\r\n * pixelHinting parameter used in the\r\n * lineStyle() method is set differently\r\n * (the images are scaled by 200%, to emphasize the\r\n * difference):\r\n *\r\n *

If a value is not supplied, the line does not use\r\n * pixel hinting.

\r\n * @param scaleMode (Not supported in Flash Lite 4) A value from the\r\n * LineScaleMode class that specifies which scale mode to\r\n * use:\r\n *
    \r\n *
  • LineScaleMode.NORMAL - Always\r\n * scale the line thickness when the object is scaled\r\n * (the default).
  • \r\n *
  • LineScaleMode.NONE - Never scale\r\n * the line thickness.
  • \r\n *
  • LineScaleMode.VERTICAL - Do not\r\n * scale the line thickness if the object is scaled\r\n * vertically only. For example, consider the\r\n * following circles, drawn with a one-pixel line, and\r\n * each with the scaleMode parameter set to\r\n * LineScaleMode.VERTICAL. The circle on the\r\n * left is scaled vertically only, and the circle on the\r\n * right is scaled both vertically and horizontally:\r\n *
  • \r\n *
  • LineScaleMode.HORIZONTAL - Do not\r\n * scale the line thickness if the object is scaled\r\n * horizontally only. For example, consider the\r\n * following circles, drawn with a one-pixel line, and\r\n * each with the scaleMode parameter set to\r\n * LineScaleMode.HORIZONTAL. The circle on\r\n * the left is scaled horizontally only, and the circle\r\n * on the right is scaled both vertically and\r\n * horizontally:
  • \r\n *
\r\n * @param caps (Not supported in Flash Lite 4) A value from the\r\n * CapsStyle class that specifies the type of caps at the\r\n * end of lines. Valid values are:\r\n * CapsStyle.NONE,\r\n * CapsStyle.ROUND, and\r\n * CapsStyle.SQUARE. If a value is not\r\n * indicated, Flash uses round caps.\r\n *\r\n *

For example, the following illustrations show the\r\n * different capsStyle settings. For each\r\n * setting, the illustration shows a blue line with a\r\n * thickness of 30(for which the capsStyle\r\n * applies), and a superimposed black line with a\r\n * thickness of 1(for which no capsStyle\r\n * applies):

\r\n * @param joints (Not supported in Flash Lite 4) A value from the\r\n * JointStyle class that specifies the type of joint\r\n * appearance used at angles. Valid values are:\r\n * JointStyle.BEVEL,\r\n * JointStyle.MITER, and\r\n * JointStyle.ROUND. If a value is not\r\n * indicated, Flash uses round joints.\r\n *\r\n *

For example, the following illustrations show the\r\n * different joints settings. For each\r\n * setting, the illustration shows an angled blue line\r\n * with a thickness of 30(for which the\r\n * jointStyle applies), and a superimposed\r\n * angled black line with a thickness of 1(for which no\r\n * jointStyle applies):

\r\n *\r\n *

Note: For joints set to\r\n * JointStyle.MITER, you can use the\r\n * miterLimit parameter to limit the length\r\n * of the miter.

\r\n * @param miterLimit (Not supported in Flash Lite 4) A number that\r\n * indicates the limit at which a miter is cut off. Valid\r\n * values range from 1 to 255(and values outside that\r\n * range are rounded to 1 or 255). This value is only\r\n * used if the jointStyle is set to\r\n * \"miter\". The miterLimit\r\n * value represents the length that a miter can extend\r\n * beyond the point at which the lines meet to form a\r\n * joint. The value expresses a factor of the line\r\n * thickness. For example, with a\r\n * miterLimit factor of 2.5 and a\r\n * thickness of 10 pixels, the miter is cut\r\n * off at 25 pixels.\r\n *\r\n *

For example, consider the following angled lines,\r\n * each drawn with a thickness of 20, but\r\n * with miterLimit set to 1, 2, and 4.\r\n * Superimposed are black reference lines showing the\r\n * meeting points of the joints:

\r\n *\r\n *

Notice that a given miterLimit value\r\n * has a specific maximum angle for which the miter is\r\n * cut off. The following table lists some examples:

\r\n */\r\n Graphics.prototype.lineStyle = function (thickness, color, alpha, pixelHinting, scaleMode, capstyle, jointstyle, miterLimit) {\r\n if (thickness === void 0) { thickness = 0; }\r\n if (color === void 0) { color = 0; }\r\n if (alpha === void 0) { alpha = 1; }\r\n if (pixelHinting === void 0) { pixelHinting = false; }\r\n if (scaleMode === void 0) { scaleMode = null; }\r\n if (capstyle === void 0) { capstyle = CapsStyle.NONE; }\r\n if (jointstyle === void 0) { jointstyle = JointStyle.MITER; }\r\n if (miterLimit === void 0) { miterLimit = 100; }\r\n this._drawingDirty = true;\r\n if (thickness == 0) {\r\n thickness = 0.3;\r\n }\r\n // start a new stroke path\r\n this._active_stroke_path = new GraphicsPath();\r\n this._active_stroke_path.style = new GraphicsStrokeStyle(color, alpha, thickness, jointstyle, capstyle, miterLimit);\r\n if (this._current_position.x != 0 || this._current_position.y != 0)\r\n this._active_stroke_path.moveTo(this._current_position.x, this._current_position.y);\r\n this._queued_stroke_pathes.push(this._active_stroke_path);\r\n this.invalidate();\r\n };\r\n /**\r\n * Draws a line using the current line style from the current drawing\r\n * position to(x, y); the current drawing position\r\n * is then set to(x, y). If the display object in\r\n * which you are drawing contains content that was created with the Flash\r\n * drawing tools, calls to the lineTo() method are drawn\r\n * underneath the content. If you call lineTo() before any calls\r\n * to the moveTo() method, the default position for the current\r\n * drawing is(0, 0). If any of the parameters are missing, this\r\n * method fails and the current drawing position is not changed.\r\n *\r\n * @param x A number that indicates the horizontal position relative to the\r\n * registration point of the parent display object(in pixels).\r\n * @param y A number that indicates the vertical position relative to the\r\n * registration point of the parent display object(in pixels).\r\n */\r\n Graphics.prototype.lineTo = function (x, y) {\r\n this._drawingDirty = true;\r\n if (this._active_fill_path != null) {\r\n this._active_fill_path.lineTo(x, y);\r\n }\r\n if (this._active_stroke_path != null) {\r\n this._active_stroke_path.lineTo(x, y);\r\n }\r\n this._current_position.x = x;\r\n this._current_position.y = y;\r\n };\r\n /**\r\n * Moves the current drawing position to(x, y). If\r\n * any of the parameters are missing, this method fails and the current\r\n * drawing position is not changed.\r\n *\r\n * @param x A number that indicates the horizontal position relative to the\r\n * registration point of the parent display object(in pixels).\r\n * @param y A number that indicates the vertical position relative to the\r\n * registration point of the parent display object(in pixels).\r\n */\r\n Graphics.prototype.moveTo = function (x, y) {\r\n this._drawingDirty = true;\r\n if (this._active_fill_path != null) {\r\n this._active_fill_path.moveTo(x, y);\r\n }\r\n if (this._active_stroke_path != null) {\r\n this._active_stroke_path.moveTo(x, y);\r\n }\r\n this._current_position.x = x;\r\n this._current_position.y = y;\r\n };\r\n Graphics.prototype._addShapes = function (shapes, cloneShapes) {\r\n if (cloneShapes === void 0) { cloneShapes = false; }\r\n var shape;\r\n var len = shapes.length;\r\n for (var i = 0; i < len; i++) {\r\n shape = shapes[i];\r\n if (this.slice9Rectangle)\r\n shape = Shape.getShape(ElementsUtils.updateTriangleGraphicsSlice9(shape.elements, this.originalSlice9Size, 1, 1, false, true), shape.material, shape.style);\r\n else if (cloneShapes)\r\n shape = Shape.getShape(shape.elements, shape.material, shape.style, shape.count, shape.offset);\r\n shape.addEventListener(ElementsEvent.INVALIDATE_VERTICES, this._onInvalidateVerticesDelegate);\r\n shape.addEventListener(ShapeEvent.ADD_MATERIAL, this._onAddMaterialDelegate);\r\n shape.addEventListener(ShapeEvent.REMOVE_MATERIAL, this._onRemoveMaterialDelegate);\r\n this._shapes.push(shape);\r\n }\r\n this.invalidate();\r\n };\r\n Graphics.prototype._isShapeMaterial = function (material) {\r\n var len = this._shapes.length;\r\n for (var i = 0; i < len; i++)\r\n if (material == this._shapes[i].material)\r\n return true;\r\n return false;\r\n };\r\n return Graphics;\r\n}(AssetBase));\r\nexport { Graphics };\r\nGraphics._pool = new Array();\r\nGraphics.get_material_for_color = function (color, alpha) {\r\n return { material: DefaultMaterialManager.getDefaultMaterial() };\r\n};\r\nGraphics.get_material_for_gradient = function (gradient) {\r\n return { material: DefaultMaterialManager.getDefaultMaterial() };\r\n};\r\nGraphics.assetType = \"[asset Graphics]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/Graphics.js","import { Point, AttributesView, Float2Attributes, MathConsts, Matrix } from \"@awayjs/core\";\r\nimport { GraphicsFillStyle } from \"./GraphicsFillStyle\";\r\nimport { GradientFillStyle } from \"./GradientFillStyle\";\r\nimport { GraphicsFactoryHelper } from \"./GraphicsFactoryHelper\";\r\nimport { TriangleElements } from \"../elements/TriangleElements\";\r\nimport { Shape } from \"../base/Shape\";\r\nimport { GraphicsPathCommand } from \"./GraphicsPathCommand\";\r\nimport { Style } from \"../base/Style\";\r\nimport { Sampler2D } from \"../image/Sampler2D\";\r\nimport { Graphics } from \"../Graphics\";\r\nimport { MappingMode } from \"../textures/MappingMode\";\r\nvar Tess2 = require('tess2');\r\n/**\r\n * The Graphics class contains a set of methods that you can use to create a\r\n * vector shape. Display objects that support drawing include Sprite and Shape\r\n * objects. Each of these classes includes a graphics property\r\n * that is a Graphics object. The following are among those helper functions\r\n * provided for ease of use: drawRect(),\r\n * drawRoundRect(), drawCircle(), and\r\n * drawEllipse().\r\n *\r\n *

You cannot create a Graphics object directly from ActionScript code. If\r\n * you call new Graphics(), an exception is thrown.

\r\n *\r\n *

The Graphics class is final; it cannot be subclassed.

\r\n */\r\nvar GraphicsFactoryFills = (function () {\r\n function GraphicsFactoryFills() {\r\n }\r\n GraphicsFactoryFills.draw_pathes = function (targetGraphics) {\r\n var len = targetGraphics.queued_fill_pathes.length;\r\n var cp = 0;\r\n for (cp = 0; cp < len; cp++) {\r\n var one_path = targetGraphics.queued_fill_pathes[cp];\r\n //one_path.finalizeContour();\r\n var contour_commands = one_path.commands;\r\n var contour_data = one_path.data;\r\n var commands;\r\n var data;\r\n var i = 0;\r\n var k = 0;\r\n var vert_cnt = 0;\r\n var data_cnt = 0;\r\n var draw_direction = 0;\r\n var contours_vertices = [[]];\r\n var final_vert_list = [];\r\n var final_vert_cnt = 0;\r\n var lastPoint = new Point();\r\n var last_dir_vec = new Point();\r\n var end_point = new Point();\r\n if (contour_commands.length > 0 && contour_commands[0].length > 0) {\r\n for (k = 0; k < contour_commands.length; k++) {\r\n contours_vertices.push([]);\r\n vert_cnt = 0;\r\n data_cnt = 0;\r\n commands = contour_commands[k];\r\n data = contour_data[k];\r\n draw_direction = 0;\r\n var new_dir = 0;\r\n var new_dir_1 = 0;\r\n var new_dir_2 = 0;\r\n var dir_delta = 0;\r\n var last_direction = 0;\r\n var tmp_dir_point = new Point();\r\n if ((data[0] != data[data.length - 2]) || (data[1] != data[data.length - 1])) {\r\n data[data.length] = data[0];\r\n data[data.length] = data[1];\r\n }\r\n lastPoint.x = data[0];\r\n lastPoint.y = data[1];\r\n if (commands[1] == GraphicsPathCommand.LINE_TO) {\r\n last_dir_vec.x = data[2] - lastPoint.x;\r\n last_dir_vec.y = data[3] - lastPoint.y;\r\n }\r\n else if (commands[1] == GraphicsPathCommand.CURVE_TO) {\r\n last_dir_vec.x = data[4] - lastPoint.x;\r\n last_dir_vec.y = data[5] - lastPoint.y;\r\n }\r\n data_cnt = 2;\r\n last_dir_vec.normalize();\r\n last_direction = Math.atan2(last_dir_vec.y, last_dir_vec.x) * MathConsts.RADIANS_TO_DEGREES;\r\n for (i = 1; i < commands.length; i++) {\r\n end_point = new Point(data[data_cnt++], data[data_cnt++]);\r\n if (commands[i] == GraphicsPathCommand.MOVE_TO) {\r\n console.log(\"ERROR ! ONLY THE FIRST COMMAND FOR A CONTOUR IS ALLOWED TO BE A 'MOVE_TO' COMMAND\");\r\n }\r\n else if (commands[i] == GraphicsPathCommand.CURVE_TO) {\r\n end_point = new Point(data[data_cnt++], data[data_cnt++]);\r\n }\r\n //get the directional vector and the direction for this segment\r\n tmp_dir_point.x = end_point.x - lastPoint.x;\r\n tmp_dir_point.y = end_point.y - lastPoint.y;\r\n tmp_dir_point.normalize();\r\n new_dir = Math.atan2(tmp_dir_point.y, tmp_dir_point.x) * MathConsts.RADIANS_TO_DEGREES;\r\n // get the difference in angle to the last segment\r\n dir_delta = new_dir - last_direction;\r\n if (dir_delta > 180) {\r\n dir_delta -= 360;\r\n }\r\n if (dir_delta < -180) {\r\n dir_delta += 360;\r\n }\r\n draw_direction += dir_delta;\r\n last_direction = new_dir;\r\n lastPoint.x = end_point.x;\r\n lastPoint.y = end_point.y;\r\n }\r\n lastPoint.x = data[0];\r\n lastPoint.y = data[1];\r\n data_cnt = 2;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = lastPoint.x;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = lastPoint.y;\r\n //console.log(\"Draw directions complete: \"+draw_direction);\r\n for (i = 1; i < commands.length; i++) {\r\n switch (commands[i]) {\r\n case GraphicsPathCommand.MOVE_TO:\r\n console.log(\"ERROR ! ONLY THE FIRST COMMAND FOR A CONTOUR IS ALLOWED TO BE A 'MOVE_TO' COMMAND\");\r\n break;\r\n case GraphicsPathCommand.LINE_TO:\r\n lastPoint.x = data[data_cnt++];\r\n lastPoint.y = data[data_cnt++];\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = lastPoint.x;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = lastPoint.y;\r\n break;\r\n case GraphicsPathCommand.CURVE_TO:\r\n var control_x = data[data_cnt++];\r\n var control_y = data[data_cnt++];\r\n var end_x = data[data_cnt++];\r\n var end_y = data[data_cnt++];\r\n tmp_dir_point.x = control_x - lastPoint.x;\r\n tmp_dir_point.y = control_y - lastPoint.y;\r\n tmp_dir_point.normalize();\r\n new_dir_1 = Math.atan2(tmp_dir_point.y, tmp_dir_point.x) * MathConsts.RADIANS_TO_DEGREES;\r\n tmp_dir_point.x = end_x - lastPoint.x;\r\n tmp_dir_point.y = end_y - lastPoint.y;\r\n tmp_dir_point.normalize();\r\n new_dir_2 = Math.atan2(tmp_dir_point.y, tmp_dir_point.x) * MathConsts.RADIANS_TO_DEGREES;\r\n // get the difference in angle to the last segment\r\n var curve_direction = new_dir_2 - new_dir_1;\r\n if (curve_direction > 180) {\r\n curve_direction -= 360;\r\n }\r\n if (curve_direction < -180) {\r\n curve_direction += 360;\r\n }\r\n if ((curve_direction == 0) && (curve_direction == 180) && (curve_direction == -180)) {\r\n lastPoint.x = end_x;\r\n lastPoint.y = end_y;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = lastPoint.x;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = lastPoint.y;\r\n break;\r\n }\r\n var curve_attr_1 = -1;\r\n if (draw_direction < 0) {\r\n if (curve_direction > 0) {\r\n //convex\r\n //console.log(\"convex\");\r\n curve_attr_1 = 1;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = control_x;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = control_y;\r\n }\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = end_x;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = end_y;\r\n }\r\n else {\r\n if (curve_direction < 0) {\r\n //convex\r\n //console.log(\"convex\");\r\n curve_attr_1 = 1;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = control_x;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = control_y;\r\n }\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = end_x;\r\n contours_vertices[contours_vertices.length - 1][vert_cnt++] = end_y;\r\n }\r\n if (GraphicsFactoryHelper.isClockWiseXY(end_x, end_y, control_x, control_y, lastPoint.x, lastPoint.y)) {\r\n final_vert_list[final_vert_cnt++] = end_x;\r\n final_vert_list[final_vert_cnt++] = end_y;\r\n /*\r\n final_vert_list[final_vert_cnt++] = curve_attr_1;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n */\r\n final_vert_list[final_vert_cnt++] = control_x;\r\n final_vert_list[final_vert_cnt++] = control_y;\r\n /*\r\n final_vert_list[final_vert_cnt++] = curve_attr_1;\r\n final_vert_list[final_vert_cnt++] = 0.5;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n */\r\n final_vert_list[final_vert_cnt++] = lastPoint.x;\r\n final_vert_list[final_vert_cnt++] = lastPoint.y;\r\n }\r\n else {\r\n final_vert_list[final_vert_cnt++] = lastPoint.x;\r\n final_vert_list[final_vert_cnt++] = lastPoint.y;\r\n /*\r\n final_vert_list[final_vert_cnt++] = curve_attr_1;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n */\r\n final_vert_list[final_vert_cnt++] = control_x;\r\n final_vert_list[final_vert_cnt++] = control_y;\r\n /*\r\n final_vert_list[final_vert_cnt++] = curve_attr_1;\r\n final_vert_list[final_vert_cnt++] = 0.5;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n */\r\n final_vert_list[final_vert_cnt++] = end_x;\r\n final_vert_list[final_vert_cnt++] = end_y;\r\n }\r\n lastPoint.x = end_x;\r\n lastPoint.y = end_y;\r\n break;\r\n case GraphicsPathCommand.CUBIC_CURVE:\r\n //todo\r\n break;\r\n }\r\n }\r\n }\r\n var verts = [];\r\n var all_verts = [];\r\n var elems = [];\r\n var res = Tess2.tesselate({\r\n contours: contours_vertices,\r\n windingRule: Tess2.WINDING_ODD,\r\n elementType: Tess2.POLYGONS,\r\n polySize: 3,\r\n vertexSize: 2\r\n });\r\n var numElems = res.elements.length / 3;\r\n var p1 = 0;\r\n var p2 = 0;\r\n var p3 = 0;\r\n for (i = 0; i < numElems; ++i) {\r\n p1 = res.elements[i * 3];\r\n p2 = res.elements[i * 3 + 1];\r\n p3 = res.elements[i * 3 + 2];\r\n final_vert_list[final_vert_cnt++] = res.vertices[p3 * 2];\r\n final_vert_list[final_vert_cnt++] = res.vertices[p3 * 2 + 1];\r\n /*\r\n final_vert_list[final_vert_cnt++] = 1;\r\n final_vert_list[final_vert_cnt++] = 2.0;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n */\r\n final_vert_list[final_vert_cnt++] = res.vertices[p2 * 2];\r\n final_vert_list[final_vert_cnt++] = res.vertices[p2 * 2 + 1];\r\n /*\r\n final_vert_list[final_vert_cnt++] = 1;\r\n final_vert_list[final_vert_cnt++] = 2.0;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n final_vert_list[final_vert_cnt++] = 1.0;\r\n final_vert_list[final_vert_cnt++] = 0.0;\r\n */\r\n final_vert_list[final_vert_cnt++] = res.vertices[p1 * 2];\r\n final_vert_list[final_vert_cnt++] = res.vertices[p1 * 2 + 1];\r\n }\r\n }\r\n final_vert_list = final_vert_list.concat(targetGraphics.queued_fill_pathes[cp].verts);\r\n if (final_vert_list.length > 0) {\r\n //for (i = 0; i < final_vert_list.length/7; ++i)\r\n //\tconsole.log(\"final verts \"+i+\" = \"+final_vert_list[i*7]+\" / \"+final_vert_list[i*7+1]);\r\n var attributesView = new AttributesView(Float32Array, 2);\r\n attributesView.set(final_vert_list);\r\n var attributesBuffer = attributesView.attributesBuffer;\r\n attributesView.dispose();\r\n var elements = new TriangleElements(attributesBuffer);\r\n elements.setPositions(new Float2Attributes(attributesBuffer));\r\n //elements.setCustomAttributes(\"curves\", new Float3Attributes(attributesBuffer));\r\n //elements.setUVs(new Float2Attributes(attributesBuffer));\r\n var sampler;\r\n var style;\r\n var material;\r\n if (targetGraphics.queued_fill_pathes[cp].style.data_type == GraphicsFillStyle.data_type) {\r\n var obj = Graphics.get_material_for_color(targetGraphics.queued_fill_pathes[cp].style.color, targetGraphics.queued_fill_pathes[cp].style.alpha);\r\n material = obj.material;\r\n var shape = targetGraphics.addShape(Shape.getShape(elements, material));\r\n if (obj.colorPos) {\r\n shape.style = new Style();\r\n sampler = new Sampler2D();\r\n material.animateUVs = true;\r\n shape.style.addSamplerAt(sampler, material.getTextureAt(0));\r\n shape.style.uvMatrix = new Matrix(0, 0, 0, 0, obj.colorPos.x, obj.colorPos.y);\r\n }\r\n }\r\n else if (targetGraphics.queued_fill_pathes[cp].style.data_type == GradientFillStyle.data_type) {\r\n var gradientStyle = targetGraphics.queued_fill_pathes[cp].style;\r\n var obj = Graphics.get_material_for_gradient(gradientStyle);\r\n material = obj.material;\r\n var shape = targetGraphics.addShape(Shape.getShape(elements, material));\r\n shape.style = new Style();\r\n sampler = new Sampler2D();\r\n shape.style.addSamplerAt(sampler, material.getTextureAt(0));\r\n material.animateUVs = true;\r\n shape.style.uvMatrix = gradientStyle.getUVMatrix();\r\n // todo: always use mappingmode = Radial ?\r\n sampler.imageRect = gradientStyle.uvRectangle;\r\n material.imageRect = true;\r\n material.getTextureAt(0).mappingMode = MappingMode.RADIAL;\r\n }\r\n }\r\n }\r\n targetGraphics.queued_fill_pathes.length = 0;\r\n };\r\n return GraphicsFactoryFills;\r\n}());\r\nexport { GraphicsFactoryFills };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/GraphicsFactoryFills.js","/**\r\n * The InterpolationMethod class provides values for the\r\n * interpolationMethod parameter in the\r\n * Graphics.beginGradientFill() and\r\n * Graphics.lineGradientStyle() methods. This parameter\r\n * determines the RGB space to use when rendering the gradient.\r\n */\r\nvar InterpolationMethod = (function () {\r\n function InterpolationMethod() {\r\n }\r\n return InterpolationMethod;\r\n}());\r\nexport { InterpolationMethod };\r\n/**\r\n * Specifies that the RGB interpolation method should be used. This means\r\n * that the gradient is rendered with exponential sRGB(standard RGB) space.\r\n * The sRGB space is a W3C-endorsed standard that defines a non-linear\r\n * conversion between red, green, and blue component values and the actual\r\n * intensity of the visible component color.\r\n *\r\n *

For example, consider a simple linear gradient between two colors(with\r\n * the spreadMethod parameter set to\r\n * SpreadMethod.REFLECT). The different interpolation methods\r\n * affect the appearance as follows:

\r\n */\r\nInterpolationMethod.LINEAR_RGB = \"linearRGB\";\r\n/**\r\n * Specifies that the RGB interpolation method should be used. This means\r\n * that the gradient is rendered with exponential sRGB(standard RGB) space.\r\n * The sRGB space is a W3C-endorsed standard that defines a non-linear\r\n * conversion between red, green, and blue component values and the actual\r\n * intensity of the visible component color.\r\n *\r\n *

For example, consider a simple linear gradient between two colors(with\r\n * the spreadMethod parameter set to\r\n * SpreadMethod.REFLECT). The different interpolation methods\r\n * affect the appearance as follows:

\r\n */\r\nInterpolationMethod.RGB = \"rgb\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/InterpolationMethod.js","/**\r\n * The PixelSnapping class is an enumeration of constant values for setting\r\n * the pixel snapping options by using the pixelSnapping property\r\n * of a Bitmap object.\r\n */\r\nvar PixelSnapping = (function () {\r\n function PixelSnapping() {\r\n }\r\n return PixelSnapping;\r\n}());\r\nexport { PixelSnapping };\r\n/**\r\n * A constant value used in the pixelSnapping property of a\r\n * Bitmap object to specify that the bitmap image is always snapped to the\r\n * nearest pixel, independent of any transformation.\r\n */\r\nPixelSnapping.ALWAYS = \"always\";\r\n/**\r\n * A constant value used in the pixelSnapping property of a\r\n * Bitmap object to specify that the bitmap image is snapped to the nearest\r\n * pixel if it is drawn with no rotation or skew and it is drawn at a scale\r\n * factor of 99.9% to 100.1%. If these conditions are satisfied, the image is\r\n * drawn at 100% scale, snapped to the nearest pixel. Internally, this\r\n * setting allows the image to be drawn as fast as possible by using the\r\n * vector renderer.\r\n */\r\nPixelSnapping.AUTO = \"auto\";\r\n/**\r\n * A constant value used in the pixelSnapping property of a\r\n * Bitmap object to specify that no pixel snapping occurs.\r\n */\r\nPixelSnapping.NEVER = \"never\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/PixelSnapping.js","/**\r\n * The SpreadMethod class provides values for the spreadMethod\r\n * parameter in the beginGradientFill() and\r\n * lineGradientStyle() methods of the Graphics class.\r\n *\r\n *

The following example shows the same gradient fill using various spread\r\n * methods:

\r\n */\r\nvar SpreadMethod = (function () {\r\n function SpreadMethod() {\r\n }\r\n return SpreadMethod;\r\n}());\r\nexport { SpreadMethod };\r\n/**\r\n * Specifies that the gradient use the pad spread method.\r\n */\r\nSpreadMethod.PAD = \"pad\";\r\n/**\r\n * Specifies that the gradient use the reflect spread method.\r\n */\r\nSpreadMethod.REFLECT = \"reflect\";\r\n/**\r\n * Specifies that the gradient use the repeat spread method.\r\n */\r\nSpreadMethod.REPEAT = \"repeat\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/SpreadMethod.js","/**\r\n * Defines codes for culling algorithms that determine which triangles not to\r\n * render when drawing triangle paths.\r\n *\r\n *

The terms POSITIVE and NEGATIVE refer to the\r\n * sign of a triangle's normal along the z-axis. The normal is a 3D vector\r\n * that is perpendicular to the surface of the triangle.

\r\n *\r\n *

A triangle whose vertices 0, 1, and 2 are arranged in a clockwise order\r\n * has a positive normal value. That is, its normal points in a positive\r\n * z-axis direction, away from the current view point. When the\r\n * TriangleCulling.POSITIVE algorithm is used, triangles with\r\n * positive normals are not rendered. Another term for this is backface\r\n * culling.

\r\n *\r\n *

A triangle whose vertices are arranged in a counter-clockwise order has\r\n * a negative normal value. That is, its normal points in a negative z-axis\r\n * direction, toward the current view point. When the\r\n * TriangleCulling.NEGATIVE algorithm is used, triangles with\r\n * negative normals will not be rendered.

\r\n */\r\nvar TriangleCulling = (function () {\r\n function TriangleCulling() {\r\n }\r\n return TriangleCulling;\r\n}());\r\nexport { TriangleCulling };\r\n/**\r\n * Specifies culling of all triangles facing toward the current view point.\r\n */\r\nTriangleCulling.NEGATIVE = \"negative\";\r\n/**\r\n * Specifies no culling. All triangles in the path are rendered.\r\n */\r\nTriangleCulling.NONE = \"none\";\r\n/**\r\n * Specifies culling of all triangles facing away from the current view\r\n * point. This is also known as backface culling.\r\n */\r\nTriangleCulling.POSITIVE = \"positive\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/draw/TriangleCulling.js","var ElementsType = (function () {\r\n function ElementsType() {\r\n }\r\n return ElementsType;\r\n}());\r\nexport { ElementsType };\r\n/**\r\n *\r\n */\r\nElementsType.TRIANGLE = \"triangle\";\r\n/**\r\n *\r\n */\r\nElementsType.LINE = \"line\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/elements/ElementsType.js","var BitmapImageChannel = (function () {\r\n function BitmapImageChannel() {\r\n }\r\n return BitmapImageChannel;\r\n}());\r\nexport { BitmapImageChannel };\r\nBitmapImageChannel.ALPHA = 8;\r\nBitmapImageChannel.BLUE = 4;\r\nBitmapImageChannel.GREEN = 2;\r\nBitmapImageChannel.RED = 1;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/BitmapImageChannel.js","import * as tslib_1 from \"tslib\";\r\nimport { Image2D } from \"../image/Image2D\";\r\n/**\r\n\r\n */\r\nvar ExternalImage2D = (function (_super) {\r\n tslib_1.__extends(ExternalImage2D, _super);\r\n /**\r\n *\r\n */\r\n function ExternalImage2D(urlRequest) {\r\n var _this = _super.call(this, 8, 8, true) || this;\r\n _this._urlRequest = urlRequest;\r\n return _this;\r\n }\r\n Object.defineProperty(ExternalImage2D.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return ExternalImage2D.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExternalImage2D.prototype, \"urlRequest\", {\r\n get: function () {\r\n return this._urlRequest;\r\n },\r\n set: function (value) {\r\n this._urlRequest = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new ExternalImage2D object that is a clone of the original instance\r\n * with an exact copy of the contained bitmap.\r\n *\r\n * @return A new ExternalImage2D object that is identical to the original.\r\n */\r\n ExternalImage2D.prototype.clone = function () {\r\n var t = new ExternalImage2D(this._urlRequest);\r\n return t;\r\n };\r\n return ExternalImage2D;\r\n}(Image2D));\r\nexport { ExternalImage2D };\r\nExternalImage2D.assetType = \"[image ExternalImage2D]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/ExternalImage2D.js","import * as tslib_1 from \"tslib\";\r\nimport { SamplerBase } from \"../image/SamplerBase\";\r\n/**\r\n * The Bitmap export class represents display objects that represent bitmap images.\r\n * These can be images that you load with the flash.Assets or\r\n * flash.display.Loader classes, or they can be images that you\r\n * create with the Bitmap() constructor.\r\n *\r\n *

The Bitmap() constructor allows you to create a Bitmap\r\n * object that contains a reference to a BitmapData object. After you create a\r\n * Bitmap object, use the addChild() or addChildAt()\r\n * method of the parent DisplayObjectContainer instance to place the bitmap on\r\n * the display list.

\r\n *\r\n *

A Bitmap object can share its BitmapData reference among several Bitmap\r\n * objects, independent of translation or rotation properties. Because you can\r\n * create multiple Bitmap objects that reference the same BitmapData object,\r\n * multiple texture objects can use the same complex BitmapData object without\r\n * incurring the memory overhead of a BitmapData object for each texture\r\n * object instance.

\r\n\r\n */\r\nvar SamplerCube = (function (_super) {\r\n tslib_1.__extends(SamplerCube, _super);\r\n /**\r\n *\r\n * @param bitmapData\r\n * @param smoothing\r\n */\r\n function SamplerCube(smooth, mipmap) {\r\n if (smooth === void 0) { smooth = false; }\r\n if (mipmap === void 0) { mipmap = false; }\r\n return _super.call(this, smooth, mipmap) || this;\r\n }\r\n Object.defineProperty(SamplerCube.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return SamplerCube.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SamplerCube;\r\n}(SamplerBase));\r\nexport { SamplerCube };\r\nSamplerCube.assetType = \"[asset SamplerCube]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/SamplerCube.js","import * as tslib_1 from \"tslib\";\r\nimport { Point } from \"@awayjs/core\";\r\nimport { BitmapImage2D } from \"../image/BitmapImage2D\";\r\nimport { BitmapImageChannel } from \"../image/BitmapImageChannel\";\r\nimport { Image2D } from \"../image/Image2D\";\r\n/**\r\n *\r\n */\r\nvar SpecularImage2D = (function (_super) {\r\n tslib_1.__extends(SpecularImage2D, _super);\r\n /**\r\n *\r\n */\r\n function SpecularImage2D(specularSource, glossSource) {\r\n if (specularSource === void 0) { specularSource = null; }\r\n if (glossSource === void 0) { glossSource = null; }\r\n var _this = _super.call(this, 1, 1) || this;\r\n _this._specularSource = specularSource;\r\n _this._glossSource = glossSource;\r\n _this._output = new BitmapImage2D(1, 1, false, 0xffffff);\r\n _this._testSize();\r\n return _this;\r\n }\r\n Object.defineProperty(SpecularImage2D.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return SpecularImage2D.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpecularImage2D.prototype, \"specularSource\", {\r\n get: function () {\r\n return this._specularSource;\r\n },\r\n set: function (value) {\r\n if (this._specularSource == value)\r\n return;\r\n this._specularSource = value;\r\n this.invalidate();\r\n this._testSize();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpecularImage2D.prototype, \"glossSource\", {\r\n get: function () {\r\n return this._glossSource;\r\n },\r\n set: function (value) {\r\n if (this._glossSource == value)\r\n return;\r\n this._glossSource = value;\r\n this.invalidate();\r\n this._testSize();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new SpecularImage2D object that is a clone of the original instance\r\n * with an exact copy of the contained bitmap.\r\n *\r\n * @return A new SpecularImage2D object that is identical to the original.\r\n */\r\n SpecularImage2D.prototype.clone = function () {\r\n return new SpecularImage2D(this._specularSource, this._glossSource);\r\n };\r\n /**\r\n * Frees memory that is used to store the SpecularImage2D object.\r\n *\r\n *

When the dispose() method is called on an image, the width\r\n * and height of the image are set to 0. All subsequent calls to methods or\r\n * properties of this SpecularImage2D instance fail, and an exception is thrown.\r\n *

\r\n *\r\n *

SpecularImage2D.dispose() releases the memory occupied by the\r\n * actual bitmap data, immediately(a bitmap can consume up to 64 MB of\r\n * memory). After using SpecularImage2D.dispose(), the SpecularImage2D\r\n * object is no longer usable and an exception may be thrown if\r\n * you call functions on the SpecularImage2D object. However,\r\n * SpecularImage2D.dispose() does not garbage collect the SpecularImage2D\r\n * object(approximately 128 bytes); the memory occupied by the actual\r\n * SpecularImage2D object is released at the time the SpecularImage2D object is\r\n * collected by the garbage collector.

\r\n *\r\n */\r\n SpecularImage2D.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n this._rect = null;\r\n this._output.dispose();\r\n };\r\n /**\r\n *\r\n * @returns {ImageData}\r\n */\r\n SpecularImage2D.prototype.getImageData = function () {\r\n var origin = new Point();\r\n this._output.fillRect(this._rect, 0xffffff);\r\n if (this._glossSource)\r\n this._output.copyChannel(this._glossSource, this._rect, origin, BitmapImageChannel.GREEN, BitmapImageChannel.GREEN);\r\n if (this._specularSource)\r\n this._output.copyChannel(this._specularSource, this._rect, origin, BitmapImageChannel.RED, BitmapImageChannel.RED);\r\n return this._output.getImageData();\r\n };\r\n /**\r\n *\r\n * @returns {HTMLCanvasElement}\r\n */\r\n SpecularImage2D.prototype.getCanvas = function () {\r\n return this._output.getCanvas();\r\n };\r\n /**\r\n *\r\n * @param width\r\n * @param height\r\n * @private\r\n */\r\n SpecularImage2D.prototype._setSize = function (width, height) {\r\n _super.prototype._setSize.call(this, width, height);\r\n this._output._setSize(width, height);\r\n };\r\n SpecularImage2D.prototype._testSize = function () {\r\n var w, h;\r\n if (this._specularSource) {\r\n w = this._specularSource.width;\r\n h = this._specularSource.height;\r\n }\r\n else if (this._glossSource) {\r\n w = this._glossSource.width;\r\n h = this._glossSource.height;\r\n }\r\n else {\r\n w = 1;\r\n h = 1;\r\n }\r\n if (w != this._output.width && h != this._output.height) {\r\n this._output.dispose();\r\n this._output = new BitmapImage2D(w, h, false, 0xffffff);\r\n }\r\n this._setSize(w, h);\r\n };\r\n return SpecularImage2D;\r\n}(Image2D));\r\nexport { SpecularImage2D };\r\nSpecularImage2D.assetType = \"[asset SpecularImage2D]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/SpecularImage2D.js","/*import {IRenderable} from \"../base/IRenderable\";\r\nimport {LineElements} from \"../elements/LineElements\";\r\nimport {Sampler2D} from \"../image/Sampler2D\";\r\nimport {BitmapImageCube} from \"../image/BitmapImageCube\";\r\nimport {MaterialBase} from \"../materials/MaterialBase\";\r\nimport {BasicMaterial} from \"../materials/BasicMaterial\";\r\nimport {Single2DTexture} from \"../textures/Single2DTexture\";\r\nimport {SingleCubeTexture} from \"../textures/SingleCubeTexture\";\r\nimport {Shape} from \"../base/Shape\";\r\n*/\r\nimport { Point, ColorUtils, Rectangle } from \"@awayjs/core\";\r\nimport { BitmapImage2D } from \"../image/BitmapImage2D\";\r\nvar TextureAtlas = (function () {\r\n function TextureAtlas() {\r\n this.availableRows = 256;\r\n this.gradient_row = -1;\r\n this.color_row = 255;\r\n this.color_position = 256;\r\n this.availableGradients = 256;\r\n this.availableColors = 0;\r\n this.bitmap = new BitmapImage2D(256, 256, false, 0xff0000);\r\n this.availableRows = 256;\r\n this.availableColors = 0;\r\n }\r\n TextureAtlas.getTextureForColor = function (color, alpha) {\r\n var colorString = color.toString() + \"#\" + alpha.toString();\r\n if (TextureAtlas._allColors.hasOwnProperty(colorString)) {\r\n return TextureAtlas._allColors[colorString];\r\n }\r\n // find textureAtlas that has empty space:\r\n var t_len = TextureAtlas._allTextureAtlas.length;\r\n var t = 0;\r\n var textureAtlas;\r\n for (t = 0; t < t_len; t++) {\r\n if (TextureAtlas._allTextureAtlas[t].fit_color()) {\r\n textureAtlas = TextureAtlas._allTextureAtlas[t];\r\n break;\r\n }\r\n }\r\n if (!textureAtlas) {\r\n textureAtlas = new TextureAtlas();\r\n TextureAtlas._allTextureAtlas.push(textureAtlas);\r\n }\r\n var newColorObj = {};\r\n newColorObj.colorPos = textureAtlas.draw_color(color, alpha);\r\n newColorObj.bitmap = textureAtlas.bitmap;\r\n TextureAtlas._allColors[colorString] = newColorObj;\r\n return newColorObj;\r\n };\r\n TextureAtlas.getTextureForGradient = function (gradient) {\r\n var gradientStr = gradient.toString();\r\n if (TextureAtlas._allGradients.hasOwnProperty(gradientStr)) {\r\n gradient.uvRectangle = TextureAtlas._allGradients[gradientStr].uvRectangle;\r\n return TextureAtlas._allGradients[gradientStr];\r\n }\r\n var t_len = TextureAtlas._allTextureAtlas.length;\r\n var t = 0;\r\n var textureAtlas;\r\n for (t = 0; t < t_len; t++) {\r\n if (TextureAtlas._allTextureAtlas[t].fit_gradient()) {\r\n textureAtlas = TextureAtlas._allTextureAtlas[t];\r\n break;\r\n }\r\n }\r\n if (!textureAtlas) {\r\n textureAtlas = new TextureAtlas();\r\n TextureAtlas._allTextureAtlas.push(textureAtlas);\r\n }\r\n var newColorObj = {};\r\n textureAtlas.draw_gradient(gradient);\r\n newColorObj.uvRectangle = new Rectangle();\r\n newColorObj.uvRectangle.copyFrom(gradient.uvRectangle);\r\n newColorObj.bitmap = textureAtlas.bitmap;\r\n TextureAtlas._allGradients[gradientStr] = newColorObj;\r\n return newColorObj;\r\n };\r\n TextureAtlas.prototype.fit_gradient = function () {\r\n return (this.availableRows > 0);\r\n };\r\n TextureAtlas.prototype.fit_color = function () {\r\n if (this.availableColors > 0)\r\n return true;\r\n return (this.availableRows > 0);\r\n };\r\n TextureAtlas.prototype.draw_gradient = function (gradient) {\r\n if (this.availableRows < 0) {\r\n console.log(\"error in TextureAtlasManager.draw_color\");\r\n return;\r\n }\r\n this.gradient_row++;\r\n this.availableRows--;\r\n var px;\r\n for (px = 0; px < 256; px++) {\r\n this.bitmap.setPixelFromArray(px, this.gradient_row, gradient.getColorAtPosition(px));\r\n }\r\n this.bitmap.invalidate();\r\n gradient.uvRectangle.x = 1 / 512;\r\n gradient.uvRectangle.y = 1 / 512 + (this.gradient_row / 256); //+1/512;\r\n gradient.uvRectangle.width = 1 - 1 / 512;\r\n gradient.uvRectangle.height = gradient.uvRectangle.y;\r\n return this.availableRows;\r\n };\r\n TextureAtlas.prototype.draw_color = function (color, alpha) {\r\n if (alpha === void 0) { alpha = 1; }\r\n this.color_position--;\r\n if (this.color_position < 0) {\r\n if (this.availableRows > 0) {\r\n this.color_row--;\r\n this.availableRows--;\r\n this.color_position = 255;\r\n }\r\n else {\r\n console.log(\"error in TextureAtlasManager.draw_color\");\r\n }\r\n }\r\n var argb = ColorUtils.float32ColorToARGB(color);\r\n argb[0] = alpha;\r\n this.bitmap.setPixelFromArray(this.color_position, this.color_row, argb);\r\n this.bitmap.invalidate();\r\n return new Point(1 / 512 + this.color_position / 256, 1 / 512 + this.color_row / 256);\r\n };\r\n return TextureAtlas;\r\n}());\r\nexport { TextureAtlas };\r\nTextureAtlas._allTextureAtlas = [];\r\nTextureAtlas._allGradients = {};\r\nTextureAtlas._allColors = {};\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/TextureAtlas.js","import * as tslib_1 from \"tslib\";\r\nimport { URLLoaderDataFormat, ParserBase, ParserUtils, ByteArray, URLRequest } from \"@awayjs/core\";\r\nimport { ExternalImage2D } from \"../image/ExternalImage2D\";\r\nimport { ImageUtils } from \"../utils/ImageUtils\";\r\nimport { DefaultGraphicsFactory } from \"../factories/DefaultGraphicsFactory\";\r\n/**\r\n * Image2DParser provides a \"parser\" for natively supported image types (jpg, png). While it simply loads bytes into\r\n * a loader object, it wraps it in a BitmapDataResource so resource management can happen consistently without\r\n * exception cases.\r\n */\r\nvar Image2DParser = (function (_super) {\r\n tslib_1.__extends(Image2DParser, _super);\r\n /**\r\n * Creates a new Image2DParser object.\r\n * @param uri The url or id of the data or file to be parsed.\r\n * @param extra The holder for extra contextual data that the parser might need.\r\n */\r\n function Image2DParser(factory) {\r\n if (factory === void 0) { factory = null; }\r\n var _this = _super.call(this, URLLoaderDataFormat.BLOB) || this;\r\n _this._factory = factory || new DefaultGraphicsFactory();\r\n return _this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n Image2DParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"jpg\" || extension == \"jpeg\" || extension == \"png\" || extension == \"gif\"; //|| extension == \"bmp\";//|| extension == \"atf\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n Image2DParser.supportsData = function (data) {\r\n if (data instanceof HTMLImageElement)\r\n return true;\r\n if (!(data instanceof ByteArray))\r\n return false;\r\n var ba = data;\r\n ba.position = 0;\r\n if (ba.readUnsignedShort() == 0xd8ff)\r\n return true; // JPEG, maybe check for \"JFIF\" as well?\r\n ba.position = 0;\r\n if (ba.readShort() == 0x424D)\r\n return true; // BMP\r\n ba.position = 1;\r\n if (ba.readUTFBytes(3) == 'PNG')\r\n return true;\r\n ba.position = 0;\r\n if (ba.readUTFBytes(3) == 'GIF' && ba.readShort() == 0x3839 && ba.readByte() == 0x61)\r\n return true;\r\n ba.position = 0;\r\n if (ba.readUTFBytes(3) == 'ATF')\r\n return true;\r\n return false;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Image2DParser.prototype._pProceedParsing = function () {\r\n var _this = this;\r\n var asset;\r\n var sizeError = false;\r\n if (this._loadingImage) {\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n else if (this._htmlImageElement) {\r\n //if (ImageUtils.isHTMLImageElementValid(this._htmlImageElement)) {\r\n asset = ImageUtils.imageToBitmapImage2D(this._htmlImageElement, false, this._factory);\r\n this._pFinalizeAsset(asset, this._iFileName);\r\n }\r\n else if (this.data instanceof HTMLImageElement) {\r\n var htmlImageElement = this.data;\r\n //if (ImageUtils.isHTMLImageElementValid(htmlImageElement)) {\r\n asset = ImageUtils.imageToBitmapImage2D(htmlImageElement, false, this._factory);\r\n this._pFinalizeAsset(asset, this._iFileName);\r\n }\r\n else if (this.data instanceof ByteArray) {\r\n var ba = this.data;\r\n ba.position = 0;\r\n this._htmlImageElement = ParserUtils.byteArrayToImage(this.data);\r\n if (!this._htmlImageElement.naturalWidth) {\r\n this._htmlImageElement.onload = function (event) { return _this.onLoadComplete(event); };\r\n this._loadingImage = true;\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n //if (ImageUtils.isHTMLImageElementValid(this._htmlImageElement)) {\r\n asset = ImageUtils.imageToBitmapImage2D(this._htmlImageElement, false, this._factory);\r\n this._pFinalizeAsset(asset, this._iFileName);\r\n }\r\n else if (this.data instanceof ArrayBuffer) {\r\n this._htmlImageElement = ParserUtils.arrayBufferToImage(this.data);\r\n asset = ImageUtils.imageToBitmapImage2D(this._htmlImageElement, false, this._factory);\r\n this._pFinalizeAsset(asset, this._iFileName);\r\n }\r\n else if (this.data instanceof Blob) {\r\n this._htmlImageElement = ParserUtils.blobToImage(this.data);\r\n this._htmlImageElement.onload = function (event) { return _this.onLoadComplete(event); };\r\n this._loadingImage = true;\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n else if (this.data instanceof URLRequest) {\r\n asset = new ExternalImage2D(this.data);\r\n this._pFinalizeAsset(asset, this._iFileName);\r\n }\r\n if (sizeError) {\r\n }\r\n this._pContent = asset;\r\n return ParserBase.PARSING_DONE;\r\n };\r\n Image2DParser.prototype.onLoadComplete = function (event) {\r\n this._loadingImage = false;\r\n };\r\n return Image2DParser;\r\n}(ParserBase));\r\nexport { Image2DParser };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/parsers/Image2DParser.js","import * as tslib_1 from \"tslib\";\r\nimport { URLLoaderDataFormat, URLRequest, ParserBase } from \"@awayjs/core\";\r\nimport { BitmapImageCube } from \"../image/BitmapImageCube\";\r\n/**\r\n * ImageCubeParser provides a \"parser\" for natively supported image types (jpg, png). While it simply loads bytes into\r\n * a loader object, it wraps it in a BitmapImage2DResource so resource management can happen consistently without\r\n * exception cases.\r\n */\r\nvar ImageCubeParser = (function (_super) {\r\n tslib_1.__extends(ImageCubeParser, _super);\r\n /**\r\n * Creates a new ImageCubeParser object.\r\n * @param uri The url or id of the data or file to be parsed.\r\n * @param extra The holder for extra contextual data that the parser might need.\r\n */\r\n function ImageCubeParser() {\r\n return _super.call(this, URLLoaderDataFormat.TEXT) || this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n ImageCubeParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"cube\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n ImageCubeParser.supportsData = function (data) {\r\n try {\r\n var obj = JSON.parse(data);\r\n if (obj)\r\n return true;\r\n return false;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ImageCubeParser.prototype._iResolveDependency = function (resourceDependency) {\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ImageCubeParser.prototype._iResolveDependencyFailure = function (resourceDependency) {\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ImageCubeParser.prototype._pProceedParsing = function () {\r\n if (this._imgDependencyDictionary != null) {\r\n var asset = new BitmapImageCube(this._getBitmapImage2D(ImageCubeParser.posX).width);\r\n asset.draw(BitmapImageCube.posX, this._getBitmapImage2D(ImageCubeParser.posX));\r\n asset.draw(BitmapImageCube.negX, this._getBitmapImage2D(ImageCubeParser.negX));\r\n asset.draw(BitmapImageCube.posY, this._getBitmapImage2D(ImageCubeParser.posY));\r\n asset.draw(BitmapImageCube.negY, this._getBitmapImage2D(ImageCubeParser.negY));\r\n asset.draw(BitmapImageCube.posZ, this._getBitmapImage2D(ImageCubeParser.posZ));\r\n asset.draw(BitmapImageCube.negZ, this._getBitmapImage2D(ImageCubeParser.negZ));\r\n //clear dictionary\r\n this._imgDependencyDictionary = null;\r\n asset.name = this._iFileName;\r\n this._pFinalizeAsset(asset, this._iFileName);\r\n return ParserBase.PARSING_DONE;\r\n }\r\n try {\r\n var json = JSON.parse(this.data);\r\n var data = json.data;\r\n var rec;\r\n if (data.length != 6)\r\n this._pDieWithError('ImageCubeParser: Error - cube texture should have exactly 6 images');\r\n if (json) {\r\n this._imgDependencyDictionary = new Object();\r\n for (var c = 0; c < data.length; c++) {\r\n rec = data[c];\r\n this._imgDependencyDictionary[rec.id] = this._pAddDependency(rec.id, new URLRequest(rec.image.toString()));\r\n }\r\n if (!this._validateCubeData()) {\r\n this._pDieWithError(\"ImageCubeParser: JSON data error - cubes require id of: \\n\" + ImageCubeParser.posX + ', ' + ImageCubeParser.negX + ', \\n' + ImageCubeParser.posY + ', ' + ImageCubeParser.negY + ', \\n' + ImageCubeParser.posZ + ', ' + ImageCubeParser.negZ);\r\n return ParserBase.PARSING_DONE;\r\n }\r\n this._pPauseAndRetrieveDependencies();\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n }\r\n catch (e) {\r\n this._pDieWithError('CubeTexturePaser Error parsing JSON');\r\n }\r\n return ParserBase.PARSING_DONE;\r\n };\r\n ImageCubeParser.prototype._validateCubeData = function () {\r\n return (this._imgDependencyDictionary[ImageCubeParser.posX] != null && this._imgDependencyDictionary[ImageCubeParser.negX] != null && this._imgDependencyDictionary[ImageCubeParser.posY] != null && this._imgDependencyDictionary[ImageCubeParser.negY] != null && this._imgDependencyDictionary[ImageCubeParser.posZ] != null && this._imgDependencyDictionary[ImageCubeParser.negZ] != null);\r\n };\r\n ImageCubeParser.prototype._getBitmapImage2D = function (name) {\r\n var dependency = this._imgDependencyDictionary[name];\r\n if (dependency)\r\n return dependency.assets[0];\r\n return null;\r\n };\r\n return ImageCubeParser;\r\n}(ParserBase));\r\nexport { ImageCubeParser };\r\nImageCubeParser.posX = 'posX';\r\nImageCubeParser.negX = 'negX';\r\nImageCubeParser.posY = 'posY';\r\nImageCubeParser.negY = 'negY';\r\nImageCubeParser.posZ = 'posZ';\r\nImageCubeParser.negZ = 'negZ';\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/parsers/ImageCubeParser.js","import * as tslib_1 from \"tslib\";\r\nimport { Rectangle, URLLoaderDataFormat, URLRequest, ParserBase, ParserUtils, XmlUtils } from \"@awayjs/core\";\r\nimport { Sampler2D } from \"../image/Sampler2D\";\r\n/**\r\n * TextureAtlasParser provides a \"parser\" for natively supported image types (jpg, png). While it simply loads bytes into\r\n * a loader object, it wraps it in a BitmapImage2DResource so resource management can happen consistently without\r\n * exception cases.\r\n */\r\nvar TextureAtlasParser = (function (_super) {\r\n tslib_1.__extends(TextureAtlasParser, _super);\r\n /**\r\n * Creates a new TextureAtlasParser object.\r\n * @param uri The url or id of the data or file to be parsed.\r\n * @param extra The holder for extra contextual data that the parser might need.\r\n */\r\n function TextureAtlasParser() {\r\n var _this = _super.call(this, URLLoaderDataFormat.TEXT) || this;\r\n _this._parseState = 0;\r\n return _this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n TextureAtlasParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"xml\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n TextureAtlasParser.supportsData = function (data) {\r\n try {\r\n var content = ParserUtils.toString(data);\r\n if (content.indexOf(\"TextureAtlas\") != -1 || content.indexOf(\"textureatlas\") != -1)\r\n return true;\r\n return false;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n TextureAtlasParser.prototype._iResolveDependency = function (resourceDependency) {\r\n if (resourceDependency.assets.length) {\r\n this._imageData = resourceDependency.assets[0];\r\n this._pFinalizeAsset(this._imageData);\r\n this._parseState = TextureAtlasParserState.PARSE_SUBTEXTURES;\r\n }\r\n else {\r\n this._parseState = TextureAtlasParserState.PARSE_COMPLETE;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n TextureAtlasParser.prototype._iResolveDependencyFailure = function (resourceDependency) {\r\n this._parseState = TextureAtlasParserState.PARSE_COMPLETE;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n TextureAtlasParser.prototype._pProceedParsing = function () {\r\n var nodes;\r\n switch (this._parseState) {\r\n case TextureAtlasParserState.PARSE_XML:\r\n try {\r\n this._doc = XmlUtils.getChildrenWithTag(XmlUtils.strToXml(this._pGetTextData()), \"TextureAtlas\")[0];\r\n this._imagePath = XmlUtils.readAttributeValue(this._doc, \"imagePath\");\r\n this._subTextureNodes = XmlUtils.getChildrenWithTag(this._doc, \"SubTexture\");\r\n this._parseState = TextureAtlasParserState.PARSE_IMAGE;\r\n }\r\n catch (Error) {\r\n return ParserBase.PARSING_DONE;\r\n }\r\n break;\r\n case TextureAtlasParserState.PARSE_IMAGE:\r\n if (this._imagePath) {\r\n this._pAddDependency(this._imagePath, new URLRequest(this._imagePath));\r\n this._pPauseAndRetrieveDependencies();\r\n }\r\n else {\r\n return ParserBase.PARSING_DONE;\r\n }\r\n break;\r\n case TextureAtlasParserState.PARSE_SUBTEXTURES:\r\n var sampler;\r\n var element;\r\n var x;\r\n var y;\r\n var width;\r\n var height;\r\n var len = this._subTextureNodes.length;\r\n for (var i = 0; i < len; i++) {\r\n element = this._subTextureNodes[i];\r\n sampler = new Sampler2D();\r\n //setup subtexture rect\r\n x = XmlUtils.readAttributeValue(element, \"x\");\r\n y = XmlUtils.readAttributeValue(element, \"y\");\r\n width = XmlUtils.readAttributeValue(element, \"width\");\r\n height = XmlUtils.readAttributeValue(element, \"height\");\r\n if (x || y || width || height)\r\n sampler.imageRect = new Rectangle(parseInt(x) / this._imageData.width, parseInt(y) / this._imageData.height, parseInt(width) / this._imageData.width, parseInt(height) / this._imageData.height);\r\n //setup frame rect\r\n x = XmlUtils.readAttributeValue(element, \"frameX\");\r\n y = XmlUtils.readAttributeValue(element, \"frameY\");\r\n width = XmlUtils.readAttributeValue(element, \"frameWidth\");\r\n height = XmlUtils.readAttributeValue(element, \"frameHeight\");\r\n if (x || y || width || height)\r\n sampler.frameRect = new Rectangle(parseInt(x), parseInt(y), parseInt(width), parseInt(height));\r\n this._pFinalizeAsset(sampler, XmlUtils.readAttributeValue(element, \"name\"));\r\n }\r\n this._parseState = TextureAtlasParserState.PARSE_COMPLETE;\r\n break;\r\n case TextureAtlasParserState.PARSE_COMPLETE:\r\n return ParserBase.PARSING_DONE;\r\n }\r\n return ParserBase.MORE_TO_PARSE;\r\n };\r\n return TextureAtlasParser;\r\n}(ParserBase));\r\nexport { TextureAtlasParser };\r\nvar TextureAtlasParserState = (function () {\r\n function TextureAtlasParserState() {\r\n }\r\n return TextureAtlasParserState;\r\n}());\r\nexport { TextureAtlasParserState };\r\nTextureAtlasParserState.PARSE_XML = 0;\r\nTextureAtlasParserState.PARSE_IMAGE = 1;\r\nTextureAtlasParserState.PARSE_SUBTEXTURES = 2;\r\nTextureAtlasParserState.PARSE_COMPLETE = 3;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/parsers/TextureAtlasParser.js","/**\r\n * Value object ___ for a picking collision returned by a picking collider. Created as unique objects on display objects\r\n *\r\n * @see away.base.DisplayObject#pickingCollision\r\n * @see away.core.pick.IPickingCollider\r\n *\r\n * @class away.pick.PickingCollision\r\n */\r\nvar PickingCollision = (function () {\r\n /**\r\n * Creates a new PickingCollision object.\r\n *\r\n * @param entity The entity to which this collision object belongs.\r\n */\r\n function PickingCollision(entity) {\r\n this.entity = entity;\r\n }\r\n return PickingCollision;\r\n}());\r\nexport { PickingCollision };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/pick/PickingCollision.js","import { Matrix, Rectangle } from \"@awayjs/core\";\r\nimport { BitmapImage2D } from \"../image/BitmapImage2D\";\r\nvar MipmapGenerator = (function () {\r\n function MipmapGenerator() {\r\n }\r\n MipmapGenerator._generateMipMaps = function (source, output, alpha) {\r\n if (alpha === void 0) { alpha = false; }\r\n var w = source.width;\r\n var h = source.height;\r\n var i = 0;\r\n var mipmap;\r\n MipmapGenerator._rect.width = w;\r\n MipmapGenerator._rect.height = h;\r\n //use (OR) to create non-square texture mipmaps\r\n while (w >= 1 || h >= 1) {\r\n mipmap = output[i] = MipmapGenerator._getMipmapHolder(output[i], MipmapGenerator._rect.width, MipmapGenerator._rect.height);\r\n if (alpha)\r\n mipmap.fillRect(MipmapGenerator._rect, 0);\r\n MipmapGenerator._matrix.a = MipmapGenerator._rect.width / source.width;\r\n MipmapGenerator._matrix.d = MipmapGenerator._rect.height / source.height;\r\n //todo: add support for NPOT textures\r\n if (typeof document !== \"undefined\") {\r\n mipmap.draw(source, MipmapGenerator._matrix); //TODO: smoothing?\r\n }\r\n else {\r\n if (source.constructor.toString().indexOf(\"BitmapImage2D\") > -1) {\r\n //for BitmapImage2D\r\n var bitmapImage = source;\r\n bitmapImage.lock();\r\n mipmap.lock();\r\n this.downsampleImage(bitmapImage.getImageData(), mipmap.getImageData());\r\n mipmap.unlock();\r\n bitmapImage.unlock();\r\n }\r\n else if (source.constructor.toString().indexOf(\"CPUCanvas\") > -1) {\r\n this.downsampleImage(source.getImageData(), mipmap.getImageData());\r\n }\r\n else {\r\n //for imageData\r\n this.downsampleImage(source, mipmap.getImageData());\r\n }\r\n }\r\n w >>= 1;\r\n h >>= 1;\r\n MipmapGenerator._rect.width = w > 1 ? w : 1;\r\n MipmapGenerator._rect.height = h > 1 ? h : 1;\r\n i++;\r\n }\r\n };\r\n MipmapGenerator._getMipmapHolder = function (mipMapHolder, newW, newH) {\r\n if (mipMapHolder) {\r\n if (mipMapHolder.width == newW && mipMapHolder.height == newH)\r\n return mipMapHolder;\r\n MipmapGenerator._freeMipMapHolder(mipMapHolder);\r\n }\r\n if (!MipmapGenerator._mipMaps[newW]) {\r\n MipmapGenerator._mipMaps[newW] = [];\r\n MipmapGenerator._mipMapUses[newW] = [];\r\n }\r\n if (!MipmapGenerator._mipMaps[newW][newH]) {\r\n mipMapHolder = MipmapGenerator._mipMaps[newW][newH] = new BitmapImage2D(newW, newH, true);\r\n MipmapGenerator._mipMapUses[newW][newH] = 1;\r\n }\r\n else {\r\n MipmapGenerator._mipMapUses[newW][newH] = MipmapGenerator._mipMapUses[newW][newH] + 1;\r\n mipMapHolder = MipmapGenerator._mipMaps[newW][newH];\r\n }\r\n return mipMapHolder;\r\n };\r\n MipmapGenerator._freeMipMapHolder = function (mipMapHolder) {\r\n var holderWidth = mipMapHolder.width;\r\n var holderHeight = mipMapHolder.height;\r\n if (--MipmapGenerator._mipMapUses[holderWidth][holderHeight] == 0) {\r\n MipmapGenerator._mipMaps[holderWidth][holderHeight].dispose();\r\n MipmapGenerator._mipMaps[holderWidth][holderHeight] = null;\r\n }\r\n };\r\n MipmapGenerator.downsampleImage = function (bitmap, destBitmap) {\r\n var box = new BoxFilter();\r\n var xkernel = new PolyphaseKernel(box, bitmap.width, destBitmap.width, 4);\r\n var ykernel = new PolyphaseKernel(box, bitmap.height, destBitmap.height, 4);\r\n var tempBitmap = []; //destBitmap.width, bitmap.height\r\n var scale = 0;\r\n var iscale = 0;\r\n var kernelLength = 0;\r\n var kernelWidth = 0;\r\n var kernelWindowSize = 0;\r\n var sumR = 0;\r\n var sumG = 0;\r\n var sumB = 0;\r\n var sumA = 0;\r\n var center;\r\n var left;\r\n var i = 0;\r\n var j = 0;\r\n var index = 0;\r\n for (var y = 0; y < bitmap.height; y++) {\r\n kernelLength = xkernel.len;\r\n scale = kernelLength / bitmap.width;\r\n iscale = 1.0 / scale;\r\n kernelWidth = xkernel.width;\r\n kernelWindowSize = xkernel.windowSize;\r\n for (i = 0; i < kernelLength; i++) {\r\n center = (0.5 + i) * iscale;\r\n left = Math.floor(center - kernelWidth);\r\n sumR = 0;\r\n sumG = 0;\r\n sumB = 0;\r\n sumA = 0;\r\n for (var j = 0; j < kernelWindowSize; ++j) {\r\n index = (y * bitmap.width + (left + j)) * 4;\r\n var colorR = bitmap.data[index];\r\n var colorG = bitmap.data[index + 1];\r\n var colorB = bitmap.data[index + 2];\r\n var colorA = bitmap.data[index + 3];\r\n var value = xkernel.valueAt(i, j);\r\n sumR += value * colorR;\r\n sumG += value * colorG;\r\n sumB += value * colorB;\r\n sumA += value * colorA;\r\n }\r\n index = (y * destBitmap.width + i) * 4;\r\n tempBitmap[index] = sumR;\r\n tempBitmap[index + 1] = sumG;\r\n tempBitmap[index + 2] = sumB;\r\n tempBitmap[index + 3] = sumA;\r\n }\r\n }\r\n for (var x = 0; x < destBitmap.width; x++) {\r\n kernelLength = ykernel.len;\r\n scale = kernelLength / bitmap.height;\r\n iscale = 1.0 / scale;\r\n kernelWidth = ykernel.width;\r\n kernelWindowSize = ykernel.windowSize;\r\n for (i = 0; i < kernelLength; i++) {\r\n center = (0.5 + i) * iscale;\r\n left = Math.floor(center - kernelWidth);\r\n sumR = 0;\r\n sumG = 0;\r\n sumB = 0;\r\n sumA = 0;\r\n for (j = 0; j < kernelWindowSize; ++j) {\r\n index = ((j + left) * destBitmap.width + x) * 4;\r\n var colorR = tempBitmap[index];\r\n var colorG = tempBitmap[index + 1];\r\n var colorB = tempBitmap[index + 2];\r\n var colorA = tempBitmap[index + 3];\r\n var value = ykernel.valueAt(i, j);\r\n sumR += value * colorR;\r\n sumG += value * colorG;\r\n sumB += value * colorB;\r\n sumA += value * colorA;\r\n }\r\n index = (i * destBitmap.width + x) * 4;\r\n destBitmap.data[index] = sumR;\r\n destBitmap.data[index + 1] = sumG;\r\n destBitmap.data[index + 2] = sumB;\r\n destBitmap.data[index + 3] = sumA;\r\n }\r\n }\r\n return destBitmap;\r\n };\r\n return MipmapGenerator;\r\n}());\r\nexport { MipmapGenerator };\r\nMipmapGenerator._mipMaps = [];\r\nMipmapGenerator._mipMapUses = [];\r\nMipmapGenerator._matrix = new Matrix();\r\nMipmapGenerator._rect = new Rectangle();\r\nvar PolyphaseKernel = (function () {\r\n function PolyphaseKernel(f, srcLength, dstLength, samples) {\r\n var scale = dstLength / srcLength;\r\n var iscale = 1.0 / scale;\r\n if (scale > 1) {\r\n // Upsampling.\r\n samples = 1;\r\n scale = 1;\r\n }\r\n this.len = dstLength;\r\n this.width = f.width * iscale;\r\n this.windowSize = Math.ceil(this.width * 2);\r\n this.data = [];\r\n for (var i = 0; i < this.len; i++) {\r\n var center = (0.5 + i) * iscale;\r\n var left = Math.floor(center - this.width);\r\n var total = 0.0;\r\n for (var j = 0; j < this.windowSize; j++) {\r\n var sample = f.sampleBox(left + j - center, scale, samples);\r\n //printf(\"%f %X\\n\", sample, *(uint32 *)&sample);\r\n this.data[i * this.windowSize + j] = sample;\r\n total += sample;\r\n }\r\n // normalize weights.\r\n for (var j = 0; j < this.windowSize; j++) {\r\n this.data[i * this.windowSize + j] /= total;\r\n }\r\n }\r\n }\r\n PolyphaseKernel.prototype.valueAt = function (column, x) {\r\n return this.data[column * this.windowSize + x];\r\n };\r\n return PolyphaseKernel;\r\n}());\r\nexport { PolyphaseKernel };\r\nvar BoxFilter = (function () {\r\n function BoxFilter() {\r\n }\r\n Object.defineProperty(BoxFilter.prototype, \"width\", {\r\n get: function () {\r\n return 0.5;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n BoxFilter.prototype.sampleBox = function (x, scale, samples) {\r\n var sum = 0;\r\n var isamples = 1.0 / samples;\r\n for (var s = 0; s < samples; s++) {\r\n var p = (x + (s + 0.5) * isamples) * scale;\r\n var value = this.evaluate(p);\r\n sum += value;\r\n }\r\n return sum * isamples;\r\n };\r\n BoxFilter.prototype.evaluate = function (x) {\r\n if (Math.abs(x) <= this.width)\r\n return 1.0;\r\n else\r\n return 0.0;\r\n };\r\n return BoxFilter;\r\n}());\r\nexport { BoxFilter };\r\nexport default MipmapGenerator;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/MipmapGenerator.js","export * from \"@awayjs/stage\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/lib/stage.js\n// module id = 7\n// module chunks = 9","export * from \"@awayjs/renderer\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/lib/renderer.js\n// module id = 8\n// module chunks = 9","/**\r\n *\r\n */\r\nvar AlignmentMode = (function () {\r\n function AlignmentMode() {\r\n }\r\n return AlignmentMode;\r\n}());\r\nexport { AlignmentMode };\r\n/**\r\n *\r\n */\r\nAlignmentMode.REGISTRATION_POINT = \"registrationPoint\";\r\n/**\r\n *\r\n */\r\nAlignmentMode.TRANSFORM_POINT = \"transformPoint\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/AlignmentMode.js","/**\r\n *\r\n */\r\nvar HierarchicalProperties = (function () {\r\n function HierarchicalProperties() {\r\n }\r\n return HierarchicalProperties;\r\n}());\r\nexport { HierarchicalProperties };\r\n/**\r\n *\r\n */\r\nHierarchicalProperties.MOUSE_ENABLED = 1;\r\n/**\r\n *\r\n */\r\nHierarchicalProperties.VISIBLE = 2;\r\n/**\r\n *\r\n */\r\nHierarchicalProperties.MASK_ID = 4;\r\n/**\r\n *\r\n */\r\nHierarchicalProperties.MASKS = 8;\r\n/**\r\n *\r\n */\r\nHierarchicalProperties.COLOR_TRANSFORM = 16;\r\n/**\r\n *\r\n */\r\nHierarchicalProperties.SCENE_TRANSFORM = 32;\r\n/**\r\n *\r\n */\r\nHierarchicalProperties.ALL = 63;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/HierarchicalProperties.js","var OrientationMode = (function () {\r\n function OrientationMode() {\r\n }\r\n return OrientationMode;\r\n}());\r\nexport { OrientationMode };\r\n/**\r\n *\r\n */\r\nOrientationMode.DEFAULT = \"default\";\r\n/**\r\n *\r\n */\r\nOrientationMode.CAMERA_PLANE = \"cameraPlane\";\r\n/**\r\n *\r\n */\r\nOrientationMode.CAMERA_POSITION = \"cameraPosition\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/OrientationMode.js","var FrameScriptManager = (function () {\r\n function FrameScriptManager() {\r\n }\r\n FrameScriptManager.setInterval = function (func) {\r\n this._intervalID++;\r\n this._active_intervals[this._intervalID] = func;\r\n return this._intervalID;\r\n };\r\n FrameScriptManager.clearInterval = function (id) {\r\n delete this._active_intervals[id];\r\n };\r\n FrameScriptManager.execute_intervals = function () {\r\n for (var key in this._active_intervals) {\r\n this._active_intervals[key].call();\r\n }\r\n };\r\n FrameScriptManager.add_child_to_dispose = function (child) {\r\n this._queued_dispose.push(child);\r\n };\r\n FrameScriptManager.add_script_to_queue = function (mc, script) {\r\n // whenever we queue scripts of new objects, we first inject the lists of pass2\r\n var i = this._queued_mcs_pass2.length;\r\n while (i--) {\r\n this._queued_mcs.push(this._queued_mcs_pass2[i]);\r\n this._queued_scripts.push(this._queued_scripts_pass2[i]);\r\n }\r\n this._queued_mcs_pass2.length = 0;\r\n this._queued_scripts_pass2.length = 0;\r\n this._queued_mcs.push(mc);\r\n this._queued_scripts.push(script);\r\n };\r\n FrameScriptManager.add_script_to_queue_pass2 = function (mc, script) {\r\n this._queued_mcs_pass2.push(mc);\r\n this._queued_scripts_pass2.push(script);\r\n };\r\n FrameScriptManager.execute_queue = function () {\r\n if (this._queued_mcs.length == 0 && this._queued_mcs_pass2.length == 0)\r\n return;\r\n var i = this._queued_mcs_pass2.length;\r\n while (i--) {\r\n this._queued_mcs.push(this._queued_mcs_pass2[i]);\r\n this._queued_scripts.push(this._queued_scripts_pass2[i]);\r\n }\r\n this._queued_mcs_pass2.length = 0;\r\n this._queued_scripts_pass2.length = 0;\r\n var mc;\r\n for (i = 0; i < this._queued_mcs.length; i++) {\r\n // during the loop we might add more scripts to the queue\r\n mc = this._queued_mcs[i];\r\n if (mc.scene != null) {\r\n //\ttry {\r\n this._queued_scripts[i].call(mc.adapter);\r\n }\r\n }\r\n // all scripts executed. clear all\r\n this._queued_mcs.length = 0;\r\n this._queued_scripts.length = 0;\r\n };\r\n FrameScriptManager.execute_dispose = function () {\r\n /*\r\n var len:number = this._queued_dispose.length;\r\n for (var i:number = 0; i < len; i++)\r\n this._queued_dispose[i].dispose();\r\n\r\n this._queued_dispose.length = 0;\r\n */\r\n };\r\n return FrameScriptManager;\r\n}());\r\nexport { FrameScriptManager };\r\n// FrameScript debugging:\r\n// the first line of a FrameScript should be a comment that represents the functions unique name\r\n// the exporter creates a js file, containing a object that has the framescripts functions set as properties according to the unique names\r\n// this object can be set as \"frameScriptDebug\" in order to enable debug mode\r\nFrameScriptManager.frameScriptDebug = undefined;\r\n//queue of objects for disposal\r\nFrameScriptManager._queued_dispose = new Array();\r\n// queues pass1 of scripts.\r\nFrameScriptManager._queued_mcs = [];\r\nFrameScriptManager._queued_scripts = [];\r\n// queues pass2 of scripts. this will be inserted in reversed order into pass1 queue right before something should be added to pass1\r\nFrameScriptManager._queued_mcs_pass2 = [];\r\nFrameScriptManager._queued_scripts_pass2 = [];\r\nFrameScriptManager._active_intervals = new Object(); // maps id to function\r\nFrameScriptManager._intervalID = 0;\r\nexport default FrameScriptManager;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/FrameScriptManager.js","import { ColorTransform } from \"@awayjs/core\";\r\nimport { HierarchicalProperties } from \"../base/HierarchicalProperties\";\r\nimport { FrameScriptManager } from \"../managers/FrameScriptManager\";\r\nvar Timeline = (function () {\r\n function Timeline() {\r\n this._functions = [];\r\n this._update_indices = [];\r\n this.numKeyFrames = 0;\r\n this.keyframe_indices = [];\r\n this._potentialPrototypes = [];\r\n this._labels = {};\r\n this._framescripts = {};\r\n this._framescripts_translated = {};\r\n //cache functions\r\n this._functions[1] = this.update_mtx_all;\r\n this._functions[2] = this.update_colortransform;\r\n this._functions[3] = this.update_masks;\r\n this._functions[4] = this.update_name;\r\n this._functions[5] = this.update_button_name;\r\n this._functions[6] = this.update_visibility;\r\n this._functions[7] = this.update_blendmode;\r\n this._functions[8] = this.update_rendermode;\r\n this._functions[11] = this.update_mtx_scale_rot;\r\n this._functions[12] = this.update_mtx_pos;\r\n this._functions[200] = this.enable_maskmode;\r\n this._functions[201] = this.remove_masks;\r\n }\r\n Timeline.prototype.init = function () {\r\n if ((this.frame_command_indices == null) || (this.frame_recipe == null) || (this.keyframe_durations == null))\r\n return;\r\n this.keyframe_firstframes = [];\r\n this.keyframe_constructframes = [];\r\n var frame_cnt = 0;\r\n var ic = 0;\r\n var ic2 = 0;\r\n var keyframe_cnt = 0;\r\n var last_construct_frame = 0;\r\n for (ic = 0; ic < this.numKeyFrames; ic++) {\r\n var duration = this.keyframe_durations[(ic)];\r\n if (this.frame_recipe[ic] & 1)\r\n last_construct_frame = keyframe_cnt;\r\n this.keyframe_firstframes[keyframe_cnt] = frame_cnt;\r\n this.keyframe_constructframes[keyframe_cnt++] = last_construct_frame;\r\n for (ic2 = 0; ic2 < duration; ic2++)\r\n this.keyframe_indices[frame_cnt++] = ic;\r\n }\r\n };\r\n Timeline.prototype.get_framescript = function (keyframe_index) {\r\n if (this._framescripts[keyframe_index] == null)\r\n return \"\";\r\n if (typeof this._framescripts[keyframe_index] == \"string\")\r\n return this._framescripts[keyframe_index];\r\n else {\r\n throw new Error(\"Framescript is already translated to Function!!!\");\r\n }\r\n };\r\n Timeline.prototype.add_framescript = function (value, keyframe_index) {\r\n if (FrameScriptManager.frameScriptDebug) {\r\n // if we are in debug mode, we try to extract the function name from the first line of framescript code,\r\n // and check if this function is available on the object that is set as frameScriptDebug\r\n // try to get the functions name (it should be the first line as comment)\r\n var functionname = value.split(/[\\r\\n]+/g)[0].split(\"//\")[1];\r\n if (FrameScriptManager.frameScriptDebug[functionname]) {\r\n this._framescripts[keyframe_index] = FrameScriptManager.frameScriptDebug[functionname];\r\n this._framescripts_translated[keyframe_index] = true;\r\n return;\r\n }\r\n else {\r\n throw new Error(\"Framescript could not be found on FrameScriptManager.frameScriptDebug.\\n the Object set as FrameScriptmanager.frameScriptDebug should contain a function with the name '\" + functionname + \"' !!!\");\r\n }\r\n }\r\n this._framescripts[keyframe_index] = value;\r\n };\r\n Timeline.prototype.regexIndexOf = function (str, regex, startpos) {\r\n var indexOf = str.substring(startpos || 0).search(regex);\r\n return (indexOf >= 0) ? (indexOf + (startpos || 0)) : indexOf;\r\n };\r\n Timeline.prototype.add_script_for_postcontruct = function (target_mc, keyframe_idx, scriptPass1) {\r\n if (scriptPass1 === void 0) { scriptPass1 = false; }\r\n if (this._framescripts[keyframe_idx] != null) {\r\n if (this._framescripts_translated[keyframe_idx] == null) {\r\n this._framescripts[keyframe_idx] = target_mc.adapter.evalScript(this._framescripts[keyframe_idx]);\r\n this._framescripts_translated[keyframe_idx] = true;\r\n }\r\n if (scriptPass1)\r\n FrameScriptManager.add_script_to_queue(target_mc, this._framescripts[keyframe_idx]);\r\n else\r\n FrameScriptManager.add_script_to_queue_pass2(target_mc, this._framescripts[keyframe_idx]);\r\n }\r\n };\r\n Object.defineProperty(Timeline.prototype, \"numFrames\", {\r\n get: function () {\r\n return this.keyframe_indices.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Timeline.prototype, \"potentialPrototypes\", {\r\n get: function () {\r\n return this._potentialPrototypes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Timeline.prototype.getPotentialChildPrototype = function (id) {\r\n return this._potentialPrototypes[id];\r\n };\r\n Timeline.prototype.getKeyframeIndexForFrameIndex = function (frame_index) {\r\n return this.keyframe_indices[frame_index];\r\n };\r\n Timeline.prototype.getPotentialChildInstance = function (id) {\r\n var this_clone = this._potentialPrototypes[id].adapter.clone().adaptee;\r\n //this_clone.name = \"\";\r\n //if (this_clone.isAsset(Billboard)){\r\n //var billboard:Billboard=(this_clone);\r\n //billboard.style=new Style();\r\n //billboard.style.uvMatrix=new Matrix(1,0,0,-1,0,0);\r\n //billboard.style.uvMatrix.scale(1,1);\r\n //billboard.material.animateUVs=true;\r\n //}\r\n return this_clone;\r\n };\r\n Timeline.prototype.registerPotentialChild = function (prototype) {\r\n var id = this._potentialPrototypes.length;\r\n this._potentialPrototypes[id] = prototype;\r\n };\r\n Timeline.prototype.jumpToLabel = function (target_mc, label) {\r\n var key_frame_index = this._labels[label];\r\n if (key_frame_index >= 0)\r\n target_mc.currentFrameIndex = this.keyframe_firstframes[key_frame_index];\r\n };\r\n Timeline.prototype.gotoFrame = function (target_mc, value, skip_script) {\r\n if (skip_script === void 0) { skip_script = false; }\r\n var current_keyframe_idx = target_mc.constructedKeyFrameIndex;\r\n var target_keyframe_idx = this.keyframe_indices[value];\r\n if (current_keyframe_idx == target_keyframe_idx)\r\n return;\r\n if (current_keyframe_idx + 1 == target_keyframe_idx) {\r\n this.constructNextFrame(target_mc, !skip_script, true);\r\n return;\r\n }\r\n var break_frame_idx = this.keyframe_constructframes[target_keyframe_idx];\r\n //we now have 3 index to keyframes: current_keyframe_idx / target_keyframe_idx / break_frame_idx\r\n var jump_forward = (target_keyframe_idx > current_keyframe_idx);\r\n var jump_gap = (break_frame_idx > current_keyframe_idx);\r\n // in case we jump forward, but not jump a gap, we start at current_keyframe_idx + 1\r\n // in case we jump back or we jump a gap, we want to start constructing at BreakFrame\r\n var start_construct_idx = (jump_forward && !jump_gap) ? current_keyframe_idx + 1 : break_frame_idx;\r\n var i;\r\n var k;\r\n if (jump_gap)\r\n for (i = target_mc.numChildren - 1; i >= 0; i--)\r\n if (target_mc._children[i]._depthID < 0)\r\n target_mc.removeChildAt(i);\r\n //if we jump back, we want to reset all objects (but not the timelines of the mcs)\r\n if (!jump_forward)\r\n target_mc.resetSessionIDs();\r\n // in other cases, we want to collect the current objects to compare state of targetframe with state of currentframe\r\n var depth_sessionIDs = target_mc.getSessionIDDepths();\r\n //pass1: only apply add/remove commands into depth_sessionIDs.\r\n this.pass1(start_construct_idx, target_keyframe_idx, depth_sessionIDs);\r\n // check what childs are alive on both frames.\r\n // childs that are not alive anymore get removed and unregistered\r\n // childs that are alive on both frames have their properties reset if we are jumping back\r\n var child;\r\n for (i = target_mc.numChildren - 1; i >= 0; i--) {\r\n child = target_mc._children[i];\r\n if (child._depthID < 0) {\r\n if (depth_sessionIDs[child._depthID] != child._sessionID) {\r\n target_mc.removeChildAt(i);\r\n }\r\n else if (!jump_forward) {\r\n if (child._adapter) {\r\n if (!child.adapter.isBlockedByScript()) {\r\n child.transform.clearMatrix3D();\r\n child.transform.clearColorTransform();\r\n //this.name=\"\";\r\n child.masks = null;\r\n child.maskMode = false;\r\n }\r\n if (!child.adapter.isVisibilityByScript()) {\r\n child.visible = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // now we need to addchild the objects that were added before targetframe first\r\n // than we can add the script of the targetframe\r\n // than we can addchild objects added on targetframe\r\n for (var key in depth_sessionIDs) {\r\n child = target_mc.getPotentialChildInstance(this.add_child_stream[depth_sessionIDs[key] * 2]);\r\n if (child._sessionID == -1)\r\n target_mc._addTimelineChildAt(child, Number(key), depth_sessionIDs[key]);\r\n }\r\n if (!skip_script && this.keyframe_firstframes[target_keyframe_idx] == value)\r\n this.add_script_for_postcontruct(target_mc, target_keyframe_idx, true);\r\n //pass2: apply update commands for objects on stage (only if they are not blocked by script)\r\n this.pass2(target_mc);\r\n target_mc.constructedKeyFrameIndex = target_keyframe_idx;\r\n };\r\n Timeline.prototype.pass1 = function (start_construct_idx, target_keyframe_idx, depth_sessionIDs) {\r\n var i;\r\n var k;\r\n this._update_indices.length = 0; // store a list of updatecommand_indices, so we dont have to read frame_recipe again\r\n var update_cnt = 0;\r\n var start_index;\r\n var end_index;\r\n for (k = start_construct_idx; k <= target_keyframe_idx; k++) {\r\n var frame_command_idx = this.frame_command_indices[k];\r\n var frame_recipe = this.frame_recipe[k];\r\n if (frame_recipe & 2) {\r\n // remove childs\r\n start_index = this.command_index_stream[frame_command_idx];\r\n end_index = start_index + this.command_length_stream[frame_command_idx++];\r\n for (i = start_index; i < end_index; i++)\r\n delete depth_sessionIDs[this.remove_child_stream[i] - 16383];\r\n }\r\n if (frame_recipe & 4) {\r\n start_index = this.command_index_stream[frame_command_idx];\r\n end_index = start_index + this.command_length_stream[frame_command_idx++];\r\n // apply add commands in reversed order to have script exeucted in correct order.\r\n // this could be changed in exporter\r\n for (i = end_index - 1; i >= start_index; i--)\r\n depth_sessionIDs[this.add_child_stream[i * 2 + 1] - 16383] = i;\r\n }\r\n if (frame_recipe & 8)\r\n this._update_indices[update_cnt++] = frame_command_idx; // execute update command later\r\n }\r\n };\r\n Timeline.prototype.pass2 = function (target_mc) {\r\n var k;\r\n var len = this._update_indices.length;\r\n for (k = 0; k < len; k++)\r\n this.update_childs(target_mc, this._update_indices[k]);\r\n };\r\n Timeline.prototype.constructNextFrame = function (target_mc, queueScript, scriptPass1) {\r\n if (queueScript === void 0) { queueScript = true; }\r\n if (scriptPass1 === void 0) { scriptPass1 = false; }\r\n var frameIndex = target_mc.currentFrameIndex;\r\n var new_keyFrameIndex = this.keyframe_indices[frameIndex];\r\n if (queueScript && this.keyframe_firstframes[new_keyFrameIndex] == frameIndex)\r\n this.add_script_for_postcontruct(target_mc, new_keyFrameIndex, scriptPass1);\r\n if (target_mc.constructedKeyFrameIndex != new_keyFrameIndex) {\r\n target_mc.constructedKeyFrameIndex = new_keyFrameIndex;\r\n var frame_command_idx = this.frame_command_indices[new_keyFrameIndex];\r\n var frame_recipe = this.frame_recipe[new_keyFrameIndex];\r\n if (frame_recipe & 1) {\r\n for (var i = target_mc.numChildren - 1; i >= 0; i--)\r\n if (target_mc._children[i]._depthID < 0)\r\n target_mc.removeChildAt(i);\r\n }\r\n else if (frame_recipe & 2) {\r\n this.remove_childs_continous(target_mc, frame_command_idx++);\r\n }\r\n if (frame_recipe & 4)\r\n this.add_childs_continous(target_mc, frame_command_idx++);\r\n if (frame_recipe & 8)\r\n this.update_childs(target_mc, frame_command_idx++);\r\n }\r\n };\r\n Timeline.prototype.remove_childs_continous = function (sourceMovieClip, frame_command_idx) {\r\n var start_index = this.command_index_stream[frame_command_idx];\r\n var end_index = start_index + this.command_length_stream[frame_command_idx];\r\n for (var i = start_index; i < end_index; i++)\r\n sourceMovieClip.removeChildAt(sourceMovieClip.getDepthIndexInternal(this.remove_child_stream[i] - 16383));\r\n };\r\n // used to add childs when jumping between frames\r\n Timeline.prototype.add_childs_continous = function (sourceMovieClip, frame_command_idx) {\r\n // apply add commands in reversed order to have script exeucted in correct order.\r\n // this could be changed in exporter\r\n var idx;\r\n var start_index = this.command_index_stream[frame_command_idx];\r\n var end_index = start_index + this.command_length_stream[frame_command_idx];\r\n for (var i = end_index - 1; i >= start_index; i--) {\r\n idx = i * 2;\r\n sourceMovieClip._addTimelineChildAt(sourceMovieClip.getPotentialChildInstance(this.add_child_stream[idx]), this.add_child_stream[idx + 1] - 16383, i);\r\n }\r\n };\r\n Timeline.prototype.update_childs = function (target_mc, frame_command_idx) {\r\n var p;\r\n var props_start_idx;\r\n var props_end_index;\r\n var start_index = this.command_index_stream[frame_command_idx];\r\n var end_index = start_index + this.command_length_stream[frame_command_idx];\r\n var child;\r\n for (var i = start_index; i < end_index; i++) {\r\n child = target_mc.getChildAtSessionID(this.update_child_stream[i]);\r\n if (child) {\r\n // check if the child is active + not blocked by script\r\n this._blocked = Boolean(child._adapter && child.adapter.isBlockedByScript());\r\n props_start_idx = this.update_child_props_indices_stream[i];\r\n props_end_index = props_start_idx + this.update_child_props_length_stream[i];\r\n for (p = props_start_idx; p < props_end_index; p++)\r\n this._functions[this.property_type_stream[p]].call(this, child, target_mc, this.property_index_stream[p]);\r\n }\r\n }\r\n };\r\n Timeline.prototype.update_mtx_all = function (child, target_mc, i) {\r\n if (this._blocked)\r\n return;\r\n i *= 6;\r\n var new_matrix = child.transform.matrix3D;\r\n new_matrix._rawData[0] = this.properties_stream_f32_mtx_all[i++];\r\n new_matrix._rawData[1] = this.properties_stream_f32_mtx_all[i++];\r\n new_matrix._rawData[4] = this.properties_stream_f32_mtx_all[i++];\r\n new_matrix._rawData[5] = this.properties_stream_f32_mtx_all[i++];\r\n new_matrix._rawData[12] = this.properties_stream_f32_mtx_all[i++];\r\n new_matrix._rawData[13] = this.properties_stream_f32_mtx_all[i];\r\n child.transform.invalidateComponents();\r\n };\r\n Timeline.prototype.update_colortransform = function (child, target_mc, i) {\r\n if (this._blocked)\r\n return;\r\n i *= 8;\r\n var new_ct = child.transform.colorTransform || (child.transform.colorTransform = new ColorTransform());\r\n new_ct._rawData[0] = this.properties_stream_f32_ct[i++];\r\n new_ct._rawData[1] = this.properties_stream_f32_ct[i++];\r\n new_ct._rawData[2] = this.properties_stream_f32_ct[i++];\r\n new_ct._rawData[3] = this.properties_stream_f32_ct[i++];\r\n new_ct._rawData[4] = this.properties_stream_f32_ct[i++];\r\n new_ct._rawData[5] = this.properties_stream_f32_ct[i++];\r\n new_ct._rawData[6] = this.properties_stream_f32_ct[i++];\r\n new_ct._rawData[7] = this.properties_stream_f32_ct[i];\r\n child.transform.invalidateColorTransform();\r\n };\r\n Timeline.prototype.update_masks = function (child, target_mc, i) {\r\n // an object could have multiple groups of masks, in case a graphic clip was merged into the timeline\r\n // this is not implmeented in the runtime yet\r\n // for now, a second mask-groupd would overwrite the first one\r\n var mask;\r\n var masks = new Array();\r\n var numMasks = this.properties_stream_int[i++];\r\n //mask may not exist if a goto command moves the playhead to a point in the timeline after\r\n //one of the masks in a mask array has already been removed. Therefore a check is needed.\r\n for (var m = 0; m < numMasks; m++)\r\n if ((mask = target_mc.getChildAtSessionID(this.properties_stream_int[i++])))\r\n masks.push(mask);\r\n child.masks = masks;\r\n };\r\n Timeline.prototype.update_name = function (child, target_mc, i) {\r\n child.name = this.properties_stream_strings[i];\r\n target_mc.adapter.registerScriptObject(child);\r\n };\r\n Timeline.prototype.update_button_name = function (target, sourceMovieClip, i) {\r\n target.name = this.properties_stream_strings[i];\r\n // todo: creating the buttonlistenrs later should also be done, but for icycle i dont think this will cause problems\r\n target.addButtonListeners();\r\n sourceMovieClip.adapter.registerScriptObject(target);\r\n };\r\n Timeline.prototype.update_visibility = function (child, target_mc, i) {\r\n if (!child._adapter || !child.adapter.isVisibilityByScript())\r\n child.visible = Boolean(i);\r\n };\r\n Timeline.prototype.update_mtx_scale_rot = function (child, target_mc, i) {\r\n if (this._blocked)\r\n return;\r\n i *= 4;\r\n var new_matrix = child.transform.matrix3D;\r\n new_matrix._rawData[0] = this.properties_stream_f32_mtx_scale_rot[i++];\r\n new_matrix._rawData[1] = this.properties_stream_f32_mtx_scale_rot[i++];\r\n new_matrix._rawData[4] = this.properties_stream_f32_mtx_scale_rot[i++];\r\n new_matrix._rawData[5] = this.properties_stream_f32_mtx_scale_rot[i];\r\n child.transform.invalidateComponents();\r\n child.pInvalidateHierarchicalProperties(HierarchicalProperties.SCENE_TRANSFORM);\r\n };\r\n Timeline.prototype.update_mtx_pos = function (child, target_mc, i) {\r\n if (this._blocked)\r\n return;\r\n i *= 2;\r\n var new_matrix = child.transform.matrix3D;\r\n new_matrix._rawData[12] = this.properties_stream_f32_mtx_pos[i++];\r\n new_matrix._rawData[13] = this.properties_stream_f32_mtx_pos[i];\r\n child.transform.invalidatePosition();\r\n };\r\n Timeline.prototype.enable_maskmode = function (child, target_mc, i) {\r\n child.maskMode = true;\r\n };\r\n Timeline.prototype.remove_masks = function (child, target_mc, i) {\r\n child.masks = null;\r\n };\r\n Timeline.prototype.update_blendmode = function (child, target_mc, i) {\r\n console.log(\"update blendmode \" + i);\r\n };\r\n Timeline.prototype.update_rendermode = function (child, target_mc, i) {\r\n console.log(\"update rendermode \" + i);\r\n };\r\n return Timeline;\r\n}());\r\nexport { Timeline };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/Timeline.js","/**\r\n *\r\n */\r\nvar TouchPoint = (function () {\r\n function TouchPoint(x, y, id) {\r\n this.x = x;\r\n this.y = y;\r\n this.id = id;\r\n }\r\n return TouchPoint;\r\n}());\r\nexport { TouchPoint };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/TouchPoint.js","/**\r\n *\r\n */\r\nvar BoundsType = (function () {\r\n function BoundsType() {\r\n }\r\n return BoundsType;\r\n}());\r\nexport { BoundsType };\r\n/**\r\n *\r\n */\r\nBoundsType.SPHERE = \"sphere\";\r\n/**\r\n *\r\n */\r\nBoundsType.AXIS_ALIGNED_BOX = \"axisAlignedBox\";\r\n/**\r\n *\r\n */\r\nBoundsType.NULL = \"null\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/bounds/BoundsType.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\nvar DisplayObjectEvent = (function (_super) {\r\n tslib_1.__extends(DisplayObjectEvent, _super);\r\n function DisplayObjectEvent(type, object) {\r\n var _this = _super.call(this, type) || this;\r\n _this._object = object;\r\n return _this;\r\n }\r\n Object.defineProperty(DisplayObjectEvent.prototype, \"object\", {\r\n get: function () {\r\n return this._object;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the event.\r\n * @return An exact duplicate of the current object.\r\n */\r\n DisplayObjectEvent.prototype.clone = function () {\r\n return new DisplayObjectEvent(this.type, this._object);\r\n };\r\n return DisplayObjectEvent;\r\n}(EventBase));\r\nexport { DisplayObjectEvent };\r\n/**\r\n *\r\n */\r\nDisplayObjectEvent.VISIBLITY_UPDATED = \"visiblityUpdated\";\r\n/**\r\n *\r\n */\r\nDisplayObjectEvent.SCENETRANSFORM_CHANGED = \"scenetransformChanged\";\r\n/**\r\n *\r\n */\r\nDisplayObjectEvent.SCENE_CHANGED = \"sceneChanged\";\r\n/**\r\n *\r\n */\r\nDisplayObjectEvent.PARTITION_CHANGED = \"partitionChanged\";\r\n/**\r\n *\r\n */\r\nDisplayObjectEvent.INVALIDATE_PARTITION_BOUNDS = \"invalidatePartitionBounds\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/DisplayObjectEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { Transform, TransformEvent, Box, ColorTransform, Sphere, MathConsts, Matrix3D, Point, Vector3D, AssetBase } from \"@awayjs/core\";\r\nimport { StyleEvent, PickingCollision } from \"@awayjs/graphics\";\r\nimport { HierarchicalProperties } from \"../base/HierarchicalProperties\";\r\nimport { BoundsType } from \"../bounds/BoundsType\";\r\nimport { AlignmentMode } from \"../base/AlignmentMode\";\r\nimport { OrientationMode } from \"../base/OrientationMode\";\r\nimport { DisplayObjectEvent } from \"../events/DisplayObjectEvent\";\r\n/**\r\n * The DisplayObject class is the base class for all objects that can be\r\n * placed on the display list. The display list manages all objects displayed\r\n * in flash. Use the DisplayObjectContainer class to arrange the\r\n * display objects in the display list. DisplayObjectContainer objects can\r\n * have child display objects, while other display objects, such as Shape and\r\n * TextField objects, are \"leaf\" nodes that have only parents and siblings, no\r\n * children.\r\n *\r\n *

The DisplayObject class supports basic functionality like the x\r\n * and y position of an object, as well as more advanced properties of\r\n * the object such as its transformation matrix.

\r\n *\r\n *

DisplayObject is an abstract base class; therefore, you cannot call\r\n * DisplayObject directly. Invoking new DisplayObject() throws an\r\n * ArgumentError exception.

\r\n *\r\n *

All display objects inherit from the DisplayObject class.

\r\n *\r\n *

The DisplayObject class itself does not include any APIs for rendering\r\n * content onscreen. For that reason, if you want create a custom subclass of\r\n * the DisplayObject class, you will want to extend one of its subclasses that\r\n * do have APIs for rendering content onscreen, such as the Shape, Sprite,\r\n * Bitmap, SimpleButton, TextField, or MovieClip class.

\r\n *\r\n *

The DisplayObject class contains several broadcast events. Normally, the\r\n * target of any particular event is a specific DisplayObject instance. For\r\n * example, the target of an added event is the specific\r\n * DisplayObject instance that was added to the display list. Having a single\r\n * target restricts the placement of event listeners to that target and in\r\n * some cases the target's ancestors on the display list. With broadcast\r\n * events, however, the target is not a specific DisplayObject instance, but\r\n * rather all DisplayObject instances, including those that are not on the\r\n * display list. This means that you can add a listener to any DisplayObject\r\n * instance to listen for broadcast events. In addition to the broadcast\r\n * events listed in the DisplayObject class's Events table, the DisplayObject\r\n * class also inherits two broadcast events from the EventDispatcher class:\r\n * activate and deactivate.

\r\n *\r\n *

Some properties previously used in the ActionScript 1.0 and 2.0\r\n * MovieClip, TextField, and Button classes(such as _alpha,\r\n * _height, _name, _width,\r\n * _x, _y, and others) have equivalents in the\r\n * ActionScript 3.0 DisplayObject class that are renamed so that they no\r\n * longer begin with the underscore(_) character.

\r\n *\r\n *

For more information, see the \"Display Programming\" chapter of the\r\n * ActionScript 3.0 Developer's Guide.

\r\n *\r\n * @event added Dispatched when a display object is added to the\r\n * display list. The following methods trigger this\r\n * event:\r\n * DisplayObjectContainer.addChild(),\r\n * DisplayObjectContainer.addChildAt().\r\n * @event addedToScene Dispatched when a display object is added to the on\r\n * scene display list, either directly or through the\r\n * addition of a sub tree in which the display object\r\n * is contained. The following methods trigger this\r\n * event:\r\n * DisplayObjectContainer.addChild(),\r\n * DisplayObjectContainer.addChildAt().\r\n * @event enterFrame [broadcast event] Dispatched when the playhead is\r\n * entering a new frame. If the playhead is not\r\n * moving, or if there is only one frame, this event\r\n * is dispatched continuously in conjunction with the\r\n * frame rate. This event is a broadcast event, which\r\n * means that it is dispatched by all display objects\r\n * with a listener registered for this event.\r\n * @event exitFrame [broadcast event] Dispatched when the playhead is\r\n * exiting the current frame. All frame scripts have\r\n * been run. If the playhead is not moving, or if\r\n * there is only one frame, this event is dispatched\r\n * continuously in conjunction with the frame rate.\r\n * This event is a broadcast event, which means that\r\n * it is dispatched by all display objects with a\r\n * listener registered for this event.\r\n * @event frameConstructed [broadcast event] Dispatched after the constructors\r\n * of frame display objects have run but before frame\r\n * scripts have run. If the playhead is not moving, or\r\n * if there is only one frame, this event is\r\n * dispatched continuously in conjunction with the\r\n * frame rate. This event is a broadcast event, which\r\n * means that it is dispatched by all display objects\r\n * with a listener registered for this event.\r\n * @event removed Dispatched when a display object is about to be\r\n * removed from the display list. Two methods of the\r\n * DisplayObjectContainer class generate this event:\r\n * removeChild() and\r\n * removeChildAt().\r\n *\r\n *

The following methods of a\r\n * DisplayObjectContainer object also generate this\r\n * event if an object must be removed to make room for\r\n * the new object: addChild(),\r\n * addChildAt(), and\r\n * setChildIndex().

\r\n * @event removedFromScene Dispatched when a display object is about to be\r\n * removed from the display list, either directly or\r\n * through the removal of a sub tree in which the\r\n * display object is contained. Two methods of the\r\n * DisplayObjectContainer class generate this event:\r\n * removeChild() and\r\n * removeChildAt().\r\n *\r\n *

The following methods of a\r\n * DisplayObjectContainer object also generate this\r\n * event if an object must be removed to make room for\r\n * the new object: addChild(),\r\n * addChildAt(), and\r\n * setChildIndex().

\r\n * @event render [broadcast event] Dispatched when the display list\r\n * is about to be updated and rendered. This event\r\n * provides the last opportunity for objects listening\r\n * for this event to make changes before the display\r\n * list is rendered. You must call the\r\n * invalidate() method of the Scene\r\n * object each time you want a render\r\n * event to be dispatched. Render events\r\n * are dispatched to an object only if there is mutual\r\n * trust between it and the object that called\r\n * Scene.invalidate(). This event is a\r\n * broadcast event, which means that it is dispatched\r\n * by all display objects with a listener registered\r\n * for this event.\r\n *\r\n *

Note: This event is not dispatched if the\r\n * display is not rendering. This is the case when the\r\n * content is either minimized or obscured.

\r\n */\r\nvar DisplayObject = (function (_super) {\r\n tslib_1.__extends(DisplayObject, _super);\r\n /**\r\n * Creates a new DisplayObject instance.\r\n */\r\n function DisplayObject() {\r\n var _this = _super.call(this) || this;\r\n //temp point used in hit testing\r\n _this._tempPoint = new Point();\r\n _this._queuedEvents = new Array();\r\n _this._boxBoundsInvalid = true;\r\n _this._sphereBoundsInvalid = true;\r\n _this._concatenatedMatrix3D = new Matrix3D();\r\n _this._pIsEntity = false;\r\n _this._pIsContainer = false;\r\n _this._sessionID = -1;\r\n _this._depthID = -16384;\r\n _this._scenePosition = new Vector3D();\r\n _this._explicitVisibility = true;\r\n _this._explicitMaskId = -1;\r\n _this._pImplicitVisibility = true;\r\n _this._pImplicitMaskId = -1;\r\n _this._pImplicitMaskIds = new Array();\r\n _this._explicitMouseEnabled = true;\r\n _this._pImplicitMouseEnabled = true;\r\n _this._orientationMatrix = new Matrix3D();\r\n _this._inheritColorTransform = true;\r\n _this._maskMode = false;\r\n //temp vector used in global to local\r\n _this._tempVector3D = new Vector3D();\r\n _this.isSlice9ScaledMC = false;\r\n _this.isSlice9ScaledSprite = false;\r\n /**\r\n *\r\n */\r\n _this.alignmentMode = AlignmentMode.REGISTRATION_POINT;\r\n /**\r\n *\r\n */\r\n _this.castsShadows = true;\r\n /**\r\n *\r\n */\r\n _this.orientationMode = OrientationMode.DEFAULT;\r\n /**\r\n *\r\n */\r\n _this.zOffset = 0;\r\n //global debug bounding boxes:\r\n //this._debugVisible=true;\r\n _this._onInvalidatePropertiesDelegate = function (event) { return _this._onInvalidateProperties(event); };\r\n //creation of associated transform object\r\n _this._transform = new Transform(null, _this._concatenatedMatrix3D);\r\n //setup transform listeners\r\n _this._transform.addEventListener(TransformEvent.INVALIDATE_MATRIX3D, function (event) { return _this._onInvalidateMatrix3D(event); });\r\n _this._transform.addEventListener(TransformEvent.UPDATE_CONCATENATED_MATRIX3D, function (event) { return _this._onUpdateConcatenatedMatrix3D(event); });\r\n _this._transform.addEventListener(TransformEvent.INVALIDATE_COLOR_TRANSFORM, function (event) { return _this._onInvalidateColorTransform(event); });\r\n //default bounds type\r\n _this._boundsType = BoundsType.AXIS_ALIGNED_BOX;\r\n return _this;\r\n }\r\n Object.defineProperty(DisplayObject.prototype, \"traverseName\", {\r\n get: function () {\r\n return DisplayObject.traverseName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"inheritColorTransform\", {\r\n get: function () {\r\n return this._inheritColorTransform;\r\n },\r\n set: function (value) {\r\n if (this._inheritColorTransform == value)\r\n return;\r\n this._inheritColorTransform = value;\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.COLOR_TRANSFORM);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"alpha\", {\r\n /**\r\n * Indicates the alpha transparency value of the object specified. Valid\r\n * values are 0(fully transparent) to 1(fully opaque). The default value is\r\n * 1. Display objects with alpha set to 0 are active,\r\n * even though they are invisible.\r\n */\r\n get: function () {\r\n return this._transform.colorTransform.alphaMultiplier;\r\n },\r\n set: function (value) {\r\n this._transform.colorTransform.alphaMultiplier = value;\r\n this._transform.invalidateColorTransform();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"boundsType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._boundsType;\r\n },\r\n set: function (value) {\r\n if (this._boundsType == value)\r\n return;\r\n this._boundsType = value;\r\n this.invalidate();\r\n this._pInvalidateBounds();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"depth\", {\r\n /**\r\n * Indicates the depth of the display object, in pixels. The depth is\r\n * calculated based on the bounds of the content of the display object. When\r\n * you set the depth property, the scaleZ property\r\n * is adjusted accordingly, as shown in the following code:\r\n *\r\n *

Except for TextField and Video objects, a display object with no\r\n * content (such as an empty sprite) has a depth of 0, even if you try to\r\n * set depth to a different value.

\r\n */\r\n get: function () {\r\n if (this._registrationMatrix3D)\r\n return this.getBox().depth * this.scaleZ * this._registrationMatrix3D._rawData[10];\r\n return this.getBox().depth * this.scaleZ;\r\n },\r\n set: function (val) {\r\n if (this._depth == val)\r\n return;\r\n this._depth = val;\r\n this._setScaleZ(val / this.getBox().depth);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"eulers\", {\r\n /**\r\n * Defines the rotation of the 3d object as a Vector3D object containing euler angles for rotation around x, y and z axis.\r\n */\r\n get: function () {\r\n if (!this._eulers)\r\n this._eulers = new Vector3D();\r\n this._eulers.x = this.rotationX;\r\n this._eulers.y = this.rotationY;\r\n this._eulers.z = this.rotationZ;\r\n return this._eulers;\r\n },\r\n set: function (value) {\r\n // previously this was using the setters for rotationX etc\r\n // but because this will convert from radians to degree, i changed it to update directly\r\n this._transform.rotation.x = value.x;\r\n this._transform.rotation.y = value.y;\r\n this._transform.rotation.z = value.z;\r\n this._transform.invalidateMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"height\", {\r\n /**\r\n * An indexed array that contains each filter object currently associated\r\n * with the display object. The flash.filters package contains several\r\n * classes that define specific filters you can use.\r\n *\r\n *

Filters can be applied in Flash Professional at design time, or at run\r\n * time by using ActionScript code. To apply a filter by using ActionScript,\r\n * you must make a temporary copy of the entire filters array,\r\n * modify the temporary array, then assign the value of the temporary array\r\n * back to the filters array. You cannot directly add a new\r\n * filter object to the filters array.

\r\n *\r\n *

To add a filter by using ActionScript, perform the following steps\r\n * (assume that the target display object is named\r\n * myDisplayObject):

\r\n *\r\n *
    \r\n *
  1. Create a new filter object by using the constructor method of your\r\n * chosen filter class.
  2. \r\n *
  3. Assign the value of the myDisplayObject.filters array\r\n * to a temporary array, such as one named myFilters.
  4. \r\n *
  5. Add the new filter object to the myFilters temporary\r\n * array.
  6. \r\n *
  7. Assign the value of the temporary array to the\r\n * myDisplayObject.filters array.
  8. \r\n *
\r\n *\r\n *

If the filters array is undefined, you do not need to use\r\n * a temporary array. Instead, you can directly assign an array literal that\r\n * contains one or more filter objects that you create. The first example in\r\n * the Examples section adds a drop shadow filter by using code that handles\r\n * both defined and undefined filters arrays.

\r\n *\r\n *

To modify an existing filter object, you must use the technique of\r\n * modifying a copy of the filters array:

\r\n *\r\n *
    \r\n *
  1. Assign the value of the filters array to a temporary\r\n * array, such as one named myFilters.
  2. \r\n *
  3. Modify the property by using the temporary array,\r\n * myFilters. For example, to set the quality property of the\r\n * first filter in the array, you could use the following code:\r\n * myFilters[0].quality = 1;
  4. \r\n *
  5. Assign the value of the temporary array to the filters\r\n * array.
  6. \r\n *
\r\n *\r\n *

At load time, if a display object has an associated filter, it is\r\n * marked to cache itself as a transparent bitmap. From this point forward,\r\n * as long as the display object has a valid filter list, the player caches\r\n * the display object as a bitmap. This source bitmap is used as a source\r\n * image for the filter effects. Each display object usually has two bitmaps:\r\n * one with the original unfiltered source display object and another for the\r\n * final image after filtering. The final image is used when rendering. As\r\n * long as the display object does not change, the final image does not need\r\n * updating.

\r\n *\r\n *

The flash.filters package includes classes for filters. For example, to\r\n * create a DropShadow filter, you would write:

\r\n *\r\n * @throws ArgumentError When filters includes a ShaderFilter\r\n * and the shader output type is not compatible with\r\n * this operation(the shader must specify a\r\n * pixel4 output).\r\n * @throws ArgumentError When filters includes a ShaderFilter\r\n * and the shader doesn't specify any image input or\r\n * the first input is not an image4 input.\r\n * @throws ArgumentError When filters includes a ShaderFilter\r\n * and the shader specifies an image input that isn't\r\n * provided.\r\n * @throws ArgumentError When filters includes a ShaderFilter, a\r\n * ByteArray or Vector. instance as a shader\r\n * input, and the width and\r\n * height properties aren't specified for\r\n * the ShaderInput object, or the specified values\r\n * don't match the amount of data in the input data.\r\n * See the ShaderInput.input property for\r\n * more information.\r\n */\r\n //\t\tpublic filters:Array;\r\n /**\r\n * Indicates the height of the display object, in pixels. The height is\r\n * calculated based on the bounds of the content of the display object. When\r\n * you set the height property, the scaleY property\r\n * is adjusted accordingly, as shown in the following code:\r\n *\r\n *

Except for TextField and Video objects, a display object with no\r\n * content (such as an empty sprite) has a height of 0, even if you try to\r\n * set height to a different value.

\r\n */\r\n get: function () {\r\n if (this._registrationMatrix3D)\r\n return this.getBox().height * this.scaleY * this._registrationMatrix3D._rawData[5];\r\n return this.getBox().height * this.scaleY;\r\n },\r\n set: function (val) {\r\n if (this._height == val)\r\n return;\r\n var boxHeight = this.getBox().height;\r\n //return if box is empty ie setting height for no content is impossible\r\n if (!boxHeight)\r\n return;\r\n this._height = val;\r\n this._setScaleY(val / boxHeight);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"index\", {\r\n /**\r\n * Indicates the instance container index of the DisplayObject. The object can be\r\n * identified in the child list of its parent display object container by\r\n * calling the getChildByIndex() method of the display object\r\n * container.\r\n *\r\n *

If the DisplayObject has no parent container, index defaults to 0.

\r\n */\r\n get: function () {\r\n if (this._pParent)\r\n return this._pParent.getChildIndex(this);\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"isEntity\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._pIsEntity;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"isContainer\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._pIsContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"loaderInfo\", {\r\n /**\r\n * Returns a LoaderInfo object containing information about loading the file\r\n * to which this display object belongs. The loaderInfo property\r\n * is defined only for the root display object of a SWF file or for a loaded\r\n * Bitmap(not for a Bitmap that is drawn with ActionScript). To find the\r\n * loaderInfo object associated with the SWF file that contains\r\n * a display object named myDisplayObject, use\r\n * myDisplayObject.root.loaderInfo.\r\n *\r\n *

A large SWF file can monitor its download by calling\r\n * this.root.loaderInfo.addEventListener(Event.COMPLETE,\r\n * func).

\r\n */\r\n get: function () {\r\n return this._loaderInfo;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"maskMode\", {\r\n get: function () {\r\n return this._maskMode;\r\n },\r\n set: function (value) {\r\n if (this._maskMode == value)\r\n return;\r\n this._maskMode = value;\r\n this._explicitMaskId = value ? this.id : -1;\r\n this._updateMaskMode();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"mouseEnabled\", {\r\n /**\r\n * Specifies whether this object receives mouse, or other user input,\r\n * messages. The default value is true, which means that by\r\n * default any InteractiveObject instance that is on the display list\r\n * receives mouse events or other user input events. If\r\n * mouseEnabled is set to false, the instance does\r\n * not receive any mouse events(or other user input events like keyboard\r\n * events). Any children of this instance on the display list are not\r\n * affected. To change the mouseEnabled behavior for all\r\n * children of an object on the display list, use\r\n * flash.display.DisplayObjectContainer.mouseChildren.\r\n *\r\n *

No event is dispatched by setting this property. You must use the\r\n * addEventListener() method to create interactive\r\n * functionality.

\r\n */\r\n get: function () {\r\n return this._explicitMouseEnabled;\r\n },\r\n set: function (value) {\r\n if (this._explicitMouseEnabled == value)\r\n return;\r\n this._explicitMouseEnabled = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"mouseX\", {\r\n /**\r\n * Indicates the x coordinate of the mouse or user input device position, in\r\n * pixels.\r\n *\r\n *

Note: For a DisplayObject that has been rotated, the returned x\r\n * coordinate will reflect the non-rotated object.

\r\n */\r\n get: function () {\r\n return this._mouseX;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"mouseY\", {\r\n /**\r\n * Indicates the y coordinate of the mouse or user input device position, in\r\n * pixels.\r\n *\r\n *

Note: For a DisplayObject that has been rotated, the returned y\r\n * coordinate will reflect the non-rotated object.

\r\n */\r\n get: function () {\r\n return this._mouseY;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"name\", {\r\n /**\r\n * Indicates the instance name of the DisplayObject. The object can be\r\n * identified in the child list of its parent display object container by\r\n * calling the getChildByName() method of the display object\r\n * container.\r\n *\r\n * @throws IllegalOperationError If you are attempting to set this property\r\n * on an object that was placed on the timeline\r\n * in the Flash authoring tool.\r\n */\r\n get: function () {\r\n return this._pName;\r\n },\r\n set: function (value) {\r\n this._pName = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"parent\", {\r\n /**\r\n * Indicates the DisplayObjectContainer object that contains this display\r\n * object. Use the parent property to specify a relative path to\r\n * display objects that are above the current display object in the display\r\n * list hierarchy.\r\n *\r\n *

You can use parent to move up multiple levels in the\r\n * display list as in the following:

\r\n *\r\n * @throws SecurityError The parent display object belongs to a security\r\n * sandbox to which you do not have access. You can\r\n * avoid this situation by having the parent movie call\r\n * the Security.allowDomain() method.\r\n */\r\n get: function () {\r\n return this._pParent;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"isPartition\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._iIsPartition;\r\n },\r\n set: function (value) {\r\n if (this._iIsPartition == value)\r\n return;\r\n this._iIsPartition = value;\r\n this._iSetScene(this._pScene, this._pParent ? this._pParent._pPartition : null);\r\n this.dispatchEvent(new DisplayObjectEvent(DisplayObjectEvent.PARTITION_CHANGED, this));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"registrationPoint\", {\r\n /**\r\n * Defines the local point around which the object rotates.\r\n */\r\n get: function () {\r\n if (this._registrationMatrix3D)\r\n return new Vector3D(-this._registrationMatrix3D._rawData[12] * this.scaleX, -this._registrationMatrix3D._rawData[13] * this.scaleY, -this._registrationMatrix3D._rawData[14] * this.scaleZ);\r\n return null;\r\n },\r\n set: function (value) {\r\n if (!value) {\r\n if (!this._registrationMatrix3D)\r\n return;\r\n this._registrationMatrix3D._rawData[12] = 0;\r\n this._registrationMatrix3D._rawData[13] = 0;\r\n this._registrationMatrix3D._rawData[14] = 0;\r\n if (this._registrationMatrix3D.isIdentity())\r\n this._registrationMatrix3D = null;\r\n }\r\n else {\r\n if (!this._registrationMatrix3D)\r\n this._registrationMatrix3D = new Matrix3D();\r\n this._registrationMatrix3D._rawData[12] = -value.x / this._transform.scale.x;\r\n this._registrationMatrix3D._rawData[13] = -value.y / this._transform.scale.y;\r\n this._registrationMatrix3D._rawData[14] = -value.z / this._transform.scale.z;\r\n }\r\n this._registrationMatrix3D.invalidatePosition();\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.SCENE_TRANSFORM);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"registrationScale\", {\r\n /**\r\n * Defines the local scale.\r\n */\r\n get: function () {\r\n if (this._registrationMatrix3D)\r\n return new Vector3D(this._registrationMatrix3D._rawData[0], this._registrationMatrix3D._rawData[5], this._registrationMatrix3D._rawData[10]);\r\n return null;\r\n },\r\n set: function (value) {\r\n if (!value) {\r\n if (!this._registrationMatrix3D)\r\n return;\r\n this._registrationMatrix3D._rawData[0] = 1;\r\n this._registrationMatrix3D._rawData[5] = 1;\r\n this._registrationMatrix3D._rawData[10] = 1;\r\n if (this._registrationMatrix3D.isIdentity())\r\n this._registrationMatrix3D = null;\r\n }\r\n else {\r\n if (!this._registrationMatrix3D)\r\n this._registrationMatrix3D = new Matrix3D();\r\n this._registrationMatrix3D._rawData[0] = value.x;\r\n this._registrationMatrix3D._rawData[5] = value.y;\r\n this._registrationMatrix3D._rawData[10] = value.z;\r\n }\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.SCENE_TRANSFORM);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"root\", {\r\n /**\r\n * For a display object in a loaded SWF file, the root property\r\n * is the top-most display object in the portion of the display list's tree\r\n * structure represented by that SWF file. For a Bitmap object representing a\r\n * loaded image file, the root property is the Bitmap object\r\n * itself. For the instance of the main class of the first SWF file loaded,\r\n * the root property is the display object itself. The\r\n * root property of the Scene object is the Scene object itself.\r\n * The root property is set to null for any display\r\n * object that has not been added to the display list, unless it has been\r\n * added to a display object container that is off the display list but that\r\n * is a child of the top-most display object in a loaded SWF file.\r\n *\r\n *

For example, if you create a new Sprite object by calling the\r\n * Sprite() constructor method, its root property\r\n * is null until you add it to the display list(or to a display\r\n * object container that is off the display list but that is a child of the\r\n * top-most display object in a SWF file).

\r\n *\r\n *

For a loaded SWF file, even though the Loader object used to load the\r\n * file may not be on the display list, the top-most display object in the\r\n * SWF file has its root property set to itself. The Loader\r\n * object does not have its root property set until it is added\r\n * as a child of a display object for which the root property is\r\n * set.

\r\n */\r\n get: function () {\r\n return this._root;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"rotationX\", {\r\n /**\r\n * Indicates the x-axis rotation of the DisplayObject instance, in degrees,\r\n * from its original orientation relative to the 3D parent container. Values\r\n * from 0 to 180 represent clockwise rotation; values from 0 to -180\r\n * represent counterclockwise rotation. Values outside this range are added\r\n * to or subtracted from 360 to obtain a value within the range.\r\n */\r\n get: function () {\r\n return this._transform.rotation.x * MathConsts.RADIANS_TO_DEGREES;\r\n },\r\n set: function (val) {\r\n if (this.rotationX == val)\r\n return;\r\n this._transform.rotation.x = val * MathConsts.DEGREES_TO_RADIANS;\r\n this._transform.invalidateMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"rotationY\", {\r\n /**\r\n * Indicates the y-axis rotation of the DisplayObject instance, in degrees,\r\n * from its original orientation relative to the 3D parent container. Values\r\n * from 0 to 180 represent clockwise rotation; values from 0 to -180\r\n * represent counterclockwise rotation. Values outside this range are added\r\n * to or subtracted from 360 to obtain a value within the range.\r\n */\r\n get: function () {\r\n return this._transform.rotation.y * MathConsts.RADIANS_TO_DEGREES;\r\n },\r\n set: function (val) {\r\n if (this.rotationY == val)\r\n return;\r\n this._transform.rotation.y = val * MathConsts.DEGREES_TO_RADIANS;\r\n this._transform.invalidateMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"rotationZ\", {\r\n /**\r\n * Indicates the z-axis rotation of the DisplayObject instance, in degrees,\r\n * from its original orientation relative to the 3D parent container. Values\r\n * from 0 to 180 represent clockwise rotation; values from 0 to -180\r\n * represent counterclockwise rotation. Values outside this range are added\r\n * to or subtracted from 360 to obtain a value within the range.\r\n */\r\n get: function () {\r\n return this._transform.rotation.z * MathConsts.RADIANS_TO_DEGREES;\r\n },\r\n set: function (val) {\r\n if (this.rotationZ == val)\r\n return;\r\n this._transform.rotation.z = val * MathConsts.DEGREES_TO_RADIANS;\r\n this._transform.invalidateMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"scaleX\", {\r\n /**\r\n * Indicates the horizontal scale(percentage) of the object as applied from\r\n * the registration point. The default registration point is(0,0). 1.0\r\n * equals 100% scale.\r\n *\r\n *

Scaling the local coordinate system changes the x and\r\n * y property values, which are defined in whole pixels.

\r\n */\r\n get: function () {\r\n return this._transform.scale.x;\r\n },\r\n set: function (val) {\r\n //remove absolute width\r\n this._width = null;\r\n this._setScaleX(val);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"scaleY\", {\r\n /**\r\n * Indicates the vertical scale(percentage) of an object as applied from the\r\n * registration point of the object. The default registration point is(0,0).\r\n * 1.0 is 100% scale.\r\n *\r\n *

Scaling the local coordinate system changes the x and\r\n * y property values, which are defined in whole pixels.

\r\n */\r\n get: function () {\r\n return this._transform.scale.y;\r\n },\r\n set: function (val) {\r\n //remove absolute height\r\n this._height = null;\r\n this._setScaleY(val);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"scaleZ\", {\r\n /**\r\n * Indicates the depth scale(percentage) of an object as applied from the\r\n * registration point of the object. The default registration point is(0,0).\r\n * 1.0 is 100% scale.\r\n *\r\n *

Scaling the local coordinate system changes the x,\r\n * y and z property values, which are defined in\r\n * whole pixels.

\r\n */\r\n get: function () {\r\n return this._transform.scale.z;\r\n },\r\n set: function (val) {\r\n //remove absolute depth\r\n this._depth = null;\r\n this._setScaleZ(val);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"skewX\", {\r\n /**\r\n * Indicates the horizontal skew(angle) of the object as applied from\r\n * the registration point. The default registration point is(0,0).\r\n */\r\n get: function () {\r\n return this._transform.skew.x;\r\n },\r\n set: function (val) {\r\n if (this.skewX == val)\r\n return;\r\n this._transform.skew.x = val;\r\n this._transform.invalidateMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"skewY\", {\r\n /**\r\n * Indicates the vertical skew(angle) of an object as applied from the\r\n * registration point of the object. The default registration point is(0,0).\r\n */\r\n get: function () {\r\n return this._transform.skew.y;\r\n },\r\n set: function (val) {\r\n if (this.skewY == val)\r\n return;\r\n this._transform.skew.y = val;\r\n this._transform.invalidateMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"skewZ\", {\r\n /**\r\n * Indicates the depth skew(angle) of an object as applied from the\r\n * registration point of the object. The default registration point is(0,0).\r\n */\r\n get: function () {\r\n return this._transform.skew.z;\r\n },\r\n set: function (val) {\r\n if (this.skewZ == val)\r\n return;\r\n this._transform.skew.z = val;\r\n this._transform.invalidateMatrix3D();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"partition\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._pPartition;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"scene\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._pScene;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"scenePosition\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (this._scenePositionDirty) {\r\n if (this._registrationMatrix3D && this.alignmentMode == AlignmentMode.REGISTRATION_POINT) {\r\n this._scenePosition.x = -this._registrationMatrix3D._rawData[12];\r\n this._scenePosition.y = -this._registrationMatrix3D._rawData[13];\r\n this._scenePosition.z = -this._registrationMatrix3D._rawData[14];\r\n this._scenePosition = this._transform.concatenatedMatrix3D.transformVector(this._scenePosition, this._scenePosition);\r\n }\r\n else {\r\n this._transform.concatenatedMatrix3D.copyColumnTo(3, this._scenePosition);\r\n }\r\n this._scenePositionDirty = false;\r\n }\r\n return this._scenePosition;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"animator\", {\r\n /**\r\n * Defines the animator of the display object. Default value is null.\r\n */\r\n get: function () {\r\n return this._animator;\r\n },\r\n set: function (value) {\r\n if (this._animator)\r\n this._animator.removeOwner(this);\r\n this._animator = value;\r\n if (this._animator)\r\n this._animator.addOwner(this);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"material\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._material;\r\n },\r\n set: function (value) {\r\n if (this._material == value)\r\n return;\r\n if (this._material)\r\n this._material.iRemoveOwner(this);\r\n this._material = value;\r\n if (this._material)\r\n this._material.iAddOwner(this);\r\n this.invalidateMaterial();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"style\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._style;\r\n },\r\n set: function (value) {\r\n if (this._style == value)\r\n return;\r\n if (this._style)\r\n this._style.removeEventListener(StyleEvent.INVALIDATE_PROPERTIES, this._onInvalidatePropertiesDelegate);\r\n this._style = value;\r\n if (this._style)\r\n this._style.addEventListener(StyleEvent.INVALIDATE_PROPERTIES, this._onInvalidatePropertiesDelegate);\r\n this._onInvalidateProperties();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"shaderPickingDetails\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._shaderPickingDetails;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"debugVisible\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._debugVisible;\r\n },\r\n set: function (value) {\r\n if (value == this._debugVisible)\r\n return;\r\n this._debugVisible = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"transform\", {\r\n /**\r\n * An object with properties pertaining to a display object's matrix, color\r\n * transform, and pixel bounds. The specific properties - matrix,\r\n * colorTransform, and three read-only properties\r\n * (concatenatedMatrix, concatenatedColorTransform,\r\n * and pixelBounds) - are described in the entry for the\r\n * Transform class.\r\n *\r\n *

Each of the transform object's properties is itself an object. This\r\n * concept is important because the only way to set new values for the matrix\r\n * or colorTransform objects is to create a new object and copy that object\r\n * into the transform.matrix or transform.colorTransform property.

\r\n *\r\n *

For example, to increase the tx value of a display\r\n * object's matrix, you must make a copy of the entire matrix object, then\r\n * copy the new object into the matrix property of the transform object:

\r\n *
 public myMatrix:Matrix =\r\n         * myDisplayObject.transform.matrix; myMatrix.tx += 10;\r\n         * myDisplayObject.transform.matrix = myMatrix; 
\r\n *\r\n *

You cannot directly set the tx property. The following\r\n * code has no effect on myDisplayObject:

\r\n *
 myDisplayObject.transform.matrix.tx +=\r\n         * 10; 
\r\n *\r\n *

You can also copy an entire transform object and assign it to another\r\n * display object's transform property. For example, the following code\r\n * copies the entire transform object from myOldDisplayObj to\r\n * myNewDisplayObj:

\r\n * myNewDisplayObj.transform = myOldDisplayObj.transform;\r\n *\r\n *

The resulting display object, myNewDisplayObj, now has the\r\n * same values for its matrix, color transform, and pixel bounds as the old\r\n * display object, myOldDisplayObj.

\r\n *\r\n *

Note that AIR for TV devices use hardware acceleration, if it is\r\n * available, for color transforms.

\r\n */\r\n get: function () {\r\n return this._transform;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"visible\", {\r\n /**\r\n * Whether or not the display object is visible. Display objects that are not\r\n * visible are disabled. For example, if visible=false for an\r\n * InteractiveObject instance, it cannot be clicked.\r\n */\r\n get: function () {\r\n return this._explicitVisibility;\r\n },\r\n set: function (value) {\r\n if (this._explicitVisibility == value)\r\n return;\r\n this._explicitVisibility = value;\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.VISIBLE);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"masks\", {\r\n get: function () {\r\n return this._explicitMasks;\r\n },\r\n set: function (value) {\r\n if (this._explicitMasks == value)\r\n return;\r\n this._explicitMasks = value;\r\n //make sure maskMode is set to true for all masks\r\n if (value != null && value.length) {\r\n var len = value.length;\r\n for (var i = 0; i < len; i++)\r\n value[i].maskMode = true;\r\n }\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.MASKS);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"width\", {\r\n /**\r\n * Indicates the width of the display object, in pixels. The width is\r\n * calculated based on the bounds of the content of the display object. When\r\n * you set the width property, the scaleX property\r\n * is adjusted accordingly, as shown in the following code:\r\n *\r\n *

Except for TextField and Video objects, a display object with no\r\n * content(such as an empty sprite) has a width of 0, even if you try to set\r\n * width to a different value.

\r\n */\r\n get: function () {\r\n if (this._registrationMatrix3D)\r\n return this.getBox().width * this.scaleX * this._registrationMatrix3D._rawData[0];\r\n return this.getBox().width * this.scaleX;\r\n },\r\n set: function (val) {\r\n if (this._width == val)\r\n return;\r\n var boxWidth = this.getBox().width;\r\n //return if box is empty ie setting width for no content is impossible\r\n if (!boxWidth)\r\n return;\r\n this._width = val;\r\n this._setScaleX(val / boxWidth);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"x\", {\r\n /**\r\n * Indicates the x coordinate of the DisplayObject instance relative\r\n * to the local coordinates of the parent DisplayObjectContainer. If the\r\n * object is inside a DisplayObjectContainer that has transformations, it is\r\n * in the local coordinate system of the enclosing DisplayObjectContainer.\r\n * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the\r\n * DisplayObjectContainer's children inherit a coordinate system that is\r\n * rotated 90° counterclockwise. The object's coordinates refer to the\r\n * registration point position.\r\n */\r\n get: function () {\r\n return this._transform.position.x;\r\n },\r\n set: function (val) {\r\n if (this._transform.position.x == val)\r\n return;\r\n this._transform.matrix3D._rawData[12] = val;\r\n this._transform.invalidatePosition();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"y\", {\r\n /**\r\n * Indicates the y coordinate of the DisplayObject instance relative\r\n * to the local coordinates of the parent DisplayObjectContainer. If the\r\n * object is inside a DisplayObjectContainer that has transformations, it is\r\n * in the local coordinate system of the enclosing DisplayObjectContainer.\r\n * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the\r\n * DisplayObjectContainer's children inherit a coordinate system that is\r\n * rotated 90° counterclockwise. The object's coordinates refer to the\r\n * registration point position.\r\n */\r\n get: function () {\r\n return this._transform.position.y;\r\n },\r\n set: function (val) {\r\n if (this._transform.position.y == val)\r\n return;\r\n this._transform.matrix3D._rawData[13] = val;\r\n this._transform.invalidatePosition();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObject.prototype, \"z\", {\r\n /**\r\n * Indicates the z coordinate position along the z-axis of the DisplayObject\r\n * instance relative to the 3D parent container. The z property is used for\r\n * 3D coordinates, not screen or pixel coordinates.\r\n *\r\n *

When you set a z property for a display object to\r\n * something other than the default value of 0, a corresponding\r\n * Matrix3D object is automatically created. for adjusting a display object's\r\n * position and orientation in three dimensions. When working with the\r\n * z-axis, the existing behavior of x and y properties changes from screen or\r\n * pixel coordinates to positions relative to the 3D parent container.

\r\n *\r\n *

For example, a child of the _root at position x = 100, y =\r\n * 100, z = 200 is not drawn at pixel location(100,100). The child is drawn\r\n * wherever the 3D projection calculation puts it. The calculation is:

\r\n *\r\n *

(x~~cameraFocalLength/cameraRelativeZPosition,\r\n * y~~cameraFocalLength/cameraRelativeZPosition)

\r\n */\r\n get: function () {\r\n return this._transform.position.z;\r\n },\r\n set: function (val) {\r\n if (this._transform.position.z == val)\r\n return;\r\n this._transform.matrix3D._rawData[14] = val;\r\n this._transform.invalidatePosition();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n DisplayObject.prototype.addEventListener = function (type, listener) {\r\n _super.prototype.addEventListener.call(this, type, listener);\r\n switch (type) {\r\n case DisplayObjectEvent.SCENE_CHANGED:\r\n this._listenToSceneChanged = true;\r\n break;\r\n case DisplayObjectEvent.SCENETRANSFORM_CHANGED:\r\n this._listenToSceneTransformChanged = true;\r\n break;\r\n }\r\n };\r\n /**\r\n *\r\n */\r\n DisplayObject.prototype.clone = function () {\r\n var newInstance = new DisplayObject();\r\n this.copyTo(newInstance);\r\n return newInstance;\r\n };\r\n DisplayObject.prototype.copyTo = function (displayObject) {\r\n displayObject.isPartition = this._iIsPartition;\r\n displayObject.boundsType = this._boundsType;\r\n if (this._registrationMatrix3D)\r\n displayObject._registrationMatrix3D = this._registrationMatrix3D.clone();\r\n displayObject._iSourcePrefab = this._iSourcePrefab;\r\n displayObject.debugVisible = this._debugVisible;\r\n displayObject.name = this._pName;\r\n displayObject.mouseEnabled = this._explicitMouseEnabled;\r\n displayObject.extra = this.extra;\r\n displayObject.maskMode = this._maskMode;\r\n displayObject.castsShadows = this.castsShadows;\r\n displayObject.isSlice9ScaledMC = this.isSlice9ScaledMC;\r\n if (this._explicitMasks)\r\n displayObject.masks = this._explicitMasks;\r\n this._transform.copyRawDataTo(displayObject._transform);\r\n };\r\n /**\r\n *\r\n */\r\n DisplayObject.prototype.dispose = function () {\r\n this.disposeValues();\r\n };\r\n DisplayObject.prototype.disposeValues = function () {\r\n if (this._pParent)\r\n this._pParent.removeChild(this);\r\n //if (this._adapter) {\r\n //\tthis._adapter.dispose();\r\n //\tthis._adapter = null;\r\n //}\r\n //this._pos = null;\r\n //this._rot = null;\r\n //this._sca = null;\r\n //this._ske = null;\r\n //this._transformComponents = null;\r\n //this._transform.dispose();\r\n //this._transform = null;\r\n //\r\n //this._matrix3D = null;\r\n //this._concatenatedMatrix3D = null;\r\n //this._inverseSceneTransform = null;\r\n this._explicitMasks = null;\r\n };\r\n /**\r\n * Returns a rectangle that defines the area of the display object relative\r\n * to the coordinate system of the targetCoordinateSpace object.\r\n * Consider the following code, which shows how the rectangle returned can\r\n * vary depending on the targetCoordinateSpace parameter that\r\n * you pass to the method:\r\n *\r\n *

Note: Use the localToGlobal() and\r\n * globalToLocal() methods to convert the display object's local\r\n * coordinates to display coordinates, or display coordinates to local\r\n * coordinates, respectively.

\r\n *\r\n *

The getBounds() method is similar to the\r\n * getRect() method; however, the Rectangle returned by the\r\n * getBounds() method includes any strokes on shapes, whereas\r\n * the Rectangle returned by the getRect() method does not. For\r\n * an example, see the description of the getRect() method.

\r\n *\r\n * @param targetCoordinateSpace The display object that defines the\r\n * coordinate system to use.\r\n * @return The rectangle that defines the area of the display object relative\r\n * to the targetCoordinateSpace object's coordinate\r\n * system.\r\n */\r\n DisplayObject.prototype.getBounds = function (targetCoordinateSpace) {\r\n return this._bounds; //TODO\r\n };\r\n /**\r\n * Returns a rectangle that defines the boundary of the display object, based\r\n * on the coordinate system defined by the targetCoordinateSpace\r\n * parameter, excluding any strokes on shapes. The values that the\r\n * getRect() method returns are the same or smaller than those\r\n * returned by the getBounds() method.\r\n *\r\n *

Note: Use localToGlobal() and\r\n * globalToLocal() methods to convert the display object's local\r\n * coordinates to Scene coordinates, or Scene coordinates to local\r\n * coordinates, respectively.

\r\n *\r\n * @param targetCoordinateSpace The display object that defines the\r\n * coordinate system to use.\r\n * @return The rectangle that defines the area of the display object relative\r\n * to the targetCoordinateSpace object's coordinate\r\n * system.\r\n */\r\n DisplayObject.prototype.getRect = function (targetCoordinateSpace) {\r\n if (targetCoordinateSpace === void 0) { targetCoordinateSpace = null; }\r\n return this._bounds; //TODO\r\n };\r\n DisplayObject.prototype.getBox = function (targetCoordinateSpace) {\r\n if (targetCoordinateSpace === void 0) { targetCoordinateSpace = null; }\r\n if (this._iSourcePrefab)\r\n this._iSourcePrefab._iValidate();\r\n //TODO targetCoordinateSpace\r\n if (this._boxBoundsInvalid) {\r\n this._pUpdateBoxBounds();\r\n //scale updates if absolute dimensions are detected\r\n if (this._width != null)\r\n this._setScaleX(this._width / this._pBoxBounds.width);\r\n if (this._height != null)\r\n this._setScaleY(this._height / this._pBoxBounds.height);\r\n if (this._depth != null)\r\n this._setScaleZ(this._depth / this._pBoxBounds.depth);\r\n }\r\n if (targetCoordinateSpace == null || targetCoordinateSpace == this)\r\n return this._pBoxBounds;\r\n if (targetCoordinateSpace == this._pParent) {\r\n if (this._registrationMatrix3D) {\r\n if (this._tempTransform == null)\r\n this._tempTransform = new Matrix3D();\r\n this._tempTransform.copyFrom(this._transform.matrix3D);\r\n this._tempTransform.prepend(this._registrationMatrix3D);\r\n if (this.alignmentMode != AlignmentMode.REGISTRATION_POINT)\r\n this._tempTransform.appendTranslation(-this._registrationMatrix3D._rawData[12] * this._transform.scale.x, -this._registrationMatrix3D._rawData[13] * this._transform.scale.y, -this._registrationMatrix3D._rawData[14] * this._transform.scale.z);\r\n return this._tempTransform.transformBox(this._pBoxBounds);\r\n }\r\n return this._transform.matrix3D.transformBox(this._pBoxBounds);\r\n }\r\n else\r\n return targetCoordinateSpace.transform.inverseConcatenatedMatrix3D.transformBox(this.transform.concatenatedMatrix3D.transformBox(this._pBoxBounds));\r\n };\r\n DisplayObject.prototype.getSphere = function (targetCoordinateSpace) {\r\n if (targetCoordinateSpace === void 0) { targetCoordinateSpace = null; }\r\n if (this._iSourcePrefab)\r\n this._iSourcePrefab._iValidate();\r\n if (this._sphereBoundsInvalid)\r\n this._pUpdateSphereBounds();\r\n return this._pSphereBounds;\r\n };\r\n /**\r\n * Converts the point object from the Scene(global) coordinates\r\n * to the display object's(local) coordinates.\r\n *\r\n *

To use this method, first create an instance of the Point class. The\r\n * x and y values that you assign represent global coordinates\r\n * because they relate to the origin(0,0) of the main display area. Then\r\n * pass the Point instance as the parameter to the\r\n * globalToLocal() method. The method returns a new Point object\r\n * with x and y values that relate to the origin of the display\r\n * object instead of the origin of the Scene.

\r\n *\r\n * @param point An object created with the Point class. The Point object\r\n * specifies the x and y coordinates as\r\n * properties.\r\n * @return A Point object with coordinates relative to the display object.\r\n */\r\n DisplayObject.prototype.globalToLocal = function (point, target) {\r\n if (target === void 0) { target = null; }\r\n this._tempVector3D.setTo(point.x, point.y, 0);\r\n var pos = this._transform.inverseConcatenatedMatrix3D.transformVector(this._tempVector3D, this._tempVector3D);\r\n if (!target)\r\n target = new Point();\r\n target.x = pos.x;\r\n target.y = pos.y;\r\n return target;\r\n };\r\n /**\r\n * Converts a two-dimensional point from the Scene(global) coordinates to a\r\n * three-dimensional display object's(local) coordinates.\r\n *\r\n *

To use this method, first create an instance of the Vector3D class. The x,\r\n * y and z values that you assign to the Vector3D object represent global\r\n * coordinates because they are relative to the origin(0,0,0) of the scene. Then\r\n * pass the Vector3D object to the globalToLocal3D() method as the\r\n * position parameter.\r\n * The method returns three-dimensional coordinates as a Vector3D object\r\n * containing x, y, and z values that\r\n * are relative to the origin of the three-dimensional display object.

\r\n *\r\n * @param point A Vector3D object representing global x, y and z coordinates in\r\n * the scene.\r\n * @return A Vector3D object with coordinates relative to the three-dimensional\r\n * display object.\r\n */\r\n DisplayObject.prototype.globalToLocal3D = function (position) {\r\n return this._transform.inverseConcatenatedMatrix3D.transformVector(position);\r\n };\r\n /**\r\n * Evaluates the bounding box of the display object to see if it overlaps or\r\n * intersects with the bounding box of the obj display object.\r\n *\r\n * @param obj The display object to test against.\r\n * @return true if the bounding boxes of the display objects\r\n * intersect; false if not.\r\n */\r\n DisplayObject.prototype.hitTestObject = function (obj) {\r\n var objBox = obj.getBox(this.scene);\r\n if (!objBox)\r\n return false;\r\n var box = this.getBox(this.scene);\r\n if (!box)\r\n return false;\r\n if (objBox.x > (box.x + box.width)) {\r\n return false;\r\n }\r\n if (box.x > (objBox.x + objBox.width)) {\r\n return false;\r\n }\r\n if ((objBox.y + objBox.height) < box.y) {\r\n return false;\r\n }\r\n if ((box.y + box.height) < objBox.y) {\r\n return false;\r\n }\r\n return true; //TODO\r\n };\r\n /**\r\n * Evaluates the display object to see if it overlaps or intersects with the\r\n * point specified by the x and y parameters. The\r\n * x and y parameters specify a point in the\r\n * coordinate space of the Scene, not the display object container that\r\n * contains the display object(unless that display object container is the\r\n * Scene).\r\n *\r\n * @param x The x coordinate to test against this object.\r\n * @param y The y coordinate to test against this object.\r\n * @param shapeFlag Whether to check against the actual pixels of the object\r\n * (true) or the bounding box\r\n * (false).\r\n * @param maskFlag Whether to check against the object when it is used as mask\r\n * (false).\r\n * @return true if the display object overlaps or intersects\r\n * with the specified point; false otherwise.\r\n */\r\n DisplayObject.prototype.hitTestPoint = function (x, y, shapeFlag, masksFlag) {\r\n if (shapeFlag === void 0) { shapeFlag = false; }\r\n if (masksFlag === void 0) { masksFlag = false; }\r\n if (!this._pImplicitVisibility)\r\n return false;\r\n if (this._pImplicitMaskId != -1 && !masksFlag)\r\n return false;\r\n //set local tempPoint for later reference\r\n this._tempPoint.setTo(x, y);\r\n this.globalToLocal(this._tempPoint, this._tempPoint);\r\n //early out for box test\r\n if (!this.getBox().contains(this._tempPoint.x, this._tempPoint.y, 0))\r\n return false;\r\n if (this._explicitMasks) {\r\n var numMasks = this._explicitMasks.length;\r\n var maskHit = false;\r\n for (var i = 0; i < numMasks; i++) {\r\n if (this._explicitMasks[i].hitTestPoint(x, y, shapeFlag, true)) {\r\n maskHit = true;\r\n break;\r\n }\r\n }\r\n if (!maskHit)\r\n return false;\r\n }\r\n //early out for non-shape tests\r\n if (!shapeFlag || this.assetType == \"[asset TextField]\" || this.assetType == \"[asset Billboard]\")\r\n return true;\r\n return this._hitTestPointInternal(x, y, shapeFlag, masksFlag);\r\n };\r\n /**\r\n * Rotates the 3d object around to face a point defined relative to the local coordinates of the parent ObjectContainer3D.\r\n *\r\n * @param target The vector defining the point to be looked at\r\n * @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred\r\n */\r\n DisplayObject.prototype.lookAt = function (scenePosition, upAxis) {\r\n if (upAxis === void 0) { upAxis = null; }\r\n if (upAxis == null)\r\n upAxis = Vector3D.Y_AXIS;\r\n var m = Matrix3D.getPointAtMatrix(new Vector3D(), scenePosition.subtract(this._transform.position), upAxis, Matrix3D.CALCULATION_MATRIX);\r\n var vec = m.decompose()[1];\r\n this.rotationX = vec.x * MathConsts.RADIANS_TO_DEGREES;\r\n this.rotationY = vec.y * MathConsts.RADIANS_TO_DEGREES;\r\n this.rotationZ = vec.z * MathConsts.RADIANS_TO_DEGREES;\r\n };\r\n /**\r\n * Converts the point object from the display object's(local)\r\n * coordinates to the Scene(global) coordinates.\r\n *\r\n *

This method allows you to convert any given x and y\r\n * coordinates from values that are relative to the origin(0,0) of a\r\n * specific display object(local coordinates) to values that are relative to\r\n * the origin of the Scene(global coordinates).

\r\n *\r\n *

To use this method, first create an instance of the Point class. The\r\n * x and y values that you assign represent local coordinates\r\n * because they relate to the origin of the display object.

\r\n *\r\n *

You then pass the Point instance that you created as the parameter to\r\n * the localToGlobal() method. The method returns a new Point\r\n * object with x and y values that relate to the origin of the\r\n * Scene instead of the origin of the display object.

\r\n *\r\n * @param point The name or identifier of a point created with the Point\r\n * class, specifying the x and y coordinates as\r\n * properties.\r\n * @return A Point object with coordinates relative to the Scene.\r\n */\r\n DisplayObject.prototype.localToGlobal = function (point, target) {\r\n if (target === void 0) { target = null; }\r\n this._tempVector3D.setTo(point.x, point.y, 0);\r\n var pos = this._transform.concatenatedMatrix3D.transformVector(this._tempVector3D, this._tempVector3D);\r\n if (!target)\r\n target = new Point();\r\n target.x = pos.x;\r\n target.y = pos.y;\r\n return target;\r\n };\r\n /**\r\n * Converts a three-dimensional point of the three-dimensional display\r\n * object's(local) coordinates to a three-dimensional point in the Scene\r\n * (global) coordinates.\r\n *\r\n *

This method allows you to convert any given x, y and\r\n * z coordinates from values that are relative to the origin(0,0,0) of\r\n * a specific display object(local coordinates) to values that are relative to\r\n * the origin of the Scene(global coordinates).

\r\n *\r\n *

To use this method, first create an instance of the Point class. The\r\n * x and y values that you assign represent local coordinates\r\n * because they relate to the origin of the display object.

\r\n *\r\n *

You then pass the Vector3D instance that you created as the parameter to\r\n * the localToGlobal3D() method. The method returns a new\r\n * Vector3D object with x, y and z values that relate to\r\n * the origin of the Scene instead of the origin of the display object.

\r\n *\r\n * @param position A Vector3D object containing either a three-dimensional\r\n * position or the coordinates of the three-dimensional\r\n * display object.\r\n * @return A Vector3D object representing a three-dimensional position in\r\n * the Scene.\r\n */\r\n DisplayObject.prototype.localToGlobal3D = function (position) {\r\n return this._transform.concatenatedMatrix3D.transformVector(position);\r\n };\r\n /**\r\n * Moves the local point around which the object rotates.\r\n *\r\n * @param dx The amount of movement along the local x axis.\r\n * @param dy The amount of movement along the local y axis.\r\n * @param dz The amount of movement along the local z axis.\r\n */\r\n DisplayObject.prototype.movePivot = function (dx, dy, dz) {\r\n if (dx == 0 && dy == 0 && dz == 0)\r\n return;\r\n if (!this._registrationMatrix3D)\r\n this._registrationMatrix3D = new Matrix3D();\r\n this._registrationMatrix3D._rawData[12] -= dx / this._transform.scale.x;\r\n this._registrationMatrix3D._rawData[13] -= dy / this._transform.scale.y;\r\n this._registrationMatrix3D._rawData[14] -= dz / this._transform.scale.z;\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.SCENE_TRANSFORM);\r\n };\r\n DisplayObject.prototype.reset = function () {\r\n this.visible = true;\r\n this._transform.clearMatrix3D();\r\n this._transform.clearColorTransform();\r\n //this.name=\"\";\r\n this.masks = null;\r\n this.maskMode = false;\r\n };\r\n /**\r\n *\r\n */\r\n DisplayObject.prototype.getRenderSceneTransform = function (cameraTransform) {\r\n if (this.orientationMode == OrientationMode.CAMERA_PLANE) {\r\n var comps = cameraTransform.decompose();\r\n comps[0].copyFrom(this.scenePosition);\r\n comps[3].copyFrom(this._transform.scale);\r\n this._orientationMatrix.recompose(comps);\r\n //add in case of registration point\r\n if (this._registrationMatrix3D) {\r\n this._orientationMatrix.prepend(this._registrationMatrix3D);\r\n if (this.alignmentMode != AlignmentMode.REGISTRATION_POINT)\r\n this._orientationMatrix.appendTranslation(-this._registrationMatrix3D._rawData[12] * this._transform.scale.x, -this._registrationMatrix3D._rawData[13] * this._transform.scale.y, -this._registrationMatrix3D._rawData[14] * this._transform.scale.z);\r\n }\r\n return this._orientationMatrix;\r\n }\r\n return this._transform.concatenatedMatrix3D;\r\n };\r\n /**\r\n *\r\n */\r\n DisplayObject.prototype.removeEventListener = function (type, listener) {\r\n _super.prototype.removeEventListener.call(this, type, listener);\r\n if (this.hasEventListener(type))\r\n return;\r\n switch (type) {\r\n case DisplayObjectEvent.SCENE_CHANGED:\r\n this._listenToSceneChanged = false;\r\n break;\r\n case DisplayObjectEvent.SCENETRANSFORM_CHANGED:\r\n this._listenToSceneTransformChanged = true;\r\n break;\r\n }\r\n };\r\n Object.defineProperty(DisplayObject.prototype, \"_iPickingCollision\", {\r\n /**\r\n * @internal\r\n */\r\n get: function () {\r\n if (!this._pickingCollision)\r\n this._pickingCollision = new PickingCollision(this);\r\n return this._pickingCollision;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @internal\r\n */\r\n DisplayObject.prototype.iSetParent = function (value) {\r\n this._pParent = value;\r\n if (value)\r\n this._iSetScene(value._pScene, value._pPartition);\r\n else\r\n this._iSetScene(null, null);\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.ALL);\r\n };\r\n DisplayObject.prototype.pInvalidateHierarchicalProperties = function (propDirty) {\r\n var newPropDirty = (this._hierarchicalPropsDirty ^ propDirty) & propDirty;\r\n if (!newPropDirty)\r\n return true;\r\n this._hierarchicalPropsDirty |= propDirty;\r\n if (newPropDirty & HierarchicalProperties.SCENE_TRANSFORM) {\r\n this.transform.invalidateConcatenatedMatrix3D();\r\n this._scenePositionDirty = true;\r\n if (this.isEntity)\r\n this.invalidatePartitionBounds();\r\n if (this._pParent)\r\n this._pParent._pInvalidateBounds();\r\n if (this._listenToSceneTransformChanged)\r\n this.queueDispatch(this._sceneTransformChanged || (this._sceneTransformChanged = new DisplayObjectEvent(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this)));\r\n }\r\n return false;\r\n };\r\n /**\r\n * @protected\r\n */\r\n DisplayObject.prototype._iSetScene = function (scene, partition) {\r\n var sceneChanged = this._pScene != scene;\r\n if (this._pScene) {\r\n //unregister object from current scene\r\n this._pScene._iUnregisterObject(this);\r\n //gc abstraction objects\r\n this.clear();\r\n }\r\n // assign parent partition if _iIsPartition is false\r\n this._pPartition = this._iIsPartition ? this : partition;\r\n //assign scene\r\n if (sceneChanged)\r\n this._pScene = scene;\r\n if (this._pScene) {\r\n //register object with scene\r\n this._pScene._iRegisterObject(this);\r\n }\r\n if (sceneChanged && this._listenToSceneChanged)\r\n this.queueDispatch(this._sceneChanged || (this._sceneChanged = new DisplayObjectEvent(DisplayObjectEvent.SCENE_CHANGED, this)));\r\n };\r\n /**\r\n * @protected\r\n */\r\n DisplayObject.prototype._onUpdateConcatenatedMatrix3D = function (event) {\r\n if (this._iController)\r\n this._iController.updateController();\r\n this._concatenatedMatrix3D.copyFrom(this._transform.matrix3D);\r\n if (this._registrationMatrix3D) {\r\n this._concatenatedMatrix3D.prepend(this._registrationMatrix3D);\r\n if (this.alignmentMode != AlignmentMode.REGISTRATION_POINT)\r\n this._concatenatedMatrix3D.appendTranslation(-this._registrationMatrix3D._rawData[12] * this._transform.scale.x, -this._registrationMatrix3D._rawData[13] * this._transform.scale.y, -this._registrationMatrix3D._rawData[14] * this._transform.scale.z);\r\n }\r\n if (this._pParent && !this._pParent._iIsRoot)\r\n this._concatenatedMatrix3D.append(this._pParent._transform.concatenatedMatrix3D);\r\n this._matrix3DDirty = false;\r\n this._hierarchicalPropsDirty ^= HierarchicalProperties.SCENE_TRANSFORM;\r\n };\r\n /**\r\n *\r\n */\r\n DisplayObject.prototype._iInternalUpdate = function () {\r\n if (this._iController)\r\n this._iController.update();\r\n // Dispatch all queued events.\r\n var len = this._queuedEvents.length;\r\n for (var i = 0; i < len; ++i)\r\n this.dispatchEvent(this._queuedEvents[i]);\r\n this._queuedEvents.length = 0;\r\n };\r\n /**\r\n * @internal\r\n */\r\n DisplayObject.prototype._iIsVisible = function () {\r\n if (this._hierarchicalPropsDirty & HierarchicalProperties.VISIBLE)\r\n this._updateVisible();\r\n return this._pImplicitVisibility;\r\n };\r\n /**\r\n * @internal\r\n */\r\n DisplayObject.prototype._iAssignedMaskId = function () {\r\n if (this._hierarchicalPropsDirty & HierarchicalProperties.MASK_ID)\r\n this._updateMaskId();\r\n return this._pImplicitMaskId;\r\n };\r\n /**\r\n * @internal\r\n */\r\n DisplayObject.prototype._iAssignedMasks = function () {\r\n if (this._hierarchicalPropsDirty & HierarchicalProperties.MASKS)\r\n this._updateMasks();\r\n return this._pImplicitMasks;\r\n };\r\n DisplayObject.prototype._iMasksConfig = function () {\r\n if (this._hierarchicalPropsDirty & HierarchicalProperties.MASKS)\r\n this._updateMasks();\r\n return this._pImplicitMaskIds;\r\n };\r\n DisplayObject.prototype._iAssignedColorTransform = function () {\r\n if (this._hierarchicalPropsDirty & HierarchicalProperties.COLOR_TRANSFORM)\r\n this._updateColorTransform();\r\n return this._pImplicitColorTransform || (this._pImplicitColorTransform = new ColorTransform());\r\n };\r\n /**\r\n * @internal\r\n */\r\n DisplayObject.prototype._iIsMouseEnabled = function () {\r\n if (this._hierarchicalPropsDirty & HierarchicalProperties.MOUSE_ENABLED)\r\n this._updateMouseEnabled();\r\n return this._pImplicitMouseEnabled && this._explicitMouseEnabled;\r\n };\r\n DisplayObject.prototype._acceptTraverser = function (traverser) {\r\n //nothing to do here\r\n };\r\n /**\r\n * Invalidates the 3D transformation matrix, causing it to be updated upon the next request\r\n *\r\n * @private\r\n */\r\n DisplayObject.prototype._onInvalidateMatrix3D = function (event) {\r\n if (this._matrix3DDirty)\r\n return;\r\n this._matrix3DDirty = true;\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.SCENE_TRANSFORM);\r\n };\r\n /**\r\n * @private\r\n */\r\n DisplayObject.prototype._onInvalidateColorTransform = function (event) {\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.COLOR_TRANSFORM);\r\n };\r\n DisplayObject.prototype._pInvalidateBounds = function () {\r\n if (this._boxBoundsInvalid && this._sphereBoundsInvalid)\r\n return;\r\n this._boxBoundsInvalid = true;\r\n this._sphereBoundsInvalid = true;\r\n if (this.isEntity)\r\n this.invalidatePartitionBounds();\r\n if (this._pParent)\r\n this._pParent._pInvalidateBounds();\r\n };\r\n DisplayObject.prototype._pUpdateBoxBounds = function () {\r\n this._boxBoundsInvalid = false;\r\n if (this._pBoxBounds == null)\r\n this._pBoxBounds = new Box();\r\n this._pBoxBounds.setEmpty();\r\n };\r\n DisplayObject.prototype._pUpdateSphereBounds = function () {\r\n this._sphereBoundsInvalid = false;\r\n if (this._pSphereBounds == null)\r\n this._pSphereBounds = new Sphere();\r\n };\r\n DisplayObject.prototype.queueDispatch = function (event) {\r\n // Store event to be dispatched later.\r\n this._queuedEvents.push(event);\r\n };\r\n DisplayObject.prototype._setScaleX = function (val) {\r\n if (this.scaleX == val)\r\n return;\r\n this._transform.scale.x = val;\r\n this._transform.invalidateMatrix3D();\r\n };\r\n DisplayObject.prototype._setScaleY = function (val) {\r\n if (this.scaleY == val)\r\n return;\r\n this._transform.scale.y = val;\r\n this._transform.invalidateMatrix3D();\r\n };\r\n DisplayObject.prototype._setScaleZ = function (val) {\r\n if (this.scaleZ == val)\r\n return;\r\n this._transform.scale.z = val;\r\n this._transform.invalidateMatrix3D();\r\n };\r\n DisplayObject.prototype._updateMouseEnabled = function () {\r\n this._pImplicitMouseEnabled = (this._pParent) ? this._pParent.mouseChildren && this._pParent._pImplicitMouseEnabled : true;\r\n this._hierarchicalPropsDirty ^= HierarchicalProperties.MOUSE_ENABLED;\r\n };\r\n DisplayObject.prototype._updateVisible = function () {\r\n this._pImplicitVisibility = (this._pParent) ? this._explicitVisibility && this._pParent._iIsVisible() : this._explicitVisibility;\r\n this._hierarchicalPropsDirty ^= HierarchicalProperties.VISIBLE;\r\n };\r\n DisplayObject.prototype._updateMaskId = function () {\r\n this._pImplicitMaskId = (this._pParent && this._pParent._iAssignedMaskId() != -1) ? this._pParent._iAssignedMaskId() : this._explicitMaskId;\r\n this._hierarchicalPropsDirty ^= HierarchicalProperties.MASK_ID;\r\n };\r\n DisplayObject.prototype._updateMasks = function () {\r\n this._pImplicitMasks = (this._pParent && this._pParent._iAssignedMasks()) ? (this._explicitMasks != null) ? this._pParent._iAssignedMasks().concat([this._explicitMasks]) : this._pParent._iAssignedMasks().concat() : (this._explicitMasks != null) ? [this._explicitMasks] : null;\r\n this._pImplicitMaskIds.length = 0;\r\n if (this._pImplicitMasks && this._pImplicitMasks.length) {\r\n var numLayers = this._pImplicitMasks.length;\r\n var numChildren;\r\n var implicitChildren;\r\n var implicitChildIds;\r\n for (var i = 0; i < numLayers; i++) {\r\n implicitChildren = this._pImplicitMasks[i];\r\n numChildren = implicitChildren.length;\r\n implicitChildIds = new Array();\r\n for (var j = 0; j < numChildren; j++)\r\n implicitChildIds.push(implicitChildren[j].id);\r\n this._pImplicitMaskIds.push(implicitChildIds);\r\n }\r\n }\r\n this._hierarchicalPropsDirty ^= HierarchicalProperties.MASKS;\r\n };\r\n DisplayObject.prototype._updateColorTransform = function () {\r\n if (!this._pImplicitColorTransform)\r\n this._pImplicitColorTransform = new ColorTransform();\r\n if (this._inheritColorTransform && this._pParent && this._pParent._iAssignedColorTransform()) {\r\n this._pImplicitColorTransform.copyFrom(this._pParent._iAssignedColorTransform());\r\n this._pImplicitColorTransform.prepend(this._transform.colorTransform);\r\n }\r\n else {\r\n this._pImplicitColorTransform.copyFrom(this._transform.colorTransform);\r\n }\r\n this._hierarchicalPropsDirty ^= HierarchicalProperties.COLOR_TRANSFORM;\r\n };\r\n DisplayObject.prototype._updateMaskMode = function () {\r\n if (this.maskMode)\r\n this.mouseEnabled = false;\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.MASK_ID);\r\n };\r\n DisplayObject.prototype.clear = function () {\r\n _super.prototype.clear.call(this);\r\n var i;\r\n this._pImplicitColorTransform = null;\r\n this._pImplicitMasks = null;\r\n };\r\n DisplayObject.prototype.invalidatePartitionBounds = function () {\r\n this.dispatchEvent(new DisplayObjectEvent(DisplayObjectEvent.INVALIDATE_PARTITION_BOUNDS, this));\r\n };\r\n DisplayObject.prototype._hitTestPointInternal = function (x, y, shapeFlag, masksFlag) {\r\n return false;\r\n };\r\n DisplayObject.prototype.invalidateMaterial = function () {\r\n //TODO: herarchical materials and/or Styles?\r\n };\r\n DisplayObject.prototype.invalidateElements = function () {\r\n //TODO: herarchical elements?\r\n };\r\n DisplayObject.prototype._onInvalidateProperties = function (event) {\r\n if (event === void 0) { event = null; }\r\n this.invalidateMaterial();\r\n };\r\n return DisplayObject;\r\n}(AssetBase));\r\nexport { DisplayObject };\r\nDisplayObject.traverseName = \"applyEntity\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/DisplayObject.js","import * as tslib_1 from \"tslib\";\r\nimport { ArgumentError, RangeError } from \"@awayjs/core\";\r\nimport { HierarchicalProperties } from \"../base/HierarchicalProperties\";\r\nimport { DisplayObject } from \"./DisplayObject\";\r\n//import {Sprite} from \"./Sprite\";\r\n/**\r\n * The DisplayObjectContainer class is the base class for all objects that can\r\n * serve as display object containers on the display list. The display list\r\n * manages all objects displayed in the Flash runtimes. Use the\r\n * DisplayObjectContainer class to arrange the display objects in the display\r\n * list. Each DisplayObjectContainer object has its own child list for\r\n * organizing the z-order of the objects. The z-order is the front-to-back\r\n * order that determines which object is drawn in front, which is behind, and\r\n * so on.\r\n *\r\n *

DisplayObject is an abstract base class; therefore, you cannot call\r\n * DisplayObject directly. Invoking new DisplayObject() throws an\r\n * ArgumentError exception.

\r\n * The DisplayObjectContainer class is an abstract base class for all objects\r\n * that can contain child objects. It cannot be instantiated directly; calling\r\n * the new DisplayObjectContainer() constructor throws an\r\n * ArgumentError exception.\r\n *\r\n *

For more information, see the \"Display Programming\" chapter of the\r\n * ActionScript 3.0 Developer's Guide.

\r\n */\r\nvar DisplayObjectContainer = (function (_super) {\r\n tslib_1.__extends(DisplayObjectContainer, _super);\r\n /**\r\n * Calling the new DisplayObjectContainer() constructor throws\r\n * an ArgumentError exception. You can, however, call\r\n * constructors for the following subclasses of DisplayObjectContainer:\r\n *
    \r\n *
  • new Loader()
  • \r\n *
  • new Sprite()
  • \r\n *
  • new MovieClip()
  • \r\n *
\r\n */\r\n function DisplayObjectContainer() {\r\n var _this = _super.call(this) || this;\r\n _this._mouseChildren = true;\r\n _this._depth_childs = {};\r\n _this._nextHighestDepth = 0;\r\n _this._children = new Array();\r\n return _this;\r\n }\r\n Object.defineProperty(DisplayObjectContainer.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return DisplayObjectContainer.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObjectContainer.prototype, \"mouseChildren\", {\r\n /**\r\n * Determines whether or not the children of the object are mouse, or user\r\n * input device, enabled. If an object is enabled, a user can interact with\r\n * it by using a mouse or user input device. The default is\r\n * true.\r\n *\r\n *

This property is useful when you create a button with an instance of\r\n * the Sprite class(instead of using the SimpleButton class). When you use a\r\n * Sprite instance to create a button, you can choose to decorate the button\r\n * by using the addChild() method to add additional Sprite\r\n * instances. This process can cause unexpected behavior with mouse events\r\n * because the Sprite instances you add as children can become the target\r\n * object of a mouse event when you expect the parent instance to be the\r\n * target object. To ensure that the parent instance serves as the target\r\n * objects for mouse events, you can set the mouseChildren\r\n * property of the parent instance to false.

\r\n *\r\n *

No event is dispatched by setting this property. You must use the\r\n * addEventListener() method to create interactive\r\n * functionality.

\r\n */\r\n get: function () {\r\n if (this._hierarchicalPropsDirty & HierarchicalProperties.MOUSE_ENABLED)\r\n this._updateMouseEnabled();\r\n return this._mouseChildren;\r\n },\r\n set: function (value) {\r\n if (this._mouseChildren == value)\r\n return;\r\n this._mouseChildren = value;\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.MOUSE_ENABLED);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObjectContainer.prototype, \"numChildren\", {\r\n /**\r\n * Returns the number of children of this object.\r\n */\r\n get: function () {\r\n return this._children.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds a child DisplayObject instance to this DisplayObjectContainer\r\n * instance. The child is added to the front(top) of all other children in\r\n * this DisplayObjectContainer instance.(To add a child to a specific index\r\n * position, use the addChildAt() method.)\r\n *\r\n *

If you add a child object that already has a different display object\r\n * container as a parent, the object is removed from the child list of the\r\n * other display object container.

\r\n *\r\n *

Note: The command stage.addChild() can cause\r\n * problems with a published SWF file, including security problems and\r\n * conflicts with other loaded SWF files. There is only one Stage within a\r\n * Flash runtime instance, no matter how many SWF files you load into the\r\n * runtime. So, generally, objects should not be added to the Stage,\r\n * directly, at all. The only object the Stage should contain is the root\r\n * object. Create a DisplayObjectContainer to contain all of the items on the\r\n * display list. Then, if necessary, add that DisplayObjectContainer instance\r\n * to the Stage.

\r\n *\r\n * @param child The DisplayObject instance to add as a child of this\r\n * DisplayObjectContainer instance.\r\n * @return The DisplayObject instance that you pass in the child\r\n * parameter.\r\n * @throws ArgumentError Throws if the child is the same as the parent. Also\r\n * throws if the caller is a child(or grandchild etc.)\r\n * of the child being added.\r\n * @event added Dispatched when a display object is added to the display\r\n * list.\r\n */\r\n DisplayObjectContainer.prototype.addChild = function (child) {\r\n return this.addChildAt(child, this._children.length);\r\n };\r\n DisplayObjectContainer.prototype.addChildAtDepth = function (child, depth, replace) {\r\n if (replace === void 0) { replace = true; }\r\n if (child == null)\r\n throw new ArgumentError(\"Parameter child cannot be null.\");\r\n //if child already has a parent, remove it.\r\n if (child._pParent)\r\n child._pParent.removeChildAtInternal(child._pParent.getChildIndex(child));\r\n if (this.isSlice9ScaledMC && child.assetType == \"[asset Sprite]\") {\r\n child.isSlice9ScaledSprite = true;\r\n }\r\n var index = this.getDepthIndexInternal(depth);\r\n if (index != -1) {\r\n if (replace) {\r\n this.removeChildAt(index);\r\n }\r\n else {\r\n //move depth of existing child up by 1\r\n this.addChildAtDepth(this._children[index], depth + 1, false);\r\n }\r\n }\r\n if (this._nextHighestDepth < depth + 1)\r\n this._nextHighestDepth = depth + 1;\r\n this._depth_childs[depth] = child;\r\n this._children.push(child);\r\n child._depthID = depth;\r\n child.iSetParent(this);\r\n this._invalidateChildren();\r\n return child;\r\n };\r\n /**\r\n * Adds a child DisplayObject instance to this DisplayObjectContainer\r\n * instance. The child is added at the index position specified. An index of\r\n * 0 represents the back(bottom) of the display list for this\r\n * DisplayObjectContainer object.\r\n *\r\n *

For example, the following example shows three display objects, labeled\r\n * a, b, and c, at index positions 0, 2, and 1, respectively:

\r\n *\r\n *

If you add a child object that already has a different display object\r\n * container as a parent, the object is removed from the child list of the\r\n * other display object container.

\r\n *\r\n * @param child The DisplayObject instance to add as a child of this\r\n * DisplayObjectContainer instance.\r\n * @param index The index position to which the child is added. If you\r\n * specify a currently occupied index position, the child object\r\n * that exists at that position and all higher positions are\r\n * moved up one position in the child list.\r\n * @return The DisplayObject instance that you pass in the child\r\n * parameter.\r\n * @throws ArgumentError Throws if the child is the same as the parent. Also\r\n * throws if the caller is a child(or grandchild etc.)\r\n * of the child being added.\r\n * @throws RangeError Throws if the index position does not exist in the\r\n * child list.\r\n * @event added Dispatched when a display object is added to the display\r\n * list.\r\n */\r\n DisplayObjectContainer.prototype.addChildAt = function (child, index) {\r\n return this.addChildAtDepth(child, (index < this._children.length) ? this._children[index]._depthID : this.getNextHighestDepth(), false);\r\n };\r\n DisplayObjectContainer.prototype.addChildren = function () {\r\n var childarray = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n childarray[_i] = arguments[_i];\r\n }\r\n var len = childarray.length;\r\n for (var i = 0; i < len; i++)\r\n this.addChild(childarray[i]);\r\n };\r\n /**\r\n *\r\n */\r\n DisplayObjectContainer.prototype.clone = function () {\r\n var newInstance = new DisplayObjectContainer();\r\n this.copyTo(newInstance);\r\n return newInstance;\r\n };\r\n DisplayObjectContainer.prototype.copyTo = function (newInstance) {\r\n _super.prototype.copyTo.call(this, newInstance);\r\n newInstance.mouseChildren = this._mouseChildren;\r\n var len = this._children.length;\r\n for (var i = 0; i < len; ++i)\r\n newInstance.addChild(this._children[i].clone());\r\n };\r\n /**\r\n * Determines whether the specified display object is a child of the\r\n * DisplayObjectContainer instance or the instance itself. The search\r\n * includes the entire display list including this DisplayObjectContainer\r\n * instance. Grandchildren, great-grandchildren, and so on each return\r\n * true.\r\n *\r\n * @param child The child object to test.\r\n * @return true if the child object is a child of\r\n * the DisplayObjectContainer or the container itself; otherwise\r\n * false.\r\n */\r\n DisplayObjectContainer.prototype.contains = function (child) {\r\n return this._children.indexOf(child) >= 0;\r\n };\r\n /**\r\n *\r\n */\r\n DisplayObjectContainer.prototype.disposeValues = function () {\r\n for (var i = this._children.length - 1; i >= 0; i--)\r\n this.removeChild(this._children[i]);\r\n _super.prototype.disposeValues.call(this);\r\n };\r\n DisplayObjectContainer.prototype.getChildAtDepth = function (depth) {\r\n return this._depth_childs[depth];\r\n };\r\n /**\r\n * Returns the child display object instance that exists at the specified\r\n * index.\r\n *\r\n * @param index The index position of the child object.\r\n * @return The child display object at the specified index position.\r\n * @throws RangeError Throws if the index does not exist in the child\r\n * list.\r\n */\r\n DisplayObjectContainer.prototype.getChildAt = function (index) {\r\n var child = this._children[index];\r\n if (child == null)\r\n throw new RangeError(\"Index does not exist in the child list of the caller\");\r\n return child;\r\n };\r\n /**\r\n * Returns the child display object that exists with the specified name. If\r\n * more that one child display object has the specified name, the method\r\n * returns the first object in the child list.\r\n *\r\n *

The getChildAt() method is faster than the\r\n * getChildByName() method. The getChildAt() method\r\n * accesses a child from a cached array, whereas the\r\n * getChildByName() method has to traverse a linked list to\r\n * access a child.

\r\n *\r\n * @param name The name of the child to return.\r\n * @return The child display object with the specified name.\r\n */\r\n DisplayObjectContainer.prototype.getChildByName = function (name) {\r\n var len = this._children.length;\r\n for (var i = 0; i < len; ++i)\r\n if (this._children[i].name == name)\r\n return this._children[i];\r\n return null;\r\n };\r\n /**\r\n * Returns the index position of a child DisplayObject instance.\r\n *\r\n * @param child The DisplayObject instance to identify.\r\n * @return The index position of the child display object to identify.\r\n * @throws ArgumentError Throws if the child parameter is not a child of this\r\n * object.\r\n */\r\n DisplayObjectContainer.prototype.getChildIndex = function (child) {\r\n var childIndex = this._children.indexOf(child);\r\n if (childIndex == -1)\r\n throw new ArgumentError(\"Child parameter is not a child of the caller\");\r\n return childIndex;\r\n };\r\n DisplayObjectContainer.prototype.getNextHighestDepth = function () {\r\n if (this._nextHighestDepthDirty)\r\n this._updateNextHighestDepth();\r\n return this._nextHighestDepth;\r\n };\r\n /**\r\n * Returns an array of objects that lie under the specified point and are\r\n * children(or grandchildren, and so on) of this DisplayObjectContainer\r\n * instance. Any child objects that are inaccessible for security reasons are\r\n * omitted from the returned array. To determine whether this security\r\n * restriction affects the returned array, call the\r\n * areInaccessibleObjectsUnderPoint() method.\r\n *\r\n *

The point parameter is in the coordinate space of the\r\n * Stage, which may differ from the coordinate space of the display object\r\n * container(unless the display object container is the Stage). You can use\r\n * the globalToLocal() and the localToGlobal()\r\n * methods to convert points between these coordinate spaces.

\r\n *\r\n * @param point The point under which to look.\r\n * @return An array of objects that lie under the specified point and are\r\n * children(or grandchildren, and so on) of this\r\n * DisplayObjectContainer instance.\r\n */\r\n DisplayObjectContainer.prototype.getObjectsUnderPoint = function (point) {\r\n return new Array();\r\n };\r\n /**\r\n * Removes the specified child DisplayObject instance from the\r\n * child list of the DisplayObjectContainer instance. The parent\r\n * property of the removed child is set to null , and the object\r\n * is garbage collected if no other references to the child exist. The index\r\n * positions of any display objects above the child in the\r\n * DisplayObjectContainer are decreased by 1.\r\n *\r\n *

The garbage collector reallocates unused memory space. When a variable\r\n * or object is no longer actively referenced or stored somewhere, the\r\n * garbage collector sweeps through and wipes out the memory space it used to\r\n * occupy if no other references to it exist.

\r\n *\r\n * @param child The DisplayObject instance to remove.\r\n * @return The DisplayObject instance that you pass in the child\r\n * parameter.\r\n * @throws ArgumentError Throws if the child parameter is not a child of this\r\n * object.\r\n */\r\n DisplayObjectContainer.prototype.removeChild = function (child) {\r\n if (child == null)\r\n throw new ArgumentError(\"Parameter child cannot be null\");\r\n this.removeChildAt(this.getChildIndex(child));\r\n return child;\r\n };\r\n DisplayObjectContainer.prototype.removeChildAtDepth = function (depth) {\r\n return this.removeChildAt(this.getDepthIndexInternal(depth));\r\n };\r\n /**\r\n * Removes a child DisplayObject from the specified index\r\n * position in the child list of the DisplayObjectContainer. The\r\n * parent property of the removed child is set to\r\n * null, and the object is garbage collected if no other\r\n * references to the child exist. The index positions of any display objects\r\n * above the child in the DisplayObjectContainer are decreased by 1.\r\n *\r\n *

The garbage collector reallocates unused memory space. When a variable\r\n * or object is no longer actively referenced or stored somewhere, the\r\n * garbage collector sweeps through and wipes out the memory space it used to\r\n * occupy if no other references to it exist.

\r\n *\r\n * @param index The child index of the DisplayObject to remove.\r\n * @return The DisplayObject instance that was removed.\r\n * @throws RangeError Throws if the index does not exist in the child\r\n * list.\r\n * @throws SecurityError This child display object belongs to a sandbox to\r\n * which the calling object does not have access. You\r\n * can avoid this situation by having the child movie\r\n * call the Security.allowDomain() method.\r\n */\r\n DisplayObjectContainer.prototype.removeChildAt = function (index) {\r\n var child = this.removeChildAtInternal(index);\r\n child.iSetParent(null);\r\n this._invalidateChildren();\r\n return child;\r\n };\r\n /**\r\n * Removes all child DisplayObject instances from the child list\r\n * of the DisplayObjectContainer instance. The parent property\r\n * of the removed children is set to null, and the objects are\r\n * garbage collected if no other references to the children exist.\r\n *\r\n * The garbage collector reallocates unused memory space. When a variable or\r\n * object is no longer actively referenced or stored somewhere, the garbage\r\n * collector sweeps through and wipes out the memory space it used to occupy\r\n * if no other references to it exist.\r\n *\r\n * @param beginIndex The beginning position. A value smaller than 0 throws a RangeError.\r\n * @param endIndex The ending position. A value smaller than 0 throws a RangeError.\r\n * @throws RangeError Throws if the beginIndex or endIndex positions do\r\n * not exist in the child list.\r\n */\r\n DisplayObjectContainer.prototype.removeChildren = function (beginIndex, endIndex) {\r\n if (beginIndex === void 0) { beginIndex = 0; }\r\n if (endIndex === void 0) { endIndex = 2147483647; }\r\n if (beginIndex < 0)\r\n throw new RangeError(\"beginIndex is out of range of the child list\");\r\n if (endIndex > this._children.length)\r\n throw new RangeError(\"endIndex is out of range of the child list\");\r\n //var oldChilds:DisplayObject[]=this._children.slice();\r\n for (var i = endIndex - 1; i >= beginIndex; i--)\r\n this.removeChildAtInternal(i).iSetParent(null);\r\n this._invalidateChildren();\r\n };\r\n /**\r\n * Changes the position of an existing child in the display object container.\r\n * This affects the layering of child objects. For example, the following\r\n * example shows three display objects, labeled a, b, and c, at index\r\n * positions 0, 1, and 2, respectively:\r\n *\r\n *

When you use the setChildIndex() method and specify an\r\n * index position that is already occupied, the only positions that change\r\n * are those in between the display object's former and new position. All\r\n * others will stay the same. If a child is moved to an index LOWER than its\r\n * current index, all children in between will INCREASE by 1 for their index\r\n * reference. If a child is moved to an index HIGHER than its current index,\r\n * all children in between will DECREASE by 1 for their index reference. For\r\n * example, if the display object container in the previous example is named\r\n * container, you can swap the position of the display objects\r\n * labeled a and b by calling the following code:

\r\n *\r\n *

This code results in the following arrangement of objects:

\r\n *\r\n * @param child The child DisplayObject instance for which you want to change\r\n * the index number.\r\n * @param index The resulting index number for the child display\r\n * object.\r\n * @throws ArgumentError Throws if the child parameter is not a child of this\r\n * object.\r\n * @throws RangeError Throws if the index does not exist in the child\r\n * list.\r\n */\r\n DisplayObjectContainer.prototype.setChildIndex = function (child, index) {\r\n //TODO\r\n };\r\n /**\r\n * Swaps the z-order (front-to-back order) of the two specified child\r\n * objects. All other child objects in the display object container remain in\r\n * the same index positions.\r\n *\r\n * @param child1 The first child object.\r\n * @param child2 The second child object.\r\n * @throws ArgumentError Throws if either child parameter is not a child of\r\n * this object.\r\n */\r\n DisplayObjectContainer.prototype.swapChildren = function (child1, child2) {\r\n this.swapChildrenAt(this.getChildIndex(child1), this.getChildIndex(child2));\r\n };\r\n /**\r\n * Swaps the z-order(front-to-back order) of the child objects at the two\r\n * specified index positions in the child list. All other child objects in\r\n * the display object container remain in the same index positions.\r\n *\r\n * @param index1 The index position of the first child object.\r\n * @param index2 The index position of the second child object.\r\n * @throws RangeError If either index does not exist in the child list.\r\n */\r\n DisplayObjectContainer.prototype.swapChildrenAt = function (index1, index2) {\r\n var depth = this._children[index2]._depthID;\r\n var child = this._children[index1];\r\n this.addChildAtDepth(this._children[index2], this._children[index1]._depthID);\r\n this.addChildAtDepth(child, depth);\r\n };\r\n /**\r\n * //TODO\r\n *\r\n * @protected\r\n */\r\n DisplayObjectContainer.prototype._pUpdateBoxBounds = function () {\r\n _super.prototype._pUpdateBoxBounds.call(this);\r\n var numChildren = this._children.length;\r\n if (numChildren > 0) {\r\n var childBox;\r\n var first = true;\r\n for (var i = 0; i < numChildren; ++i) {\r\n // ignore bounds of childs that are masked\r\n // todo: this check is only needed for icycle, to get mouseclicks work correct in shop\r\n //if(this._children[i].masks==null){\r\n childBox = this._children[i].getBox();\r\n if (childBox.isEmpty())\r\n continue;\r\n childBox = this._children[i].getBox(this);\r\n if (first) {\r\n first = false;\r\n this._pBoxBounds.copyFrom(childBox);\r\n }\r\n else {\r\n this._pBoxBounds = this._pBoxBounds.union(childBox, this._pBoxBounds);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * @protected\r\n */\r\n DisplayObjectContainer.prototype.pInvalidateHierarchicalProperties = function (propDirty) {\r\n if (_super.prototype.pInvalidateHierarchicalProperties.call(this, propDirty))\r\n return true;\r\n var len = this._children.length;\r\n for (var i = 0; i < len; ++i)\r\n this._children[i].pInvalidateHierarchicalProperties(propDirty);\r\n return false;\r\n };\r\n /**\r\n * @internal\r\n */\r\n DisplayObjectContainer.prototype._iSetScene = function (value, partition) {\r\n _super.prototype._iSetScene.call(this, value, partition);\r\n var len = this._children.length;\r\n for (var i = 0; i < len; ++i)\r\n this._children[i]._iSetScene(value, this._pPartition);\r\n };\r\n /**\r\n * @private\r\n *\r\n * @param child\r\n */\r\n DisplayObjectContainer.prototype.removeChildAtInternal = function (index) {\r\n var child = this._children.splice(index, 1)[0];\r\n //update next highest depth\r\n if (this._nextHighestDepth == child._depthID + 1)\r\n this._nextHighestDepthDirty = true;\r\n delete this._depth_childs[child._depthID];\r\n child._depthID = -16384;\r\n return child;\r\n };\r\n DisplayObjectContainer.prototype.getDepthIndexInternal = function (depth) {\r\n if (!this._depth_childs[depth])\r\n return -1;\r\n return this._children.indexOf(this._depth_childs[depth]);\r\n };\r\n DisplayObjectContainer.prototype._updateNextHighestDepth = function () {\r\n this._nextHighestDepthDirty = false;\r\n this._nextHighestDepth = 0;\r\n var len = this._children.length;\r\n for (var i = 0; i < len; i++)\r\n if (this._nextHighestDepth < this._children[i]._depthID)\r\n this._nextHighestDepth = this._children[i]._depthID;\r\n this._nextHighestDepth += 1;\r\n };\r\n DisplayObjectContainer.prototype._hitTestPointInternal = function (x, y, shapeFlag, masksFlag) {\r\n var numChildren = this._children.length;\r\n for (var i = 0; i < numChildren; i++)\r\n if (this._children[i].hitTestPoint(x, y, shapeFlag, masksFlag))\r\n return true;\r\n return false;\r\n };\r\n DisplayObjectContainer.prototype._updateMaskMode = function () {\r\n if (this.maskMode)\r\n this.mouseChildren = false;\r\n _super.prototype._updateMaskMode.call(this);\r\n };\r\n DisplayObjectContainer.prototype._isEntityInternal = function () {\r\n return Boolean(this._children.length);\r\n };\r\n DisplayObjectContainer.prototype._invalidateChildren = function () {\r\n var isContainer = Boolean(this._children.length);\r\n var isEntity = this._isEntityInternal();\r\n if (this._pIsContainer != isContainer || this._pIsEntity != isEntity) {\r\n if (this._pScene)\r\n this._pScene._iUnregisterObject(this);\r\n this._pIsContainer = isContainer;\r\n this._pIsEntity = isEntity;\r\n if (this._pScene)\r\n this._pScene._iRegisterObject(this);\r\n }\r\n this._pInvalidateBounds();\r\n };\r\n return DisplayObjectContainer;\r\n}(DisplayObject));\r\nexport { DisplayObjectContainer };\r\nDisplayObjectContainer.assetType = \"[asset DisplayObjectContainer]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/DisplayObjectContainer.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetEvent, Vector3D } from \"@awayjs/core\";\r\nimport { Graphics } from \"@awayjs/graphics\";\r\nimport { DisplayObjectContainer } from \"./DisplayObjectContainer\";\r\n/**\r\n * Sprite is an instance of a Graphics, augmenting it with a presence in the scene graph, a material, and an animation\r\n * state. It consists out of Graphices, which in turn correspond to SubGeometries. Graphices allow different parts\r\n * of the graphics to be assigned different materials.\r\n */\r\nvar Sprite = (function (_super) {\r\n tslib_1.__extends(Sprite, _super);\r\n /**\r\n * Create a new Sprite object.\r\n *\r\n * @param material [optional] The material with which to render the Sprite.\r\n */\r\n function Sprite(material) {\r\n if (material === void 0) { material = null; }\r\n var _this = _super.call(this) || this;\r\n _this._onGraphicsInvalidateDelegate = function (event) { return _this._onGraphicsInvalidate(event); };\r\n _this._graphics = Graphics.getGraphics(_this); //unique graphics object for each Sprite\r\n _this._graphics.addEventListener(AssetEvent.INVALIDATE, _this._onGraphicsInvalidateDelegate);\r\n _this.material = material;\r\n return _this;\r\n }\r\n Sprite.getNewSprite = function (material) {\r\n if (material === void 0) { material = null; }\r\n if (Sprite._sprites.length) {\r\n var sprite = Sprite._sprites.pop();\r\n sprite.material = material;\r\n return sprite;\r\n }\r\n return new Sprite(material);\r\n };\r\n Object.defineProperty(Sprite.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return Sprite.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"graphics\", {\r\n /**\r\n * Specifies the Graphics object belonging to this Sprite object, where\r\n * drawing commands can occur.\r\n */\r\n get: function () {\r\n if (this._iSourcePrefab)\r\n this._iSourcePrefab._iValidate();\r\n if (this.isSlice9ScaledSprite) {\r\n //var comps:Array = this.transform.concatenatedMatrix3D.decompose();\r\n this._graphics.updateSlice9(this.parent.scaleX, this.parent.scaleY);\r\n }\r\n if (this.parent) {\r\n var scaleX = this.scaleX;\r\n var parent = this.parent;\r\n while (parent) {\r\n scaleX *= parent.scaleX;\r\n parent = parent.parent;\r\n }\r\n this._graphics.updateScale(scaleX, this.parent.scaleY * this.scaleY);\r\n }\r\n return this._graphics;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"animator\", {\r\n /**\r\n * Defines the animator of the graphics object. Default value is null.\r\n */\r\n get: function () {\r\n return this._graphics.animator;\r\n },\r\n set: function (value) {\r\n this._graphics.animator = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"material\", {\r\n /**\r\n * The material with which to render the Sprite.\r\n */\r\n get: function () {\r\n return this._graphics.material;\r\n },\r\n set: function (value) {\r\n this._graphics.material = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"style\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._graphics.style;\r\n },\r\n set: function (value) {\r\n this._graphics.style = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n Sprite.prototype.dispose = function () {\r\n this.disposeValues();\r\n Sprite._sprites.push(this);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Sprite.prototype.disposeValues = function () {\r\n _super.prototype.disposeValues.call(this);\r\n this._graphics.dispose();\r\n };\r\n /**\r\n * Clones this Sprite instance along with all it's children, while re-using the same\r\n * material, graphics and animation set. The returned result will be a copy of this sprite,\r\n * containing copies of all of it's children.\r\n *\r\n * Properties that are re-used (i.e. not cloned) by the new copy include name,\r\n * graphics, and material. Properties that are cloned or created anew for the copy\r\n * include subSpritees, children of the sprite, and the animator.\r\n *\r\n * If you want to copy just the sprite, reusing it's graphics and material while not\r\n * cloning it's children, the simplest way is to create a new sprite manually:\r\n *\r\n * \r\n * var clone : Sprite = new Sprite(original.graphics, original.material);\r\n * \r\n */\r\n Sprite.prototype.clone = function () {\r\n var newInstance = (Sprite._sprites.length) ? Sprite._sprites.pop() : new Sprite();\r\n this.copyTo(newInstance);\r\n return newInstance;\r\n };\r\n Sprite.prototype.copyTo = function (sprite, cloneShapes) {\r\n if (cloneShapes === void 0) { cloneShapes = false; }\r\n _super.prototype.copyTo.call(this, sprite);\r\n this._graphics.copyTo(sprite.graphics, cloneShapes);\r\n };\r\n /**\r\n * //TODO\r\n *\r\n * @protected\r\n */\r\n Sprite.prototype._pUpdateBoxBounds = function () {\r\n _super.prototype._pUpdateBoxBounds.call(this);\r\n var graphicsBox = this._graphics.getBoxBounds();\r\n if (!graphicsBox.isEmpty())\r\n this._pBoxBounds.union(this._graphics.getBoxBounds(), this._pBoxBounds);\r\n };\r\n Sprite.prototype._pUpdateSphereBounds = function () {\r\n _super.prototype._pUpdateSphereBounds.call(this);\r\n var box = this.getBox();\r\n if (!this._center)\r\n this._center = new Vector3D();\r\n this._center.x = box.x + box.width / 2;\r\n this._center.y = box.y + box.height / 2;\r\n this._center.z = box.z + box.depth / 2;\r\n this._pSphereBounds = this._graphics.getSphereBounds(this._center, this._pSphereBounds);\r\n };\r\n Sprite.prototype._isEntityInternal = function () {\r\n return Boolean(this._graphics.count) || Boolean(this._children.length);\r\n };\r\n /**\r\n * //TODO\r\n *\r\n * @private\r\n */\r\n Sprite.prototype._onGraphicsInvalidate = function (event) {\r\n this._invalidateChildren();\r\n };\r\n /**\r\n *\r\n * @param renderer\r\n *\r\n * @internal\r\n */\r\n Sprite.prototype._acceptTraverser = function (traverser) {\r\n this.graphics.acceptTraverser(traverser);\r\n };\r\n Sprite.prototype._hitTestPointInternal = function (x, y, shapeFlag, masksFlag) {\r\n if (this._graphics.count) {\r\n //early out for non-shape tests\r\n if (!shapeFlag)\r\n return true;\r\n //ok do the graphics thing\r\n if (this._graphics._hitTestPointInternal(this._tempPoint.x, this._tempPoint.y))\r\n return true;\r\n }\r\n return _super.prototype._hitTestPointInternal.call(this, x, y, shapeFlag, masksFlag);\r\n };\r\n Sprite.prototype.clear = function () {\r\n _super.prototype.clear.call(this);\r\n this._graphics.clearInternal();\r\n };\r\n /**\r\n *\r\n */\r\n Sprite.prototype.bakeTransformations = function () {\r\n this._graphics.applyTransformation(this.transform.matrix3D);\r\n this.transform.clearMatrix3D();\r\n };\r\n Sprite.prototype.invalidateElements = function () {\r\n this.graphics.invalidateElements();\r\n };\r\n Sprite.prototype.invalidateMaterial = function () {\r\n this.graphics.invalidateMaterials();\r\n };\r\n return Sprite;\r\n}(DisplayObjectContainer));\r\nexport { Sprite };\r\nSprite._sprites = new Array();\r\nSprite.assetType = \"[asset Sprite]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/Sprite.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase, AbstractMethodError } from \"@awayjs/core\";\r\n/**\r\n * PrefabBase is an abstract base class for prefabs, which are prebuilt display objects that allow easy cloning and updating\r\n */\r\nvar PrefabBase = (function (_super) {\r\n tslib_1.__extends(PrefabBase, _super);\r\n //\t\tpublic _pBatchObjects:Array = new Array();\r\n /**\r\n * Creates a new PrefabBase object.\r\n */\r\n function PrefabBase() {\r\n var _this = _super.call(this) || this;\r\n _this._pObjects = new Array();\r\n return _this;\r\n }\r\n /**\r\n * Returns a display object generated from this prefab\r\n */\r\n PrefabBase.prototype.getNewObject = function () {\r\n var object = this._pCreateObject();\r\n this._pObjects.push(object);\r\n return object;\r\n };\r\n //\t\tpublic getNewBatchObject():BatchObject\r\n //\t\t{\r\n //\t\t\tvar object:BatchObject = this._pCreateBatchObject();\r\n //\r\n //\t\t\tthis._pBatchObjects.push(object);\r\n //\r\n //\t\t\treturn object;\r\n //\t\t}\r\n PrefabBase.prototype._pCreateObject = function () {\r\n throw new AbstractMethodError();\r\n };\r\n PrefabBase.prototype._iValidate = function () {\r\n // To be overridden when necessary\r\n };\r\n return PrefabBase;\r\n}(AssetBase));\r\nexport { PrefabBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrefabBase.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesBuffer, AbstractMethodError } from \"@awayjs/core\";\r\nimport { Shape, ElementsType, TriangleElements, LineElements } from \"@awayjs/graphics\";\r\nimport { Sprite } from \"../display/Sprite\";\r\nimport { PrefabBase } from \"../prefabs/PrefabBase\";\r\n/**\r\n * PrimitivePrefabBase is an abstract base class for polytope prefabs, which are simple pre-built geometric shapes\r\n */\r\nvar PrimitivePrefabBase = (function (_super) {\r\n tslib_1.__extends(PrimitivePrefabBase, _super);\r\n /**\r\n * Creates a new PrimitivePrefabBase object.\r\n *\r\n * @param material The material with which to render the object\r\n */\r\n function PrimitivePrefabBase(material, elementsType) {\r\n if (material === void 0) { material = null; }\r\n if (elementsType === void 0) { elementsType = \"triangle\"; }\r\n var _this = _super.call(this) || this;\r\n _this._primitiveDirty = true;\r\n _this._uvDirty = true;\r\n _this._scaleU = 1;\r\n _this._scaleV = 1;\r\n _this._material = material;\r\n _this._elementsType = elementsType;\r\n if (_this._elementsType == ElementsType.TRIANGLE) {\r\n var triangleElements = new TriangleElements(new AttributesBuffer());\r\n triangleElements.autoDeriveNormals = false;\r\n triangleElements.autoDeriveTangents = false;\r\n _this._elements = triangleElements;\r\n }\r\n else if (_this._elementsType == ElementsType.LINE) {\r\n _this._elements = new LineElements(new AttributesBuffer());\r\n }\r\n return _this;\r\n }\r\n Object.defineProperty(PrimitivePrefabBase.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return PrimitivePrefabBase.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePrefabBase.prototype, \"elementsType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._elementsType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePrefabBase.prototype, \"material\", {\r\n /**\r\n * The material with which to render the primitive.\r\n */\r\n get: function () {\r\n return this._material;\r\n },\r\n set: function (value) {\r\n if (value == this._material)\r\n return;\r\n this._material = value;\r\n var len = this._pObjects.length;\r\n for (var i = 0; i < len; i++)\r\n this._pObjects[i].material = this._material;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePrefabBase.prototype, \"scaleU\", {\r\n get: function () {\r\n return this._scaleU;\r\n },\r\n set: function (value) {\r\n if (this._scaleU == value)\r\n return;\r\n this._scaleU = value;\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePrefabBase.prototype, \"scaleV\", {\r\n get: function () {\r\n return this._scaleV;\r\n },\r\n set: function (value) {\r\n if (this._scaleV == value)\r\n return;\r\n this._scaleV = value;\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Builds the primitive's geometry when invalid. This method should not be called directly. The calling should\r\n * be triggered by the invalidateGraphics method (and in turn by updateGraphics).\r\n */\r\n PrimitivePrefabBase.prototype._pBuildGraphics = function (target, elementsType) {\r\n throw new AbstractMethodError();\r\n };\r\n /**\r\n * Builds the primitive's uv coordinates when invalid. This method should not be called directly. The calling\r\n * should be triggered by the invalidateUVs method (and in turn by updateUVs).\r\n */\r\n PrimitivePrefabBase.prototype._pBuildUVs = function (target, elementsType) {\r\n throw new AbstractMethodError();\r\n };\r\n /**\r\n * Invalidates the primitive, causing it to be updated when requested.\r\n */\r\n PrimitivePrefabBase.prototype._pInvalidatePrimitive = function () {\r\n this._primitiveDirty = true;\r\n };\r\n /**\r\n * Invalidates the primitive's uv coordinates, causing them to be updated when requested.\r\n */\r\n PrimitivePrefabBase.prototype._pInvalidateUVs = function () {\r\n this._uvDirty = true;\r\n };\r\n /**\r\n * Updates the geometry when invalid.\r\n */\r\n PrimitivePrefabBase.prototype.updateGraphics = function () {\r\n this._pBuildGraphics(this._elements, this._elementsType);\r\n this._primitiveDirty = false;\r\n };\r\n /**\r\n * Updates the uv coordinates when invalid.\r\n */\r\n PrimitivePrefabBase.prototype.updateUVs = function () {\r\n this._pBuildUVs(this._elements, this._elementsType);\r\n this._uvDirty = false;\r\n };\r\n PrimitivePrefabBase.prototype._iValidate = function () {\r\n if (this._primitiveDirty)\r\n this.updateGraphics();\r\n if (this._uvDirty)\r\n this.updateUVs();\r\n };\r\n PrimitivePrefabBase.prototype._pCreateObject = function () {\r\n var sprite = new Sprite(this._material);\r\n sprite.graphics.addShape(Shape.getShape(this._elements));\r\n sprite._iSourcePrefab = this;\r\n return sprite;\r\n };\r\n return PrimitivePrefabBase;\r\n}(PrefabBase));\r\nexport { PrimitivePrefabBase };\r\nPrimitivePrefabBase.assetType = \"[asset PrimitivePrefab]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrimitivePrefabBase.js","import * as tslib_1 from \"tslib\";\r\nimport { ElementsType } from \"@awayjs/graphics\";\r\nimport { PrimitivePrefabBase } from \"../prefabs/PrimitivePrefabBase\";\r\n/**\r\n * A Cube primitive prefab.\r\n */\r\nvar PrimitiveCubePrefab = (function (_super) {\r\n tslib_1.__extends(PrimitiveCubePrefab, _super);\r\n /**\r\n * Creates a new Cube object.\r\n * @param width The size of the cube along its X-axis.\r\n * @param height The size of the cube along its Y-axis.\r\n * @param depth The size of the cube along its Z-axis.\r\n * @param segmentsW The number of segments that make up the cube along the X-axis.\r\n * @param segmentsH The number of segments that make up the cube along the Y-axis.\r\n * @param segmentsD The number of segments that make up the cube along the Z-axis.\r\n * @param tile6 The type of uv mapping to use. When true, a texture will be subdivided in a 2x3 grid, each used for a single face. When false, the entire image is mapped on each face.\r\n */\r\n function PrimitiveCubePrefab(material, elementsType, width, height, depth, segmentsW, segmentsH, segmentsD, tile6) {\r\n if (material === void 0) { material = null; }\r\n if (elementsType === void 0) { elementsType = \"triangle\"; }\r\n if (width === void 0) { width = 100; }\r\n if (height === void 0) { height = 100; }\r\n if (depth === void 0) { depth = 100; }\r\n if (segmentsW === void 0) { segmentsW = 1; }\r\n if (segmentsH === void 0) { segmentsH = 1; }\r\n if (segmentsD === void 0) { segmentsD = 1; }\r\n if (tile6 === void 0) { tile6 = true; }\r\n var _this = _super.call(this, material, elementsType) || this;\r\n _this._width = width;\r\n _this._height = height;\r\n _this._depth = depth;\r\n _this._segmentsW = segmentsW;\r\n _this._segmentsH = segmentsH;\r\n _this._segmentsD = segmentsD;\r\n _this._tile6 = tile6;\r\n return _this;\r\n }\r\n Object.defineProperty(PrimitiveCubePrefab.prototype, \"width\", {\r\n /**\r\n * The size of the cube along its X-axis.\r\n */\r\n get: function () {\r\n return this._width;\r\n },\r\n set: function (value) {\r\n this._width = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCubePrefab.prototype, \"height\", {\r\n /**\r\n * The size of the cube along its Y-axis.\r\n */\r\n get: function () {\r\n return this._height;\r\n },\r\n set: function (value) {\r\n this._height = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCubePrefab.prototype, \"depth\", {\r\n /**\r\n * The size of the cube along its Z-axis.\r\n */\r\n get: function () {\r\n return this._depth;\r\n },\r\n set: function (value) {\r\n this._depth = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCubePrefab.prototype, \"tile6\", {\r\n /**\r\n * The type of uv mapping to use. When false, the entire image is mapped on each face.\r\n * When true, a texture will be subdivided in a 3x2 grid, each used for a single face.\r\n * Reading the tiles from left to right, top to bottom they represent the faces of the\r\n * cube in the following order: bottom, top, back, left, front, right. This creates\r\n * several shared edges (between the top, front, left and right faces) which simplifies\r\n * texture painting.\r\n */\r\n get: function () {\r\n return this._tile6;\r\n },\r\n set: function (value) {\r\n this._tile6 = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCubePrefab.prototype, \"segmentsW\", {\r\n /**\r\n * The number of segments that make up the cube along the X-axis. Defaults to 1.\r\n */\r\n get: function () {\r\n return this._segmentsW;\r\n },\r\n set: function (value) {\r\n this._segmentsW = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCubePrefab.prototype, \"segmentsH\", {\r\n /**\r\n * The number of segments that make up the cube along the Y-axis. Defaults to 1.\r\n */\r\n get: function () {\r\n return this._segmentsH;\r\n },\r\n set: function (value) {\r\n this._segmentsH = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCubePrefab.prototype, \"segmentsD\", {\r\n /**\r\n * The number of segments that make up the cube along the Z-axis. Defaults to 1.\r\n */\r\n get: function () {\r\n return this._segmentsD;\r\n },\r\n set: function (value) {\r\n this._segmentsD = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveCubePrefab.prototype._pBuildGraphics = function (target, elementsType) {\r\n var indices;\r\n var positions;\r\n var normals;\r\n var tangents;\r\n var stride;\r\n var tl, tr, bl, br;\r\n var i, j, inc = 0;\r\n var vidx, fidx; // indices\r\n var hw, hh, hd; // halves\r\n var dw, dh, dd; // deltas\r\n var outer_pos;\r\n // half cube dimensions\r\n hw = this._width / 2;\r\n hh = this._height / 2;\r\n hd = this._depth / 2;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n var triangleGraphics = target;\r\n var numVertices = ((this._segmentsW + 1) * (this._segmentsH + 1) + (this._segmentsW + 1) * (this._segmentsD + 1) + (this._segmentsH + 1) * (this._segmentsD + 1)) * 2;\r\n var numIndices = ((this._segmentsW * this._segmentsH + this._segmentsW * this._segmentsD + this._segmentsH * this._segmentsD) * 12);\r\n if (numVertices == triangleGraphics.numVertices && triangleGraphics.indices != null) {\r\n triangleGraphics.invalidateIndices();\r\n triangleGraphics.invalidateVertices(triangleGraphics.positions);\r\n triangleGraphics.invalidateVertices(triangleGraphics.normals);\r\n triangleGraphics.invalidateVertices(triangleGraphics.tangents);\r\n }\r\n else {\r\n triangleGraphics.setIndices(new Uint16Array(numIndices));\r\n triangleGraphics.setPositions(new Float32Array(numVertices * 3));\r\n triangleGraphics.setNormals(new Float32Array(numVertices * 3));\r\n triangleGraphics.setTangents(new Float32Array(numVertices * 3));\r\n this._pInvalidateUVs();\r\n }\r\n indices = triangleGraphics.indices.get(triangleGraphics.numElements);\r\n positions = triangleGraphics.positions.get(numVertices);\r\n normals = triangleGraphics.normals.get(numVertices);\r\n tangents = triangleGraphics.tangents.get(numVertices);\r\n stride = triangleGraphics.concatenatedBuffer.stride / 4;\r\n vidx = 0;\r\n fidx = 0;\r\n // Segment dimensions\r\n dw = this._width / this._segmentsW;\r\n dh = this._height / this._segmentsH;\r\n dd = this._depth / this._segmentsD;\r\n for (i = 0; i <= this._segmentsW; i++) {\r\n outer_pos = -hw + i * dw;\r\n for (j = 0; j <= this._segmentsH; j++) {\r\n // front\r\n positions[vidx] = outer_pos;\r\n positions[vidx + 1] = -hh + j * dh;\r\n positions[vidx + 2] = -hd;\r\n normals[vidx] = 0;\r\n normals[vidx + 1] = 0;\r\n normals[vidx + 2] = -1;\r\n tangents[vidx] = 1;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 0;\r\n vidx += stride;\r\n // back\r\n positions[vidx] = outer_pos;\r\n positions[vidx + 1] = -hh + j * dh;\r\n positions[vidx + 2] = hd;\r\n normals[vidx] = 0;\r\n normals[vidx + 1] = 0;\r\n normals[vidx + 2] = 1;\r\n tangents[vidx] = -1;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 0;\r\n vidx += stride;\r\n if (i && j) {\r\n tl = 2 * ((i - 1) * (this._segmentsH + 1) + (j - 1));\r\n tr = 2 * (i * (this._segmentsH + 1) + (j - 1));\r\n bl = tl + 2;\r\n br = tr + 2;\r\n indices[fidx++] = tl;\r\n indices[fidx++] = bl;\r\n indices[fidx++] = br;\r\n indices[fidx++] = tl;\r\n indices[fidx++] = br;\r\n indices[fidx++] = tr;\r\n indices[fidx++] = tr + 1;\r\n indices[fidx++] = br + 1;\r\n indices[fidx++] = bl + 1;\r\n indices[fidx++] = tr + 1;\r\n indices[fidx++] = bl + 1;\r\n indices[fidx++] = tl + 1;\r\n }\r\n }\r\n }\r\n inc += 2 * (this._segmentsW + 1) * (this._segmentsH + 1);\r\n for (i = 0; i <= this._segmentsW; i++) {\r\n outer_pos = -hw + i * dw;\r\n for (j = 0; j <= this._segmentsD; j++) {\r\n // top\r\n positions[vidx] = outer_pos;\r\n positions[vidx + 1] = hh;\r\n positions[vidx + 2] = -hd + j * dd;\r\n normals[vidx] = 0;\r\n normals[vidx + 1] = 1;\r\n normals[vidx + 2] = 0;\r\n tangents[vidx] = 1;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 0;\r\n vidx += stride;\r\n // bottom\r\n positions[vidx] = outer_pos;\r\n positions[vidx + 1] = -hh;\r\n positions[vidx + 2] = -hd + j * dd;\r\n normals[vidx] = 0;\r\n normals[vidx + 1] = -1;\r\n normals[vidx + 2] = 0;\r\n tangents[vidx] = 1;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 0;\r\n vidx += stride;\r\n if (i && j) {\r\n tl = inc + 2 * ((i - 1) * (this._segmentsD + 1) + (j - 1));\r\n tr = inc + 2 * (i * (this._segmentsD + 1) + (j - 1));\r\n bl = tl + 2;\r\n br = tr + 2;\r\n indices[fidx++] = tl;\r\n indices[fidx++] = bl;\r\n indices[fidx++] = br;\r\n indices[fidx++] = tl;\r\n indices[fidx++] = br;\r\n indices[fidx++] = tr;\r\n indices[fidx++] = tr + 1;\r\n indices[fidx++] = br + 1;\r\n indices[fidx++] = bl + 1;\r\n indices[fidx++] = tr + 1;\r\n indices[fidx++] = bl + 1;\r\n indices[fidx++] = tl + 1;\r\n }\r\n }\r\n }\r\n inc += 2 * (this._segmentsW + 1) * (this._segmentsD + 1);\r\n for (i = 0; i <= this._segmentsD; i++) {\r\n outer_pos = hd - i * dd;\r\n for (j = 0; j <= this._segmentsH; j++) {\r\n // left\r\n positions[vidx] = -hw;\r\n positions[vidx + 1] = -hh + j * dh;\r\n positions[vidx + 2] = outer_pos;\r\n normals[vidx] = -1;\r\n normals[vidx + 1] = 0;\r\n normals[vidx + 2] = 0;\r\n tangents[vidx] = 0;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = -1;\r\n vidx += stride;\r\n // right\r\n positions[vidx] = hw;\r\n positions[vidx + 1] = -hh + j * dh;\r\n positions[vidx + 2] = outer_pos;\r\n normals[vidx] = 1;\r\n normals[vidx + 1] = 0;\r\n normals[vidx + 2] = 0;\r\n tangents[vidx] = 0;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 1;\r\n vidx += stride;\r\n if (i && j) {\r\n tl = inc + 2 * ((i - 1) * (this._segmentsH + 1) + (j - 1));\r\n tr = inc + 2 * (i * (this._segmentsH + 1) + (j - 1));\r\n bl = tl + 2;\r\n br = tr + 2;\r\n indices[fidx++] = tl;\r\n indices[fidx++] = bl;\r\n indices[fidx++] = br;\r\n indices[fidx++] = tl;\r\n indices[fidx++] = br;\r\n indices[fidx++] = tr;\r\n indices[fidx++] = tr + 1;\r\n indices[fidx++] = br + 1;\r\n indices[fidx++] = bl + 1;\r\n indices[fidx++] = tr + 1;\r\n indices[fidx++] = bl + 1;\r\n indices[fidx++] = tl + 1;\r\n }\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n var lineGraphics = target;\r\n var numSegments = this._segmentsH * 4 + this._segmentsW * 4 + this._segmentsD * 4;\r\n var thickness;\r\n positions = new Float32Array(numSegments * 6);\r\n thickness = new Float32Array(numSegments);\r\n vidx = 0;\r\n fidx = 0;\r\n //front/back face\r\n for (i = 0; i < this._segmentsH; ++i) {\r\n positions[vidx++] = -hw;\r\n positions[vidx++] = i * this._height / this._segmentsH - hh;\r\n positions[vidx++] = -hd;\r\n positions[vidx++] = hw;\r\n positions[vidx++] = i * this._height / this._segmentsH - hh;\r\n positions[vidx++] = -hd;\r\n thickness[fidx++] = 1;\r\n positions[vidx++] = -hw;\r\n positions[vidx++] = hh - i * this._height / this._segmentsH;\r\n positions[vidx++] = hd;\r\n positions[vidx++] = hw;\r\n positions[vidx++] = hh - i * this._height / this._segmentsH;\r\n positions[vidx++] = hd;\r\n thickness[fidx++] = 1;\r\n }\r\n for (i = 0; i < this._segmentsW; ++i) {\r\n positions[vidx++] = i * this._width / this._segmentsW - hw;\r\n positions[vidx++] = -hh;\r\n positions[vidx++] = -hd;\r\n positions[vidx++] = i * this._width / this._segmentsW - hw;\r\n positions[vidx++] = hh;\r\n positions[vidx++] = -hd;\r\n thickness[fidx++] = 1;\r\n positions[vidx++] = hw - i * this._width / this._segmentsW;\r\n positions[vidx++] = -hh;\r\n positions[vidx++] = hd;\r\n positions[vidx++] = hw - i * this._width / this._segmentsW;\r\n positions[vidx++] = hh;\r\n positions[vidx++] = hd;\r\n thickness[fidx++] = 1;\r\n }\r\n //left/right face\r\n for (i = 0; i < this._segmentsH; ++i) {\r\n positions[vidx++] = -hw;\r\n positions[vidx++] = i * this._height / this._segmentsH - hh;\r\n positions[vidx++] = -hd;\r\n positions[vidx++] = -hw;\r\n positions[vidx++] = i * this._height / this._segmentsH - hh;\r\n positions[vidx++] = hd;\r\n thickness[fidx++] = 1;\r\n positions[vidx++] = hw;\r\n positions[vidx++] = hh - i * this._height / this._segmentsH;\r\n positions[vidx++] = -hd;\r\n positions[vidx++] = hw;\r\n positions[vidx++] = hh - i * this._height / this._segmentsH;\r\n positions[vidx++] = hd;\r\n thickness[fidx++] = 1;\r\n }\r\n for (i = 0; i < this._segmentsD; ++i) {\r\n positions[vidx++] = hw;\r\n positions[vidx++] = -hh;\r\n positions[vidx++] = i * this._depth / this._segmentsD - hd;\r\n positions[vidx++] = hw;\r\n positions[vidx++] = hh;\r\n positions[vidx++] = i * this._depth / this._segmentsD - hd;\r\n thickness[fidx++] = 1;\r\n positions[vidx++] = -hw;\r\n positions[vidx++] = -hh;\r\n positions[vidx++] = hd - i * this._depth / this._segmentsD;\r\n positions[vidx++] = -hw;\r\n positions[vidx++] = hh;\r\n positions[vidx++] = hd - i * this._depth / this._segmentsD;\r\n thickness[fidx++] = 1;\r\n }\r\n //top/bottom face\r\n for (i = 0; i < this._segmentsD; ++i) {\r\n positions[vidx++] = -hw;\r\n positions[vidx++] = -hh;\r\n positions[vidx++] = hd - i * this._depth / this._segmentsD;\r\n positions[vidx++] = hw;\r\n positions[vidx++] = -hh;\r\n positions[vidx++] = hd - i * this._depth / this._segmentsD;\r\n thickness[fidx++] = 1;\r\n positions[vidx++] = -hw;\r\n positions[vidx++] = hh;\r\n positions[vidx++] = i * this._depth / this._segmentsD - hd;\r\n positions[vidx++] = hw;\r\n positions[vidx++] = hh;\r\n positions[vidx++] = i * this._depth / this._segmentsD - hd;\r\n thickness[fidx++] = 1;\r\n }\r\n for (i = 0; i < this._segmentsW; ++i) {\r\n positions[vidx++] = hw - i * this._width / this._segmentsW;\r\n positions[vidx++] = -hh;\r\n positions[vidx++] = -hd;\r\n positions[vidx++] = hw - i * this._width / this._segmentsW;\r\n positions[vidx++] = -hh;\r\n positions[vidx++] = hd;\r\n thickness[fidx++] = 1;\r\n positions[vidx++] = i * this._width / this._segmentsW - hw;\r\n positions[vidx++] = hh;\r\n positions[vidx++] = -hd;\r\n positions[vidx++] = i * this._width / this._segmentsW - hw;\r\n positions[vidx++] = hh;\r\n positions[vidx++] = hd;\r\n thickness[fidx++] = 1;\r\n }\r\n // build real data from raw data\r\n lineGraphics.setPositions(positions);\r\n lineGraphics.setThickness(thickness);\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveCubePrefab.prototype._pBuildUVs = function (target, elementsType) {\r\n var i, j, index;\r\n var uvs;\r\n var stride;\r\n var u_tile_dim, v_tile_dim;\r\n var u_tile_step, v_tile_step;\r\n var tl0u, tl0v;\r\n var tl1u, tl1v;\r\n var du, dv;\r\n var numVertices;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n numVertices = ((this._segmentsW + 1) * (this._segmentsH + 1) + (this._segmentsW + 1) * (this._segmentsD + 1) + (this._segmentsH + 1) * (this._segmentsD + 1)) * 2;\r\n var triangleGraphics = target;\r\n if (triangleGraphics.uvs && numVertices == triangleGraphics.numVertices) {\r\n triangleGraphics.invalidateVertices(triangleGraphics.uvs);\r\n }\r\n else {\r\n triangleGraphics.setUVs(new Float32Array(numVertices * 2));\r\n }\r\n uvs = triangleGraphics.uvs.get(numVertices);\r\n stride = triangleGraphics.uvs.stride;\r\n if (this._tile6) {\r\n u_tile_dim = u_tile_step = 1 / 3;\r\n v_tile_dim = v_tile_step = 1 / 2;\r\n }\r\n else {\r\n u_tile_dim = v_tile_dim = 1;\r\n u_tile_step = v_tile_step = 0;\r\n }\r\n // Create planes two and two, the same way that they were\r\n // constructed in the buildGraphics() function. First calculate\r\n // the top-left UV coordinate for both planes, and then loop\r\n // over the points, calculating the UVs from these numbers.\r\n // When tile6 is true, the layout is as follows:\r\n // .-----.-----.-----. (1,1)\r\n // | Bot | T | Bak |\r\n // |-----+-----+-----|\r\n // | L | F | R |\r\n // (0,0)'-----'-----'-----'\r\n index = 0;\r\n // FRONT / BACK\r\n tl0u = 1 * u_tile_step;\r\n tl0v = 1 * v_tile_step;\r\n tl1u = 2 * u_tile_step;\r\n tl1v = 0 * v_tile_step;\r\n du = u_tile_dim / this._segmentsW;\r\n dv = v_tile_dim / this._segmentsH;\r\n for (i = 0; i <= this._segmentsW; i++) {\r\n for (j = 0; j <= this._segmentsH; j++) {\r\n uvs[index] = (tl0u + i * du) * this._scaleU;\r\n uvs[index + 1] = (tl0v + (v_tile_dim - j * dv)) * this._scaleV;\r\n index += stride;\r\n uvs[index] = (tl1u + (u_tile_dim - i * du)) * this._scaleU;\r\n uvs[index + 1] = (tl1v + (v_tile_dim - j * dv)) * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n // TOP / BOTTOM\r\n tl0u = 1 * u_tile_step;\r\n tl0v = 0 * v_tile_step;\r\n tl1u = 0 * u_tile_step;\r\n tl1v = 0 * v_tile_step;\r\n du = u_tile_dim / this._segmentsW;\r\n dv = v_tile_dim / this._segmentsD;\r\n for (i = 0; i <= this._segmentsW; i++) {\r\n for (j = 0; j <= this._segmentsD; j++) {\r\n uvs[index] = (tl0u + i * du) * this._scaleU;\r\n uvs[index + 1] = (tl0v + (v_tile_dim - j * dv)) * this._scaleV;\r\n index += stride;\r\n uvs[index] = (tl1u + i * du) * this._scaleU;\r\n uvs[index + 1] = (tl1v + j * dv) * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n // LEFT / RIGHT\r\n tl0u = 0 * u_tile_step;\r\n tl0v = 1 * v_tile_step;\r\n tl1u = 2 * u_tile_step;\r\n tl1v = 1 * v_tile_step;\r\n du = u_tile_dim / this._segmentsD;\r\n dv = v_tile_dim / this._segmentsH;\r\n for (i = 0; i <= this._segmentsD; i++) {\r\n for (j = 0; j <= this._segmentsH; j++) {\r\n uvs[index] = (tl0u + i * du) * this._scaleU;\r\n uvs[index + 1] = (tl0v + (v_tile_dim - j * dv)) * this._scaleV;\r\n index += stride;\r\n uvs[index] = (tl1u + (u_tile_dim - i * du)) * this._scaleU;\r\n uvs[index + 1] = (tl1v + (v_tile_dim - j * dv)) * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n }\r\n };\r\n return PrimitiveCubePrefab;\r\n}(PrimitivePrefabBase));\r\nexport { PrimitiveCubePrefab };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrimitiveCubePrefab.js","import { AbstractMethodError } from \"@awayjs/core\";\r\nvar BoundingVolumeBase = (function () {\r\n function BoundingVolumeBase(entity) {\r\n this._pInvalidated = true;\r\n this._entity = entity;\r\n }\r\n BoundingVolumeBase.prototype.dispose = function () {\r\n this._entity = null;\r\n this._pBoundsPrimitive = null;\r\n };\r\n Object.defineProperty(BoundingVolumeBase.prototype, \"boundsPrimitive\", {\r\n get: function () {\r\n if (this._pBoundsPrimitive == null) {\r\n this._pBoundsPrimitive = this._pCreateBoundsPrimitive();\r\n this._pInvalidated = true;\r\n }\r\n if (this._pInvalidated)\r\n this._pUpdate();\r\n return this._pBoundsPrimitive;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n BoundingVolumeBase.prototype.nullify = function () {\r\n throw new AbstractMethodError();\r\n };\r\n BoundingVolumeBase.prototype.isInFrustum = function (planes, numPlanes) {\r\n throw new AbstractMethodError();\r\n };\r\n BoundingVolumeBase.prototype.clone = function () {\r\n throw new AbstractMethodError();\r\n };\r\n BoundingVolumeBase.prototype.rayIntersection = function (position, direction, targetNormal) {\r\n return -1;\r\n };\r\n BoundingVolumeBase.prototype.classifyToPlane = function (plane) {\r\n throw new AbstractMethodError();\r\n };\r\n BoundingVolumeBase.prototype._pUpdate = function () {\r\n this._pInvalidated = false;\r\n };\r\n BoundingVolumeBase.prototype.invalidate = function () {\r\n this._pInvalidated = true;\r\n };\r\n BoundingVolumeBase.prototype._pCreateBoundsPrimitive = function () {\r\n throw new AbstractMethodError();\r\n };\r\n return BoundingVolumeBase;\r\n}());\r\nexport { BoundingVolumeBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/bounds/BoundingVolumeBase.js","import * as tslib_1 from \"tslib\";\r\nimport { PlaneClassification, Vector3D } from \"@awayjs/core\";\r\nimport { ElementsType } from \"@awayjs/graphics\";\r\nimport { PrimitiveCubePrefab } from \"../prefabs/PrimitiveCubePrefab\";\r\nimport { BoundingVolumeBase } from \"./BoundingVolumeBase\";\r\n/**\r\n * AxisAlignedBoundingBox represents a bounding box volume that has its planes aligned to the local coordinate axes of the bounded object.\r\n * This is useful for most sprites.\r\n */\r\nvar AxisAlignedBoundingBox = (function (_super) {\r\n tslib_1.__extends(AxisAlignedBoundingBox, _super);\r\n /**\r\n * Creates a new AxisAlignedBoundingBox object.\r\n */\r\n function AxisAlignedBoundingBox(entity) {\r\n var _this = _super.call(this, entity) || this;\r\n _this._x = 0;\r\n _this._y = 0;\r\n _this._z = 0;\r\n _this._width = 0;\r\n _this._height = 0;\r\n _this._depth = 0;\r\n _this._centerX = 0;\r\n _this._centerY = 0;\r\n _this._centerZ = 0;\r\n _this._halfExtentsX = 0;\r\n _this._halfExtentsY = 0;\r\n _this._halfExtentsZ = 0;\r\n return _this;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n AxisAlignedBoundingBox.prototype.nullify = function () {\r\n this._x = this._y = this._z = 0;\r\n this._width = this._height = this._depth = 0;\r\n this._centerX = this._centerY = this._centerZ = 0;\r\n this._halfExtentsX = this._halfExtentsY = this._halfExtentsZ = 0;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n AxisAlignedBoundingBox.prototype.isInFrustum = function (planes, numPlanes) {\r\n if (this._pInvalidated)\r\n this._pUpdate();\r\n for (var i = 0; i < numPlanes; ++i) {\r\n var plane = planes[i];\r\n var a = plane.a;\r\n var b = plane.b;\r\n var c = plane.c;\r\n var flippedExtentX = a < 0 ? -this._halfExtentsX : this._halfExtentsX;\r\n var flippedExtentY = b < 0 ? -this._halfExtentsY : this._halfExtentsY;\r\n var flippedExtentZ = c < 0 ? -this._halfExtentsZ : this._halfExtentsZ;\r\n var projDist = a * (this._centerX + flippedExtentX) + b * (this._centerY + flippedExtentY) + c * (this._centerZ + flippedExtentZ) - plane.d;\r\n if (projDist < 0)\r\n return false;\r\n }\r\n return true;\r\n };\r\n AxisAlignedBoundingBox.prototype.rayIntersection = function (position, direction, targetNormal) {\r\n if (this._pInvalidated)\r\n this._pUpdate();\r\n return this._box.rayIntersection(position, direction, targetNormal);\r\n };\r\n AxisAlignedBoundingBox.prototype.classifyToPlane = function (plane) {\r\n var a = plane.a;\r\n var b = plane.b;\r\n var c = plane.c;\r\n var centerDistance = a * this._centerX + b * this._centerY + c * this._centerZ - plane.d;\r\n if (a < 0)\r\n a = -a;\r\n if (b < 0)\r\n b = -b;\r\n if (c < 0)\r\n c = -c;\r\n var boundOffset = a * this._halfExtentsX + b * this._halfExtentsY + c * this._halfExtentsZ;\r\n return centerDistance > boundOffset ? PlaneClassification.FRONT : centerDistance < -boundOffset ? PlaneClassification.BACK : PlaneClassification.INTERSECT;\r\n };\r\n AxisAlignedBoundingBox.prototype._pUpdate = function () {\r\n _super.prototype._pUpdate.call(this);\r\n this._box = this._entity.getBox();\r\n var matrix = this._entity.transform.concatenatedMatrix3D;\r\n var hx = this._box.width / 2;\r\n var hy = this._box.height / 2;\r\n var hz = this._box.depth / 2;\r\n var cx = this._box.x + hx;\r\n var cy = this._box.y + hy;\r\n var cz = this._box.z + hz;\r\n var raw = matrix._rawData;\r\n var m11 = raw[0], m12 = raw[4], m13 = raw[8], m14 = raw[12];\r\n var m21 = raw[1], m22 = raw[5], m23 = raw[9], m24 = raw[13];\r\n var m31 = raw[2], m32 = raw[6], m33 = raw[10], m34 = raw[14];\r\n this._centerX = cx * m11 + cy * m12 + cz * m13 + m14;\r\n this._centerY = cx * m21 + cy * m22 + cz * m23 + m24;\r\n this._centerZ = cx * m31 + cy * m32 + cz * m33 + m34;\r\n this._halfExtentsX = Math.abs(hx * m11 + hy * m12 + hz * m13);\r\n this._halfExtentsY = Math.abs(hx * m21 + hy * m22 + hz * m23);\r\n this._halfExtentsZ = Math.abs(hx * m31 + hy * m32 + hz * m33);\r\n if (this._prefab) {\r\n this._prefab.width = this._box.width;\r\n this._prefab.height = this._box.height;\r\n this._prefab.depth = this._box.depth;\r\n this._pBoundsPrimitive.transform.matrix3D = matrix;\r\n this._pBoundsPrimitive.registrationPoint = new Vector3D(-cx * this._pBoundsPrimitive.transform.scale.x, -cy * this._pBoundsPrimitive.transform.scale.y, -cz * this._pBoundsPrimitive.transform.scale.z);\r\n }\r\n this._width = this._halfExtentsX * 2;\r\n this._height = this._halfExtentsY * 2;\r\n this._depth = this._halfExtentsZ * 2;\r\n this._x = this._centerX - this._halfExtentsX;\r\n this._y = this._centerY - this._halfExtentsY;\r\n this._z = this._centerZ - this._halfExtentsZ;\r\n };\r\n AxisAlignedBoundingBox.prototype._pCreateBoundsPrimitive = function () {\r\n this._prefab = new PrimitiveCubePrefab(null, ElementsType.LINE);\r\n return this._prefab.getNewObject();\r\n };\r\n return AxisAlignedBoundingBox;\r\n}(BoundingVolumeBase));\r\nexport { AxisAlignedBoundingBox };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/bounds/AxisAlignedBoundingBox.js","import * as tslib_1 from \"tslib\";\r\nimport { AxisAlignedBoundingBox } from \"./AxisAlignedBoundingBox\";\r\n/**\r\n * AxisAlignedBoundingBox represents a bounding box volume that has its planes aligned to the local coordinate axes of the bounded object.\r\n * This is useful for most meshes.\r\n */\r\nvar AxisAlignedBoundingBox2D = (function (_super) {\r\n tslib_1.__extends(AxisAlignedBoundingBox2D, _super);\r\n /**\r\n * Creates a new AxisAlignedBoundingBox object.\r\n */\r\n function AxisAlignedBoundingBox2D(entity) {\r\n return _super.call(this, entity) || this;\r\n }\r\n AxisAlignedBoundingBox2D.prototype.rayIntersection = function (position, direction, targetNormal) {\r\n if (this._pInvalidated)\r\n this._pUpdate();\r\n var halfExtentsX = this._box.width / 2;\r\n var halfExtentsY = this._box.height / 2;\r\n var centerX = this._box.x + halfExtentsX;\r\n var centerY = this._box.y + halfExtentsY;\r\n var px = position.x - centerX;\r\n var py = position.y - centerY;\r\n var pz = position.z;\r\n var vx = direction.x;\r\n var vy = direction.y;\r\n var vz = direction.z;\r\n var ix;\r\n var iy;\r\n var intersects;\r\n var rayEntryDistance;\r\n if (!intersects && vz < 0) {\r\n rayEntryDistance = -pz / vz;\r\n if (rayEntryDistance > 0) {\r\n ix = px + rayEntryDistance * vx;\r\n iy = py + rayEntryDistance * vy;\r\n if (iy > -halfExtentsY && iy < halfExtentsY && ix > -halfExtentsX && ix < halfExtentsX) {\r\n targetNormal.x = 0;\r\n targetNormal.y = 0;\r\n targetNormal.z = 1;\r\n intersects = true;\r\n }\r\n }\r\n }\r\n if (!intersects && vz > 0) {\r\n rayEntryDistance = -pz / vz;\r\n if (rayEntryDistance > 0) {\r\n ix = px + rayEntryDistance * vx;\r\n iy = py + rayEntryDistance * vy;\r\n if (iy > -halfExtentsY && iy < halfExtentsY && ix > -halfExtentsX && ix < halfExtentsX) {\r\n targetNormal.x = 0;\r\n targetNormal.y = 0;\r\n targetNormal.z = -1;\r\n intersects = true;\r\n }\r\n }\r\n }\r\n return intersects ? rayEntryDistance : -1;\r\n };\r\n return AxisAlignedBoundingBox2D;\r\n}(AxisAlignedBoundingBox));\r\nexport { AxisAlignedBoundingBox2D };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/bounds/AxisAlignedBoundingBox2D.js","import * as tslib_1 from \"tslib\";\r\nimport { ElementsType } from \"@awayjs/graphics\";\r\nimport { PrimitivePrefabBase } from \"../prefabs/PrimitivePrefabBase\";\r\n/**\r\n * A UV Sphere primitive sprite.\r\n */\r\nvar PrimitiveSpherePrefab = (function (_super) {\r\n tslib_1.__extends(PrimitiveSpherePrefab, _super);\r\n /**\r\n * Creates a new Sphere object.\r\n *\r\n * @param radius The radius of the sphere.\r\n * @param segmentsW Defines the number of horizontal segments that make up the sphere.\r\n * @param segmentsH Defines the number of vertical segments that make up the sphere.\r\n * @param yUp Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n function PrimitiveSpherePrefab(material, elementsType, radius, segmentsW, segmentsH, yUp) {\r\n if (material === void 0) { material = null; }\r\n if (elementsType === void 0) { elementsType = \"triangle\"; }\r\n if (radius === void 0) { radius = 50; }\r\n if (segmentsW === void 0) { segmentsW = 16; }\r\n if (segmentsH === void 0) { segmentsH = 12; }\r\n if (yUp === void 0) { yUp = true; }\r\n var _this = _super.call(this, material, elementsType) || this;\r\n _this._radius = radius;\r\n _this._segmentsW = segmentsW;\r\n _this._segmentsH = segmentsH;\r\n _this._yUp = yUp;\r\n return _this;\r\n }\r\n Object.defineProperty(PrimitiveSpherePrefab.prototype, \"radius\", {\r\n /**\r\n * The radius of the sphere.\r\n */\r\n get: function () {\r\n return this._radius;\r\n },\r\n set: function (value) {\r\n this._radius = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveSpherePrefab.prototype, \"segmentsW\", {\r\n /**\r\n * Defines the number of horizontal segments that make up the sphere. Defaults to 16.\r\n */\r\n get: function () {\r\n return this._segmentsW;\r\n },\r\n set: function (value) {\r\n this._segmentsW = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveSpherePrefab.prototype, \"segmentsH\", {\r\n /**\r\n * Defines the number of vertical segments that make up the sphere. Defaults to 12.\r\n */\r\n get: function () {\r\n return this._segmentsH;\r\n },\r\n set: function (value) {\r\n this._segmentsH = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveSpherePrefab.prototype, \"yUp\", {\r\n /**\r\n * Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n get: function () {\r\n return this._yUp;\r\n },\r\n set: function (value) {\r\n this._yUp = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveSpherePrefab.prototype._pBuildGraphics = function (target, elementsType) {\r\n var indices;\r\n var positions;\r\n var normals;\r\n var tangents;\r\n var stride;\r\n var i;\r\n var j;\r\n var vidx, fidx; // indices\r\n var comp1;\r\n var comp2;\r\n var numVertices;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n var triangleGraphics = target;\r\n numVertices = (this._segmentsH + 1) * (this._segmentsW + 1);\r\n if (numVertices == triangleGraphics.numVertices && triangleGraphics.indices != null) {\r\n triangleGraphics.invalidateIndices();\r\n triangleGraphics.invalidateVertices(triangleGraphics.positions);\r\n triangleGraphics.invalidateVertices(triangleGraphics.normals);\r\n triangleGraphics.invalidateVertices(triangleGraphics.tangents);\r\n }\r\n else {\r\n triangleGraphics.setIndices(new Uint16Array((this._segmentsH - 1) * this._segmentsW * 6));\r\n triangleGraphics.setPositions(new Float32Array(numVertices * 3));\r\n triangleGraphics.setNormals(new Float32Array(numVertices * 3));\r\n triangleGraphics.setTangents(new Float32Array(numVertices * 3));\r\n this._pInvalidateUVs();\r\n }\r\n indices = triangleGraphics.indices.get(triangleGraphics.numElements);\r\n positions = triangleGraphics.positions.get(numVertices);\r\n normals = triangleGraphics.normals.get(numVertices);\r\n tangents = triangleGraphics.tangents.get(numVertices);\r\n stride = triangleGraphics.concatenatedBuffer.stride / 4;\r\n vidx = 0;\r\n fidx = 0;\r\n var startIndex;\r\n var t1;\r\n var t2;\r\n for (j = 0; j <= this._segmentsH; ++j) {\r\n startIndex = vidx;\r\n var horangle = Math.PI * j / this._segmentsH;\r\n var z = -this._radius * Math.cos(horangle);\r\n var ringradius = this._radius * Math.sin(horangle);\r\n for (i = 0; i <= this._segmentsW; ++i) {\r\n var verangle = 2 * Math.PI * i / this._segmentsW;\r\n var x = ringradius * Math.cos(verangle);\r\n var y = ringradius * Math.sin(verangle);\r\n var normLen = 1 / Math.sqrt(x * x + y * y + z * z);\r\n var tanLen = Math.sqrt(y * y + x * x);\r\n if (this._yUp) {\r\n t1 = 0;\r\n t2 = tanLen > .007 ? x / tanLen : 0;\r\n comp1 = -z;\r\n comp2 = y;\r\n }\r\n else {\r\n t1 = tanLen > .007 ? x / tanLen : 0;\r\n t2 = 0;\r\n comp1 = y;\r\n comp2 = z;\r\n }\r\n if (i == this._segmentsW) {\r\n positions[vidx] = positions[startIndex];\r\n positions[vidx + 1] = positions[startIndex + 1];\r\n positions[vidx + 2] = positions[startIndex + 2];\r\n normals[vidx] = normals[startIndex] + (x * normLen) * .5;\r\n normals[vidx + 1] = normals[startIndex + 1] + (comp1 * normLen) * .5;\r\n normals[vidx + 2] = normals[startIndex + 2] + (comp2 * normLen) * .5;\r\n tangents[vidx] = tanLen > .007 ? -y / tanLen : 1;\r\n tangents[vidx + 1] = t1;\r\n tangents[vidx + 2] = t2;\r\n }\r\n else {\r\n positions[vidx] = x;\r\n positions[vidx + 1] = comp1;\r\n positions[vidx + 2] = comp2;\r\n normals[vidx] = x * normLen;\r\n normals[vidx + 1] = comp1 * normLen;\r\n normals[vidx + 2] = comp2 * normLen;\r\n tangents[vidx] = tanLen > .007 ? -y / tanLen : 1;\r\n tangents[vidx + 1] = t1;\r\n tangents[vidx + 2] = t2;\r\n }\r\n if (i > 0 && j > 0) {\r\n var a = (this._segmentsW + 1) * j + i;\r\n var b = (this._segmentsW + 1) * j + i - 1;\r\n var c = (this._segmentsW + 1) * (j - 1) + i - 1;\r\n var d = (this._segmentsW + 1) * (j - 1) + i;\r\n if (j == this._segmentsH) {\r\n positions[vidx] = positions[startIndex];\r\n positions[vidx + 1] = positions[startIndex + 1];\r\n positions[vidx + 2] = positions[startIndex + 2];\r\n indices[fidx++] = a;\r\n indices[fidx++] = c;\r\n indices[fidx++] = d;\r\n }\r\n else if (j == 1) {\r\n indices[fidx++] = a;\r\n indices[fidx++] = b;\r\n indices[fidx++] = c;\r\n }\r\n else {\r\n indices[fidx++] = a;\r\n indices[fidx++] = b;\r\n indices[fidx++] = c;\r\n indices[fidx++] = a;\r\n indices[fidx++] = c;\r\n indices[fidx++] = d;\r\n }\r\n }\r\n vidx += stride;\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n var lineGraphics = target;\r\n var numSegments = this._segmentsH * this._segmentsW * 2 + this._segmentsW;\r\n var positions = new Float32Array(numSegments * 6);\r\n var thickness = new Float32Array(numSegments);\r\n vidx = 0;\r\n fidx = 0;\r\n for (j = 0; j <= this._segmentsH; ++j) {\r\n var horangle = Math.PI * j / this._segmentsH;\r\n var z = -this._radius * Math.cos(horangle);\r\n var ringradius = this._radius * Math.sin(horangle);\r\n for (i = 0; i <= this._segmentsW; ++i) {\r\n var verangle = 2 * Math.PI * i / this._segmentsW;\r\n var x = ringradius * Math.cos(verangle);\r\n var y = ringradius * Math.sin(verangle);\r\n if (this._yUp) {\r\n comp1 = -z;\r\n comp2 = y;\r\n }\r\n else {\r\n comp1 = y;\r\n comp2 = z;\r\n }\r\n if (i > 0) {\r\n //horizonal lines\r\n positions[vidx++] = x;\r\n positions[vidx++] = comp1;\r\n positions[vidx++] = comp2;\r\n thickness[fidx++] = 1;\r\n //vertical lines\r\n if (j > 0) {\r\n var addx = (j == 1) ? 3 - (6 * (this._segmentsW - i) + 12 * i) : 3 - this._segmentsW * 12;\r\n positions[vidx] = positions[vidx++ + addx];\r\n positions[vidx] = positions[vidx++ + addx];\r\n positions[vidx] = positions[vidx++ + addx];\r\n positions[vidx++] = x;\r\n positions[vidx++] = comp1;\r\n positions[vidx++] = comp2;\r\n thickness[fidx++] = 1;\r\n }\r\n }\r\n //horizonal lines\r\n if (i < this._segmentsW) {\r\n positions[vidx++] = x;\r\n positions[vidx++] = comp1;\r\n positions[vidx++] = comp2;\r\n }\r\n }\r\n }\r\n // build real data from raw data\r\n lineGraphics.setPositions(positions);\r\n lineGraphics.setThickness(thickness);\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveSpherePrefab.prototype._pBuildUVs = function (target, elementsType) {\r\n var i, j;\r\n var numVertices = (this._segmentsH + 1) * (this._segmentsW + 1);\r\n var uvs;\r\n var stride;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n numVertices = (this._segmentsH + 1) * (this._segmentsW + 1);\r\n var triangleGraphics = target;\r\n if (triangleGraphics.uvs && numVertices == triangleGraphics.numVertices) {\r\n triangleGraphics.invalidateVertices(triangleGraphics.uvs);\r\n }\r\n else {\r\n triangleGraphics.setUVs(new Float32Array(numVertices * 2));\r\n }\r\n uvs = triangleGraphics.uvs.get(numVertices);\r\n stride = triangleGraphics.uvs.stride;\r\n var index = 0;\r\n for (j = 0; j <= this._segmentsH; ++j) {\r\n for (i = 0; i <= this._segmentsW; ++i) {\r\n uvs[index] = (i / this._segmentsW) * this._scaleU;\r\n uvs[index + 1] = (j / this._segmentsH) * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n }\r\n };\r\n return PrimitiveSpherePrefab;\r\n}(PrimitivePrefabBase));\r\nexport { PrimitiveSpherePrefab };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrimitiveSpherePrefab.js","import * as tslib_1 from \"tslib\";\r\nimport { PlaneClassification } from \"@awayjs/core\";\r\nimport { ElementsType } from \"@awayjs/graphics\";\r\nimport { PrimitiveSpherePrefab } from \"../prefabs/PrimitiveSpherePrefab\";\r\nimport { BoundingVolumeBase } from \"./BoundingVolumeBase\";\r\nvar BoundingSphere = (function (_super) {\r\n tslib_1.__extends(BoundingSphere, _super);\r\n function BoundingSphere(entity) {\r\n var _this = _super.call(this, entity) || this;\r\n _this._radius = 0;\r\n _this._centerX = 0;\r\n _this._centerY = 0;\r\n _this._centerZ = 0;\r\n return _this;\r\n }\r\n BoundingSphere.prototype.nullify = function () {\r\n this._centerX = this._centerY = this._centerZ = 0;\r\n this._radius = 0;\r\n };\r\n BoundingSphere.prototype.isInFrustum = function (planes, numPlanes) {\r\n if (this._pInvalidated)\r\n this._pUpdate();\r\n for (var i = 0; i < numPlanes; ++i) {\r\n var plane = planes[i];\r\n var flippedExtentX = plane.a < 0 ? -this._radius : this._radius;\r\n var flippedExtentY = plane.b < 0 ? -this._radius : this._radius;\r\n var flippedExtentZ = plane.c < 0 ? -this._radius : this._radius;\r\n var projDist = plane.a * (this._centerX + flippedExtentX) + plane.b * (this._centerY + flippedExtentY) + plane.c * (this._centerZ + flippedExtentZ) - plane.d;\r\n if (projDist < 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n BoundingSphere.prototype.rayIntersection = function (position, direction, targetNormal) {\r\n if (this._pInvalidated)\r\n this._pUpdate();\r\n return this._sphere.rayIntersection(position, direction, targetNormal);\r\n };\r\n //@override\r\n BoundingSphere.prototype.classifyToPlane = function (plane) {\r\n var a = plane.a;\r\n var b = plane.b;\r\n var c = plane.c;\r\n var dd = a * this._centerX + b * this._centerY + c * this._centerZ - plane.d;\r\n if (a < 0)\r\n a = -a;\r\n if (b < 0)\r\n b = -b;\r\n if (c < 0)\r\n c = -c;\r\n var rr = (a + b + c) * this._radius;\r\n return dd > rr ? PlaneClassification.FRONT : dd < -rr ? PlaneClassification.BACK : PlaneClassification.INTERSECT;\r\n };\r\n BoundingSphere.prototype._pUpdate = function () {\r\n _super.prototype._pUpdate.call(this);\r\n this._sphere = this._entity.getSphere();\r\n var matrix = this._entity.transform.concatenatedMatrix3D;\r\n var cx = this._sphere.x;\r\n var cy = this._sphere.y;\r\n var cz = this._sphere.z;\r\n var r = this._sphere.radius;\r\n var raw = matrix._rawData;\r\n var m11 = raw[0], m12 = raw[4], m13 = raw[8], m14 = raw[12];\r\n var m21 = raw[1], m22 = raw[5], m23 = raw[9], m24 = raw[13];\r\n var m31 = raw[2], m32 = raw[6], m33 = raw[10], m34 = raw[14];\r\n this._centerX = cx * m11 + cy * m12 + cz * m13 + m14;\r\n this._centerY = cx * m21 + cy * m22 + cz * m23 + m24;\r\n this._centerZ = cx * m31 + cy * m32 + cz * m33 + m34;\r\n var rx = m11 + m12 + m13;\r\n var ry = m21 + m22 + m23;\r\n var rz = m31 + m32 + m33;\r\n this._radius = r * Math.sqrt((rx * rx + ry * ry + rz * rz) / 3);\r\n if (this._prefab) {\r\n this._prefab.radius = r;\r\n this._pBoundsPrimitive.x = cx;\r\n this._pBoundsPrimitive.y = cy;\r\n this._pBoundsPrimitive.z = cz;\r\n this._pBoundsPrimitive.transform.matrix3D = matrix;\r\n }\r\n };\r\n BoundingSphere.prototype._pCreateBoundsPrimitive = function () {\r\n this._prefab = new PrimitiveSpherePrefab(null, ElementsType.LINE);\r\n return this._prefab.getNewObject();\r\n };\r\n return BoundingSphere;\r\n}(BoundingVolumeBase));\r\nexport { BoundingSphere };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/bounds/BoundingSphere.js","import * as tslib_1 from \"tslib\";\r\nimport { PlaneClassification } from \"@awayjs/core\";\r\nimport { BoundingVolumeBase } from \"../bounds/BoundingVolumeBase\";\r\nvar NullBounds = (function (_super) {\r\n tslib_1.__extends(NullBounds, _super);\r\n function NullBounds(alwaysIn) {\r\n if (alwaysIn === void 0) { alwaysIn = true; }\r\n var _this = _super.call(this, null) || this;\r\n _this._alwaysIn = alwaysIn;\r\n return _this;\r\n }\r\n //@override\r\n NullBounds.prototype.clone = function () {\r\n return new NullBounds(this._alwaysIn);\r\n };\r\n //@override\r\n NullBounds.prototype.isInFrustum = function (planes, numPlanes) {\r\n return this._alwaysIn;\r\n };\r\n NullBounds.prototype.classifyToPlane = function (plane) {\r\n return PlaneClassification.INTERSECT;\r\n };\r\n return NullBounds;\r\n}(BoundingVolumeBase));\r\nexport { NullBounds };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/bounds/NullBounds.js","import { AbstractMethodError } from \"@awayjs/core\";\r\nvar ControllerBase = (function () {\r\n function ControllerBase(targetObject) {\r\n if (targetObject === void 0) { targetObject = null; }\r\n this._pAutoUpdate = true;\r\n this.targetObject = targetObject;\r\n }\r\n ControllerBase.prototype.pNotifyUpdate = function () {\r\n if (this._pTargetObject)\r\n this._pTargetObject.invalidatePartitionBounds();\r\n };\r\n Object.defineProperty(ControllerBase.prototype, \"targetObject\", {\r\n get: function () {\r\n return this._pTargetObject;\r\n },\r\n set: function (val) {\r\n if (this._pTargetObject == val)\r\n return;\r\n if (this._pTargetObject && this._pAutoUpdate)\r\n this._pTargetObject._iController = null;\r\n this._pTargetObject = val;\r\n if (this._pTargetObject && this._pAutoUpdate)\r\n this._pTargetObject._iController = this;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ControllerBase.prototype, \"autoUpdate\", {\r\n get: function () {\r\n return this._pAutoUpdate;\r\n },\r\n set: function (val) {\r\n if (this._pAutoUpdate == val)\r\n return;\r\n this._pAutoUpdate = val;\r\n if (this._pTargetObject) {\r\n if (this._pAutoUpdate)\r\n this._pTargetObject._iController = this;\r\n else\r\n this._pTargetObject._iController = null;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ControllerBase.prototype.update = function (interpolate) {\r\n if (interpolate === void 0) { interpolate = true; }\r\n throw new AbstractMethodError();\r\n };\r\n ControllerBase.prototype.updateController = function () {\r\n if (this._pControllerDirty && this._pAutoUpdate) {\r\n this._pControllerDirty = false;\r\n this.pNotifyUpdate();\r\n }\r\n };\r\n return ControllerBase;\r\n}());\r\nexport { ControllerBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/controllers/ControllerBase.js","import * as tslib_1 from \"tslib\";\r\nimport { MathConsts } from \"@awayjs/core\";\r\nimport { ControllerBase } from \"../controllers/ControllerBase\";\r\n/**\r\n * Extended camera used to hover round a specified target object.\r\n *\r\n * @see away3d.containers.View3D\r\n */\r\nvar FirstPersonController = (function (_super) {\r\n tslib_1.__extends(FirstPersonController, _super);\r\n /**\r\n * Creates a new HoverController object.\r\n */\r\n function FirstPersonController(targetObject, panAngle, tiltAngle, minTiltAngle, maxTiltAngle, steps, wrapPanAngle) {\r\n if (targetObject === void 0) { targetObject = null; }\r\n if (panAngle === void 0) { panAngle = 0; }\r\n if (tiltAngle === void 0) { tiltAngle = 90; }\r\n if (minTiltAngle === void 0) { minTiltAngle = -90; }\r\n if (maxTiltAngle === void 0) { maxTiltAngle = 90; }\r\n if (steps === void 0) { steps = 8; }\r\n if (wrapPanAngle === void 0) { wrapPanAngle = false; }\r\n var _this = _super.call(this, targetObject) || this;\r\n _this._iCurrentPanAngle = 0;\r\n _this._iCurrentTiltAngle = 90;\r\n _this._panAngle = 0;\r\n _this._tiltAngle = 90;\r\n _this._minTiltAngle = -90;\r\n _this._maxTiltAngle = 90;\r\n _this._steps = 8;\r\n _this._walkIncrement = 0;\r\n _this._strafeIncrement = 0;\r\n _this._wrapPanAngle = false;\r\n _this.fly = false;\r\n _this.panAngle = panAngle;\r\n _this.tiltAngle = tiltAngle;\r\n _this.minTiltAngle = minTiltAngle;\r\n _this.maxTiltAngle = maxTiltAngle;\r\n _this.steps = steps;\r\n _this.wrapPanAngle = wrapPanAngle;\r\n //values passed in contrustor are applied immediately\r\n _this._iCurrentPanAngle = _this._panAngle;\r\n _this._iCurrentTiltAngle = _this._tiltAngle;\r\n return _this;\r\n }\r\n Object.defineProperty(FirstPersonController.prototype, \"steps\", {\r\n /**\r\n * Fractional step taken each time the hover() method is called. Defaults to 8.\r\n *\r\n * Affects the speed at which the tiltAngle and panAngle resolve to their targets.\r\n *\r\n * @see #tiltAngle\r\n * @see #panAngle\r\n */\r\n get: function () {\r\n return this._steps;\r\n },\r\n set: function (val) {\r\n val = (val < 1) ? 1 : val;\r\n if (this._steps == val)\r\n return;\r\n this._steps = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirstPersonController.prototype, \"panAngle\", {\r\n /**\r\n * Rotation of the camera in degrees around the y axis. Defaults to 0.\r\n */\r\n get: function () {\r\n return this._panAngle;\r\n },\r\n set: function (val) {\r\n if (this._panAngle == val)\r\n return;\r\n this._panAngle = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirstPersonController.prototype, \"tiltAngle\", {\r\n /**\r\n * Elevation angle of the camera in degrees. Defaults to 90.\r\n */\r\n get: function () {\r\n return this._tiltAngle;\r\n },\r\n set: function (val) {\r\n val = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, val));\r\n if (this._tiltAngle == val)\r\n return;\r\n this._tiltAngle = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirstPersonController.prototype, \"minTiltAngle\", {\r\n /**\r\n * Minimum bounds for the tiltAngle. Defaults to -90.\r\n *\r\n * @see #tiltAngle\r\n */\r\n get: function () {\r\n return this._minTiltAngle;\r\n },\r\n set: function (val) {\r\n if (this._minTiltAngle == val)\r\n return;\r\n this._minTiltAngle = val;\r\n this.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirstPersonController.prototype, \"maxTiltAngle\", {\r\n /**\r\n * Maximum bounds for the tiltAngle. Defaults to 90.\r\n *\r\n * @see #tiltAngle\r\n */\r\n get: function () {\r\n return this._maxTiltAngle;\r\n },\r\n set: function (val) {\r\n if (this._maxTiltAngle == val)\r\n return;\r\n this._maxTiltAngle = val;\r\n this.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirstPersonController.prototype, \"wrapPanAngle\", {\r\n /**\r\n * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.\r\n */\r\n get: function () {\r\n return this._wrapPanAngle;\r\n },\r\n set: function (val) {\r\n if (this._wrapPanAngle == val)\r\n return;\r\n this._wrapPanAngle = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates the current tilt angle and pan angle values.\r\n *\r\n * Values are calculated using the defined tiltAngle, panAngle and steps variables.\r\n *\r\n * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.\r\n *\r\n * @see #tiltAngle\r\n * @see #panAngle\r\n * @see #steps\r\n */\r\n FirstPersonController.prototype.update = function (interpolate) {\r\n if (interpolate === void 0) { interpolate = true; }\r\n if (this._tiltAngle != this._iCurrentTiltAngle || this._panAngle != this._iCurrentPanAngle) {\r\n this._pControllerDirty = true;\r\n if (this._wrapPanAngle) {\r\n if (this._panAngle < 0) {\r\n this._iCurrentPanAngle += this._panAngle % 360 + 360 - this._panAngle;\r\n this._panAngle = this._panAngle % 360 + 360;\r\n }\r\n else {\r\n this._iCurrentPanAngle += this._panAngle % 360 - this._panAngle;\r\n this._panAngle = this._panAngle % 360;\r\n }\r\n while (this._panAngle - this._iCurrentPanAngle < -180)\r\n this._iCurrentPanAngle -= 360;\r\n while (this._panAngle - this._iCurrentPanAngle > 180)\r\n this._iCurrentPanAngle += 360;\r\n }\r\n if (interpolate) {\r\n this._iCurrentTiltAngle += (this._tiltAngle - this._iCurrentTiltAngle) / (this.steps + 1);\r\n this._iCurrentPanAngle += (this._panAngle - this._iCurrentPanAngle) / (this.steps + 1);\r\n }\r\n else {\r\n this._iCurrentTiltAngle = this._tiltAngle;\r\n this._iCurrentPanAngle = this._panAngle;\r\n }\r\n //snap coords if angle differences are close\r\n if ((Math.abs(this.tiltAngle - this._iCurrentTiltAngle) < 0.01) && (Math.abs(this._panAngle - this._iCurrentPanAngle) < 0.01)) {\r\n this._iCurrentTiltAngle = this._tiltAngle;\r\n this._iCurrentPanAngle = this._panAngle;\r\n }\r\n }\r\n this.targetObject.rotationX = this._iCurrentTiltAngle;\r\n this.targetObject.rotationY = this._iCurrentPanAngle;\r\n if (this._walkIncrement) {\r\n if (this.fly) {\r\n this.targetObject.transform.moveForward(this._walkIncrement);\r\n }\r\n else {\r\n this.targetObject.x += this._walkIncrement * Math.sin(this._panAngle * MathConsts.DEGREES_TO_RADIANS);\r\n this.targetObject.z += this._walkIncrement * Math.cos(this._panAngle * MathConsts.DEGREES_TO_RADIANS);\r\n }\r\n this._walkIncrement = 0;\r\n }\r\n if (this._strafeIncrement) {\r\n this.targetObject.transform.moveRight(this._strafeIncrement);\r\n this._strafeIncrement = 0;\r\n }\r\n };\r\n FirstPersonController.prototype.incrementWalk = function (val) {\r\n if (val == 0)\r\n return;\r\n this._walkIncrement += val;\r\n this.pNotifyUpdate();\r\n };\r\n FirstPersonController.prototype.incrementStrafe = function (val) {\r\n if (val == 0)\r\n return;\r\n this._strafeIncrement += val;\r\n this.pNotifyUpdate();\r\n };\r\n return FirstPersonController;\r\n}(ControllerBase));\r\nexport { FirstPersonController };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/controllers/FirstPersonController.js","import * as tslib_1 from \"tslib\";\r\nimport { Vector3D } from \"@awayjs/core\";\r\nimport { ControllerBase } from \"../controllers/ControllerBase\";\r\nimport { DisplayObjectEvent } from \"../events/DisplayObjectEvent\";\r\nvar LookAtController = (function (_super) {\r\n tslib_1.__extends(LookAtController, _super);\r\n function LookAtController(targetObject, lookAtObject) {\r\n if (targetObject === void 0) { targetObject = null; }\r\n if (lookAtObject === void 0) { lookAtObject = null; }\r\n var _this = _super.call(this, targetObject) || this;\r\n _this._pOrigin = new Vector3D(0.0, 0.0, 0.0);\r\n _this._onLookAtObjectChangedDelegate = function (event) { return _this.onLookAtObjectChanged(event); };\r\n if (lookAtObject)\r\n _this.lookAtObject = lookAtObject;\r\n else\r\n _this.lookAtPosition = new Vector3D();\r\n return _this;\r\n }\r\n Object.defineProperty(LookAtController.prototype, \"lookAtPosition\", {\r\n get: function () {\r\n return this._pLookAtPosition;\r\n },\r\n set: function (val) {\r\n if (this._pLookAtObject) {\r\n this._pLookAtObject.removeEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);\r\n this._pLookAtObject = null;\r\n }\r\n this._pLookAtPosition = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LookAtController.prototype, \"lookAtObject\", {\r\n get: function () {\r\n return this._pLookAtObject;\r\n },\r\n set: function (val) {\r\n if (this._pLookAtPosition)\r\n this._pLookAtPosition = null;\r\n if (this._pLookAtObject == val)\r\n return;\r\n if (this._pLookAtObject)\r\n this._pLookAtObject.removeEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);\r\n this._pLookAtObject = val;\r\n if (this._pLookAtObject)\r\n this._pLookAtObject.addEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n //@override\r\n LookAtController.prototype.update = function (interpolate) {\r\n if (interpolate === void 0) { interpolate = true; }\r\n if (this._pTargetObject) {\r\n if (this._pLookAtPosition)\r\n this._pTargetObject.lookAt(this._pLookAtPosition);\r\n else if (this._pLookAtObject)\r\n this._pTargetObject.lookAt(this._pLookAtObject.scene ? this._pLookAtObject.scenePosition : this._pLookAtObject.transform.position);\r\n }\r\n };\r\n LookAtController.prototype.onLookAtObjectChanged = function (event) {\r\n this.pNotifyUpdate();\r\n };\r\n return LookAtController;\r\n}(ControllerBase));\r\nexport { LookAtController };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/controllers/LookAtController.js","import * as tslib_1 from \"tslib\";\r\nimport { MathConsts, Vector3D } from \"@awayjs/core\";\r\nimport { LookAtController } from \"../controllers/LookAtController\";\r\n/**\r\n * Extended camera used to hover round a specified target object.\r\n *\r\n * @see away.containers.View\r\n */\r\nvar HoverController = (function (_super) {\r\n tslib_1.__extends(HoverController, _super);\r\n /**\r\n * Creates a new HoverController object.\r\n */\r\n function HoverController(targetObject, lookAtObject, panAngle, tiltAngle, distance, minTiltAngle, maxTiltAngle, minPanAngle, maxPanAngle, steps, yFactor, wrapPanAngle) {\r\n if (targetObject === void 0) { targetObject = null; }\r\n if (lookAtObject === void 0) { lookAtObject = null; }\r\n if (panAngle === void 0) { panAngle = 0; }\r\n if (tiltAngle === void 0) { tiltAngle = 90; }\r\n if (distance === void 0) { distance = 1000; }\r\n if (minTiltAngle === void 0) { minTiltAngle = -90; }\r\n if (maxTiltAngle === void 0) { maxTiltAngle = 90; }\r\n if (minPanAngle === void 0) { minPanAngle = null; }\r\n if (maxPanAngle === void 0) { maxPanAngle = null; }\r\n if (steps === void 0) { steps = 8; }\r\n if (yFactor === void 0) { yFactor = 2; }\r\n if (wrapPanAngle === void 0) { wrapPanAngle = false; }\r\n var _this = _super.call(this, targetObject, lookAtObject) || this;\r\n _this._iCurrentPanAngle = 0;\r\n _this._iCurrentTiltAngle = 90;\r\n _this._panAngle = 0;\r\n _this._tiltAngle = 90;\r\n _this._distance = 1000;\r\n _this._minPanAngle = -Infinity;\r\n _this._maxPanAngle = Infinity;\r\n _this._minTiltAngle = -90;\r\n _this._maxTiltAngle = 90;\r\n _this._steps = 8;\r\n _this._yFactor = 2;\r\n _this._wrapPanAngle = false;\r\n _this._upAxis = new Vector3D();\r\n _this.distance = distance;\r\n _this.panAngle = panAngle;\r\n _this.tiltAngle = tiltAngle;\r\n _this.minPanAngle = (minPanAngle != null) ? minPanAngle : -Infinity;\r\n _this.maxPanAngle = (maxPanAngle != null) ? maxPanAngle : Infinity;\r\n _this.minTiltAngle = minTiltAngle;\r\n _this.maxTiltAngle = maxTiltAngle;\r\n _this.steps = steps;\r\n _this.yFactor = yFactor;\r\n _this.wrapPanAngle = wrapPanAngle;\r\n //values passed in contrustor are applied immediately\r\n _this._iCurrentPanAngle = _this._panAngle;\r\n _this._iCurrentTiltAngle = _this._tiltAngle;\r\n return _this;\r\n }\r\n Object.defineProperty(HoverController.prototype, \"steps\", {\r\n /**\r\n * Fractional step taken each time the hover() method is called. Defaults to 8.\r\n *\r\n * Affects the speed at which the tiltAngle and panAngle resolve to their targets.\r\n *\r\n * @see #tiltAngle\r\n * @see #panAngle\r\n */\r\n get: function () {\r\n return this._steps;\r\n },\r\n set: function (val) {\r\n val = (val < 1) ? 1 : val;\r\n if (this._steps == val)\r\n return;\r\n this._steps = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HoverController.prototype, \"panAngle\", {\r\n /**\r\n * Rotation of the camera in degrees around the y axis. Defaults to 0.\r\n */\r\n get: function () {\r\n return this._panAngle;\r\n },\r\n set: function (val) {\r\n val = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, val));\r\n if (this._panAngle == val)\r\n return;\r\n this._panAngle = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HoverController.prototype, \"tiltAngle\", {\r\n /**\r\n * Elevation angle of the camera in degrees. Defaults to 90.\r\n */\r\n get: function () {\r\n return this._tiltAngle;\r\n },\r\n set: function (val) {\r\n val = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, val));\r\n if (this._tiltAngle == val)\r\n return;\r\n this._tiltAngle = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HoverController.prototype, \"distance\", {\r\n /**\r\n * Distance between the camera and the specified target. Defaults to 1000.\r\n */\r\n get: function () {\r\n return this._distance;\r\n },\r\n set: function (val) {\r\n if (this._distance == val)\r\n return;\r\n this._distance = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HoverController.prototype, \"minPanAngle\", {\r\n /**\r\n * Minimum bounds for the panAngle. Defaults to -Infinity.\r\n *\r\n * @see #panAngle\r\n */\r\n get: function () {\r\n return this._minPanAngle;\r\n },\r\n set: function (val) {\r\n if (this._minPanAngle == val)\r\n return;\r\n this._minPanAngle = val;\r\n this.panAngle = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, this._panAngle));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HoverController.prototype, \"maxPanAngle\", {\r\n /**\r\n * Maximum bounds for the panAngle. Defaults to Infinity.\r\n *\r\n * @see #panAngle\r\n */\r\n get: function () {\r\n return this._maxPanAngle;\r\n },\r\n set: function (val) {\r\n if (this._maxPanAngle == val)\r\n return;\r\n this._maxPanAngle = val;\r\n this.panAngle = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, this._panAngle));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HoverController.prototype, \"minTiltAngle\", {\r\n /**\r\n * Minimum bounds for the tiltAngle. Defaults to -90.\r\n *\r\n * @see #tiltAngle\r\n */\r\n get: function () {\r\n return this._minTiltAngle;\r\n },\r\n set: function (val) {\r\n if (this._minTiltAngle == val)\r\n return;\r\n this._minTiltAngle = val;\r\n this.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HoverController.prototype, \"maxTiltAngle\", {\r\n /**\r\n * Maximum bounds for the tiltAngle. Defaults to 90.\r\n *\r\n * @see #tiltAngle\r\n */\r\n get: function () {\r\n return this._maxTiltAngle;\r\n },\r\n set: function (val) {\r\n if (this._maxTiltAngle == val)\r\n return;\r\n this._maxTiltAngle = val;\r\n this.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HoverController.prototype, \"yFactor\", {\r\n /**\r\n * Fractional difference in distance between the horizontal camera orientation and vertical camera orientation. Defaults to 2.\r\n *\r\n * @see #distance\r\n */\r\n get: function () {\r\n return this._yFactor;\r\n },\r\n set: function (val) {\r\n if (this._yFactor == val)\r\n return;\r\n this._yFactor = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HoverController.prototype, \"wrapPanAngle\", {\r\n /**\r\n * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.\r\n */\r\n get: function () {\r\n return this._wrapPanAngle;\r\n },\r\n set: function (val) {\r\n if (this._wrapPanAngle == val)\r\n return;\r\n this._wrapPanAngle = val;\r\n this.pNotifyUpdate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates the current tilt angle and pan angle values.\r\n *\r\n * Values are calculated using the defined tiltAngle, panAngle and steps variables.\r\n *\r\n * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.\r\n *\r\n * @see #tiltAngle\r\n * @see #panAngle\r\n * @see #steps\r\n */\r\n HoverController.prototype.update = function (interpolate) {\r\n if (interpolate === void 0) { interpolate = true; }\r\n if (this._tiltAngle != this._iCurrentTiltAngle || this._panAngle != this._iCurrentPanAngle) {\r\n this._pControllerDirty = true;\r\n if (this._wrapPanAngle) {\r\n if (this._panAngle < 0) {\r\n this._iCurrentPanAngle += this._panAngle % 360 + 360 - this._panAngle;\r\n this._panAngle = this._panAngle % 360 + 360;\r\n }\r\n else {\r\n this._iCurrentPanAngle += this._panAngle % 360 - this._panAngle;\r\n this._panAngle = this._panAngle % 360;\r\n }\r\n while (this._panAngle - this._iCurrentPanAngle < -180)\r\n this._iCurrentPanAngle -= 360;\r\n while (this._panAngle - this._iCurrentPanAngle > 180)\r\n this._iCurrentPanAngle += 360;\r\n }\r\n if (interpolate) {\r\n this._iCurrentTiltAngle += (this._tiltAngle - this._iCurrentTiltAngle) / (this.steps + 1);\r\n this._iCurrentPanAngle += (this._panAngle - this._iCurrentPanAngle) / (this.steps + 1);\r\n }\r\n else {\r\n this._iCurrentPanAngle = this._panAngle;\r\n this._iCurrentTiltAngle = this._tiltAngle;\r\n }\r\n //snap coords if angle differences are close\r\n if ((Math.abs(this.tiltAngle - this._iCurrentTiltAngle) < 0.01) && (Math.abs(this._panAngle - this._iCurrentPanAngle) < 0.01)) {\r\n this._iCurrentTiltAngle = this._tiltAngle;\r\n this._iCurrentPanAngle = this._panAngle;\r\n }\r\n }\r\n var pos = (this.lookAtObject) ? this.lookAtObject.transform.position : (this.lookAtPosition) ? this.lookAtPosition : this._pOrigin;\r\n this.targetObject.x = pos.x + this.distance * Math.sin(this._iCurrentPanAngle * MathConsts.DEGREES_TO_RADIANS) * Math.cos(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);\r\n this.targetObject.y = pos.y + this.distance * Math.sin(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS) * this.yFactor;\r\n this.targetObject.z = pos.z + this.distance * Math.cos(this._iCurrentPanAngle * MathConsts.DEGREES_TO_RADIANS) * Math.cos(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);\r\n this._upAxis.x = -Math.sin(this._iCurrentPanAngle * MathConsts.DEGREES_TO_RADIANS) * Math.sin(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);\r\n this._upAxis.y = Math.cos(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);\r\n this._upAxis.z = -Math.cos(this._iCurrentPanAngle * MathConsts.DEGREES_TO_RADIANS) * Math.sin(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);\r\n if (this._pTargetObject) {\r\n if (this._pLookAtPosition)\r\n this._pTargetObject.lookAt(this._pLookAtPosition, this._upAxis);\r\n else if (this._pLookAtObject)\r\n this._pTargetObject.lookAt(this._pLookAtObject.scene ? this._pLookAtObject.scenePosition : this._pLookAtObject.transform.position, this._upAxis);\r\n }\r\n };\r\n return HoverController;\r\n}(LookAtController));\r\nexport { HoverController };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/controllers/HoverController.js","import * as tslib_1 from \"tslib\";\r\nimport { HoverController } from \"../controllers/HoverController\";\r\n/**\r\n * Controller used to follow behind an object on the XZ plane, with an optional\r\n * elevation (tiltAngle).\r\n *\r\n * @see away3d.containers.View3D\r\n */\r\nvar FollowController = (function (_super) {\r\n tslib_1.__extends(FollowController, _super);\r\n function FollowController(targetObject, lookAtObject, tiltAngle, distance) {\r\n if (targetObject === void 0) { targetObject = null; }\r\n if (lookAtObject === void 0) { lookAtObject = null; }\r\n if (tiltAngle === void 0) { tiltAngle = 45; }\r\n if (distance === void 0) { distance = 700; }\r\n return _super.call(this, targetObject, lookAtObject, 0, tiltAngle, distance) || this;\r\n }\r\n FollowController.prototype.update = function (interpolate) {\r\n if (interpolate === void 0) { interpolate = true; }\r\n if (!this.lookAtObject)\r\n return;\r\n this.panAngle = this._pLookAtObject.rotationY - 180;\r\n _super.prototype.update.call(this);\r\n };\r\n return FollowController;\r\n}(HoverController));\r\nexport { FollowController };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/controllers/FollowController.js","import * as tslib_1 from \"tslib\";\r\nimport { Vector3D } from \"@awayjs/core\";\r\nimport { LookAtController } from \"../controllers/LookAtController\";\r\n/**\r\n * Uses spring physics to animate the target object towards a position that is\r\n * defined as the lookAtTarget object's position plus the vector defined by the\r\n * positionOffset property.\r\n */\r\nvar SpringController = (function (_super) {\r\n tslib_1.__extends(SpringController, _super);\r\n function SpringController(targetObject, lookAtObject, stiffness, mass, damping) {\r\n if (targetObject === void 0) { targetObject = null; }\r\n if (lookAtObject === void 0) { lookAtObject = null; }\r\n if (stiffness === void 0) { stiffness = 1; }\r\n if (mass === void 0) { mass = 40; }\r\n if (damping === void 0) { damping = 4; }\r\n var _this = _super.call(this, targetObject, lookAtObject) || this;\r\n /**\r\n * Offset of spring center from target in target object space, ie: Where the camera should ideally be in the target object space.\r\n */\r\n _this.positionOffset = new Vector3D(0, 500, -1000);\r\n _this.stiffness = stiffness;\r\n _this.damping = damping;\r\n _this.mass = mass;\r\n _this._velocity = new Vector3D();\r\n _this._dv = new Vector3D();\r\n _this._stretch = new Vector3D();\r\n _this._force = new Vector3D();\r\n _this._acceleration = new Vector3D();\r\n _this._desiredPosition = new Vector3D();\r\n return _this;\r\n }\r\n SpringController.prototype.update = function (interpolate) {\r\n if (interpolate === void 0) { interpolate = true; }\r\n var offs;\r\n if (!this._pLookAtObject || !this._pTargetObject)\r\n return;\r\n this._pControllerDirty = true;\r\n offs = this._pLookAtObject.transform.matrix3D.deltaTransformVector(this.positionOffset);\r\n this._desiredPosition.x = this._pLookAtObject.x + offs.x;\r\n this._desiredPosition.y = this._pLookAtObject.y + offs.y;\r\n this._desiredPosition.z = this._pLookAtObject.z + offs.z;\r\n this._stretch = this._pTargetObject.transform.position.add(this._desiredPosition);\r\n this._stretch.scaleBy(-this.stiffness);\r\n this._dv.copyFrom(this._velocity);\r\n this._dv.scaleBy(this.damping);\r\n this._force.x = this._stretch.x - this._dv.x;\r\n this._force.y = this._stretch.y - this._dv.y;\r\n this._force.z = this._stretch.z - this._dv.z;\r\n this._acceleration.copyFrom(this._force);\r\n this._acceleration.scaleBy(1 / this.mass);\r\n this._velocity.incrementBy(this._acceleration);\r\n var position = this._pTargetObject.transform.position.add(this._velocity);\r\n this._pTargetObject.transform.moveTo(position.x, position.y, position.z);\r\n _super.prototype.update.call(this);\r\n };\r\n return SpringController;\r\n}(LookAtController));\r\nexport { SpringController };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/controllers/SpringController.js","import * as tslib_1 from \"tslib\";\r\nimport { Rectangle } from \"@awayjs/core\";\r\nimport { TraverserBase, RenderableEvent, MaterialEvent, DefaultMaterialManager } from \"@awayjs/graphics\";\r\nimport { BoundsType } from \"../bounds/BoundsType\";\r\nimport { DisplayObjectContainer } from \"./DisplayObjectContainer\";\r\n/**\r\n * The Billboard class represents display objects that represent bitmap images.\r\n * These can be images that you load with the flash.Assets or\r\n * flash.display.Loader classes, or they can be images that you\r\n * create with the Billboard() constructor.\r\n *\r\n *

The Billboard() constructor allows you to create a Billboard\r\n * object that contains a reference to a Image2D object. After you create a\r\n * Billboard object, use the addChild() or addChildAt()\r\n * method of the parent DisplayObjectContainer instance to place the bitmap on\r\n * the display list.

\r\n *\r\n *

A Billboard object can share its Image2D reference among several Billboard\r\n * objects, independent of translation or rotation properties. Because you can\r\n * create multiple Billboard objects that reference the same Image2D object,\r\n * multiple display objects can use the same complex Image2D object without\r\n * incurring the memory overhead of a Image2D object for each display\r\n * object instance.

\r\n *\r\n *

A Image2D object can be drawn to the screen by a Billboard object in one\r\n * of two ways: by using the default hardware renderer with a single hardware surface,\r\n * or by using the slower software renderer when 3D acceleration is not available.

\r\n *\r\n *

If you would prefer to perform a batch rendering command, rather than using a\r\n * single surface for each Billboard object, you can also draw to the screen using the\r\n * drawTiles() or drawTriangles() methods which are\r\n * available to flash.display.Tilesheet and flash.display.Graphics\r\n * objects.

\r\n *\r\n *

Note: The Billboard class is not a subclass of the InteractiveObject\r\n * class, so it cannot dispatch mouse events. However, you can use the\r\n * addEventListener() method of the display object container that\r\n * contains the Billboard object.

\r\n */\r\n// todo: billboard needed to extend on DisplayObjectContainer in order for as3web/away3d adapters to compile without errors\r\n// (in away3d Sprite3D extends on ObjectContainer3D)\r\nvar Billboard = (function (_super) {\r\n tslib_1.__extends(Billboard, _super);\r\n function Billboard(material, pixelSnapping, smoothing) {\r\n if (pixelSnapping === void 0) { pixelSnapping = \"auto\"; }\r\n if (smoothing === void 0) { smoothing = false; }\r\n var _this = _super.call(this) || this;\r\n _this._pIsEntity = true;\r\n _this._onInvalidateTextureDelegate = function (event) { return _this._onInvalidateTexture(event); };\r\n _this.material = material;\r\n _this._updateDimensions();\r\n //default bounds type\r\n _this._boundsType = BoundsType.AXIS_ALIGNED_BOX;\r\n return _this;\r\n }\r\n Object.defineProperty(Billboard.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return Billboard.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Billboard.prototype, \"billboardRect\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._billboardRect;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Billboard.prototype, \"billboardHeight\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._billboardHeight;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Billboard.prototype, \"billboardWidth\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._billboardWidth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Billboard.prototype, \"material\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._material;\r\n },\r\n set: function (value) {\r\n if (value == this._material)\r\n return;\r\n if (this._material) {\r\n this._material.iRemoveOwner(this);\r\n this._material.removeEventListener(MaterialEvent.INVALIDATE_TEXTURE, this._onInvalidateTextureDelegate);\r\n }\r\n this._material = value;\r\n if (this._material) {\r\n this._material.iAddOwner(this);\r\n this._material.addEventListener(MaterialEvent.INVALIDATE_TEXTURE, this._onInvalidateTextureDelegate);\r\n }\r\n this._updateDimensions();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @protected\r\n */\r\n Billboard.prototype._pUpdateBoxBounds = function () {\r\n _super.prototype._pUpdateBoxBounds.call(this);\r\n this._pBoxBounds.x = 0;\r\n this._pBoxBounds.y = 0;\r\n this._pBoxBounds.z = 0;\r\n this._pBoxBounds.width = this._billboardRect.width;\r\n this._pBoxBounds.height = this._billboardRect.height;\r\n this._pBoxBounds.depth = 0;\r\n };\r\n Billboard.prototype.clone = function () {\r\n var newInstance = new Billboard(this.material);\r\n this.copyTo(newInstance);\r\n return newInstance;\r\n };\r\n Billboard.prototype._acceptTraverser = function (traverser) {\r\n traverser[Billboard.traverseName](this);\r\n };\r\n Billboard.prototype._updateDimensions = function () {\r\n var texture = this.material.getTextureAt(0);\r\n var image = texture ? ((this._style ? this._style.getImageAt(texture) : null) || (this.material.style ? this.material.style.getImageAt(texture) : null) || texture.getImageAt(0)) : null;\r\n if (image) {\r\n var sampler = ((this._style ? this._style.getSamplerAt(texture) : null) || (this.material.style ? this.material.style.getSamplerAt(texture) : null) || texture.getSamplerAt(0) || DefaultMaterialManager.getDefaultSampler());\r\n if (sampler.imageRect) {\r\n this._billboardWidth = sampler.imageRect.width * image.width;\r\n this._billboardHeight = sampler.imageRect.height * image.height;\r\n }\r\n else {\r\n this._billboardWidth = image.rect.width;\r\n this._billboardHeight = image.rect.height;\r\n }\r\n this._billboardRect = sampler.frameRect || new Rectangle(0, 0, this._billboardWidth, this._billboardHeight);\r\n }\r\n else {\r\n this._billboardWidth = 1;\r\n this._billboardHeight = 1;\r\n this._billboardRect = new Rectangle(0, 0, 1, 1);\r\n }\r\n this._pInvalidateBounds();\r\n this.invalidateElements();\r\n if (this._width != null)\r\n this._setScaleX(this._width / this._billboardRect.width);\r\n if (this._height != null)\r\n this._setScaleY(this._height / this._billboardRect.height);\r\n };\r\n Billboard.prototype.invalidateElements = function () {\r\n this.dispatchEvent(new RenderableEvent(RenderableEvent.INVALIDATE_ELEMENTS, this));\r\n };\r\n Billboard.prototype.invalidateMaterial = function () {\r\n this.dispatchEvent(new RenderableEvent(RenderableEvent.INVALIDATE_MATERIAL, this));\r\n };\r\n Billboard.prototype._onInvalidateProperties = function (event) {\r\n if (event === void 0) { event = null; }\r\n this.invalidateMaterial();\r\n this._updateDimensions();\r\n };\r\n /**\r\n * @private\r\n */\r\n Billboard.prototype._onInvalidateTexture = function (event) {\r\n this._updateDimensions();\r\n };\r\n return Billboard;\r\n}(DisplayObjectContainer));\r\nexport { Billboard };\r\nBillboard.traverseName = TraverserBase.addRenderableName(\"applyBillboard\");\r\nBillboard.assetType = \"[asset Billboard]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/Billboard.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\n/**\r\n * @class away.events.CameraEvent\r\n */\r\nvar CameraEvent = (function (_super) {\r\n tslib_1.__extends(CameraEvent, _super);\r\n function CameraEvent(type, camera) {\r\n var _this = _super.call(this, type) || this;\r\n _this._camera = camera;\r\n return _this;\r\n }\r\n Object.defineProperty(CameraEvent.prototype, \"camera\", {\r\n get: function () {\r\n return this._camera;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the event.\r\n * @return An exact duplicate of the current object.\r\n */\r\n CameraEvent.prototype.clone = function () {\r\n return new CameraEvent(this.type, this._camera);\r\n };\r\n return CameraEvent;\r\n}(EventBase));\r\nexport { CameraEvent };\r\nCameraEvent.PROJECTION_CHANGED = \"projectionChanged\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/CameraEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { PerspectiveProjection } from \"@awayjs/core\";\r\nimport { TraverserBase } from \"@awayjs/graphics\";\r\nimport { BoundsType } from \"../bounds/BoundsType\";\r\nimport { CameraEvent } from \"../events/CameraEvent\";\r\nimport { DisplayObjectContainer } from \"./DisplayObjectContainer\";\r\nvar Camera = (function (_super) {\r\n tslib_1.__extends(Camera, _super);\r\n function Camera(projection) {\r\n if (projection === void 0) { projection = null; }\r\n var _this = _super.call(this) || this;\r\n _this._pIsEntity = true;\r\n _this._projection = projection || new PerspectiveProjection();\r\n _this._projection.transform = _this._transform;\r\n _this.z = -1000;\r\n //default bounds type\r\n _this._boundsType = BoundsType.NULL;\r\n return _this;\r\n }\r\n Object.defineProperty(Camera.prototype, \"assetType\", {\r\n //@override\r\n get: function () {\r\n return Camera.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Camera.prototype, \"projection\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._projection;\r\n },\r\n set: function (value) {\r\n if (this._projection == value)\r\n return;\r\n if (!value)\r\n throw new Error(\"Projection cannot be null!\");\r\n this._projection.transform = null;\r\n this._projection = value;\r\n this._projection.transform = this._transform;\r\n this.dispatchEvent(new CameraEvent(CameraEvent.PROJECTION_CHANGED, this));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Calculates the normalised position in screen space of the given scene position.\r\n *\r\n * @param point3d the position vector of the scene coordinates to be projected.\r\n * @return The normalised screen position of the given scene coordinates.\r\n */\r\n Camera.prototype.project = function (vector3D) {\r\n return this._projection.project(vector3D);\r\n };\r\n /**\r\n * Calculates the scene position of the given normalized coordinates in screen space.\r\n *\r\n * @param nX The normalised x coordinate in screen space, minus the originX offset of the projection property.\r\n * @param nY The normalised y coordinate in screen space, minus the originY offset of the projection property.\r\n * @param sZ The z coordinate in screen space, representing the distance into the screen.\r\n * @return The scene position of the given screen coordinates.\r\n */\r\n Camera.prototype.unproject = function (nX, nY, sZ, target) {\r\n if (target === void 0) { target = null; }\r\n return this._projection.unproject(nX, nY, sZ, target);\r\n };\r\n return Camera;\r\n}(DisplayObjectContainer));\r\nexport { Camera };\r\nCamera.traverseName = TraverserBase.addEntityName(\"applyCamera\");\r\nCamera.assetType = \"[asset Camera]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/Camera.js","import * as tslib_1 from \"tslib\";\r\nimport { AbstractMethodError, AssetBase } from \"@awayjs/core\";\r\nvar ShadowMapperBase = (function (_super) {\r\n tslib_1.__extends(ShadowMapperBase, _super);\r\n function ShadowMapperBase() {\r\n var _this = _super.apply(this, arguments) || this;\r\n _this._depthMapSize = 2048;\r\n _this._autoUpdateShadows = true;\r\n return _this;\r\n }\r\n Object.defineProperty(ShadowMapperBase.prototype, \"autoUpdateShadows\", {\r\n get: function () {\r\n return this._autoUpdateShadows;\r\n },\r\n set: function (value) {\r\n this._autoUpdateShadows = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ShadowMapperBase.prototype.updateShadows = function () {\r\n this._iShadowsInvalid = true;\r\n };\r\n ShadowMapperBase.prototype.iSetDepthMap = function (depthMap) {\r\n if (this._depthMap && !this._explicitDepthMap)\r\n this._depthMap.dispose();\r\n this._depthMap = depthMap;\r\n };\r\n Object.defineProperty(ShadowMapperBase.prototype, \"light\", {\r\n get: function () {\r\n return this._light;\r\n },\r\n set: function (value) {\r\n this._light = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShadowMapperBase.prototype, \"depthMap\", {\r\n get: function () {\r\n if (!this._depthMap)\r\n this._depthMap = this._createDepthTexture();\r\n return this._depthMap;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShadowMapperBase.prototype, \"depthMapSize\", {\r\n get: function () {\r\n return this._depthMapSize;\r\n },\r\n set: function (value) {\r\n if (value == this._depthMapSize)\r\n return;\r\n this._setDepthMapSize(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ShadowMapperBase.prototype.dispose = function () {\r\n if (this._depthMap && !this._explicitDepthMap)\r\n this._depthMap.dispose();\r\n this._depthMap = null;\r\n };\r\n ShadowMapperBase.prototype._createDepthTexture = function () {\r\n throw new AbstractMethodError();\r\n };\r\n ShadowMapperBase.prototype.iRenderDepthMap = function (view, renderer) {\r\n this._iShadowsInvalid = false;\r\n this._updateDepthProjection(view.camera.projection);\r\n if (!this._depthMap)\r\n this._depthMap = this._createDepthTexture();\r\n this._drawDepthMap(view, this._depthMap, renderer);\r\n };\r\n ShadowMapperBase.prototype._updateDepthProjection = function (projection) {\r\n throw new AbstractMethodError();\r\n };\r\n ShadowMapperBase.prototype._drawDepthMap = function (view, target, renderer) {\r\n throw new AbstractMethodError();\r\n };\r\n ShadowMapperBase.prototype._setDepthMapSize = function (value) {\r\n this._depthMapSize = value;\r\n if (this._explicitDepthMap) {\r\n throw Error(\"Cannot set depth map size for the current renderer.\");\r\n }\r\n else if (this._depthMap) {\r\n this._depthMap.dispose();\r\n this._depthMap = null;\r\n }\r\n };\r\n return ShadowMapperBase;\r\n}(AssetBase));\r\nexport { ShadowMapperBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shadowmappers/ShadowMapperBase.js","import * as tslib_1 from \"tslib\";\r\nimport { Matrix3D, PerspectiveProjection, Transform } from \"@awayjs/core\";\r\nimport { Image2D, Single2DTexture } from \"@awayjs/graphics\";\r\nimport { ShadowMapperBase } from \"./ShadowMapperBase\";\r\nvar DirectionalShadowMapper = (function (_super) {\r\n tslib_1.__extends(DirectionalShadowMapper, _super);\r\n function DirectionalShadowMapper() {\r\n var _this = _super.call(this) || this;\r\n _this._lightOffset = 10000;\r\n _this._snap = 64;\r\n _this._cullPlanes = [];\r\n _this._overallDepthProjection = new PerspectiveProjection();\r\n _this._overallDepthProjection.transform = new Transform();\r\n _this._localFrustum = [];\r\n _this._matrix = new Matrix3D();\r\n return _this;\r\n }\r\n Object.defineProperty(DirectionalShadowMapper.prototype, \"snap\", {\r\n get: function () {\r\n return this._snap;\r\n },\r\n set: function (value) {\r\n this._snap = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectionalShadowMapper.prototype, \"lightOffset\", {\r\n get: function () {\r\n return this._lightOffset;\r\n },\r\n set: function (value) {\r\n this._lightOffset = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectionalShadowMapper.prototype, \"iDepthProjection\", {\r\n //@arcane\r\n get: function () {\r\n return this._overallDepthProjection.viewMatrix3D;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectionalShadowMapper.prototype, \"depth\", {\r\n //@arcane\r\n get: function () {\r\n return this._maxZ - this._minZ;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DirectionalShadowMapper.prototype.iSetDepthMap = function (depthMap) {\r\n if (this._depthMap == depthMap)\r\n return;\r\n _super.prototype.iSetDepthMap.call(this, depthMap);\r\n if (this._depthMap) {\r\n this._explicitDepthMap = true;\r\n this._depthMapSize = depthMap.image2D.rect.width;\r\n }\r\n else {\r\n this._explicitDepthMap = false;\r\n }\r\n };\r\n DirectionalShadowMapper.prototype._createDepthTexture = function () {\r\n return new Single2DTexture(new Image2D(this._depthMapSize, this._depthMapSize));\r\n };\r\n //@override\r\n DirectionalShadowMapper.prototype._drawDepthMap = function (view, target, renderer) {\r\n renderer.cullPlanes = this._cullPlanes;\r\n renderer._iRender(this._overallDepthProjection, view, target.image2D);\r\n };\r\n /**\r\n *\r\n * @param projection\r\n * @private\r\n */\r\n DirectionalShadowMapper.prototype._updateCullPlanes = function (projection) {\r\n var lightFrustumPlanes = this._overallDepthProjection.frustumPlanes;\r\n var viewFrustumPlanes = projection.frustumPlanes;\r\n this._cullPlanes.length = 4;\r\n this._cullPlanes[0] = lightFrustumPlanes[0];\r\n this._cullPlanes[1] = lightFrustumPlanes[1];\r\n this._cullPlanes[2] = lightFrustumPlanes[2];\r\n this._cullPlanes[3] = lightFrustumPlanes[3];\r\n var light = this._light;\r\n var dir = light.sceneDirection;\r\n var dirX = dir.x;\r\n var dirY = dir.y;\r\n var dirZ = dir.z;\r\n var j = 4;\r\n for (var i = 0; i < 6; ++i) {\r\n var plane = viewFrustumPlanes[i];\r\n if (plane.a * dirX + plane.b * dirY + plane.c * dirZ < 0)\r\n this._cullPlanes[j++] = plane;\r\n }\r\n };\r\n /**\r\n *\r\n * @param projection\r\n * @private\r\n */\r\n DirectionalShadowMapper.prototype._updateDepthProjection = function (projection) {\r\n this._updateProjectionFromFrustumCorners(projection, projection.frustumCorners, this._matrix);\r\n this._overallDepthProjection.frustumMatrix3D = this._matrix;\r\n this._updateCullPlanes(projection);\r\n };\r\n /**\r\n *\r\n * @param projection\r\n * @param matrix\r\n * @private\r\n */\r\n DirectionalShadowMapper.prototype._updateProjectionFromFrustumCorners = function (projection, corners, matrix) {\r\n var dir;\r\n var x, y, z;\r\n var minX, minY;\r\n var maxX, maxY;\r\n var i;\r\n var position = projection.transform.concatenatedMatrix3D.position;\r\n var light = this._light;\r\n dir = light.sceneDirection;\r\n this._overallDepthProjection.transform.matrix3D = this._light.transform.concatenatedMatrix3D;\r\n x = Math.floor((position.x - dir.x * this._lightOffset) / this._snap) * this._snap;\r\n y = Math.floor((position.y - dir.y * this._lightOffset) / this._snap) * this._snap;\r\n z = Math.floor((position.z - dir.z * this._lightOffset) / this._snap) * this._snap;\r\n this._overallDepthProjection.transform.moveTo(x, y, z);\r\n this._matrix.copyFrom(this._overallDepthProjection.transform.inverseConcatenatedMatrix3D);\r\n this._matrix.prepend(projection.transform.concatenatedMatrix3D);\r\n this._matrix.transformVectors(corners, this._localFrustum);\r\n minX = maxX = this._localFrustum[0];\r\n minY = maxY = this._localFrustum[1];\r\n this._maxZ = this._localFrustum[2];\r\n i = 3;\r\n while (i < 24) {\r\n x = this._localFrustum[i];\r\n y = this._localFrustum[i + 1];\r\n z = this._localFrustum[i + 2];\r\n if (x < minX)\r\n minX = x;\r\n if (x > maxX)\r\n maxX = x;\r\n if (y < minY)\r\n minY = y;\r\n if (y > maxY)\r\n maxY = y;\r\n if (z > this._maxZ)\r\n this._maxZ = z;\r\n i += 3;\r\n }\r\n this._minZ = 1;\r\n var w = maxX - minX;\r\n var h = maxY - minY;\r\n var d = 1 / (this._maxZ - this._minZ);\r\n if (minX < 0)\r\n minX -= this._snap; // because int() rounds up for < 0\r\n if (minY < 0)\r\n minY -= this._snap;\r\n minX = Math.floor(minX / this._snap) * this._snap;\r\n minY = Math.floor(minY / this._snap) * this._snap;\r\n var snap2 = 2 * this._snap;\r\n w = Math.floor(w / snap2 + 2) * snap2;\r\n h = Math.floor(h / snap2 + 2) * snap2;\r\n maxX = minX + w;\r\n maxY = minY + h;\r\n w = 1 / w;\r\n h = 1 / h;\r\n var raw = matrix._rawData;\r\n raw[0] = 2 * w;\r\n raw[5] = 2 * h;\r\n raw[10] = d;\r\n raw[12] = -(maxX + minX) * w;\r\n raw[13] = -(maxY + minY) * h;\r\n raw[14] = -this._minZ * d;\r\n raw[15] = 1;\r\n raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\r\n matrix.invalidatePosition();\r\n };\r\n return DirectionalShadowMapper;\r\n}(ShadowMapperBase));\r\nexport { DirectionalShadowMapper };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shadowmappers/DirectionalShadowMapper.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\nvar LightEvent = (function (_super) {\r\n tslib_1.__extends(LightEvent, _super);\r\n function LightEvent(type) {\r\n return _super.call(this, type) || this;\r\n }\r\n //@override\r\n LightEvent.prototype.clone = function () {\r\n return new LightEvent(this.type);\r\n };\r\n return LightEvent;\r\n}(EventBase));\r\nexport { LightEvent };\r\nLightEvent.CASTS_SHADOW_CHANGE = \"castsShadowChange\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/LightEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { AbstractMethodError } from \"@awayjs/core\";\r\nimport { LightEvent } from \"../events/LightEvent\";\r\nimport { DisplayObjectContainer } from \"./DisplayObjectContainer\";\r\nvar LightBase = (function (_super) {\r\n tslib_1.__extends(LightBase, _super);\r\n function LightBase() {\r\n var _this = _super.call(this) || this;\r\n _this._color = 0xffffff;\r\n _this._colorR = 1;\r\n _this._colorG = 1;\r\n _this._colorB = 1;\r\n _this._ambientColor = 0xffffff;\r\n _this._ambient = 0;\r\n _this._iAmbientR = 0;\r\n _this._iAmbientG = 0;\r\n _this._iAmbientB = 0;\r\n _this._specular = 1;\r\n _this._iSpecularR = 1;\r\n _this._iSpecularG = 1;\r\n _this._iSpecularB = 1;\r\n _this._diffuse = 1;\r\n _this._iDiffuseR = 1;\r\n _this._iDiffuseG = 1;\r\n _this._iDiffuseB = 1;\r\n _this._shadowsEnabled = false;\r\n _this.castsShadows = false;\r\n return _this;\r\n }\r\n Object.defineProperty(LightBase.prototype, \"shadowsEnabled\", {\r\n get: function () {\r\n return this._shadowsEnabled;\r\n },\r\n set: function (value) {\r\n if (this._shadowsEnabled == value)\r\n return;\r\n this._shadowsEnabled = value;\r\n if (value) {\r\n if (this._shadowMapper == null)\r\n this._shadowMapper = this.pCreateShadowMapper();\r\n this._shadowMapper.light = this;\r\n }\r\n else {\r\n this._shadowMapper.dispose();\r\n this._shadowMapper = null;\r\n }\r\n //*/\r\n this.dispatchEvent(new LightEvent(LightEvent.CASTS_SHADOW_CHANGE));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LightBase.prototype.pCreateShadowMapper = function () {\r\n throw new AbstractMethodError();\r\n };\r\n Object.defineProperty(LightBase.prototype, \"specular\", {\r\n get: function () {\r\n return this._specular;\r\n },\r\n set: function (value) {\r\n if (value < 0)\r\n value = 0;\r\n this._specular = value;\r\n this.updateSpecular();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightBase.prototype, \"diffuse\", {\r\n get: function () {\r\n return this._diffuse;\r\n },\r\n set: function (value) {\r\n if (value < 0)\r\n value = 0;\r\n this._diffuse = value;\r\n this.updateDiffuse();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightBase.prototype, \"color\", {\r\n get: function () {\r\n return this._color;\r\n },\r\n set: function (value) {\r\n this._color = value;\r\n this._colorR = ((this._color >> 16) & 0xff) / 0xff;\r\n this._colorG = ((this._color >> 8) & 0xff) / 0xff;\r\n this._colorB = (this._color & 0xff) / 0xff;\r\n this.updateDiffuse();\r\n this.updateSpecular();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightBase.prototype, \"ambient\", {\r\n get: function () {\r\n return this._ambient;\r\n },\r\n set: function (value) {\r\n if (value < 0)\r\n value = 0;\r\n else if (value > 1)\r\n value = 1;\r\n this._ambient = value;\r\n this.updateAmbient();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightBase.prototype, \"ambientColor\", {\r\n get: function () {\r\n return this._ambientColor;\r\n },\r\n set: function (value) {\r\n this._ambientColor = value;\r\n this.updateAmbient();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LightBase.prototype.updateAmbient = function () {\r\n this._iAmbientR = ((this._ambientColor >> 16) & 0xff) / 0xff * this._ambient;\r\n this._iAmbientG = ((this._ambientColor >> 8) & 0xff) / 0xff * this._ambient;\r\n this._iAmbientB = (this._ambientColor & 0xff) / 0xff * this._ambient;\r\n };\r\n LightBase.prototype.iGetObjectProjectionMatrix = function (entity, cameraTransform, target) {\r\n if (target === void 0) { target = null; }\r\n throw new AbstractMethodError();\r\n };\r\n LightBase.prototype.updateSpecular = function () {\r\n this._iSpecularR = this._colorR * this._specular;\r\n this._iSpecularG = this._colorG * this._specular;\r\n this._iSpecularB = this._colorB * this._specular;\r\n };\r\n LightBase.prototype.updateDiffuse = function () {\r\n this._iDiffuseR = this._colorR * this._diffuse;\r\n this._iDiffuseG = this._colorG * this._diffuse;\r\n this._iDiffuseB = this._colorB * this._diffuse;\r\n };\r\n Object.defineProperty(LightBase.prototype, \"shadowMapper\", {\r\n get: function () {\r\n return this._shadowMapper;\r\n },\r\n set: function (value) {\r\n this._shadowMapper = value;\r\n this._shadowMapper.light = this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LightBase;\r\n}(DisplayObjectContainer));\r\nexport { LightBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/LightBase.js","import * as tslib_1 from \"tslib\";\r\nimport { Matrix3D, Vector3D } from \"@awayjs/core\";\r\nimport { TraverserBase } from \"@awayjs/graphics\";\r\nimport { HierarchicalProperties } from \"../base/HierarchicalProperties\";\r\nimport { BoundsType } from \"../bounds/BoundsType\";\r\nimport { DirectionalShadowMapper } from \"../shadowmappers/DirectionalShadowMapper\";\r\nimport { LightBase } from \"./LightBase\";\r\nvar DirectionalLight = (function (_super) {\r\n tslib_1.__extends(DirectionalLight, _super);\r\n function DirectionalLight(xDir, yDir, zDir) {\r\n if (xDir === void 0) { xDir = 0; }\r\n if (yDir === void 0) { yDir = -1; }\r\n if (zDir === void 0) { zDir = 1; }\r\n var _this = _super.call(this) || this;\r\n _this._pAabbPoints = new Array(24);\r\n _this._pIsEntity = true;\r\n _this.direction = new Vector3D(xDir, yDir, zDir);\r\n _this._sceneDirection = new Vector3D();\r\n //default bounds type\r\n _this._boundsType = BoundsType.NULL;\r\n return _this;\r\n }\r\n Object.defineProperty(DirectionalLight.prototype, \"traverseName\", {\r\n get: function () {\r\n return DirectionalLight.traverseName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectionalLight.prototype, \"assetType\", {\r\n get: function () {\r\n return DirectionalLight.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectionalLight.prototype, \"sceneDirection\", {\r\n get: function () {\r\n if (this._sceneDirectionDirty)\r\n this._updateSceneDirection();\r\n return this._sceneDirection;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectionalLight.prototype, \"direction\", {\r\n get: function () {\r\n return this._direction;\r\n },\r\n set: function (value) {\r\n this._direction = value;\r\n if (!this._tmpLookAt)\r\n this._tmpLookAt = new Vector3D();\r\n this._tmpLookAt.x = this.x + this._direction.x;\r\n this._tmpLookAt.y = this.y + this._direction.y;\r\n this._tmpLookAt.z = this.z + this._direction.z;\r\n this.lookAt(this._tmpLookAt);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DirectionalLight.prototype.pInvalidateHierarchicalProperties = function (propDirty) {\r\n if (_super.prototype.pInvalidateHierarchicalProperties.call(this, propDirty))\r\n return true;\r\n if (this._hierarchicalPropsDirty & HierarchicalProperties.SCENE_TRANSFORM)\r\n this._sceneDirectionDirty = true;\r\n return false;\r\n };\r\n DirectionalLight.prototype._updateSceneDirection = function () {\r\n this._sceneDirectionDirty = false;\r\n this.transform.concatenatedMatrix3D.copyColumnTo(2, this._sceneDirection);\r\n this._sceneDirection.normalize();\r\n };\r\n //@override\r\n DirectionalLight.prototype.pCreateShadowMapper = function () {\r\n return new DirectionalShadowMapper();\r\n };\r\n //override\r\n DirectionalLight.prototype.iGetObjectProjectionMatrix = function (displayObject, cameraTransform, target) {\r\n if (target === void 0) { target = null; }\r\n if (!target)\r\n target = new Matrix3D();\r\n var m = Matrix3D.CALCULATION_MATRIX;\r\n m.copyFrom(displayObject.getRenderSceneTransform(cameraTransform));\r\n m.append(this.transform.inverseConcatenatedMatrix3D);\r\n if (!this._projAABBPoints)\r\n this._projAABBPoints = [];\r\n m.transformVectors(this._pAabbPoints, this._projAABBPoints);\r\n var xMin = Infinity, xMax = -Infinity;\r\n var yMin = Infinity, yMax = -Infinity;\r\n var zMin = Infinity, zMax = -Infinity;\r\n var d;\r\n for (var i = 0; i < 24;) {\r\n d = this._projAABBPoints[i++];\r\n if (d < xMin)\r\n xMin = d;\r\n if (d > xMax)\r\n xMax = d;\r\n d = this._projAABBPoints[i++];\r\n if (d < yMin)\r\n yMin = d;\r\n if (d > yMax)\r\n yMax = d;\r\n d = this._projAABBPoints[i++];\r\n if (d < zMin)\r\n zMin = d;\r\n if (d > zMax)\r\n zMax = d;\r\n }\r\n var invXRange = 1 / (xMax - xMin);\r\n var invYRange = 1 / (yMax - yMin);\r\n var invZRange = 1 / (zMax - zMin);\r\n var targetData = target._rawData;\r\n targetData[0] = 2 * invXRange;\r\n targetData[5] = 2 * invYRange;\r\n targetData[10] = invZRange;\r\n targetData[12] = -(xMax + xMin) * invXRange;\r\n targetData[13] = -(yMax + yMin) * invYRange;\r\n targetData[14] = -zMin * invZRange;\r\n targetData[1] = targetData[2] = targetData[3] = targetData[4] = targetData[6] = targetData[7] = targetData[8] = targetData[9] = targetData[11] = 0;\r\n targetData[15] = 1;\r\n target.prepend(m);\r\n return target;\r\n };\r\n /**\r\n * //TODO\r\n *\r\n * @protected\r\n */\r\n DirectionalLight.prototype._pUpdateBoxBounds = function () {\r\n _super.prototype._pUpdateBoxBounds.call(this);\r\n //update points\r\n var minX = this._pBoxBounds.x;\r\n var minY = this._pBoxBounds.y - this._pBoxBounds.height;\r\n var minZ = this._pBoxBounds.z;\r\n var maxX = this._pBoxBounds.x + this._pBoxBounds.width;\r\n var maxY = this._pBoxBounds.y;\r\n var maxZ = this._pBoxBounds.z + this._pBoxBounds.depth;\r\n this._pAabbPoints[0] = minX;\r\n this._pAabbPoints[1] = minY;\r\n this._pAabbPoints[2] = minZ;\r\n this._pAabbPoints[3] = maxX;\r\n this._pAabbPoints[4] = minY;\r\n this._pAabbPoints[5] = minZ;\r\n this._pAabbPoints[6] = minX;\r\n this._pAabbPoints[7] = maxY;\r\n this._pAabbPoints[8] = minZ;\r\n this._pAabbPoints[9] = maxX;\r\n this._pAabbPoints[10] = maxY;\r\n this._pAabbPoints[11] = minZ;\r\n this._pAabbPoints[12] = minX;\r\n this._pAabbPoints[13] = minY;\r\n this._pAabbPoints[14] = maxZ;\r\n this._pAabbPoints[15] = maxX;\r\n this._pAabbPoints[16] = minY;\r\n this._pAabbPoints[17] = maxZ;\r\n this._pAabbPoints[18] = minX;\r\n this._pAabbPoints[19] = maxY;\r\n this._pAabbPoints[20] = maxZ;\r\n this._pAabbPoints[21] = maxX;\r\n this._pAabbPoints[22] = maxY;\r\n this._pAabbPoints[23] = maxZ;\r\n };\r\n return DirectionalLight;\r\n}(LightBase));\r\nexport { DirectionalLight };\r\nDirectionalLight.traverseName = TraverserBase.addEntityName(\"applyDirectionalLight\");\r\nDirectionalLight.assetType = \"[light DirectionalLight]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/DirectionalLight.js","import * as tslib_1 from \"tslib\";\r\nimport { ErrorBase } from \"@awayjs/core\";\r\nimport { TraverserBase, SamplerCube } from \"@awayjs/graphics\";\r\nimport { BoundsType } from \"../bounds/BoundsType\";\r\nimport { LightBase } from \"./LightBase\";\r\nvar LightProbe = (function (_super) {\r\n tslib_1.__extends(LightProbe, _super);\r\n function LightProbe(diffuseMap, specularMap) {\r\n if (specularMap === void 0) { specularMap = null; }\r\n var _this = _super.call(this) || this;\r\n _this.diffuseSampler = new SamplerCube();\r\n _this.specularSampler = new SamplerCube();\r\n _this._pIsEntity = true;\r\n _this.diffuseMap = diffuseMap;\r\n _this.specularMap = specularMap;\r\n //default bounds type\r\n _this._boundsType = BoundsType.NULL;\r\n return _this;\r\n }\r\n Object.defineProperty(LightProbe.prototype, \"traverseName\", {\r\n get: function () {\r\n return LightProbe.traverseName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightProbe.prototype, \"assetType\", {\r\n get: function () {\r\n return LightProbe.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n //@override\r\n LightProbe.prototype.iGetObjectProjectionMatrix = function (entity, cameraTransform, target) {\r\n if (target === void 0) { target = null; }\r\n throw new ErrorBase(\"Object projection matrices are not supported for LightProbe objects!\");\r\n };\r\n return LightProbe;\r\n}(LightBase));\r\nexport { LightProbe };\r\nLightProbe.traverseName = TraverserBase.addEntityName(\"applyLightProbe\");\r\nLightProbe.assetType = \"[light LightProbe]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/LightProbe.js","import * as tslib_1 from \"tslib\";\r\nimport { TraverserBase, RenderableEvent } from \"@awayjs/graphics\";\r\nimport { BoundsType } from \"../bounds/BoundsType\";\r\nimport { DisplayObject } from \"./DisplayObject\";\r\n/**\r\n * A Line Segment primitive.\r\n */\r\nvar LineSegment = (function (_super) {\r\n tslib_1.__extends(LineSegment, _super);\r\n /**\r\n * Create a line segment\r\n *\r\n * @param startPosition Start position of the line segment\r\n * @param endPosition Ending position of the line segment\r\n * @param thickness Thickness of the line\r\n */\r\n function LineSegment(material, startPosition, endPosition, thickness) {\r\n if (thickness === void 0) { thickness = 1; }\r\n var _this = _super.call(this) || this;\r\n _this._pIsEntity = true;\r\n _this.material = material;\r\n _this._startPosition = startPosition;\r\n _this._endPosition = endPosition;\r\n _this._halfThickness = thickness * 0.5;\r\n //default bounds type\r\n _this._boundsType = BoundsType.AXIS_ALIGNED_BOX;\r\n return _this;\r\n }\r\n Object.defineProperty(LineSegment.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return LineSegment.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSegment.prototype, \"startPostion\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._startPosition;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSegment.prototype, \"startPosition\", {\r\n set: function (value) {\r\n if (this._startPosition == value)\r\n return;\r\n this._startPosition = value;\r\n this.invalidateElements();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSegment.prototype, \"endPosition\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._endPosition;\r\n },\r\n set: function (value) {\r\n if (this._endPosition == value)\r\n return;\r\n this._endPosition = value;\r\n this.invalidateElements();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSegment.prototype, \"thickness\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._halfThickness * 2;\r\n },\r\n set: function (value) {\r\n if (this._halfThickness == value)\r\n return;\r\n this._halfThickness = value * 0.5;\r\n this.invalidateElements();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @protected\r\n */\r\n LineSegment.prototype._pUpdateBoxBounds = function () {\r\n _super.prototype._pUpdateBoxBounds.call(this);\r\n this._pBoxBounds.x = Math.min(this._startPosition.x, this._endPosition.x);\r\n this._pBoxBounds.y = Math.min(this._startPosition.y, this._endPosition.y);\r\n this._pBoxBounds.z = Math.min(this._startPosition.z, this._endPosition.z);\r\n this._pBoxBounds.width = Math.abs(this._startPosition.x - this._endPosition.x);\r\n this._pBoxBounds.height = Math.abs(this._startPosition.y - this._endPosition.y);\r\n this._pBoxBounds.depth = Math.abs(this._startPosition.z - this._endPosition.z);\r\n };\r\n LineSegment.prototype._pUpdateSphereBounds = function () {\r\n _super.prototype._pUpdateSphereBounds.call(this);\r\n this._pUpdateBoxBounds();\r\n var halfWidth = (this._endPosition.x - this._startPosition.x) / 2;\r\n var halfHeight = (this._endPosition.y - this._startPosition.y) / 2;\r\n var halfDepth = (this._endPosition.z - this._startPosition.z) / 2;\r\n this._pSphereBounds.x = this._startPosition.x + halfWidth;\r\n this._pSphereBounds.y = this._startPosition.y + halfHeight;\r\n this._pSphereBounds.z = this._startPosition.z + halfDepth;\r\n this._pSphereBounds.radius = Math.sqrt(halfWidth * halfWidth + halfHeight * halfHeight + halfDepth * halfDepth);\r\n };\r\n /**\r\n * @private\r\n */\r\n LineSegment.prototype.invalidateElements = function () {\r\n this.dispatchEvent(new RenderableEvent(RenderableEvent.INVALIDATE_ELEMENTS, this)); //TODO improve performance by only using one geometry for all line segments\r\n };\r\n LineSegment.prototype.invalidateMaterial = function () {\r\n this.dispatchEvent(new RenderableEvent(RenderableEvent.INVALIDATE_MATERIAL, this));\r\n };\r\n LineSegment.prototype._acceptTraverser = function (traverser) {\r\n traverser[LineSegment.traverseName](this);\r\n };\r\n return LineSegment;\r\n}(DisplayObject));\r\nexport { LineSegment };\r\nLineSegment.traverseName = TraverserBase.addRenderableName(\"applyLineSegment\");\r\nLineSegment.assetType = \"[asset LineSegment]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/LineSegment.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetLibraryBundle, Loader, AssetEvent, URLLoaderEvent, LoaderEvent, ParserEvent } from \"@awayjs/core\";\r\nimport { DisplayObjectContainer } from \"./DisplayObjectContainer\";\r\n/**\r\n * The LoaderContainer class is used to load SWF files or image(JPG, PNG, or GIF)\r\n * files. Use the load() method to initiate loading. The loaded\r\n * display object is added as a child of the LoaderContainer object.\r\n *\r\n *

Use the URLLoader class to load text or binary data.

\r\n *\r\n *

The LoaderContainer class overrides the following methods that it inherits,\r\n * because a LoaderContainer object can only have one child display object - the\r\n * display object that it loads. Calling the following methods throws an\r\n * exception: addChild(), addChildAt(),\r\n * removeChild(), removeChildAt(), and\r\n * setChildIndex(). To remove a loaded display object, you must\r\n * remove the LoaderContainer object from its parent DisplayObjectContainer\r\n * child array.

\r\n *\r\n *

Note: The ActionScript 2.0 MovieClipLoader and LoadVars classes\r\n * are not used in ActionScript 3.0. The LoaderContainer and URLLoader classes replace\r\n * them.

\r\n *\r\n *

When you use the LoaderContainer class, consider the Flash Player and Adobe AIR\r\n * security model:

\r\n *\r\n *
    \r\n *
  • You can load content from any accessible source.
  • \r\n *
  • Loading is not allowed if the calling SWF file is in a network\r\n * sandbox and the file to be loaded is local.
  • \r\n *
  • If the loaded content is a SWF file written with ActionScript 3.0, it\r\n * cannot be cross-scripted by a SWF file in another security sandbox unless\r\n * that cross-scripting arrangement was approved through a call to the\r\n * System.allowDomain() or the\r\n * System.allowInsecureDomain() method in the loaded content\r\n * file.
  • \r\n *
  • If the loaded content is an AVM1 SWF file(written using ActionScript\r\n * 1.0 or 2.0), it cannot be cross-scripted by an AVM2 SWF file(written using\r\n * ActionScript 3.0). However, you can communicate between the two SWF files\r\n * by using the LocalConnection class.
  • \r\n *
  • If the loaded content is an image, its data cannot be accessed by a\r\n * SWF file outside of the security sandbox, unless the domain of that SWF\r\n * file was included in a URL policy file at the origin domain of the\r\n * image.
  • \r\n *
  • Movie clips in the local-with-file-system sandbox cannot script movie\r\n * clips in the local-with-networking sandbox, and the reverse is also\r\n * prevented.
  • \r\n *
  • You cannot connect to commonly reserved ports. For a complete list of\r\n * blocked ports, see \"Restricting Networking APIs\" in the ActionScript 3.0\r\n * Developer's Guide.
  • \r\n *
\r\n *\r\n *

However, in AIR, content in the application security\r\n * sandbox(content installed with the AIR application) are not restricted by\r\n * these security limitations.

\r\n *\r\n *

For more information related to security, see the Flash Player Developer\r\n * Center Topic: Security.

\r\n *\r\n *

When loading a SWF file from an untrusted source(such as a domain other\r\n * than that of the LoaderContainer object's root SWF file), you may want to define a\r\n * mask for the LoaderContainer object, to prevent the loaded content(which is a child\r\n * of the LoaderContainer object) from drawing to portions of the Stage outside of that\r\n * mask, as shown in the following code:

\r\n */\r\nvar LoaderContainer = (function (_super) {\r\n tslib_1.__extends(LoaderContainer, _super);\r\n /**\r\n * Creates a Loader object that you can use to load files, such as SWF, JPEG,\r\n * GIF, or PNG files. Call the load() method to load the asset\r\n * as a child of the Loader instance. You can then add the Loader object to\r\n * the display list(for instance, by using the addChild()\r\n * method of a DisplayObjectContainer instance). The asset appears on the\r\n * Stage as it loads.\r\n *\r\n *

You can also use a Loader instance \"offlist,\" that is without adding it\r\n * to a display object container on the display list. In this mode, the\r\n * Loader instance might be used to load a SWF file that contains additional\r\n * modules of an application.

\r\n *\r\n *

To detect when the SWF file is finished loading, you can use the events\r\n * of the LoaderInfo object associated with the\r\n * contentLoaderInfo property of the Loader object. At that\r\n * point, the code in the module SWF file can be executed to initialize and\r\n * start the module. In the offlist mode, a Loader instance might also be\r\n * used to load a SWF file that contains components or media assets. Again,\r\n * you can use the LoaderInfo object event notifications to detect when the\r\n * components are finished loading. At that point, the application can start\r\n * using the components and media assets in the library of the SWF file by\r\n * instantiating the ActionScript 3.0 classes that represent those components\r\n * and assets.

\r\n *\r\n *

To determine the status of a Loader object, monitor the following\r\n * events that the LoaderInfo object associated with the\r\n * contentLoaderInfo property of the Loader object:

\r\n *\r\n *
    \r\n *
  • The open event is dispatched when loading begins.
  • \r\n *
  • The ioError or securityError event is\r\n * dispatched if the file cannot be loaded or if an error occured during the\r\n * load process.
  • \r\n *
  • The progress event fires continuously while the file is\r\n * being loaded.
  • \r\n *
  • The complete event is dispatched when a file completes\r\n * downloading, but before the loaded movie clip's methods and properties are\r\n * available.
  • \r\n *
  • The init event is dispatched after the properties and\r\n * methods of the loaded SWF file are accessible, so you can begin\r\n * manipulating the loaded SWF file. This event is dispatched before the\r\n * complete handler. In streaming SWF files, the\r\n * init event can occur significantly earlier than the\r\n * complete event. For most purposes, use the init\r\n * handler.
  • \r\n *
\r\n */\r\n function LoaderContainer(useAssetLibrary, assetLibraryId) {\r\n if (useAssetLibrary === void 0) { useAssetLibrary = true; }\r\n if (assetLibraryId === void 0) { assetLibraryId = null; }\r\n var _this = _super.call(this) || this;\r\n _this._useAssetLib = useAssetLibrary;\r\n _this._assetLibId = assetLibraryId;\r\n _this._onAssetCompleteDelegate = function (event) { return _this.onAssetComplete(event); };\r\n _this._onTextureSizeErrorDelegate = function (event) { return _this.onTextureSizeError(event); };\r\n _this._onLoadCompleteDelegate = function (event) { return _this.onLoadComplete(event); };\r\n _this._onLoadErrorDelegate = function (event) { return _this.onLoadError(event); };\r\n _this._onParseErrorDelegate = function (event) { return _this.onParseError(event); };\r\n return _this;\r\n }\r\n Object.defineProperty(LoaderContainer.prototype, \"content\", {\r\n /**\r\n * Contains the root display object of the SWF file or image(JPG, PNG, or\r\n * GIF) file that was loaded by using the load() or\r\n * loadBytes() methods.\r\n *\r\n * @throws SecurityError The loaded SWF file or image file belongs to a\r\n * security sandbox to which you do not have access.\r\n * For a loaded SWF file, you can avoid this situation\r\n * by having the file call the\r\n * Security.allowDomain() method or by\r\n * having the loading file specify a\r\n * loaderContext parameter with its\r\n * securityDomain property set to\r\n * SecurityDomain.currentDomain when you\r\n * call the load() or\r\n * loadBytes() method.\r\n */\r\n get: function () {\r\n return this._content;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Cancels a load() method operation that is currently in\r\n * progress for the Loader instance.\r\n *\r\n */\r\n LoaderContainer.prototype.close = function () {\r\n if (!this._loader)\r\n return;\r\n if (this._useAssetLib) {\r\n var lib;\r\n lib = AssetLibraryBundle.getInstance(this._assetLibId);\r\n lib.disposeLoader(this._loader);\r\n }\r\n this._disposeLoader();\r\n };\r\n /**\r\n * Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an\r\n * object that is a child of this Loader object. If you load an animated GIF\r\n * file, only the first frame is displayed. As the Loader object can contain\r\n * only a single child, issuing a subsequent load() request\r\n * terminates the previous request, if still pending, and commences a new\r\n * load.\r\n *\r\n *

Note: In AIR 1.5 and Flash Player 10, the maximum size for a\r\n * loaded image is 8,191 pixels in width or height, and the total number of\r\n * pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191\r\n * pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and\r\n * earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height\r\n * and 2,880 pixels in width.

\r\n *\r\n *

A SWF file or image loaded into a Loader object inherits the position,\r\n * rotation, and scale properties of the parent display objects of the Loader\r\n * object.

\r\n *\r\n *

Use the unload() method to remove movies or images loaded\r\n * with this method, or to cancel a load operation that is in progress.

\r\n *\r\n *

You can prevent a SWF file from using this method by setting the\r\n * allowNetworking parameter of the the object and\r\n * embed tags in the HTML page that contains the SWF\r\n * content.

\r\n *\r\n *

When you use this method, consider the Flash Player security model,\r\n * which is described in the Loader class description.

\r\n *\r\n *

In Flash Player 10 and later, if you use a multipart Content-Type(for\r\n * example \"multipart/form-data\") that contains an upload(indicated by a\r\n * \"filename\" parameter in a \"content-disposition\" header within the POST\r\n * body), the POST operation is subject to the security rules applied to\r\n * uploads:

\r\n *\r\n *
    \r\n *
  • The POST operation must be performed in response to a user-initiated\r\n * action, such as a mouse click or key press.
  • \r\n *
  • If the POST operation is cross-domain(the POST target is not on the\r\n * same server as the SWF file that is sending the POST request), the target\r\n * server must provide a URL policy file that permits cross-domain\r\n * access.
  • \r\n *
\r\n *\r\n *

Also, for any multipart Content-Type, the syntax must be valid\r\n * (according to the RFC2046 standard). If the syntax appears to be invalid,\r\n * the POST operation is subject to the security rules applied to\r\n * uploads.

\r\n *\r\n *

For more information related to security, see the Flash Player\r\n * Developer Center Topic: Security.

\r\n *\r\n * @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG\r\n * file to be loaded. A relative path must be relative to the\r\n * main SWF file. Absolute URLs must include the protocol\r\n * reference, such as http:// or file:///. Filenames cannot\r\n * include disk drive specifications.\r\n * @param context A LoaderContext object, which has properties that define\r\n * the following:\r\n *
    \r\n *
  • Whether or not to check for the existence of a policy\r\n * file upon loading the object
  • \r\n *
  • The ApplicationDomain for the loaded object
  • \r\n *
  • The SecurityDomain for the loaded object
  • \r\n *
  • The ImageDecodingPolicy for the loaded image\r\n * object
  • \r\n *
\r\n *\r\n *

If the context parameter is not specified\r\n * or refers to a null object, the loaded content remains in\r\n * its own security domain.

\r\n *\r\n *

For complete details, see the description of the\r\n * properties in the LoaderContext\r\n * class.

\r\n * @param ns An optional namespace string under which the file is to be\r\n * loaded, allowing the differentiation of two resources with\r\n * identical assets.\r\n * @param parser An optional parser object for translating the loaded data\r\n * into a usable resource. If not provided, Loader will\r\n * attempt to auto-detect the file type.\r\n * @throws IOError The digest property of the\r\n * request object is not\r\n * null. You should only set the\r\n * digest property of a URLRequest\r\n * object when calling the\r\n * URLLoader.load() method when\r\n * loading a SWZ file(an Adobe platform\r\n * component).\r\n * @throws IllegalOperationError If the requestedContentParent\r\n * property of the context\r\n * parameter is a Loader.\r\n * @throws IllegalOperationError If the LoaderContext.parameters\r\n * parameter is set to non-null and has some\r\n * values which are not Strings.\r\n * @throws SecurityError The value of\r\n * LoaderContext.securityDomain\r\n * must be either null or\r\n * SecurityDomain.currentDomain.\r\n * This reflects the fact that you can only\r\n * place the loaded media in its natural\r\n * security sandbox or your own(the latter\r\n * requires a policy file).\r\n * @throws SecurityError Local SWF files may not set\r\n * LoaderContext.securityDomain to anything\r\n * other than null. It is not\r\n * permitted to import non-local media into a\r\n * local sandbox, or to place other local media\r\n * in anything other than its natural sandbox.\r\n * @throws SecurityError You cannot connect to commonly reserved\r\n * ports. For a complete list of blocked ports,\r\n * see \"Restricting Networking APIs\" in the\r\n * ActionScript 3.0 Developer's Guide.\r\n * @throws SecurityError If the applicationDomain or\r\n * securityDomain properties of\r\n * the context parameter are from\r\n * a disallowed domain.\r\n * @throws SecurityError If a local SWF file is attempting to use the\r\n * securityDomain property of the\r\n * context parameter.\r\n * @event asyncError Dispatched by the contentLoaderInfo\r\n * object if the\r\n * LoaderContext.requestedContentParent\r\n * property has been specified and it is not possible to\r\n * add the loaded content as a child to the specified\r\n * DisplayObjectContainer. This could happen if the\r\n * loaded content is a\r\n * flash.display.AVM1Movie or if the\r\n * addChild() call to the\r\n * requestedContentParent throws an error.\r\n * @event complete Dispatched by the contentLoaderInfo\r\n * object when the file has completed loading. The\r\n * complete event is always dispatched\r\n * after the init event.\r\n * @event httpStatus Dispatched by the contentLoaderInfo\r\n * object when a network request is made over HTTP and\r\n * Flash Player can detect the HTTP status code.\r\n * @event init Dispatched by the contentLoaderInfo\r\n * object when the properties and methods of the loaded\r\n * SWF file are accessible. The init event\r\n * always precedes the complete event.\r\n * @event ioError Dispatched by the contentLoaderInfo\r\n * object when an input or output error occurs that\r\n * causes a load operation to fail.\r\n * @event open Dispatched by the contentLoaderInfo\r\n * object when the loading operation starts.\r\n * @event progress Dispatched by the contentLoaderInfo\r\n * object as data is received while load operation\r\n * progresses.\r\n * @event securityError Dispatched by the contentLoaderInfo\r\n * object if a SWF file in the local-with-filesystem\r\n * sandbox attempts to load content in the\r\n * local-with-networking sandbox, or vice versa.\r\n * @event securityError Dispatched by the contentLoaderInfo\r\n * object if the\r\n * LoaderContext.requestedContentParent\r\n * property has been specified and the security sandbox\r\n * of the\r\n * LoaderContext.requestedContentParent\r\n * does not have access to the loaded SWF.\r\n * @event unload Dispatched by the contentLoaderInfo\r\n * object when a loaded object is removed.\r\n */\r\n LoaderContainer.prototype.load = function (request, context, ns, parser) {\r\n if (context === void 0) { context = null; }\r\n if (ns === void 0) { ns = null; }\r\n if (parser === void 0) { parser = null; }\r\n this._getLoader().load(request, context, ns, parser);\r\n };\r\n /**\r\n * Loads from binary data stored in a ByteArray object.\r\n *\r\n *

The loadBytes() method is asynchronous. You must wait for\r\n * the \"init\" event before accessing the properties of a loaded object.

\r\n *\r\n *

When you use this method, consider the Flash Player security model,\r\n * which is described in the Loader class description.

\r\n *\r\n * @param bytes A ByteArray object. The contents of the ByteArray can be\r\n * any of the file formats supported by the Loader class: SWF,\r\n * GIF, JPEG, or PNG.\r\n * @param context A LoaderContext object. Only the\r\n * applicationDomain property of the\r\n * LoaderContext object applies; the\r\n * checkPolicyFile and\r\n * securityDomain properties of the LoaderContext\r\n * object do not apply.\r\n *\r\n *

If the context parameter is not specified\r\n * or refers to a null object, the content is loaded into the\r\n * current security domain - a process referred to as \"import\r\n * loading\" in Flash Player security documentation.\r\n * Specifically, if the loading SWF file trusts the remote SWF\r\n * by incorporating the remote SWF into its code, then the\r\n * loading SWF can import it directly into its own security\r\n * domain.

\r\n *\r\n *

For more information related to security, see the Flash\r\n * Player Developer Center Topic: Security.

\r\n * @throws ArgumentError If the length property of the\r\n * ByteArray object is not greater than 0.\r\n * @throws IllegalOperationError If the checkPolicyFile or\r\n * securityDomain property of the\r\n * context parameter are non-null.\r\n * @throws IllegalOperationError If the requestedContentParent\r\n * property of the context\r\n * parameter is a Loader.\r\n * @throws IllegalOperationError If the LoaderContext.parameters\r\n * parameter is set to non-null and has some\r\n * values which are not Strings.\r\n * @throws SecurityError If the provided\r\n * applicationDomain property of\r\n * the context property is from a\r\n * disallowed domain.\r\n * @throws SecurityError You cannot connect to commonly reserved\r\n * ports. For a complete list of blocked ports,\r\n * see \"Restricting Networking APIs\" in the\r\n * ActionScript 3.0 Developer's Guide.\r\n * @event asyncError Dispatched by the contentLoaderInfo\r\n * object if the\r\n * LoaderContext.requestedContentParent\r\n * property has been specified and it is not possible to\r\n * add the loaded content as a child to the specified\r\n * DisplayObjectContainer. This could happen if the\r\n * loaded content is a\r\n * flash.display.AVM1Movie or if the\r\n * addChild() call to the\r\n * requestedContentParent throws an error.\r\n * @event complete Dispatched by the contentLoaderInfo\r\n * object when the operation is complete. The\r\n * complete event is always dispatched\r\n * after the init event.\r\n * @event init Dispatched by the contentLoaderInfo\r\n * object when the properties and methods of the loaded\r\n * data are accessible. The init event\r\n * always precedes the complete event.\r\n * @event ioError Dispatched by the contentLoaderInfo\r\n * object when the runtime cannot parse the data in the\r\n * byte array.\r\n * @event open Dispatched by the contentLoaderInfo\r\n * object when the operation starts.\r\n * @event progress Dispatched by the contentLoaderInfo\r\n * object as data is transfered in memory.\r\n * @event securityError Dispatched by the contentLoaderInfo\r\n * object if the\r\n * LoaderContext.requestedContentParent\r\n * property has been specified and the security sandbox\r\n * of the\r\n * LoaderContext.requestedContentParent\r\n * does not have access to the loaded SWF.\r\n * @event unload Dispatched by the contentLoaderInfo\r\n * object when a loaded object is removed.\r\n */\r\n LoaderContainer.prototype.loadData = function (data, context, ns, parser) {\r\n if (context === void 0) { context = null; }\r\n if (ns === void 0) { ns = null; }\r\n if (parser === void 0) { parser = null; }\r\n this._getLoader().loadData(data, '', context, ns, parser);\r\n };\r\n LoaderContainer.prototype._getLoader = function () {\r\n if (this._useAssetLib) {\r\n var lib = AssetLibraryBundle.getInstance(this._assetLibId);\r\n this._loader = lib.getLoader();\r\n }\r\n else {\r\n this._loader = new Loader();\r\n }\r\n this._loader.addEventListener(LoaderEvent.LOAD_COMPLETE, this._onLoadCompleteDelegate);\r\n this._loader.addEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);\r\n this._loader.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\r\n // Error are handled separately (see documentation for addErrorHandler)\r\n this._loader._iAddErrorHandler(this._onLoadErrorDelegate);\r\n this._loader._iAddParseErrorHandler(this._onParseErrorDelegate);\r\n return this._loader;\r\n };\r\n LoaderContainer.prototype._disposeLoader = function () {\r\n this._loader.removeEventListener(LoaderEvent.LOAD_COMPLETE, this._onLoadCompleteDelegate);\r\n this._loader.removeEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);\r\n this._loader.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\r\n if (!this._useAssetLib)\r\n this._loader.stop();\r\n this._loader = null;\r\n };\r\n /**\r\n * Removes a child of this Loader object that was loaded by using the\r\n * load() method. The property of the associated\r\n * LoaderInfo object is reset to null. The child is not\r\n * necessarily destroyed because other objects might have references to it;\r\n * however, it is no longer a child of the Loader object.\r\n *\r\n *

As a best practice, before you unload a child SWF file, you should\r\n * explicitly close any streams in the child SWF file's objects, such as\r\n * LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise,\r\n * audio in the child SWF file might continue to play, even though the child\r\n * SWF file was unloaded. To close streams in the child SWF file, add an\r\n * event listener to the child that listens for the unload\r\n * event. When the parent calls Loader.unload(), the\r\n * unload event is dispatched to the child. The following code\r\n * shows how you might do this:

\r\n *
 public closeAllStreams(evt:Event) {\r\n     * myNetStream.close(); mySound.close(); myNetConnection.close();\r\n     * myLocalConnection.close(); }\r\n     * myMovieClip.loaderInfo.addEventListener(Event.UNLOAD,\r\n     * closeAllStreams);
\r\n *\r\n */\r\n LoaderContainer.prototype.unload = function () {\r\n //TODO\r\n };\r\n /**\r\n * Enables a specific parser.\r\n * When no specific parser is set for a loading/parsing opperation,\r\n * loader3d can autoselect the correct parser to use.\r\n * A parser must have been enabled, to be considered when autoselecting the parser.\r\n *\r\n * @param parserClass The parser class to enable.\r\n * @see away.parsers.Parsers\r\n */\r\n LoaderContainer.enableParser = function (parserClass) {\r\n Loader.enableParser(parserClass);\r\n };\r\n /**\r\n * Enables a list of parsers.\r\n * When no specific parser is set for a loading/parsing opperation,\r\n * loader3d can autoselect the correct parser to use.\r\n * A parser must have been enabled, to be considered when autoselecting the parser.\r\n *\r\n * @param parserClasses A Vector of parser classes to enable.\r\n * @see away.parsers.Parsers\r\n */\r\n LoaderContainer.enableParsers = function (parserClasses) {\r\n Loader.enableParsers(parserClasses);\r\n };\r\n LoaderContainer.prototype.onAssetComplete = function (event) {\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * Called when an error occurs during loading\r\n */\r\n LoaderContainer.prototype.onLoadError = function (event) {\r\n if (this.hasEventListener(URLLoaderEvent.LOAD_ERROR)) {\r\n this.dispatchEvent(event);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Called when a an error occurs during parsing\r\n */\r\n LoaderContainer.prototype.onParseError = function (event) {\r\n if (this.hasEventListener(ParserEvent.PARSE_ERROR)) {\r\n this.dispatchEvent(event);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n LoaderContainer.prototype.onTextureSizeError = function (event) {\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * Called when the resource and all of its dependencies was retrieved.\r\n */\r\n LoaderContainer.prototype.onLoadComplete = function (event) {\r\n this._content = event.content;\r\n if (this._content)\r\n this.addChild(this._content);\r\n this.dispatchEvent(event);\r\n this._disposeLoader();\r\n };\r\n return LoaderContainer;\r\n}(DisplayObjectContainer));\r\nexport { LoaderContainer };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/LoaderContainer.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\n/**\r\n * A MouseEvent is dispatched when a mouse event occurs over a mouseEnabled object in View.\r\n * TODO: we don't have screenZ data, tho this should be easy to implement\r\n */\r\nvar MouseEvent = (function (_super) {\r\n tslib_1.__extends(MouseEvent, _super);\r\n /**\r\n * Create a new MouseEvent object.\r\n * @param type The type of the MouseEvent.\r\n */\r\n function MouseEvent(type) {\r\n var _this = _super.call(this, type) || this;\r\n // Private.\r\n _this._iAllowedToPropagate = true;\r\n return _this;\r\n }\r\n Object.defineProperty(MouseEvent.prototype, \"bubbles\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n var doesBubble = this._iAllowedToPropagate;\r\n this._iAllowedToPropagate = true;\r\n // Don't bubble if propagation has been stopped.\r\n return doesBubble;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n MouseEvent.prototype.stopPropagation = function () {\r\n this._iAllowedToPropagate = false;\r\n if (this._iParentEvent)\r\n this._iParentEvent.stopPropagation();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MouseEvent.prototype.stopImmediatePropagation = function () {\r\n this._iAllowedToPropagate = false;\r\n if (this._iParentEvent)\r\n this._iParentEvent.stopImmediatePropagation();\r\n };\r\n /**\r\n * Creates a copy of the MouseEvent object and sets the value of each property to match that of the original.\r\n */\r\n MouseEvent.prototype.clone = function () {\r\n var result = new MouseEvent(this.type);\r\n /* TODO: Debug / test - look into isDefaultPrevented\r\n if (isDefaultPrevented())\r\n result.preventDefault();\r\n */\r\n result.screenX = this.screenX;\r\n result.screenY = this.screenY;\r\n result.view = this.view;\r\n result.entity = this.entity;\r\n result.renderable = this.renderable;\r\n result.material = this.material;\r\n result.uv = this.uv;\r\n result.position = this.position;\r\n result.normal = this.normal;\r\n result.elementIndex = this.elementIndex;\r\n result.delta = this.delta;\r\n result.ctrlKey = this.ctrlKey;\r\n result.shiftKey = this.shiftKey;\r\n result._iParentEvent = this;\r\n result._iAllowedToPropagate = this._iAllowedToPropagate;\r\n return result;\r\n };\r\n Object.defineProperty(MouseEvent.prototype, \"scenePosition\", {\r\n /**\r\n * The position in scene space where the event took place\r\n */\r\n get: function () {\r\n return this.entity.transform.concatenatedMatrix3D.transformVector(this.position);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MouseEvent.prototype, \"sceneNormal\", {\r\n /**\r\n * The normal in scene space where the event took place\r\n */\r\n get: function () {\r\n var sceneNormal = this.entity.transform.concatenatedMatrix3D.deltaTransformVector(this.normal);\r\n sceneNormal.normalize();\r\n return sceneNormal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return MouseEvent;\r\n}(EventBase));\r\nexport { MouseEvent };\r\n/**\r\n * Defines the value of the type property of a mouseOver3d event object.\r\n */\r\nMouseEvent.MOUSE_OVER = \"mouseOver3d\";\r\n/**\r\n * Defines the value of the type property of a mouseOut3d event object.\r\n */\r\nMouseEvent.MOUSE_OUT = \"mouseOut3d\";\r\n/**\r\n * Defines the value of the type property of a mouseUp3d event object.\r\n */\r\nMouseEvent.MOUSE_UP = \"mouseUp3d\";\r\n/**\r\n * Defines the value of the type property of a mouseDown3d event object.\r\n */\r\nMouseEvent.MOUSE_DOWN = \"mouseDown3d\";\r\n/**\r\n * Defines the value of the type property of a mouseMove3d event object.\r\n */\r\nMouseEvent.MOUSE_MOVE = \"mouseMove3d\";\r\n/**\r\n * Defines the value of the type property of a rollOver3d event object.\r\n */\r\n//\t\tpublic static ROLL_OVER : string = \"rollOver3d\";\r\n/**\r\n * Defines the value of the type property of a rollOut3d event object.\r\n */\r\n//\t\tpublic static ROLL_OUT : string = \"rollOut3d\";\r\n/**\r\n * Defines the value of the type property of a click3d event object.\r\n */\r\nMouseEvent.CLICK = \"click3d\";\r\n/**\r\n * Defines the value of the type property of a doubleClick3d event object.\r\n */\r\nMouseEvent.DOUBLE_CLICK = \"doubleClick3d\";\r\n/**\r\n * Defines the value of the type property of a mouseWheel3d event object.\r\n */\r\nMouseEvent.MOUSE_WHEEL = \"mouseWheel3d\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/MouseEvent.js","/**\r\n * The TextFormat class represents character formatting information. Use the\r\n * TextFormat class to create specific text formatting for text fields. You\r\n * can apply text formatting to both static and dynamic text fields. The\r\n * properties of the TextFormat class apply to device and embedded fonts.\r\n * However, for embedded fonts, bold and italic text actually require specific\r\n * fonts. If you want to display bold or italic text with an embedded font,\r\n * you need to embed the bold and italic variations of that font.\r\n *\r\n *

You must use the constructor new TextFormat() to create a\r\n * TextFormat object before setting its properties. When you apply a\r\n * TextFormat object to a text field using the\r\n * TextField.defaultTextFormat property or the\r\n * TextField.setTextFormat() method, only its defined properties\r\n * are applied. Use the TextField.defaultTextFormat property to\r\n * apply formatting BEFORE you add text to the TextField, and the\r\n * setTextFormat() method to add formatting AFTER you add text to\r\n * the TextField. The TextFormat properties are null\r\n * by default because if you don't provide values for the properties, Flash\r\n * Player uses its own default formatting. The default formatting that Flash\r\n * Player uses for each property(if property's value is null) is\r\n * as follows:

\r\n *\r\n *

The default formatting for each property is also described in each\r\n * property description.

\r\n */\r\nvar TesselatedFontChar = (function () {\r\n function TesselatedFontChar(fill_data, stroke_data) {\r\n if (fill_data === void 0) { fill_data = null; }\r\n if (stroke_data === void 0) { stroke_data = null; }\r\n /**\r\n * the char_codes that this geom has kerning set for\r\n */\r\n this.kerningCharCodes = [];\r\n /**\r\n * the kerning values per char_code\r\n */\r\n this.kerningValues = [];\r\n this.fill_data = fill_data;\r\n this.stroke_data = stroke_data;\r\n }\r\n return TesselatedFontChar;\r\n}());\r\nexport { TesselatedFontChar };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/TesselatedFontChar.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase, AttributesView } from \"@awayjs/core\";\r\nimport { GraphicsPath, JointStyle, CapsStyle, DrawMode, GraphicsStrokeStyle } from \"@awayjs/graphics\";\r\nimport { TesselatedFontChar } from \"./TesselatedFontChar\";\r\n/**\r\n * GraphicBase wraps a TriangleElements as a scene graph instantiation. A GraphicBase is owned by a Sprite object.\r\n *\r\n *\r\n * @see away.base.TriangleElements\r\n * @see away.entities.Sprite\r\n *\r\n * @class away.base.GraphicBase\r\n */\r\nvar TesselatedFontTable = (function (_super) {\r\n tslib_1.__extends(TesselatedFontTable, _super);\r\n //TODO test shader picking\r\n //\t\tpublic get shaderPickingDetails():boolean\r\n //\t\t{\r\n //\r\n //\t\t\treturn this.sourceEntity.shaderPickingDetails;\r\n //\t\t}\r\n /**\r\n * Creates a new TesselatedFont object\r\n * If a opentype_font object is passed, the chars will get tessellated whenever requested.\r\n * If no opentype font object is passed, it is expected that tesselated chars\r\n */\r\n function TesselatedFontTable(opentype_font) {\r\n if (opentype_font === void 0) { opentype_font = null; }\r\n var _this = _super.call(this) || this;\r\n _this._font_chars = [];\r\n _this._font_chars_dic = new Object();\r\n _this._current_size = 0;\r\n _this._size_multiply = 0;\r\n _this._ascent = 0;\r\n _this._descent = 0;\r\n _this._usesCurves = false;\r\n if (opentype_font) {\r\n _this._opentype_font = opentype_font;\r\n /*\r\n console.log(\"head.yMax \"+head.yMax);\r\n console.log(\"head.yMin \"+head.yMin);\r\n console.log(\"font.numGlyphs \"+font.numGlyphs);\r\n console.log('Ascender', font.tables.hhea.ascender);\r\n console.log('Descender', font.tables.hhea.descender);\r\n console.log('Typo Ascender', font.tables.os2.sTypoAscender);\r\n console.log('Typo Descender', font.tables.os2.sTypoDescender);\r\n */\r\n //this._ascent=this._opentype_font.tables.hhea.ascender;\r\n //this._descent=this._opentype_font.tables.hhea.descender;\r\n _this._font_em_size = 72;\r\n _this._current_size = 0;\r\n _this._size_multiply = 0;\r\n return _this;\r\n }\r\n return _this;\r\n }\r\n TesselatedFontTable.prototype.hasChar = function (char_code) {\r\n return this._font_chars_dic[char_code] != null;\r\n };\r\n TesselatedFontTable.prototype.changeOpenTypeFont = function (newOpenTypeFont, tesselateAllOld) {\r\n if (tesselateAllOld === void 0) { tesselateAllOld = true; }\r\n if ((tesselateAllOld) && (this._opentype_font)) {\r\n }\r\n // todo: when updating a font we must take care that they are compatible in terms of em_size\r\n this._opentype_font = newOpenTypeFont;\r\n };\r\n TesselatedFontTable.prototype.initFontSize = function (font_size) {\r\n if (this.fallbackTable)\r\n this.fallbackTable.initFontSize(font_size);\r\n if (this._current_size == font_size)\r\n return;\r\n this._current_size = font_size;\r\n this._size_multiply = font_size / this._font_em_size;\r\n //console.log(\"text-font-table: \",this._ascent, this._descent, this._font_em_size)\r\n };\r\n TesselatedFontTable.prototype.getCharVertCnt = function (char_code) {\r\n var tesselated_font_char = this._font_chars_dic[char_code];\r\n if (tesselated_font_char) {\r\n return tesselated_font_char.fill_data.length;\r\n }\r\n return 0;\r\n };\r\n TesselatedFontTable.prototype.getCharWidth = function (char_code) {\r\n if (char_code == \"32\") {\r\n return this._whitespace_width * this._size_multiply;\r\n }\r\n var tesselated_font_char = this._font_chars_dic[char_code];\r\n if (tesselated_font_char) {\r\n return tesselated_font_char.char_width * this._size_multiply;\r\n }\r\n if (this.fallbackTable)\r\n return this.fallbackTable.getCharWidth(char_code);\r\n return 0;\r\n };\r\n Object.defineProperty(TesselatedFontTable.prototype, \"usesCurves\", {\r\n get: function () {\r\n return this._usesCurves;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TesselatedFontTable.prototype.getLineHeight = function () {\r\n var thisLineheighttest = this._current_size * (this._font_em_size / this._ascent);\r\n if (this.name == \"BoldStyle\") {\r\n thisLineheighttest = this._current_size;\r\n }\r\n return thisLineheighttest; // sf\r\n //return (this._ascent+this._descent)*this._size_multiply;\t// enable for icycle\r\n };\r\n Object.defineProperty(TesselatedFontTable.prototype, \"assetType\", {\r\n get: function () {\r\n return TesselatedFontTable.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n TesselatedFontTable.prototype.dispose = function () {\r\n };\r\n Object.defineProperty(TesselatedFontTable.prototype, \"ascent\", {\r\n get: function () {\r\n return this._ascent;\r\n },\r\n set: function (value) {\r\n this._ascent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TesselatedFontTable.prototype, \"descent\", {\r\n get: function () {\r\n return this._descent;\r\n },\r\n set: function (value) {\r\n this._descent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TesselatedFontTable.prototype, \"offset_x\", {\r\n get: function () {\r\n return this._offset_x;\r\n },\r\n set: function (value) {\r\n this._offset_x = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TesselatedFontTable.prototype, \"offset_y\", {\r\n get: function () {\r\n return this._offset_y;\r\n },\r\n set: function (value) {\r\n this._offset_y = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TesselatedFontTable.prototype.get_font_chars = function () {\r\n return this._font_chars;\r\n };\r\n TesselatedFontTable.prototype.get_font_em_size = function () {\r\n return this._font_em_size;\r\n };\r\n TesselatedFontTable.prototype.set_whitespace_width = function (value) {\r\n this._whitespace_width = value;\r\n };\r\n TesselatedFontTable.prototype.get_whitespace_width = function () {\r\n return this._whitespace_width;\r\n };\r\n TesselatedFontTable.prototype.set_font_em_size = function (font_em_size) {\r\n this._font_em_size = font_em_size;\r\n };\r\n TesselatedFontTable.prototype.fillTextRun = function (tf, format, startWord, wordCnt) {\r\n var textShape = tf.getTextShapeForIdentifierAndFormat(format.color.toString(), format);\r\n var charGlyph;\r\n var w = 0;\r\n var w_len = startWord + (wordCnt * 5);\r\n var char_vertices;\r\n var c = 0;\r\n var c_len = 0;\r\n var x = 0;\r\n var y = 0;\r\n var startIdx = 0;\r\n var buffer;\r\n var v;\r\n var size_multiply;\r\n var hack_x_mirror = false;\r\n // loop over all the words and create the text data for it\r\n // each word provides its own start-x and start-y values, so we can just ignore whitespace-here\r\n for (w = startWord; w < w_len; w += 5) {\r\n startIdx = tf.words[w];\r\n x = tf.words[w + 1];\r\n y = tf.words[w + 2]; //-this.getLineHeight())+(this._size_multiply*this.ascent); // sunflower\r\n if (this.name == \"BoldStyle\") {\r\n y -= 0.2 * this.getLineHeight();\r\n }\r\n else {\r\n }\r\n //todo: this is a temporary fix for sunflower `si` VoltMeter text vertical align\r\n if (format.font_name == \"DJB Get Digital\") {\r\n y -= 2;\r\n }\r\n //y=tf.words[w+2]+(this.ascent-this.get_font_em_size())*this._size_multiply; // enable for icycle\r\n c_len = startIdx + tf.words[w + 4];\r\n for (c = startIdx; c < c_len; c++) {\r\n hack_x_mirror = false;\r\n if (tf.chars_codes[c] == 40) {\r\n tf.chars_codes[c] = 41;\r\n hack_x_mirror = true;\r\n }\r\n if (tf.chars_codes[c] != 32) {\r\n charGlyph = this.getChar(tf.chars_codes[c].toString());\r\n size_multiply = this._size_multiply;\r\n if (!charGlyph && this.fallbackTable) {\r\n charGlyph = this.fallbackTable.getChar(tf.chars_codes[c].toString());\r\n size_multiply = this.fallbackTable._size_multiply;\r\n }\r\n if (charGlyph) {\r\n char_vertices = charGlyph.fill_data;\r\n buffer = new Float32Array(char_vertices.buffer);\r\n if (this.usesCurves) {\r\n for (v = 0; v < char_vertices.count; v++) {\r\n textShape.verts[textShape.verts.length] = buffer[v * 3] * size_multiply + x;\r\n textShape.verts[textShape.verts.length] = buffer[v * 3 + 1] * size_multiply + y;\r\n textShape.verts[textShape.verts.length] = buffer[v * 3 + 2];\r\n }\r\n }\r\n else {\r\n if (hack_x_mirror) {\r\n for (v = 0; v < char_vertices.count; v++) {\r\n textShape.verts[textShape.verts.length] = (charGlyph.char_width - buffer[v * 2]) * size_multiply + x;\r\n textShape.verts[textShape.verts.length] = buffer[v * 2 + 1] * size_multiply + y;\r\n }\r\n }\r\n else {\r\n for (v = 0; v < char_vertices.count; v++) {\r\n textShape.verts[textShape.verts.length] = buffer[v * 2] * size_multiply + x;\r\n textShape.verts[textShape.verts.length] = buffer[v * 2 + 1] * size_multiply + y;\r\n }\r\n }\r\n }\r\n x += charGlyph.char_width * size_multiply;\r\n }\r\n else {\r\n console.log(\"TesselatedFontTable: Error: char not found in fontTable\");\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n */\r\n TesselatedFontTable.prototype.getChar = function (name) {\r\n if (this._font_chars_dic[name] == null) {\r\n if (this._opentype_font) {\r\n //console.log(\"get char for '\"+String.fromCharCode(parseInt(name))+\"'. char does not exists yet. try creating it from opentype.\");\r\n var thisGlyph = this._opentype_font.charToGlyph(String.fromCharCode(parseInt(name)));\r\n if (thisGlyph) {\r\n //console.log(\"got the glyph from opentype\");\r\n if (true) {\r\n var thisPath = thisGlyph.getPath();\r\n var awayPath = new GraphicsPath();\r\n var i = 0;\r\n var len = thisPath.commands.length;\r\n //awayPath.lineTo(0, 0);\r\n //awayPath.moveTo(0,0);//-100);\r\n //awayPath.curveTo(100, 250, 200,0);\r\n //awayPath.lineTo(150, 100);\r\n //awayPath.moveTo(0,20);\r\n //awayPath.curveTo(100, 270, 200,20);\r\n //awayPath.moveTo(0,-20);\r\n //awayPath.moveTo(0,-10);\r\n //awayPath.curveTo(100, -110, 200,-10);\r\n var startx = 0;\r\n var starty = 0;\r\n for (i = 0; i < len; i++) {\r\n var cmd = thisPath.commands[i];\r\n if (cmd.type === 'M') {\r\n awayPath.moveTo(cmd.x, cmd.y);\r\n startx = cmd.x;\r\n starty = cmd.y;\r\n }\r\n else if (cmd.type === 'L') {\r\n awayPath.lineTo(cmd.x, cmd.y);\r\n }\r\n else if (cmd.type === 'Q') {\r\n awayPath.curveTo(cmd.x1, cmd.y1, cmd.x, cmd.y);\r\n }\r\n else if (cmd.type === 'C') {\r\n awayPath.cubicCurveTo(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\r\n }\r\n else if (cmd.type === 'Z') {\r\n awayPath.lineTo(startx, starty);\r\n }\r\n }\r\n awayPath.style = new GraphicsStrokeStyle(0xff0000, 1, 1, JointStyle.MITER, CapsStyle.NONE, 100);\r\n var final_vert_list = [];\r\n //todo\r\n //GraphicsFactoryStrokes.draw_pathes([awayPath], final_vert_list, false);\r\n var attributesView = new AttributesView(Float32Array, 3);\r\n attributesView.set(final_vert_list);\r\n var attributesBuffer = attributesView.attributesBuffer;\r\n attributesView.dispose();\r\n var tesselated_font_char = new TesselatedFontChar(attributesBuffer, null);\r\n tesselated_font_char.char_width = (thisGlyph.advanceWidth * (1 / thisGlyph.path.unitsPerEm * 72));\r\n //console.log(\"tesselated_font_char.char_width \"+tesselated_font_char.char_width);\r\n this._font_chars.push(tesselated_font_char);\r\n this._font_chars_dic[name] = tesselated_font_char;\r\n }\r\n }\r\n }\r\n }\r\n return this._font_chars_dic[name];\r\n };\r\n /**\r\n *\r\n */\r\n TesselatedFontTable.prototype.setChar = function (name, char_width, fills_data, stroke_data, uses_curves) {\r\n if (fills_data === void 0) { fills_data = null; }\r\n if (stroke_data === void 0) { stroke_data = null; }\r\n if (uses_curves === void 0) { uses_curves = false; }\r\n if ((fills_data == null) && (stroke_data == null))\r\n throw (\"TesselatedFontTable: trying to create a TesselatedFontChar with no data (fills_data and stroke_data is null)\");\r\n if (this._font_chars.length > 0) {\r\n if (uses_curves != this._usesCurves) {\r\n throw (\"TesselatedFontTable: Can not set different types of graphic-glyphs (curves vs non-cuves) on the same FontTable!\");\r\n }\r\n }\r\n else {\r\n this._usesCurves = uses_curves;\r\n }\r\n var tesselated_font_char = new TesselatedFontChar(fills_data, stroke_data);\r\n tesselated_font_char.char_width = char_width;\r\n this._font_chars.push(tesselated_font_char);\r\n this._font_chars_dic[name] = tesselated_font_char;\r\n };\r\n TesselatedFontTable.prototype.buildTextRuns = function (textRuns, output_verts) {\r\n if ((textRuns.length * 2) != (output_verts.length))\r\n throw (\"Invalid data passed to TesselatedFontTable.buildTextRuns(). output_verts.length is not double textRuns.length.\");\r\n var i = 0;\r\n var font_size = 0;\r\n var drawMode = 0;\r\n var charCode = 0;\r\n var xpos = 0;\r\n var ypos = 0;\r\n var runCnt = 0;\r\n var runLen = 0;\r\n var vertCnt = 0;\r\n var len = textRuns.length;\r\n var textrun;\r\n var thisChar;\r\n for (i = 0; i < len; i++) {\r\n textrun = textRuns[i];\r\n font_size = textrun[0];\r\n drawMode = textrun[1];\r\n ypos = textrun[2];\r\n runLen = textrun.length;\r\n for (runCnt = 3; runCnt < runLen; runCnt += 2) {\r\n charCode = textrun[runCnt];\r\n xpos = textrun[runCnt + 1];\r\n thisChar = this.getChar(charCode.toString());\r\n if ((drawMode == DrawMode.BOTH) || (drawMode == DrawMode.STROKE)) {\r\n if (output_verts[i * 2] == null) {\r\n throw (\"Trying to render strokes for a textrun, but no output_vert list was set for this textrun strokes\");\r\n }\r\n }\r\n if ((drawMode == DrawMode.BOTH) || (drawMode == DrawMode.FILL)) {\r\n if (output_verts[i * 2 + 1] == null) {\r\n throw (\"Trying to render fills for a textrun, but no output_vert list was set for this textrun fills\");\r\n }\r\n }\r\n }\r\n }\r\n };\r\n return TesselatedFontTable;\r\n}(AssetBase));\r\nexport { TesselatedFontTable };\r\nTesselatedFontTable.assetType = \"[asset TesselatedFontTable]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/TesselatedFontTable.js","/**\r\n * The TextFieldAutoSize class is an enumeration of constant values used in\r\n * setting the autoSize property of the TextField class.\r\n */\r\nvar TextFieldAutoSize = (function () {\r\n function TextFieldAutoSize() {\r\n }\r\n return TextFieldAutoSize;\r\n}());\r\nexport { TextFieldAutoSize };\r\n/**\r\n * Specifies that the text is to be treated as center-justified text. Any\r\n * resizing of a single line of a text field is equally distributed to both\r\n * the right and left sides.\r\n */\r\nTextFieldAutoSize.CENTER = \"center\";\r\n/**\r\n * Specifies that the text is to be treated as left-justified text, meaning\r\n * that the left side of the text field remains fixed and any resizing of a\r\n * single line is on the right side.\r\n */\r\nTextFieldAutoSize.LEFT = \"left\";\r\n/**\r\n * Specifies that no resizing is to occur.\r\n */\r\nTextFieldAutoSize.NONE = \"none\";\r\n/**\r\n * Specifies that the text is to be treated as right-justified text, meaning\r\n * that the right side of the text field remains fixed and any resizing of a\r\n * single line is on the left side.\r\n */\r\nTextFieldAutoSize.RIGHT = \"right\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/TextFieldAutoSize.js","/**\r\n * The TextFieldType class is an enumeration of constant values used in setting the\r\n * type property of the TextField class.\r\n *\r\n * @see away.entities.TextField#type\r\n */\r\nvar TextFieldType = (function () {\r\n function TextFieldType() {\r\n }\r\n return TextFieldType;\r\n}());\r\nexport { TextFieldType };\r\n/**\r\n * Used to specify a dynamic TextField.\r\n */\r\nTextFieldType.DYNAMIC = \"dynamic\";\r\n/**\r\n * Used to specify an input TextField.\r\n */\r\nTextFieldType.INPUT = \"input\";\r\n/**\r\n * Used to specify an static TextField.\r\n */\r\nTextFieldType.STATIC = \"input\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/TextFieldType.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase } from \"@awayjs/core\";\r\nimport { TesselatedFontTable } from \"./TesselatedFontTable\";\r\n/**\r\n * The TextFormat class represents character formatting information. Use the\r\n * TextFormat class to create specific text formatting for text fields. You\r\n * can apply text formatting to both static and dynamic text fields. The\r\n * properties of the TextFormat class apply to device and embedded fonts.\r\n * However, for embedded fonts, bold and italic text actually require specific\r\n * fonts. If you want to display bold or italic text with an embedded font,\r\n * you need to embed the bold and italic variations of that font.\r\n *\r\n *

You must use the constructor new TextFormat() to create a\r\n * TextFormat object before setting its properties. When you apply a\r\n * TextFormat object to a text field using the\r\n * TextField.defaultTextFormat property or the\r\n * TextField.setTextFormat() method, only its defined properties\r\n * are applied. Use the TextField.defaultTextFormat property to\r\n * apply formatting BEFORE you add text to the TextField, and the\r\n * setTextFormat() method to add formatting AFTER you add text to\r\n * the TextField. The TextFormat properties are null\r\n * by default because if you don't provide values for the properties, Flash\r\n * Player uses its own default formatting. The default formatting that Flash\r\n * Player uses for each property(if property's value is null) is\r\n * as follows:

\r\n *\r\n *

The default formatting for each property is also described in each\r\n * property description.

\r\n */\r\nvar TextFormat = (function (_super) {\r\n tslib_1.__extends(TextFormat, _super);\r\n /**\r\n * Creates a TextFormat object with the specified properties. You can then\r\n * change the properties of the TextFormat object to change the formatting of\r\n * text fields.\r\n *\r\n *

Any parameter may be set to null to indicate that it is\r\n * not defined. All of the parameters are optional; any omitted parameters\r\n * are treated as null.

\r\n *\r\n * @param font The name of a font for text as a string.\r\n * @param size An integer that indicates the size in pixels.\r\n * @param color The color of text using this text format. A number\r\n * containing three 8-bit RGB components; for example,\r\n * 0xFF0000 is red, and 0x00FF00 is green.\r\n * @param bold A Boolean value that indicates whether the text is\r\n * boldface.\r\n * @param italic A Boolean value that indicates whether the text is\r\n * italicized.\r\n * @param underline A Boolean value that indicates whether the text is\r\n * underlined.\r\n * @param url The URL to which the text in this text format\r\n * hyperlinks. If url is an empty string, the\r\n * text does not have a hyperlink.\r\n * @param target The target window where the hyperlink is displayed. If\r\n * the target window is an empty string, the text is\r\n * displayed in the default target window\r\n * _self. If the url parameter\r\n * is set to an empty string or to the value\r\n * null, you can get or set this property,\r\n * but the property will have no effect.\r\n * @param align The alignment of the paragraph, as a TextFormatAlign\r\n * value.\r\n * @param leftMargin Indicates the left margin of the paragraph, in pixels.\r\n * @param rightMargin Indicates the right margin of the paragraph, in pixels.\r\n * @param indent An integer that indicates the indentation from the left\r\n * margin to the first character in the paragraph.\r\n * @param leading A number that indicates the amount of leading vertical\r\n * space between lines.\r\n */\r\n function TextFormat(font, size, color, bold, italic, underline, url, link_target, align, leftMargin, rightMargin, indent, leading) {\r\n if (font === void 0) { font = \"Times New Roman\"; }\r\n if (size === void 0) { size = 12; }\r\n if (color === void 0) { color = 0x000000; }\r\n if (bold === void 0) { bold = false; }\r\n if (italic === void 0) { italic = false; }\r\n if (underline === void 0) { underline = false; }\r\n if (url === void 0) { url = \"\"; }\r\n if (link_target === void 0) { link_target = \"\"; }\r\n if (align === void 0) { align = \"left\"; }\r\n if (leftMargin === void 0) { leftMargin = 0; }\r\n if (rightMargin === void 0) { rightMargin = 0; }\r\n if (indent === void 0) { indent = 0; }\r\n if (leading === void 0) { leading = 0; }\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Specifies custom tab stops as an array of non-negative integers. Each tab\r\n * stop is specified in pixels. If custom tab stops are not specified\r\n * (null), the default tab stop is 4(average character width).\r\n */\r\n //todo: not used with in tesselated-font-table yet\r\n _this.tabStops = [];\r\n _this.font_name = font;\r\n _this.size = size;\r\n _this.color = color;\r\n _this.bold = bold;\r\n _this.italic = italic;\r\n _this.underline = underline;\r\n _this.url = url;\r\n _this.link_target = link_target;\r\n _this.align = align;\r\n _this.leftMargin = leftMargin;\r\n _this.rightMargin = rightMargin;\r\n _this.indent = indent;\r\n _this.leading = leading;\r\n _this.letterSpacing = 0;\r\n // todo: implement a way to supply a default fonttable / font to formats\r\n _this.font_table = new TesselatedFontTable();\r\n return _this;\r\n }\r\n Object.defineProperty(TextFormat.prototype, \"size\", {\r\n get: function () {\r\n return this._size;\r\n },\r\n set: function (value) {\r\n this._size = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextFormat.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return TextFormat.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return TextFormat;\r\n}(AssetBase));\r\nexport { TextFormat };\r\nTextFormat.assetType = \"[asset TextFormat]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/TextFormat.js","var TextShape = (function () {\r\n function TextShape() {\r\n this.verts = [];\r\n }\r\n return TextShape;\r\n}());\r\nexport { TextShape };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/TextShape.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesView, Float2Attributes, Matrix, Matrix3D, ColorTransform } from \"@awayjs/core\";\r\nimport { Sampler2D, Style, Graphics, Shape, TriangleElements } from \"@awayjs/graphics\";\r\nimport { HierarchicalProperties } from \"../base/HierarchicalProperties\";\r\nimport { AlignmentMode } from \"../base/AlignmentMode\";\r\nimport { TesselatedFontTable } from \"../text/TesselatedFontTable\";\r\nimport { TextFieldAutoSize } from \"../text/TextFieldAutoSize\";\r\nimport { TextFieldType } from \"../text/TextFieldType\";\r\nimport { TextFormat } from \"../text/TextFormat\";\r\nimport { DisplayObject } from \"./DisplayObject\";\r\nimport { TextShape } from \"../text/TextShape\";\r\n/**\r\n * The TextField class is used to create display objects for text display and\r\n * input. You can use the TextField class to\r\n * perform low-level text rendering. However, in Flex, you typically use the\r\n * Label, Text, TextArea, and TextInput controls to process text. You can give a text field an instance name in the\r\n * Property inspector and use the methods and properties of the TextField\r\n * class to manipulate it with ActionScript. TextField instance names are\r\n * displayed in the Movie Explorer and in the Insert Target Path dialog box in\r\n * the Actions panel.\r\n *\r\n *

To create a text field dynamically, use the TextField()\r\n * constructor.

\r\n *\r\n *

The methods of the TextField class let you set, select, and manipulate\r\n * text in a dynamic or input text field that you create during authoring or\r\n * at runtime.

\r\n *\r\n *

ActionScript provides several ways to format your text at runtime. The\r\n * TextFormat class lets you set character and paragraph formatting for\r\n * TextField objects. You can apply Cascading Style Sheets(CSS) styles to\r\n * text fields by using the TextField.styleSheet property and the\r\n * StyleSheet class. You can use CSS to style built-in HTML tags, define new\r\n * formatting tags, or apply styles. You can assign HTML formatted text, which\r\n * optionally uses CSS styles, directly to a text field. HTML text that you\r\n * assign to a text field can contain embedded media(movie clips, SWF files,\r\n * GIF files, PNG files, and JPEG files). The text wraps around the embedded\r\n * media in the same way that a web browser wraps text around media embedded\r\n * in an HTML document.

\r\n *\r\n *

Flash Player supports a subset of HTML tags that you can use to format\r\n * text. See the list of supported HTML tags in the description of the\r\n * htmlText property.

\r\n *\r\n * @event change Dispatched after a control value is\r\n * modified, unlike the\r\n * textInput event, which is\r\n * dispatched before the value is modified.\r\n * Unlike the W3C DOM Event Model version of\r\n * the change event, which\r\n * dispatches the event only after the\r\n * control loses focus, the ActionScript 3.0\r\n * version of the change event\r\n * is dispatched any time the control\r\n * changes. For example, if a user types text\r\n * into a text field, a change\r\n * event is dispatched after every keystroke.\r\n * @event link Dispatched when a user clicks a hyperlink\r\n * in an HTML-enabled text field, where the\r\n * URL begins with \"event:\". The remainder of\r\n * the URL after \"event:\" is placed in the\r\n * text property of the LINK event.\r\n *\r\n *

Note: The default behavior,\r\n * adding the text to the text field, occurs\r\n * only when Flash Player generates the\r\n * event, which in this case happens when a\r\n * user attempts to input text. You cannot\r\n * put text into a text field by sending it\r\n * textInput events.

\r\n * @event scroll Dispatched by a TextField object\r\n * after the user scrolls.\r\n * @event textInput Flash Player dispatches the\r\n * textInput event when a user\r\n * enters one or more characters of text.\r\n * Various text input methods can generate\r\n * this event, including standard keyboards,\r\n * input method editors(IMEs), voice or\r\n * speech recognition systems, and even the\r\n * act of pasting plain text with no\r\n * formatting or style information.\r\n * @event textInteractionModeChange Flash Player dispatches the\r\n * textInteractionModeChange\r\n * event when a user changes the interaction\r\n * mode of a text field. for example on\r\n * Android, one can toggle from NORMAL mode\r\n * to SELECTION mode using context menu\r\n * options\r\n */\r\nvar TextField = (function (_super) {\r\n tslib_1.__extends(TextField, _super);\r\n /**\r\n * Creates a new TextField instance. After you create the TextField instance,\r\n * call the addChild() or addChildAt() method of\r\n * the parent DisplayObjectContainer object to add the TextField instance to\r\n * the display list.\r\n *\r\n *

The default size for a text field is 100 x 100 pixels.

\r\n */\r\n function TextField() {\r\n var _this = _super.call(this) || this;\r\n _this._line_indices = [];\r\n _this._text = \"\";\r\n _this._textDirty = false; // if text is dirty, the text-content or the text-size has changed, and we need to recalculate word-width\r\n _this._positionsDirty = false; // if formatting is dirty, we need to recalculate text-positions / size\r\n _this._glyphsDirty = false; // if glyphs are dirty, we need to recollect the glyphdata and build the text-graphics. this should ony be done max once a frame\r\n _this.chars_codes = []; // stores charcode per char\r\n _this.chars_width = []; // stores charcode per char\r\n _this.words = []; // stores offset and length and width for each word\r\n _this._textRuns_formats = []; // stores textFormat for each textrun\r\n _this._textRuns_words = []; // stores words-offset, word-count and width for each textrun\r\n _this._maxWidthLine = 0;\r\n _this.textShapes = {};\r\n _this._textColor = -1;\r\n _this._width = 100;\r\n _this._height = 100;\r\n _this._textWidth = 0;\r\n _this._textHeight = 0;\r\n _this.type = TextFieldType.STATIC;\r\n _this._numLines = 0;\r\n _this.multiline = false;\r\n _this.selectable = true;\r\n _this._autoSize = TextFieldAutoSize.NONE;\r\n _this._wordWrap = false;\r\n _this._background = false;\r\n _this._backgroundColor = 0xffffff;\r\n _this._border = false;\r\n _this._borderColor = 0x000000;\r\n _this._graphics = Graphics.getGraphics(_this); //unique graphics object for each TextField\r\n return _this;\r\n }\r\n TextField.getNewTextField = function () {\r\n return (TextField._textFields.length) ? TextField._textFields.pop() : new TextField();\r\n };\r\n TextField.prototype.getTextShapeForIdentifierAndFormat = function (id, format) {\r\n if (this.textShapes.hasOwnProperty(id)) {\r\n return this.textShapes[id];\r\n }\r\n this.textShapes[id] = new TextShape();\r\n this.textShapes[id].format = format;\r\n return this.textShapes[id];\r\n };\r\n Object.defineProperty(TextField.prototype, \"autoSize\", {\r\n get: function () {\r\n return this._autoSize;\r\n },\r\n set: function (value) {\r\n if (this._autoSize == value)\r\n return;\r\n this._autoSize = value;\r\n this._positionsDirty = true;\r\n if (this._autoSize != TextFieldAutoSize.NONE)\r\n this._pInvalidateBounds();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TextField.prototype._pUpdateBoxBounds = function () {\r\n _super.prototype._pUpdateBoxBounds.call(this);\r\n this.reConstruct();\r\n this._pBoxBounds.x = 0;\r\n this._pBoxBounds.y = 0;\r\n this._pBoxBounds.width = this._width;\r\n this._pBoxBounds.height = this._height;\r\n };\r\n TextField.prototype.getBox = function (targetCoordinateSpace) {\r\n if (targetCoordinateSpace === void 0) { targetCoordinateSpace = null; }\r\n //TODO targetCoordinateSpace\r\n if (this._boxBoundsInvalid)\r\n this._pUpdateBoxBounds();\r\n if (targetCoordinateSpace == null || targetCoordinateSpace == this)\r\n return this._pBoxBounds;\r\n if (targetCoordinateSpace == this._pParent) {\r\n if (this._registrationMatrix3D) {\r\n if (this._tempTransform == null)\r\n this._tempTransform = new Matrix3D();\r\n this._tempTransform.copyFrom(this._transform.matrix3D);\r\n this._tempTransform.prepend(this._registrationMatrix3D);\r\n if (this.alignmentMode != AlignmentMode.REGISTRATION_POINT)\r\n this._tempTransform.appendTranslation(-this._registrationMatrix3D._rawData[12] * this._transform.scale.x, -this._registrationMatrix3D._rawData[13] * this._transform.scale.y, -this._registrationMatrix3D._rawData[14] * this._transform.scale.z);\r\n return this._tempTransform.transformBox(this._pBoxBounds);\r\n }\r\n return this._transform.matrix3D.transformBox(this._pBoxBounds);\r\n }\r\n else\r\n return targetCoordinateSpace.transform.inverseConcatenatedMatrix3D.transformBox(this.transform.concatenatedMatrix3D.transformBox(this._pBoxBounds));\r\n };\r\n Object.defineProperty(TextField.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return TextField.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"background\", {\r\n get: function () {\r\n return this._background;\r\n },\r\n set: function (value) {\r\n this._background = value;\r\n this._glyphsDirty = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"backgroundColor\", {\r\n get: function () {\r\n return this._backgroundColor;\r\n },\r\n set: function (value) {\r\n this._backgroundColor = value;\r\n this._glyphsDirty = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"border\", {\r\n get: function () {\r\n return this._border;\r\n },\r\n set: function (value) {\r\n this._border = value;\r\n this._glyphsDirty = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"borderColor\", {\r\n get: function () {\r\n return this._borderColor;\r\n },\r\n set: function (value) {\r\n this._borderColor = value;\r\n this._glyphsDirty = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"bottomScrollV\", {\r\n /**\r\n * An integer(1-based index) that indicates the bottommost line that is\r\n * currently visible in the specified text field. Think of the text field as\r\n * a window onto a block of text. The scrollV property is the\r\n * 1-based index of the topmost visible line in the window.\r\n *\r\n *

All the text between the lines indicated by scrollV and\r\n * bottomScrollV is currently visible in the text field.

\r\n */\r\n get: function () {\r\n return this._bottomScrollV;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"caretIndex\", {\r\n /**\r\n * The index of the insertion point(caret) position. If no insertion point\r\n * is displayed, the value is the position the insertion point would be if\r\n * you restored focus to the field(typically where the insertion point last\r\n * was, or 0 if the field has not had focus).\r\n *\r\n *

Selection span indexes are zero-based(for example, the first position\r\n * is 0, the second position is 1, and so on).

\r\n */\r\n get: function () {\r\n return this._caretIndex;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"defaultTextFormat\", {\r\n get: function () {\r\n if (this._defaultTextFormat == null) {\r\n this._defaultTextFormat = new TextFormat();\r\n }\r\n return this._defaultTextFormat;\r\n },\r\n set: function (value) {\r\n if (this._defaultTextFormat == value)\r\n return;\r\n this._defaultTextFormat = value;\r\n this._textDirty = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"height\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (this._autoSize != TextFieldAutoSize.NONE)\r\n this.reConstruct();\r\n return this._height;\r\n },\r\n set: function (val) {\r\n if (this._height == val)\r\n return;\r\n if (this._autoSize != TextFieldAutoSize.NONE)\r\n return;\r\n this._height = val;\r\n this._positionsDirty = true;\r\n this._pInvalidateBounds();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"length\", {\r\n /**\r\n * The number of characters in a text field. A character such as tab\r\n * (\\t) counts as one character.\r\n */\r\n get: function () {\r\n return this._text.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * The maximum value of scrollH.\r\n */\r\n TextField.prototype.maxScrollH = function () {\r\n return this._maxScrollH;\r\n };\r\n /**\r\n * The maximum value of scrollV.\r\n */\r\n TextField.prototype.maxScrollV = function () {\r\n return this._maxScrollV;\r\n };\r\n Object.defineProperty(TextField.prototype, \"numLines\", {\r\n /**\r\n * Defines the number of text lines in a multiline text field. If\r\n * wordWrap property is set to true, the number of\r\n * lines increases when text wraps.\r\n */\r\n get: function () {\r\n this.reConstruct();\r\n return this._numLines;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"selectionBeginIndex\", {\r\n /**\r\n * The zero-based character index value of the first character in the current\r\n * selection. For example, the first character is 0, the second character is\r\n * 1, and so on. If no text is selected, this property is the value of\r\n * caretIndex.\r\n */\r\n get: function () {\r\n return this._selectionBeginIndex;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"selectionEndIndex\", {\r\n /**\r\n * The zero-based character index value of the last character in the current\r\n * selection. For example, the first character is 0, the second character is\r\n * 1, and so on. If no text is selected, this property is the value of\r\n * caretIndex.\r\n */\r\n get: function () {\r\n return this._selectionEndIndex;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"text\", {\r\n /**\r\n * A string that is the current text in the text field. Lines are separated\r\n * by the carriage return character('\\r', ASCII 13). This\r\n * property contains unformatted text in the text field, without HTML tags.\r\n *\r\n *

To get the text in HTML form, use the htmlText\r\n * property.

\r\n */\r\n get: function () {\r\n return this._text;\r\n },\r\n set: function (value) {\r\n value = value.toString();\r\n if (this._text == value)\r\n return;\r\n this._text = value;\r\n this._textDirty = true;\r\n if (this._autoSize != TextFieldAutoSize.NONE)\r\n this._pInvalidateBounds();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"textFormat\", {\r\n get: function () {\r\n if (this._textFormat == null) {\r\n this._textFormat = new TextFormat();\r\n }\r\n return this._textFormat;\r\n },\r\n set: function (value) {\r\n this._textDirty = true;\r\n this._textFormat = value;\r\n //this.reConstruct();\r\n if (this._autoSize != TextFieldAutoSize.NONE)\r\n this._pInvalidateBounds();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TextField.prototype._hitTestPointInternal = function (x, y, shapeFlag, masksFlag) {\r\n if (this._graphics.count) {\r\n if (this._graphics._hitTestPointInternal(this._tempPoint.x, this._tempPoint.y))\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n *\r\n * @param renderer\r\n *\r\n * @internal\r\n */\r\n TextField.prototype._acceptTraverser = function (traverser) {\r\n this.reConstruct(true);\r\n if (this._textFormat && !this._textFormat.font_table.isAsset(TesselatedFontTable) && !this._textFormat.material) {\r\n var new_ct = this.transform.colorTransform || (this.transform.colorTransform = new ColorTransform());\r\n //if(new_ct.color==0xffffff){\r\n this.transform.colorTransform.color = (this.textColor != null) ? this.textColor : this._textFormat.color;\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.COLOR_TRANSFORM);\r\n }\r\n this._graphics.acceptTraverser(traverser);\r\n };\r\n Object.defineProperty(TextField.prototype, \"scaleX\", {\r\n /**\r\n * Indicates the horizontal scale(percentage) of the object as applied from\r\n * the registration point. The default registration point is(0,0). 1.0\r\n * equals 100% scale.\r\n *\r\n *

Scaling the local coordinate system changes the x and\r\n * y property values, which are defined in whole pixels.

\r\n */\r\n get: function () {\r\n return this._transform.scale.x;\r\n },\r\n set: function (val) {\r\n this._setScaleX(val);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"scaleY\", {\r\n /**\r\n * Indicates the vertical scale(percentage) of an object as applied from the\r\n * registration point of the object. The default registration point is(0,0).\r\n * 1.0 is 100% scale.\r\n *\r\n *

Scaling the local coordinate system changes the x and\r\n * y property values, which are defined in whole pixels.

\r\n */\r\n get: function () {\r\n return this._transform.scale.y;\r\n },\r\n set: function (val) {\r\n this._setScaleY(val);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"textColor\", {\r\n get: function () {\r\n return this._textColor;\r\n },\r\n set: function (value) {\r\n this._textColor = value;\r\n //this._textFormat.color=value;\r\n if (this._textFormat && !this._textFormat.font_table.isAsset(TesselatedFontTable) && !this._textFormat.material) {\r\n if (!this.transform.colorTransform)\r\n this.transform.colorTransform = new ColorTransform();\r\n this.transform.colorTransform.color = value;\r\n this.pInvalidateHierarchicalProperties(HierarchicalProperties.COLOR_TRANSFORM);\r\n }\r\n else {\r\n this._glyphsDirty = true;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"textInteractionMode\", {\r\n /**\r\n * The interaction mode property, Default value is\r\n * TextInteractionMode.NORMAL. On mobile platforms, the normal mode implies\r\n * that the text can be scrolled but not selected. One can switch to the\r\n * selectable mode through the in-built context menu on the text field. On\r\n * Desktop, the normal mode implies that the text is in scrollable as well as\r\n * selection mode.\r\n */\r\n get: function () {\r\n return this._textInteractionMode;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"textWidth\", {\r\n /**\r\n * The width of the text in pixels.\r\n */\r\n get: function () {\r\n this.reConstruct();\r\n return this._textWidth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"textHeight\", {\r\n /**\r\n * The width of the text in pixels.\r\n */\r\n get: function () {\r\n this.reConstruct();\r\n return this._textHeight;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"x\", {\r\n get: function () {\r\n if (this._autoSize != TextFieldAutoSize.NONE && !this._wordWrap)\r\n this.reConstruct();\r\n return this._transform.position.x;\r\n },\r\n set: function (val) {\r\n if (this._autoSize != TextFieldAutoSize.NONE && !this._wordWrap)\r\n this.reConstruct();\r\n if (this._transform.position.x == val)\r\n return;\r\n this._transform.matrix3D._rawData[12] = val;\r\n this._transform.invalidatePosition();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"width\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n if (this._autoSize != TextFieldAutoSize.NONE && !this._wordWrap)\r\n this.reConstruct();\r\n return this._width;\r\n },\r\n set: function (val) {\r\n if (this._width == val)\r\n return;\r\n if (this._autoSize != TextFieldAutoSize.NONE && !this._wordWrap)\r\n return;\r\n this._width = val;\r\n this._positionsDirty = true;\r\n this._pInvalidateBounds();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"wordWrap\", {\r\n /**\r\n * The width of the text in pixels.\r\n */\r\n get: function () {\r\n return this._wordWrap;\r\n },\r\n set: function (val) {\r\n if (this._wordWrap == val)\r\n return;\r\n this._wordWrap = val;\r\n this._positionsDirty = true;\r\n if (!val)\r\n this._pInvalidateBounds();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextField.prototype, \"isEntity\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return true; //TODO do this better\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TextField.prototype.clear = function () {\r\n _super.prototype.clear.call(this);\r\n if (this._textElements)\r\n this._textElements.clear();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n TextField.prototype.dispose = function () {\r\n this.disposeValues();\r\n TextField._textFields.push(this);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n TextField.prototype.disposeValues = function () {\r\n _super.prototype.disposeValues.call(this);\r\n this._textFormat = null;\r\n this._textShape = null;\r\n this._textShape2 = null;\r\n if (this._textElements) {\r\n this._textElements.dispose();\r\n this._textElements = null;\r\n }\r\n if (this._textElements2) {\r\n this._textElements2.dispose();\r\n this._textElements2 = null;\r\n }\r\n };\r\n /**\r\n * Reconstructs the Graphics for this Text-field.\r\n */\r\n TextField.prototype.reConstruct = function (buildGraphics) {\r\n if (buildGraphics === void 0) { buildGraphics = false; }\r\n if (!this._textDirty && !this._positionsDirty && !this._glyphsDirty)\r\n return;\r\n // Step1: init text-data\r\n // this step splits the text into textRuns\r\n // each textRun spans a range of words that share the same text-format\r\n // a textRun can not be shared between paragraphs\r\n // for each word, 5 numbers are stored:\r\n // \t\tchar-index,\r\n // \t\tx-pos,\r\n // \t\ty-pos,\r\n // \t\tword-width,\r\n // \t\tchar-count,\r\n // a whitespace is considered as a word\r\n if (this._textDirty) {\r\n this._positionsDirty = true;\r\n this.chars_codes.length = 0;\r\n this.chars_width.length = 0;\r\n this.words.length = 0;\r\n this._textRuns_words.length = 0;\r\n this._textRuns_formats.length = 0;\r\n this._maxWidthLine = 0;\r\n if (this._text != \"\" && this._textFormat != null) {\r\n if (this.multiline) {\r\n var paragraphs = this.text.toString().split(\"\\\\n\");\r\n var tl = 0;\r\n var tl_len = paragraphs.length;\r\n var extra_split;\r\n var tl_extra = 0;\r\n var tl_extra_len = paragraphs.length;\r\n for (tl = 0; tl < tl_len; tl++) {\r\n extra_split = paragraphs[tl].split(\"\\n\"); //match(/[^\\r\\n]+/g));\r\n if (extra_split) {\r\n tl_extra_len = extra_split.length;\r\n for (tl_extra = 0; tl_extra < tl_extra_len; tl_extra++) {\r\n this.buildParagraph(extra_split[tl_extra]);\r\n }\r\n }\r\n else {\r\n this.buildParagraph(paragraphs[tl]);\r\n }\r\n }\r\n }\r\n else {\r\n var paragraphs = this.text.toString().split(\"\\\\n\");\r\n var tl = 0;\r\n var tl_len = paragraphs.length;\r\n for (tl = 0; tl < tl_len; tl++) {\r\n this.buildParagraph(paragraphs[tl]);\r\n }\r\n }\r\n }\r\n }\r\n // \tStep 2: positioning the words\r\n // \tif position is dirty, the text formatting has changed.\r\n // \tthis step will modify the word-data stored in previous step.\r\n //\tfor each word, it adjusts the x-pos and y-pos position.\r\n //\tthis step also takes care of adjusting the textWidth and textHeight,\r\n //\tif we have AUTOSIZE!=None\r\n if (this._positionsDirty) {\r\n this._glyphsDirty = true;\r\n if (this._text != \"\" && this._textFormat != null) {\r\n //console.log(\"TextField getWordPositions\", this.id, this.words);\r\n this.getWordPositions();\r\n }\r\n else {\r\n // this is empty text, we need to reset the text-size\r\n this._textWidth = 0;\r\n this._textHeight = 0;\r\n if (this._autoSize != TextFieldAutoSize.NONE) {\r\n this._width = 4;\r\n this._height = 4;\r\n this._pInvalidateBounds();\r\n }\r\n }\r\n }\r\n this._textDirty = false;\r\n this._positionsDirty = false;\r\n if (!buildGraphics)\r\n return;\r\n // \tStep 3: building the glyphs\r\n // \tthis step is only done if this function was called when renderer collects the graphics.\r\n //\tonly than should the reconstruct function be called with \"buildGraphics=true\".\r\n // \tin this step, the text-shapes are cleared,\r\n //\tthe data for new text-shapes is collected from the font-tables\r\n //\tand the new text-shapes are created and assigned to the graphics\r\n if (this._glyphsDirty) {\r\n //console.log(\"TextField buildGlyphs\", this.id, this.words);\r\n this.buildGlyphs();\r\n }\r\n this._glyphsDirty = false;\r\n };\r\n TextField.prototype.buildParagraph = function (paragraphText) {\r\n // todo: support multiple textFormat per paragraph (multiple textRuns)\r\n this._textRuns_formats[this._textRuns_formats.length] = this._textFormat;\r\n this._textRuns_words[this._textRuns_words.length] = this.words.length;\r\n var c = 0;\r\n var c_len = paragraphText.length;\r\n var char_code = 0;\r\n var char_width = 0;\r\n var word_cnt = 0;\r\n var startNewWord = true;\r\n this._textFormat.font_table.initFontSize(this._textFormat.size);\r\n // splits the text into words and create the textRuns along the way.\r\n var linewidh = 0;\r\n var whitespace_cnt = 0;\r\n for (c = 0; c < c_len; c++) {\r\n char_code = paragraphText.charCodeAt(c);\r\n this.chars_codes[this.chars_codes.length] = char_code;\r\n char_width = this._textFormat.font_table.getCharWidth(char_code.toString());\r\n if (char_width <= 0) {\r\n char_width = this._textFormat.font_table.getCharWidth(\"32\");\r\n }\r\n // if this is a letter, and next symbol is a letter, we add the letterSpacing to the letter-width\r\n if (char_code != 32 && c < c_len - 1) {\r\n char_width += (paragraphText.charCodeAt(c + 1) == 32) ? 0 : this._textFormat.letterSpacing;\r\n }\r\n linewidh += char_width;\r\n this.chars_width[this.chars_width.length] = char_width;\r\n if (char_code == 32) {\r\n whitespace_cnt++;\r\n // if this is a whitespace, we add a new word,\r\n this.words[this.words.length] = this.chars_codes.length - 1; //offset into chars\r\n this.words[this.words.length] = 0; //x-position\r\n this.words[this.words.length] = 0; //y-position\r\n this.words[this.words.length] = char_width;\r\n this.words[this.words.length] = 1;\r\n word_cnt++;\r\n // we also make sure to begin a new word for next char (could be whitespace again)\r\n startNewWord = true;\r\n }\r\n else {\r\n // no whitespace\r\n if (startNewWord) {\r\n // create new word (either this is the first char, or the last char was whitespace)\r\n this.words[this.words.length] = this.chars_codes.length - 1;\r\n this.words[this.words.length] = 0; //x-position\r\n this.words[this.words.length] = 0; //y-position\r\n this.words[this.words.length] = char_width;\r\n this.words[this.words.length] = 1;\r\n word_cnt++;\r\n }\r\n else {\r\n // update-char length and width of active word.\r\n this.words[this.words.length - 2] += char_width;\r\n this.words[this.words.length - 1]++;\r\n }\r\n startNewWord = false;\r\n }\r\n }\r\n this._textRuns_words[this._textRuns_words.length] = word_cnt;\r\n this._textRuns_words[this._textRuns_words.length] = linewidh;\r\n this._textRuns_words[this._textRuns_words.length] = whitespace_cnt;\r\n if (this._maxWidthLine < linewidh) {\r\n this._maxWidthLine = linewidh;\r\n }\r\n };\r\n TextField.prototype.getWordPositions = function () {\r\n /*console.log(\"this._text\", this._text);\r\n console.log(\"this._width\", this._width);\r\n console.log(\"this._height\", this._height);*/\r\n var tr = 0;\r\n var tr_len = this._textRuns_formats.length;\r\n var w = 0;\r\n var w_len = 0;\r\n var tr_length = 0;\r\n var additionalWhiteSpace = 0;\r\n var format;\r\n var text_width = 0;\r\n var text_height = 0;\r\n var indent = 0;\r\n this._numLines = 0;\r\n var linecnt = 0;\r\n var linelength = 0;\r\n var word_width = 0;\r\n var lineWordStartIndices = [];\r\n var lineWordEndIndices = [];\r\n var lineLength = [];\r\n var numSpacesPerline = [];\r\n var offsety = 2;\r\n // if we have autosize enabled, and no wordWrap, we can adjust the textfield width\r\n if (this._autoSize != TextFieldAutoSize.NONE && !this._wordWrap && this._textDirty) {\r\n var oldSize = this._width;\r\n this._width = 4 + this._maxWidthLine + this._textFormat.indent + this._textFormat.leftMargin + this._textFormat.rightMargin;\r\n this._pInvalidateBounds();\r\n if (this._autoSize == TextFieldAutoSize.RIGHT) {\r\n this._transform.matrix3D._rawData[12] -= this._width - oldSize;\r\n this._transform.invalidatePosition();\r\n }\r\n else if (this._autoSize == TextFieldAutoSize.CENTER) {\r\n this._transform.matrix3D._rawData[12] -= (this._width - oldSize) / 2;\r\n this._transform.invalidatePosition();\r\n }\r\n }\r\n var maxLineWidth = this._width - (4 + this._textFormat.indent + this._textFormat.leftMargin + this._textFormat.rightMargin);\r\n for (tr = 0; tr < tr_len; tr++) {\r\n format = this._textRuns_formats[tr];\r\n format.font_table.initFontSize(format.size);\r\n indent = this._textFormat.indent;\r\n lineWordStartIndices.length = 1;\r\n lineWordEndIndices.length = 1;\r\n lineLength.length = 1;\r\n numSpacesPerline.length = 1;\r\n var line_width = 0;\r\n w_len = this._textRuns_words[(tr * 4)] + (this._textRuns_words[(tr * 4) + 1] * 5);\r\n tr_length = this._textRuns_words[(tr * 4) + 2];\r\n //console.log(this._textFieldWidth, tr_length, maxLineWidth);\r\n //80pro: change for icycle:\r\n if (!this.multiline || tr_length <= maxLineWidth || !this.wordWrap) {\r\n //if(tr_length 0 && numSpaces > 0) {\r\n // this is a textline that should be justified\r\n additionalWhiteSpace = lineSpaceLeft / numSpacesPerline[l];\r\n }\r\n if (l != 0) {\r\n // only first line has indent\r\n offsetx -= format.indent;\r\n }\r\n }\r\n else if (format.align == \"center\") {\r\n offsetx += lineSpaceLeft / 2;\r\n }\r\n else if (format.align == \"right\") {\r\n offsetx += lineSpaceLeft;\r\n }\r\n line_width = 0;\r\n line_width += format.leftMargin + format.indent + format.rightMargin;\r\n for (w = start_idx; w < end_idx; w += 5) {\r\n this.words[w + 1] = offsetx;\r\n this.words[w + 2] = offsety;\r\n offsetx += this.words[w + 3];\r\n line_width += this.words[w + 3];\r\n if (format.align == \"justify\" && this.chars_codes[this.words[w]] == 32) {\r\n // this is whitepace, we need to add extra space for justified text\r\n offsetx += additionalWhiteSpace;\r\n }\r\n }\r\n offsety += format.font_table.getLineHeight() + format.leading;\r\n /* enable for icycle:\r\n if(format.leading==11 && format.font_name==\"DayPosterBlack\"){\r\n offsety+=1.5;\r\n }\r\n */\r\n if (line_width > text_width) {\r\n text_width = line_width;\r\n }\r\n }\r\n }\r\n // -2 so this values do not include the left and top border\r\n this._textWidth = text_width;\r\n this._textHeight = offsety;\r\n //console.log(this._textWidth, \"/\", this._textHeight);\r\n //this._textWidth+=this._textFormat.indent+ this._textFormat.leftMargin+ this._textFormat.rightMargin;\r\n // if autosize is enabled, we adjust the textFieldHeight\r\n if (this.autoSize != TextFieldAutoSize.NONE) {\r\n this._height = this._textHeight + 4;\r\n this._pInvalidateBounds();\r\n }\r\n };\r\n TextField.prototype.buildGlyphs = function () {\r\n var textShape;\r\n for (var key in this.textShapes) {\r\n textShape = this.textShapes[key];\r\n this._graphics.removeShape(textShape.shape);\r\n Shape.storeShape(textShape.shape);\r\n textShape.shape.dispose();\r\n textShape.shape = null;\r\n textShape.elements.clear();\r\n textShape.elements.dispose();\r\n textShape.elements = null;\r\n textShape.verts.length = 0;\r\n }\r\n this.textShapes = {};\r\n this._graphics.clear();\r\n if (this._background || this._border) {\r\n if (this._background)\r\n this._graphics.beginFill(this._backgroundColor, 1); //this.background?1:0);\r\n if (this._border)\r\n this._graphics.lineStyle(1, this._borderColor, 1); //this.borderColor, this.border?1:0);\r\n this._graphics.drawRect(0, 0, this._width, this._height);\r\n this._graphics.endFill();\r\n }\r\n var textShape;\r\n // process all textRuns\r\n var tr = 0;\r\n var tr_len = this._textRuns_formats.length;\r\n for (tr = 0; tr < tr_len; tr++) {\r\n this._textRuns_formats[tr].font_table.initFontSize(this._textRuns_formats[tr].size);\r\n this._textRuns_formats[tr].font_table.fillTextRun(this, this._textRuns_formats[tr], this._textRuns_words[(tr * 4)], this._textRuns_words[(tr * 4) + 1]);\r\n }\r\n for (var key in this.textShapes) {\r\n textShape = this.textShapes[key];\r\n var attr_length = 2; //(tess_fontTable.usesCurves)?3:2;\r\n var attributesView = new AttributesView(Float32Array, attr_length);\r\n attributesView.set(textShape.verts);\r\n var vertexBuffer = attributesView.attributesBuffer;\r\n attributesView.dispose();\r\n textShape.elements = new TriangleElements(vertexBuffer);\r\n textShape.elements.setPositions(new Float2Attributes(vertexBuffer));\r\n //if(tess_fontTable.usesCurves){\r\n //\tthis._textElements.setCustomAttributes(\"curves\", new Byte4Attributes(vertexBuffer, false));\r\n //}\r\n textShape.shape = this._graphics.addShape(Shape.getShape(textShape.elements));\r\n var sampler = new Sampler2D();\r\n textShape.shape.style = new Style();\r\n if (textShape.format.material && this._textColor == -1) {\r\n textShape.shape.material = this._textFormat.material;\r\n textShape.shape.style.addSamplerAt(sampler, textShape.shape.material.getTextureAt(0));\r\n textShape.shape.material.animateUVs = true;\r\n textShape.shape.style.uvMatrix = new Matrix(0, 0, 0, 0, textShape.format.uv_values[0], textShape.format.uv_values[1]);\r\n }\r\n else {\r\n var obj = Graphics.get_material_for_color(this._textColor == -1 ? textShape.format.color : this._textColor, 1);\r\n textShape.shape.material = obj.material;\r\n if (obj.colorPos) {\r\n textShape.shape.style.addSamplerAt(sampler, textShape.shape.material.getTextureAt(0));\r\n textShape.shape.material.animateUVs = true;\r\n textShape.shape.style.uvMatrix = new Matrix(0, 0, 0, 0, obj.colorPos.x, obj.colorPos.y);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Appends the string specified by the newText parameter to the\r\n * end of the text of the text field. This method is more efficient than an\r\n * addition assignment(+=) on a text property\r\n * (such as someTextField.text += moreText), particularly for a\r\n * text field that contains a significant amount of content.\r\n *\r\n * @param newText The string to append to the existing text.\r\n */\r\n TextField.prototype.appendText = function (newText) {\r\n this._text += newText;\r\n this._textDirty = true;\r\n if (this._autoSize != TextFieldAutoSize.NONE)\r\n this._pInvalidateBounds();\r\n };\r\n /**\r\n * *tells the Textfield that a paragraph is defined completly.\r\n * e.g. the textfield will start a new line for future added text.\r\n */\r\n TextField.prototype.closeParagraph = function () {\r\n this._text += \"\\n\";\r\n this._textDirty = true;\r\n //TODO\r\n if (this._autoSize != TextFieldAutoSize.NONE)\r\n this._pInvalidateBounds();\r\n };\r\n /**\r\n * Returns a rectangle that is the bounding box of the character.\r\n *\r\n * @param charIndex The zero-based index value for the character(for\r\n * example, the first position is 0, the second position is\r\n * 1, and so on).\r\n * @return A rectangle with x and y minimum and\r\n * maximum values defining the bounding box of the character.\r\n */\r\n TextField.prototype.getCharBoundaries = function (charIndex) {\r\n return this._charBoundaries;\r\n };\r\n /**\r\n * Returns the zero-based index value of the character at the point specified\r\n * by the x and y parameters.\r\n *\r\n * @param x The x coordinate of the character.\r\n * @param y The y coordinate of the character.\r\n * @return The zero-based index value of the character(for example, the\r\n * first position is 0, the second position is 1, and so on). Returns\r\n * -1 if the point is not over any character.\r\n */\r\n TextField.prototype.getCharIndexAtPoint = function (x, y) {\r\n return this._charIndexAtPoint;\r\n };\r\n /**\r\n * Given a character index, returns the index of the first character in the\r\n * same paragraph.\r\n *\r\n * @param charIndex The zero-based index value of the character(for example,\r\n * the first character is 0, the second character is 1, and\r\n * so on).\r\n * @return The zero-based index value of the first character in the same\r\n * paragraph.\r\n * @throws RangeError The character index specified is out of range.\r\n */\r\n TextField.prototype.getFirstCharInParagraph = function (charIndex /*int*/) {\r\n return this._firstCharInParagraph;\r\n };\r\n /**\r\n * Returns a DisplayObject reference for the given id, for an\r\n * image or SWF file that has been added to an HTML-formatted text field by\r\n * using an tag. The tag is in the\r\n * following format:\r\n *\r\n *

 

\r\n *\r\n * @param id The id to match(in the id attribute\r\n * of the tag).\r\n * @return The display object corresponding to the image or SWF file with the\r\n * matching id attribute in the tag\r\n * of the text field. For media loaded from an external source, this\r\n * object is a Loader object, and, once loaded, the media object is a\r\n * child of that Loader object. For media embedded in the SWF file,\r\n * it is the loaded object. If no tag with the\r\n * matching id exists, the method returns\r\n * null.\r\n */\r\n TextField.prototype.getImageReference = function (id) {\r\n return this._imageReference;\r\n };\r\n /**\r\n * Returns the zero-based index value of the line at the point specified by\r\n * the x and y parameters.\r\n *\r\n * @param x The x coordinate of the line.\r\n * @param y The y coordinate of the line.\r\n * @return The zero-based index value of the line(for example, the first\r\n * line is 0, the second line is 1, and so on). Returns -1 if the\r\n * point is not over any line.\r\n */\r\n TextField.prototype.getLineIndexAtPoint = function (x, y) {\r\n return this._lineIndexAtPoint;\r\n };\r\n /**\r\n * Returns the zero-based index value of the line containing the character\r\n * specified by the charIndex parameter.\r\n *\r\n * @param charIndex The zero-based index value of the character(for example,\r\n * the first character is 0, the second character is 1, and\r\n * so on).\r\n * @return The zero-based index value of the line.\r\n * @throws RangeError The character index specified is out of range.\r\n */\r\n TextField.prototype.getLineIndexOfChar = function (charIndex /*int*/) {\r\n return this._lineIndexOfChar;\r\n };\r\n /**\r\n * Returns the number of characters in a specific text line.\r\n *\r\n * @param lineIndex The line number for which you want the length.\r\n * @return The number of characters in the line.\r\n * @throws RangeError The line number specified is out of range.\r\n */\r\n TextField.prototype.getLineLength = function (lineIndex /*int*/) {\r\n return this._lineLength;\r\n };\r\n /**\r\n * Returns metrics information about a given text line.\r\n *\r\n * @param lineIndex The line number for which you want metrics information.\r\n * @return A TextLineMetrics object.\r\n * @throws RangeError The line number specified is out of range.\r\n */\r\n TextField.prototype.getLineMetrics = function (lineIndex /*int*/) {\r\n return this._lineMetrics;\r\n };\r\n /**\r\n * Returns the character index of the first character in the line that the\r\n * lineIndex parameter specifies.\r\n *\r\n * @param lineIndex The zero-based index value of the line(for example, the\r\n * first line is 0, the second line is 1, and so on).\r\n * @return The zero-based index value of the first character in the line.\r\n * @throws RangeError The line number specified is out of range.\r\n */\r\n TextField.prototype.getLineOffset = function (lineIndex /*int*/) {\r\n return this._lineOffset;\r\n };\r\n /**\r\n * Returns the text of the line specified by the lineIndex\r\n * parameter.\r\n *\r\n * @param lineIndex The zero-based index value of the line(for example, the\r\n * first line is 0, the second line is 1, and so on).\r\n * @return The text string contained in the specified line.\r\n * @throws RangeError The line number specified is out of range.\r\n */\r\n TextField.prototype.getLineText = function (lineIndex /*int*/) {\r\n return this._lineText;\r\n };\r\n /**\r\n * Given a character index, returns the length of the paragraph containing\r\n * the given character. The length is relative to the first character in the\r\n * paragraph(as returned by getFirstCharInParagraph()), not to\r\n * the character index passed in.\r\n *\r\n * @param charIndex The zero-based index value of the character(for example,\r\n * the first character is 0, the second character is 1, and\r\n * so on).\r\n * @return Returns the number of characters in the paragraph.\r\n * @throws RangeError The character index specified is out of range.\r\n */\r\n TextField.prototype.getParagraphLength = function (charIndex /*int*/) {\r\n return this._paragraphLength;\r\n };\r\n /**\r\n * Returns a TextFormat object that contains formatting information for the\r\n * range of text that the beginIndex and endIndex\r\n * parameters specify. Only properties that are common to the entire text\r\n * specified are set in the resulting TextFormat object. Any property that is\r\n * mixed, meaning that it has different values at different points in\r\n * the text, has a value of null.\r\n *\r\n *

If you do not specify values for these parameters, this method is\r\n * applied to all the text in the text field.

\r\n *\r\n *

The following table describes three possible usages:

\r\n *\r\n * @return The TextFormat object that represents the formatting properties\r\n * for the specified text.\r\n * @throws RangeError The beginIndex or endIndex\r\n * specified is out of range.\r\n */\r\n TextField.prototype.getTextFormat = function (beginIndex, endIndex) {\r\n if (beginIndex === void 0) { beginIndex = -1; }\r\n if (endIndex === void 0) { endIndex = -1; }\r\n return this._textFormat;\r\n };\r\n /**\r\n * Replaces the current selection with the contents of the value\r\n * parameter. The text is inserted at the position of the current selection,\r\n * using the current default character format and default paragraph format.\r\n * The text is not treated as HTML.\r\n *\r\n *

You can use the replaceSelectedText() method to insert and\r\n * delete text without disrupting the character and paragraph formatting of\r\n * the rest of the text.

\r\n *\r\n *

Note: This method does not work if a style sheet is applied to\r\n * the text field.

\r\n *\r\n * @param value The string to replace the currently selected text.\r\n * @throws Error This method cannot be used on a text field with a style\r\n * sheet.\r\n */\r\n TextField.prototype.replaceSelectedText = function (value) {\r\n };\r\n /**\r\n * Replaces the range of characters that the beginIndex and\r\n * endIndex parameters specify with the contents of the\r\n * newText parameter. As designed, the text from\r\n * beginIndex to endIndex-1 is replaced.\r\n *\r\n *

Note: This method does not work if a style sheet is applied to\r\n * the text field.

\r\n *\r\n * @param beginIndex The zero-based index value for the start position of the\r\n * replacement range.\r\n * @param endIndex The zero-based index position of the first character\r\n * after the desired text span.\r\n * @param newText The text to use to replace the specified range of\r\n * characters.\r\n * @throws Error This method cannot be used on a text field with a style\r\n * sheet.\r\n */\r\n TextField.prototype.replaceText = function (beginIndex /*int*/, endIndex /*int*/, newText) {\r\n };\r\n /**\r\n * Sets as selected the text designated by the index values of the first and\r\n * last characters, which are specified with the beginIndex and\r\n * endIndex parameters. If the two parameter values are the\r\n * same, this method sets the insertion point, as if you set the\r\n * caretIndex property.\r\n *\r\n * @param beginIndex The zero-based index value of the first character in the\r\n * selection(for example, the first character is 0, the\r\n * second character is 1, and so on).\r\n * @param endIndex The zero-based index value of the last character in the\r\n * selection.\r\n */\r\n TextField.prototype.setSelection = function (beginIndex /*int*/, endIndex /*int*/) {\r\n };\r\n /**\r\n * Applies the text formatting that the format parameter\r\n * specifies to the specified text in a text field. The value of\r\n * format must be a TextFormat object that specifies the desired\r\n * text formatting changes. Only the non-null properties of\r\n * format are applied to the text field. Any property of\r\n * format that is set to null is not applied. By\r\n * default, all of the properties of a newly created TextFormat object are\r\n * set to null.\r\n *\r\n *

Note: This method does not work if a style sheet is applied to\r\n * the text field.

\r\n *\r\n *

The setTextFormat() method changes the text formatting\r\n * applied to a range of characters or to the entire body of text in a text\r\n * field. To apply the properties of format to all text in the text field, do\r\n * not specify values for beginIndex and endIndex.\r\n * To apply the properties of the format to a range of text, specify values\r\n * for the beginIndex and the endIndex parameters.\r\n * You can use the length property to determine the index\r\n * values.

\r\n *\r\n *

The two types of formatting information in a TextFormat object are\r\n * character level formatting and paragraph level formatting. Each character\r\n * in a text field can have its own character formatting settings, such as\r\n * font name, font size, bold, and italic.

\r\n *\r\n *

For paragraphs, the first character of the paragraph is examined for\r\n * the paragraph formatting settings for the entire paragraph. Examples of\r\n * paragraph formatting settings are left margin, right margin, and\r\n * indentation.

\r\n *\r\n *

Any text inserted manually by the user, or replaced by the\r\n * replaceSelectedText() method, receives the default text field\r\n * formatting for new text, and not the formatting specified for the text\r\n * insertion point. To set the default formatting for new text, use\r\n * defaultTextFormat.

\r\n *\r\n * @param format A TextFormat object that contains character and paragraph\r\n * formatting information.\r\n * @throws Error This method cannot be used on a text field with a style\r\n * sheet.\r\n * @throws RangeError The beginIndex or endIndex\r\n * specified is out of range.\r\n */\r\n TextField.prototype.setTextFormat = function (format, beginIndex, endIndex) {\r\n if (beginIndex === void 0) { beginIndex = -1; }\r\n if (endIndex === void 0) { endIndex = -1; }\r\n };\r\n /**\r\n * Returns true if an embedded font is available with the specified\r\n * fontName and fontStyle where\r\n * Font.fontType is flash.text.FontType.EMBEDDED.\r\n * Starting with Flash Player 10, two kinds of embedded fonts can appear in a\r\n * SWF file. Normal embedded fonts are only used with TextField objects. CFF\r\n * embedded fonts are only used with the flash.text.engine classes. The two\r\n * types are distinguished by the fontType property of the\r\n * Font class, as returned by the enumerateFonts()\r\n * function.\r\n *\r\n *

TextField cannot use a font of type EMBEDDED_CFF. If\r\n * embedFonts is set to true and the only font\r\n * available at run time with the specified name and style is of type\r\n * EMBEDDED_CFF, Flash Player fails to render the text, as if no\r\n * embedded font were available with the specified name and style.

\r\n *\r\n *

If both EMBEDDED and EMBEDDED_CFF fonts are\r\n * available with the same name and style, the EMBEDDED font is\r\n * selected and text renders with the EMBEDDED font.

\r\n *\r\n * @param fontName The name of the embedded font to check.\r\n * @param fontStyle Specifies the font style to check. Use\r\n * flash.text.FontStyle\r\n * @return true if a compatible embedded font is available,\r\n * otherwise false.\r\n * @throws ArgumentError The fontStyle specified is not a member\r\n * of flash.text.FontStyle.\r\n */\r\n TextField.isFontCompatible = function (fontName, fontStyle) {\r\n return false;\r\n };\r\n TextField.prototype.clone = function () {\r\n var newInstance = TextField.getNewTextField();\r\n this.copyTo(newInstance);\r\n return newInstance;\r\n };\r\n TextField.prototype.copyTo = function (newInstance) {\r\n _super.prototype.copyTo.call(this, newInstance);\r\n newInstance.width = this._width;\r\n newInstance.height = this._height;\r\n newInstance.textFormat = this._textFormat;\r\n //newInstance.textColor = this._textColor;\r\n newInstance.text = this._text;\r\n };\r\n return TextField;\r\n}(DisplayObject));\r\nexport { TextField };\r\nTextField._textFields = [];\r\nTextField.assetType = \"[asset TextField]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/TextField.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetEvent } from \"@awayjs/core\";\r\nimport { Timeline } from \"../base/Timeline\";\r\nimport { MouseEvent } from \"../events/MouseEvent\";\r\nimport { FrameScriptManager } from \"../managers/FrameScriptManager\";\r\nimport { Sprite } from \"./Sprite\";\r\nimport { TextField } from \"./TextField\";\r\nvar MovieClip = (function (_super) {\r\n tslib_1.__extends(MovieClip, _super);\r\n function MovieClip(timeline) {\r\n if (timeline === void 0) { timeline = null; }\r\n var _this = _super.call(this) || this;\r\n _this._isButton = false;\r\n _this._time = 0; // the current time inside the animation\r\n _this._currentFrameIndex = -1; // the current frame\r\n _this._isPlaying = true; // false if paused or stopped\r\n _this._isInit = true;\r\n _this._potentialInstances = [];\r\n _this._depth_sessionIDs = {};\r\n _this._sessionID_childs = {};\r\n /**\r\n *\r\n */\r\n _this.loop = true;\r\n /**\r\n * the current index of the current active frame\r\n */\r\n _this.constructedKeyFrameIndex = -1;\r\n _this._enterFrame = new AssetEvent(AssetEvent.ENTER_FRAME, _this);\r\n _this.inheritColorTransform = true;\r\n // todo: allow to set cursor-types for movieclip\r\n _this._onMouseOver = function (event) {\r\n document.body.style.cursor = \"pointer\";\r\n _this.currentFrameIndex = 1;\r\n };\r\n _this._onMouseOut = function (event) {\r\n document.body.style.cursor = \"initial\";\r\n _this.currentFrameIndex = 0;\r\n };\r\n _this._onMouseDown = function (event) {\r\n document.body.style.cursor = \"initial\";\r\n _this.currentFrameIndex = 2;\r\n };\r\n _this._onMouseUp = function (event) {\r\n document.body.style.cursor = \"initial\";\r\n _this.currentFrameIndex = _this.currentFrameIndex == 0 ? 0 : 1;\r\n };\r\n _this._timeline = timeline || new Timeline();\r\n return _this;\r\n }\r\n MovieClip.getNewMovieClip = function (timeline) {\r\n if (timeline === void 0) { timeline = null; }\r\n return (MovieClip._movieClips.length) ? MovieClip._movieClips.pop() : new MovieClip(timeline);\r\n };\r\n MovieClip.prototype.dispose = function () {\r\n this.disposeValues();\r\n MovieClip._movieClips.push(this);\r\n };\r\n MovieClip.prototype.disposeValues = function () {\r\n _super.prototype.disposeValues.call(this);\r\n this._potentialInstances = [];\r\n this._depth_sessionIDs = {};\r\n this._sessionID_childs = {};\r\n };\r\n MovieClip.prototype.reset_textclones = function () {\r\n if (this.timeline) {\r\n var len = this._potentialInstances.length;\r\n for (var i = 0; i < len; i++) {\r\n if (this._potentialInstances[i] != null) {\r\n if (this._potentialInstances[i].isAsset(TextField))\r\n this._potentialInstances[i].text = this.timeline.getPotentialChildPrototype(i).text;\r\n else if (this._potentialInstances[i].isAsset(MovieClip))\r\n this._potentialInstances[i].reset_textclones();\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(MovieClip.prototype, \"isInit\", {\r\n get: function () {\r\n return this._isInit;\r\n },\r\n set: function (value) {\r\n this._isInit = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MovieClip.prototype, \"timeline\", {\r\n get: function () {\r\n return this._timeline;\r\n },\r\n set: function (value) {\r\n this._timeline = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MovieClip.prototype, \"numFrames\", {\r\n get: function () {\r\n return this._timeline.numFrames;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n MovieClip.prototype.jumpToLabel = function (label) {\r\n // the timeline.jumpTolabel will set currentFrameIndex\r\n this._timeline.jumpToLabel(this, label);\r\n };\r\n MovieClip.prototype.reset = function () {\r\n _super.prototype.reset.call(this);\r\n // time only is relevant for the root mc, as it is the only one that executes the update function\r\n this._time = 0;\r\n if (this._adapter)\r\n this.adapter.freeFromScript();\r\n this.constructedKeyFrameIndex = -1;\r\n for (var i = this.numChildren - 1; i >= 0; i--)\r\n this.removeChildAt(i);\r\n this._skipAdvance = MovieClip._skipAdvance;\r\n var numFrames = this._timeline.keyframe_indices.length;\r\n this._isPlaying = Boolean(numFrames > 1);\r\n if (numFrames) {\r\n this._currentFrameIndex = 0;\r\n this._timeline.constructNextFrame(this, true, true);\r\n }\r\n else {\r\n this._currentFrameIndex = -1;\r\n }\r\n };\r\n MovieClip.prototype.resetSessionIDs = function () {\r\n this._depth_sessionIDs = {};\r\n };\r\n Object.defineProperty(MovieClip.prototype, \"currentFrameIndex\", {\r\n /*\r\n * Setting the currentFrameIndex will move the playhead for this movieclip to the new position\r\n */\r\n get: function () {\r\n return this._currentFrameIndex;\r\n },\r\n set: function (value) {\r\n //if currentFrame is set greater than the available number of\r\n //frames, the playhead is moved to the last frame in the timeline.\r\n //But because the frame specified was not a keyframe, no scripts are\r\n //executed, even if they exist on the last frame.\r\n var skip_script = false;\r\n var numFrames = this._timeline.keyframe_indices.length;\r\n if (!numFrames)\r\n return;\r\n if (value < 0) {\r\n value = 0;\r\n }\r\n else if (value >= numFrames) {\r\n value = numFrames - 1;\r\n skip_script = true;\r\n }\r\n if (this._currentFrameIndex == value)\r\n return;\r\n this._currentFrameIndex = value;\r\n //changing current frame will ignore advance command for that\r\n //update's advanceFrame function, unless advanceFrame has\r\n //already been executed\r\n this._skipAdvance = MovieClip._skipAdvance;\r\n this._timeline.gotoFrame(this, value, skip_script);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n MovieClip.prototype.addButtonListeners = function () {\r\n this._isButton = true;\r\n this.stop();\r\n this.addEventListener(MouseEvent.MOUSE_OVER, this._onMouseOver);\r\n this.addEventListener(MouseEvent.MOUSE_OUT, this._onMouseOut);\r\n this.addEventListener(MouseEvent.MOUSE_DOWN, this._onMouseDown);\r\n this.addEventListener(MouseEvent.MOUSE_UP, this._onMouseUp);\r\n };\r\n MovieClip.prototype.removeButtonListeners = function () {\r\n this.removeEventListener(MouseEvent.MOUSE_OVER, this._onMouseOver);\r\n this.removeEventListener(MouseEvent.MOUSE_OUT, this._onMouseOut);\r\n this.removeEventListener(MouseEvent.MOUSE_DOWN, this._onMouseDown);\r\n this.removeEventListener(MouseEvent.MOUSE_UP, this._onMouseUp);\r\n };\r\n MovieClip.prototype.getChildAtSessionID = function (sessionID) {\r\n return this._sessionID_childs[sessionID];\r\n };\r\n MovieClip.prototype.getSessionIDDepths = function () {\r\n return this._depth_sessionIDs;\r\n };\r\n MovieClip.prototype.addChildAtDepth = function (child, depth, replace) {\r\n if (replace === void 0) { replace = true; }\r\n child.reset(); // this takes care of transform and visibility\r\n return _super.prototype.addChildAtDepth.call(this, child, depth, replace);\r\n };\r\n MovieClip.prototype._addTimelineChildAt = function (child, depth, sessionID) {\r\n this._depth_sessionIDs[depth] = child._sessionID = sessionID;\r\n this._sessionID_childs[sessionID] = child;\r\n return this.addChildAtDepth(child, depth);\r\n };\r\n MovieClip.prototype.removeChildAtInternal = function (index) {\r\n var child = this._children[index];\r\n if (child._adapter)\r\n child.adapter.freeFromScript();\r\n this.adapter.unregisterScriptObject(child);\r\n //check to make sure _depth_sessionIDs wasn't modified with a new child\r\n if (this._depth_sessionIDs[child._depthID] == child._sessionID)\r\n delete this._depth_sessionIDs[child._depthID];\r\n delete this._sessionID_childs[child._sessionID];\r\n child._sessionID = -1;\r\n return _super.prototype.removeChildAtInternal.call(this, index);\r\n };\r\n Object.defineProperty(MovieClip.prototype, \"assetType\", {\r\n get: function () {\r\n return MovieClip.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Starts playback of animation from current position\r\n */\r\n MovieClip.prototype.play = function () {\r\n if (this._timeline.keyframe_indices.length > 1)\r\n this._isPlaying = true;\r\n };\r\n /**\r\n * should be called right before the call to away3d-render.\r\n */\r\n MovieClip.prototype.update = function (events) {\r\n //if events is null, this is as2, if it is not null, this is as3web\r\n if (events === void 0) { events = null; }\r\n MovieClip._skipAdvance = true;\r\n if (events != null) {\r\n this.adapter.dispatchEvent(events[0]);\r\n }\r\n this.advanceFrame();\r\n MovieClip._skipAdvance = false;\r\n // after we advanced the scenegraph, we might have some script that needs executing\r\n FrameScriptManager.execute_queue();\r\n //this.dispatchEvent(this._enterFrame);\r\n // after we executed the onEnter, we might have some script that needs executing\r\n FrameScriptManager.execute_queue();\r\n // now we execute any intervals queued\r\n FrameScriptManager.execute_intervals();\r\n // finally, we execute any scripts that were added from intervals\r\n FrameScriptManager.execute_queue();\r\n //execute any disposes as a result of framescripts\r\n FrameScriptManager.execute_dispose();\r\n if (events != null) {\r\n this.adapter.dispatchEvent(events[1]);\r\n }\r\n };\r\n MovieClip.prototype.getPotentialChildInstance = function (id) {\r\n if (!this._potentialInstances[id])\r\n this._potentialInstances[id] = this._timeline.getPotentialChildInstance(id);\r\n return this._potentialInstances[id];\r\n };\r\n /**\r\n * Stop playback of animation and hold current position\r\n */\r\n MovieClip.prototype.stop = function () {\r\n this._isPlaying = false;\r\n };\r\n MovieClip.prototype.clone = function () {\r\n var newInstance = MovieClip.getNewMovieClip(this._timeline);\r\n this.copyTo(newInstance);\r\n return newInstance;\r\n };\r\n MovieClip.prototype.copyTo = function (newInstance) {\r\n _super.prototype.copyTo.call(this, newInstance);\r\n newInstance.timeline = this._timeline;\r\n newInstance.loop = this.loop;\r\n };\r\n MovieClip.prototype.advanceFrame = function () {\r\n if (this._isPlaying && !this._skipAdvance) {\r\n if (this._currentFrameIndex == this._timeline.keyframe_indices.length - 1) {\r\n if (this.loop)\r\n this.currentFrameIndex = 0;\r\n else\r\n this._isPlaying = false;\r\n }\r\n else {\r\n this._currentFrameIndex++;\r\n this._timeline.constructNextFrame(this);\r\n }\r\n }\r\n var len = this._children.length;\r\n var child;\r\n for (var i = 0; i < len; ++i) {\r\n child = this._children[i];\r\n if (child.isAsset(MovieClip))\r\n child.advanceFrame();\r\n }\r\n this.dispatchEvent(this._enterFrame);\r\n this._skipAdvance = false;\r\n };\r\n // DEBUG CODE:\r\n MovieClip.prototype.logHierarchy = function (depth) {\r\n if (depth === void 0) { depth = 0; }\r\n this.printHierarchyName(depth, this);\r\n var len = this._children.length;\r\n var child;\r\n for (var i = 0; i < len; i++) {\r\n child = this._children[i];\r\n if (child.isAsset(MovieClip))\r\n child.logHierarchy(depth + 1);\r\n else\r\n this.printHierarchyName(depth + 1, child);\r\n }\r\n };\r\n MovieClip.prototype.printHierarchyName = function (depth, target) {\r\n var str = \"\";\r\n for (var i = 0; i < depth; ++i)\r\n str += \"--\";\r\n str += \" \" + target.name + \" = \" + target.id;\r\n console.log(str);\r\n };\r\n MovieClip.prototype.clear = function () {\r\n //clear out potential instances\r\n var len = this._potentialInstances.length;\r\n for (var i = 0; i < len; i++) {\r\n var instance = this._potentialInstances[i];\r\n //only dispose instances that are not used in script ie. do not have an instance name\r\n if (instance && instance.name == \"\") {\r\n FrameScriptManager.add_child_to_dispose(instance);\r\n delete this._potentialInstances[i];\r\n }\r\n }\r\n _super.prototype.clear.call(this);\r\n };\r\n return MovieClip;\r\n}(Sprite));\r\nexport { MovieClip };\r\nMovieClip._movieClips = new Array();\r\nMovieClip.assetType = \"[asset MovieClip]\";\r\nexport default MovieClip;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/MovieClip.js","import * as tslib_1 from \"tslib\";\r\nimport { PerspectiveProjection } from \"@awayjs/core\";\r\nimport { ImageCube, SingleCubeTexture } from \"@awayjs/graphics\";\r\nimport { ShadowMapperBase } from \"./ShadowMapperBase\";\r\nvar CubeMapShadowMapper = (function (_super) {\r\n tslib_1.__extends(CubeMapShadowMapper, _super);\r\n function CubeMapShadowMapper() {\r\n var _this = _super.call(this) || this;\r\n _this._depthMapSize = 512;\r\n _this._needsRender = new Array();\r\n _this.initCameras();\r\n return _this;\r\n }\r\n CubeMapShadowMapper.prototype.initCameras = function () {\r\n this._depthProjections = new Array();\r\n // posX, negX, posY, negY, posZ, negZ\r\n this.addProjection(0, 90, 0);\r\n this.addProjection(0, -90, 0);\r\n this.addProjection(-90, 0, 0);\r\n this.addProjection(90, 0, 0);\r\n this.addProjection(0, 0, 0);\r\n this.addProjection(0, 180, 0);\r\n };\r\n CubeMapShadowMapper.prototype.addProjection = function (rotationX, rotationY, rotationZ) {\r\n var projection = new PerspectiveProjection();\r\n projection.transform.rotateTo(rotationX, rotationY, rotationZ);\r\n projection.near = .01;\r\n projection.fieldOfView = 90;\r\n this._depthProjections.push(projection);\r\n };\r\n /**\r\n *\r\n * @returns {SingleCubeTexture}\r\n * @private\r\n */\r\n CubeMapShadowMapper.prototype._createDepthTexture = function () {\r\n return new SingleCubeTexture(new ImageCube(this._depthMapSize));\r\n };\r\n /**\r\n *\r\n * @param projection\r\n * @private\r\n */\r\n CubeMapShadowMapper.prototype._updateDepthProjection = function (projection) {\r\n var light = (this._light);\r\n var maxDistance = light._pFallOff;\r\n var pos = this._light.scenePosition;\r\n // todo: faces outside frustum which are pointing away from camera need not be rendered!\r\n for (var i = 0; i < 6; ++i) {\r\n this._depthProjections[i].far = maxDistance;\r\n this._depthProjections[i].transform.moveTo(pos.x, pos.y, pos.z);\r\n this._needsRender[i] = true;\r\n }\r\n };\r\n /**\r\n *\r\n * @param view\r\n * @param target\r\n * @param renderer\r\n * @private\r\n */\r\n CubeMapShadowMapper.prototype._drawDepthMap = function (view, target, renderer) {\r\n for (var i = 0; i < 6; ++i)\r\n if (this._needsRender[i])\r\n renderer._iRender(this._depthProjections[i], view, target.imageCube, null, i);\r\n };\r\n return CubeMapShadowMapper;\r\n}(ShadowMapperBase));\r\nexport { CubeMapShadowMapper };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shadowmappers/CubeMapShadowMapper.js","import * as tslib_1 from \"tslib\";\r\nimport { Matrix3D, Vector3D } from \"@awayjs/core\";\r\nimport { TraverserBase } from \"@awayjs/graphics\";\r\nimport { BoundsType } from \"../bounds/BoundsType\";\r\nimport { CubeMapShadowMapper } from \"../shadowmappers/CubeMapShadowMapper\";\r\nimport { LightBase } from \"./LightBase\";\r\nvar PointLight = (function (_super) {\r\n tslib_1.__extends(PointLight, _super);\r\n function PointLight() {\r\n var _this = _super.call(this) || this;\r\n _this._pRadius = 90000;\r\n _this._pFallOff = 100000;\r\n _this._pIsEntity = true;\r\n _this._pFallOffFactor = 1 / (_this._pFallOff * _this._pFallOff - _this._pRadius * _this._pRadius);\r\n //default bounds type\r\n _this._boundsType = BoundsType.SPHERE;\r\n return _this;\r\n }\r\n Object.defineProperty(PointLight.prototype, \"traverseName\", {\r\n get: function () {\r\n return PointLight.traverseName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PointLight.prototype, \"assetType\", {\r\n get: function () {\r\n return PointLight.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PointLight.prototype.pCreateShadowMapper = function () {\r\n return new CubeMapShadowMapper();\r\n };\r\n Object.defineProperty(PointLight.prototype, \"radius\", {\r\n get: function () {\r\n return this._pRadius;\r\n },\r\n set: function (value) {\r\n this._pRadius = value;\r\n if (this._pRadius < 0) {\r\n this._pRadius = 0;\r\n }\r\n else if (this._pRadius > this._pFallOff) {\r\n this._pFallOff = this._pRadius;\r\n this._pInvalidateBounds();\r\n }\r\n this._pFallOffFactor = 1 / (this._pFallOff * this._pFallOff - this._pRadius * this._pRadius);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PointLight.prototype.iFallOffFactor = function () {\r\n return this._pFallOffFactor;\r\n };\r\n Object.defineProperty(PointLight.prototype, \"fallOff\", {\r\n get: function () {\r\n return this._pFallOff;\r\n },\r\n set: function (value) {\r\n this._pFallOff = value;\r\n if (this._pFallOff < 0)\r\n this._pFallOff = 0;\r\n if (this._pFallOff < this._pRadius)\r\n this._pRadius = this._pFallOff;\r\n this._pFallOffFactor = 1 / (this._pFallOff * this._pFallOff - this._pRadius * this._pRadius);\r\n this._pInvalidateBounds();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PointLight.prototype._pUpdateSphereBounds = function () {\r\n _super.prototype._pUpdateSphereBounds.call(this);\r\n this._pSphereBounds.radius = this._pFallOff;\r\n };\r\n PointLight.prototype.iGetObjectProjectionMatrix = function (displayObject, cameraTransform, target) {\r\n if (target === void 0) { target = null; }\r\n if (!target)\r\n target = new Matrix3D();\r\n var m = Matrix3D.CALCULATION_MATRIX;\r\n // todo: do not use lookAt on Light\r\n m.copyFrom(displayObject.getRenderSceneTransform(cameraTransform));\r\n m.append(this._pParent.transform.inverseConcatenatedMatrix3D);\r\n this.lookAt(m.position);\r\n m.copyFrom(displayObject.getRenderSceneTransform(cameraTransform));\r\n m.append(this.transform.inverseConcatenatedMatrix3D);\r\n var box = displayObject.getBox();\r\n var v1 = m.deltaTransformVector(new Vector3D(box.left, box.bottom, box.front));\r\n var v2 = m.deltaTransformVector(new Vector3D(box.right, box.top, box.back));\r\n var d1 = v1.x * v1.x + v1.y * v1.y + v1.z * v1.z;\r\n var d2 = v2.x * v2.x + v2.y * v2.y + v2.z * v2.z;\r\n var d = Math.sqrt(d1 > d2 ? d1 : d2);\r\n var zMin;\r\n var zMax;\r\n var z = m._rawData[14];\r\n zMin = z - d;\r\n zMax = z + d;\r\n var targetData = target._rawData;\r\n targetData[5] = targetData[0] = zMin / d;\r\n targetData[10] = zMax / (zMax - zMin);\r\n targetData[11] = 1;\r\n targetData[1] = targetData[2] = targetData[3] = targetData[4] = targetData[6] = targetData[7] = targetData[8] = targetData[9] = targetData[12] = targetData[13] = targetData[15] = 0;\r\n targetData[14] = -zMin * targetData[10];\r\n target.prepend(m);\r\n return target;\r\n };\r\n return PointLight;\r\n}(LightBase));\r\nexport { PointLight };\r\nPointLight.traverseName = TraverserBase.addEntityName(\"applyPointLight\");\r\nPointLight.assetType = \"[light PointLight]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/PointLight.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetEvent } from \"@awayjs/core\";\r\nimport { BlendMode, TraverserBase, RenderableEvent, MaterialEvent, SingleCubeTexture, Style } from \"@awayjs/graphics\";\r\nimport { BoundsType } from \"../bounds/BoundsType\";\r\nimport { DisplayObject } from \"./DisplayObject\";\r\n/**\r\n * A Skybox class is used to render a sky in the scene. It's always considered static and 'at infinity', and as\r\n * such it's always centered at the camera's position and sized to exactly fit within the camera's frustum, ensuring\r\n * the sky box is always as large as possible without being clipped.\r\n */\r\nvar Skybox = (function (_super) {\r\n tslib_1.__extends(Skybox, _super);\r\n /**\r\n * Create a new Skybox object.\r\n *\r\n * @param material\tThe material with which to render the Skybox.\r\n */\r\n function Skybox(image) {\r\n if (image === void 0) { image = null; }\r\n var _this = _super.call(this) || this;\r\n _this._textures = new Array();\r\n _this._pAlphaThreshold = 0;\r\n _this._pBlendMode = BlendMode.NORMAL;\r\n _this._curves = false;\r\n _this._imageRect = false;\r\n _this._onTextureInvalidateDelegate = function (event) { return _this.onTextureInvalidate(event); };\r\n _this._pIsEntity = true;\r\n _this._owners = new Array(_this);\r\n _this.style = new Style();\r\n _this.style.image = image;\r\n _this.texture = new SingleCubeTexture();\r\n //default bounds type\r\n _this._boundsType = BoundsType.NULL;\r\n return _this;\r\n }\r\n Object.defineProperty(Skybox.prototype, \"bothSides\", {\r\n get: function () {\r\n return false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Skybox.prototype, \"traverseName\", {\r\n get: function () {\r\n return Skybox.traverseName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Skybox.prototype, \"alphaThreshold\", {\r\n /**\r\n * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either\r\n * invisible or entirely opaque, often used with textures for foliage, etc.\r\n * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled).\r\n */\r\n get: function () {\r\n return this._pAlphaThreshold;\r\n },\r\n set: function (value) {\r\n if (value < 0)\r\n value = 0;\r\n else if (value > 1)\r\n value = 1;\r\n if (this._pAlphaThreshold == value)\r\n return;\r\n this._pAlphaThreshold = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Skybox.prototype, \"curves\", {\r\n /**\r\n * Indicates whether skybox should use curves. Defaults to false.\r\n */\r\n get: function () {\r\n return this._curves;\r\n },\r\n set: function (value) {\r\n if (this._curves == value)\r\n return;\r\n this._curves = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Skybox.prototype, \"imageRect\", {\r\n /**\r\n * Indicates whether or not the Skybox texture should use imageRects. Defaults to false.\r\n */\r\n get: function () {\r\n return this._imageRect;\r\n },\r\n set: function (value) {\r\n if (this._imageRect == value)\r\n return;\r\n this._imageRect = value;\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Skybox.prototype, \"lightPicker\", {\r\n /**\r\n * The light picker used by the material to provide lights to the material if it supports lighting.\r\n *\r\n * @see LightPickerBase\r\n * @see StaticLightPicker\r\n */\r\n get: function () {\r\n return this._pLightPicker;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Skybox.prototype, \"animationSet\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._animationSet;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Skybox.prototype, \"blendMode\", {\r\n /**\r\n * The blend mode to use when drawing this renderable. The following blend modes are supported:\r\n *
    \r\n *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \r\n *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \r\n *
  • BlendMode.MULTIPLY
  • \r\n *
  • BlendMode.ADD
  • \r\n *
  • BlendMode.ALPHA
  • \r\n *
\r\n */\r\n get: function () {\r\n return this._pBlendMode;\r\n },\r\n set: function (value) {\r\n if (this._pBlendMode == value)\r\n return;\r\n this._pBlendMode = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Skybox.prototype, \"iOwners\", {\r\n /**\r\n * A list of the IRenderables that use this material\r\n *\r\n * @private\r\n */\r\n get: function () {\r\n return this._owners;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Skybox.prototype, \"texture\", {\r\n /**\r\n * The cube texture to use as the skybox.\r\n */\r\n get: function () {\r\n return this._texture;\r\n },\r\n set: function (value) {\r\n if (this._texture == value)\r\n return;\r\n if (this._texture)\r\n this.removeTexture(this._texture);\r\n this._texture = value;\r\n if (this._texture)\r\n this.addTexture(this._texture);\r\n this.invalidatePasses();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Skybox.prototype.getNumTextures = function () {\r\n return this._textures.length;\r\n };\r\n Skybox.prototype.getTextureAt = function (index) {\r\n return this._textures[index];\r\n };\r\n Object.defineProperty(Skybox.prototype, \"assetType\", {\r\n get: function () {\r\n return Skybox.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.\r\n *\r\n * @private\r\n */\r\n Skybox.prototype.invalidatePasses = function () {\r\n this.dispatchEvent(new MaterialEvent(MaterialEvent.INVALIDATE_PASSES, this));\r\n };\r\n Skybox.prototype.invalidateElements = function () {\r\n this.dispatchEvent(new RenderableEvent(RenderableEvent.INVALIDATE_ELEMENTS, this));\r\n };\r\n Skybox.prototype.invalidateMaterial = function () {\r\n this.dispatchEvent(new RenderableEvent(RenderableEvent.INVALIDATE_MATERIAL, this));\r\n };\r\n Skybox.prototype.addTexture = function (texture) {\r\n this._textures.push(texture);\r\n texture.addEventListener(AssetEvent.INVALIDATE, this._onTextureInvalidateDelegate);\r\n this.onTextureInvalidate();\r\n };\r\n Skybox.prototype.removeTexture = function (texture) {\r\n this._textures.splice(this._textures.indexOf(texture), 1);\r\n texture.removeEventListener(AssetEvent.INVALIDATE, this._onTextureInvalidateDelegate);\r\n this.onTextureInvalidate();\r\n };\r\n Skybox.prototype.onTextureInvalidate = function (event) {\r\n if (event === void 0) { event = null; }\r\n this.invalidate();\r\n };\r\n Skybox.prototype._onInvalidateProperties = function (event) {\r\n this.invalidateMaterial();\r\n this.invalidatePasses();\r\n };\r\n Skybox.prototype._acceptTraverser = function (traverser) {\r\n traverser.applyRenderable(this);\r\n };\r\n Skybox.prototype.iAddOwner = function (owner) {\r\n };\r\n /**\r\n * Removes an IEntity as owner.\r\n * @param owner\r\n *\r\n * @internal\r\n */\r\n Skybox.prototype.iRemoveOwner = function (owner) {\r\n };\r\n return Skybox;\r\n}(DisplayObject));\r\nexport { Skybox };\r\nSkybox.traverseName = TraverserBase.addEntityName(\"applySkybox\");\r\nSkybox.assetType = \"[asset Skybox]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/Skybox.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\nvar TextureProjectorEvent = (function (_super) {\r\n tslib_1.__extends(TextureProjectorEvent, _super);\r\n function TextureProjectorEvent(type) {\r\n return _super.call(this, type) || this;\r\n }\r\n //@override\r\n TextureProjectorEvent.prototype.clone = function () {\r\n return new TextureProjectorEvent(this.type);\r\n };\r\n return TextureProjectorEvent;\r\n}(EventBase));\r\nexport { TextureProjectorEvent };\r\nTextureProjectorEvent.TEXTURE_CHANGE = \"textureChange\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/TextureProjectorEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { PerspectiveProjection } from \"@awayjs/core\";\r\nimport { TraverserBase } from \"@awayjs/graphics\";\r\nimport { TextureProjectorEvent } from \"../events/TextureProjectorEvent\";\r\nimport { DisplayObjectContainer } from \"./DisplayObjectContainer\";\r\n/**\r\n * TextureProjector is an object in the scene that can be used to project textures onto geometry. To do so,\r\n * the object's material must have a ProjectiveTextureMethod method added to it with a TextureProjector object\r\n * passed in the constructor.\r\n * This can be used for various effects apart from acting like a normal projector, such as projecting fake shadows\r\n * unto a surface, the impact of light coming through a stained glass window, ...\r\n *\r\n * @see away3d.materials.methods.ProjectiveTextureMethod\r\n */\r\nvar TextureProjector = (function (_super) {\r\n tslib_1.__extends(TextureProjector, _super);\r\n /**\r\n * Creates a new TextureProjector object.\r\n * @param texture The texture to be projected on the geometry. Since any point that is projected out of the range\r\n * of the projector's cone is clamped to the texture's edges, the edges should be entirely neutral.\r\n */\r\n function TextureProjector(texture) {\r\n var _this = _super.call(this) || this;\r\n _this._projection = new PerspectiveProjection();\r\n _this._projection.transform = _this._transform;\r\n _this._texture = texture;\r\n var width = texture.getImageAt(0).width;\r\n var height = texture.getImageAt(0).height;\r\n _this._projection.setViewRect(0, 0, width, height);\r\n _this._projection.setStageRect(0, 0, width, height);\r\n return _this;\r\n }\r\n Object.defineProperty(TextureProjector.prototype, \"projection\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._projection;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextureProjector.prototype, \"traverseName\", {\r\n get: function () {\r\n return TextureProjector.traverseName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextureProjector.prototype, \"assetType\", {\r\n get: function () {\r\n return TextureProjector.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextureProjector.prototype, \"texture\", {\r\n /**\r\n * The texture to be projected on the geometry.\r\n * IMPORTANT: Since any point that is projected out of the range of the projector's cone is clamped to the texture's edges,\r\n * the edges should be entirely neutral. Depending on the blend mode, the neutral color is:\r\n * White for MULTIPLY,\r\n * Black for ADD,\r\n * Transparent for MIX\r\n */\r\n get: function () {\r\n return this._texture;\r\n },\r\n set: function (value) {\r\n if (value == this._texture)\r\n return;\r\n this._texture = value;\r\n var width = value.getImageAt(0).width;\r\n var height = value.getImageAt(0).height;\r\n this._projection.setViewRect(0, 0, width, height);\r\n this._projection.setStageRect(0, 0, width, height);\r\n this.dispatchEvent(new TextureProjectorEvent(TextureProjectorEvent.TEXTURE_CHANGE));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return TextureProjector;\r\n}(DisplayObjectContainer));\r\nexport { TextureProjector };\r\nTextureProjector.traverseName = TraverserBase.addEntityName(\"applyTextureProjector\");\r\nTextureProjector.assetType = \"[asset TextureProjector]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/display/TextureProjector.js","import * as tslib_1 from \"tslib\";\r\nimport { ErrorBase } from \"@awayjs/core\";\r\nvar CastError = (function (_super) {\r\n tslib_1.__extends(CastError, _super);\r\n function CastError(message) {\r\n return _super.call(this, message) || this;\r\n }\r\n return CastError;\r\n}(ErrorBase));\r\nexport { CastError };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/errors/CastError.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\nvar ResizeEvent = (function (_super) {\r\n tslib_1.__extends(ResizeEvent, _super);\r\n function ResizeEvent(type, oldHeight, oldWidth) {\r\n if (oldHeight === void 0) { oldHeight = NaN; }\r\n if (oldWidth === void 0) { oldWidth = NaN; }\r\n var _this = _super.call(this, type) || this;\r\n _this._oldHeight = oldHeight;\r\n _this._oldWidth = oldWidth;\r\n return _this;\r\n }\r\n Object.defineProperty(ResizeEvent.prototype, \"oldHeight\", {\r\n get: function () {\r\n return this._oldHeight;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResizeEvent.prototype, \"oldWidth\", {\r\n get: function () {\r\n return this._oldWidth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clones the event.\r\n *\r\n * @return An exact duplicate of the current object.\r\n */\r\n ResizeEvent.prototype.clone = function () {\r\n return new ResizeEvent(this.type, this._oldHeight, this._oldWidth);\r\n };\r\n return ResizeEvent;\r\n}(EventBase));\r\nexport { ResizeEvent };\r\nResizeEvent.RESIZE = \"resize\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/ResizeEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { EventBase } from \"@awayjs/core\";\r\nvar TouchEvent = (function (_super) {\r\n tslib_1.__extends(TouchEvent, _super);\r\n /**\r\n * Create a new TouchEvent object.\r\n * @param type The type of the TouchEvent.\r\n */\r\n function TouchEvent(type) {\r\n var _this = _super.call(this, type) || this;\r\n // Private.\r\n _this._iAllowedToPropagate = true;\r\n return _this;\r\n }\r\n Object.defineProperty(TouchEvent.prototype, \"bubbles\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n var doesBubble = this._iAllowedToPropagate;\r\n this._iAllowedToPropagate = true;\r\n // Don't bubble if propagation has been stopped.\r\n return doesBubble;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n TouchEvent.prototype.stopPropagation = function () {\r\n this._iAllowedToPropagate = false;\r\n if (this._iParentEvent)\r\n this._iParentEvent.stopPropagation();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n TouchEvent.prototype.stopImmediatePropagation = function () {\r\n this._iAllowedToPropagate = false;\r\n if (this._iParentEvent)\r\n this._iParentEvent.stopImmediatePropagation();\r\n };\r\n /**\r\n * Creates a copy of the TouchEvent object and sets the value of each property to match that of the original.\r\n */\r\n TouchEvent.prototype.clone = function () {\r\n var result = new TouchEvent(this.type);\r\n /* TODO: Debug / test - look into isDefaultPrevented\r\n if (isDefaultPrevented())\r\n result.preventDefault();\r\n */\r\n result.screenX = this.screenX;\r\n result.screenY = this.screenY;\r\n result.view = this.view;\r\n result.entity = this.entity;\r\n result.renderable = this.renderable;\r\n result.material = this.material;\r\n result.uv = this.uv;\r\n result.position = this.position;\r\n result.normal = this.normal;\r\n result.elementIndex = this.elementIndex;\r\n result.ctrlKey = this.ctrlKey;\r\n result.shiftKey = this.shiftKey;\r\n result._iParentEvent = this;\r\n return result;\r\n };\r\n Object.defineProperty(TouchEvent.prototype, \"scenePosition\", {\r\n /**\r\n * The position in scene space where the event took place\r\n */\r\n get: function () {\r\n return this.entity.transform.concatenatedMatrix3D.transformVector(this.position);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TouchEvent.prototype, \"sceneNormal\", {\r\n /**\r\n * The normal in scene space where the event took place\r\n */\r\n get: function () {\r\n var sceneNormal = this.entity.transform.concatenatedMatrix3D.deltaTransformVector(this.normal);\r\n sceneNormal.normalize();\r\n return sceneNormal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return TouchEvent;\r\n}(EventBase));\r\nexport { TouchEvent };\r\n/**\r\n *\r\n */\r\nTouchEvent.TOUCH_END = \"touchEnd3d\";\r\n/**\r\n *\r\n */\r\nTouchEvent.TOUCH_BEGIN = \"touchBegin3d\";\r\n/**\r\n *\r\n */\r\nTouchEvent.TOUCH_MOVE = \"touchMove3d\";\r\n/**\r\n *\r\n */\r\nTouchEvent.TOUCH_OUT = \"touchOut3d\";\r\n/**\r\n *\r\n */\r\nTouchEvent.TOUCH_OVER = \"touchOver3d\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/TouchEvent.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase } from \"@awayjs/core\";\r\n/**\r\n * LightPickerBase provides an abstract base clase for light picker classes. These classes are responsible for\r\n * feeding materials with relevant lights. Usually, StaticLightPicker can be used, but LightPickerBase can be\r\n * extended to provide more application-specific dynamic selection of lights.\r\n *\r\n * @see StaticLightPicker\r\n */\r\nvar LightPickerBase = (function (_super) {\r\n tslib_1.__extends(LightPickerBase, _super);\r\n /**\r\n * Creates a new LightPickerBase object.\r\n */\r\n function LightPickerBase() {\r\n var _this = _super.call(this) || this;\r\n _this._pNumPointLights = 0;\r\n _this._pNumDirectionalLights = 0;\r\n _this._pNumCastingPointLights = 0;\r\n _this._pNumCastingDirectionalLights = 0;\r\n _this._pNumLightProbes = 0;\r\n return _this;\r\n }\r\n /**\r\n * Disposes resources used by the light picker.\r\n */\r\n LightPickerBase.prototype.dispose = function () {\r\n };\r\n Object.defineProperty(LightPickerBase.prototype, \"assetType\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n return LightPickerBase.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"numDirectionalLights\", {\r\n /**\r\n * The maximum amount of directional lights that will be provided.\r\n */\r\n get: function () {\r\n return this._pNumDirectionalLights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"numPointLights\", {\r\n /**\r\n * The maximum amount of point lights that will be provided.\r\n */\r\n get: function () {\r\n return this._pNumPointLights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"numCastingDirectionalLights\", {\r\n /**\r\n * The maximum amount of directional lights that cast shadows.\r\n */\r\n get: function () {\r\n return this._pNumCastingDirectionalLights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"numCastingPointLights\", {\r\n /**\r\n * The amount of point lights that cast shadows.\r\n */\r\n get: function () {\r\n return this._pNumCastingPointLights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"numLightProbes\", {\r\n /**\r\n * The maximum amount of light probes that will be provided.\r\n */\r\n get: function () {\r\n return this._pNumLightProbes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"pointLights\", {\r\n /**\r\n * The collected point lights to be used for shading.\r\n */\r\n get: function () {\r\n return this._pPointLights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"directionalLights\", {\r\n /**\r\n * The collected directional lights to be used for shading.\r\n */\r\n get: function () {\r\n return this._pDirectionalLights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"castingPointLights\", {\r\n /**\r\n * The collected point lights that cast shadows to be used for shading.\r\n */\r\n get: function () {\r\n return this._pCastingPointLights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"castingDirectionalLights\", {\r\n /**\r\n * The collected directional lights that cast shadows to be used for shading.\r\n */\r\n get: function () {\r\n return this._pCastingDirectionalLights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"lightProbes\", {\r\n /**\r\n * The collected light probes to be used for shading.\r\n */\r\n get: function () {\r\n return this._pLightProbes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"lightProbeWeights\", {\r\n /**\r\n * The weights for each light probe, defining their influence on the object.\r\n */\r\n get: function () {\r\n return this._pLightProbeWeights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LightPickerBase.prototype, \"allPickedLights\", {\r\n /**\r\n * A collection of all the collected lights.\r\n */\r\n get: function () {\r\n return this._pAllPickedLights;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates set of lights for a given renderable and EntityCollector. Always call super.collectLights() after custom overridden code.\r\n */\r\n LightPickerBase.prototype.collectLights = function (entity) {\r\n this.updateProbeWeights(entity);\r\n };\r\n /**\r\n * Updates the weights for the light probes, based on the renderable's position relative to them.\r\n * @param renderable The renderble for which to calculate the light probes' influence.\r\n */\r\n LightPickerBase.prototype.updateProbeWeights = function (entity) {\r\n // todo: this will cause the same calculations to occur per TriangleGraphic. See if this can be improved.\r\n var objectPos = entity.scenePosition;\r\n var lightPos;\r\n var rx = objectPos.x, ry = objectPos.y, rz = objectPos.z;\r\n var dx, dy, dz;\r\n var w, total = 0;\r\n var i;\r\n // calculates weights for probes\r\n for (i = 0; i < this._pNumLightProbes; ++i) {\r\n lightPos = this._pLightProbes[i].scenePosition;\r\n dx = rx - lightPos.x;\r\n dy = ry - lightPos.y;\r\n dz = rz - lightPos.z;\r\n // weight is inversely proportional to square of distance\r\n w = dx * dx + dy * dy + dz * dz;\r\n // just... huge if at the same spot\r\n w = w > .00001 ? 1 / w : 50000000;\r\n this._pLightProbeWeights[i] = w;\r\n total += w;\r\n }\r\n // normalize\r\n total = 1 / total;\r\n for (i = 0; i < this._pNumLightProbes; ++i)\r\n this._pLightProbeWeights[i] *= total;\r\n };\r\n return LightPickerBase;\r\n}(AssetBase));\r\nexport { LightPickerBase };\r\nLightPickerBase.assetType = \"[asset LightPicker]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/lightpickers/LightPickerBase.js","/**\r\n * Enumeration class for defining which lighting types affect the specific material\r\n * lighting component (diffuse and specular). This can be useful if, for example, you\r\n * want to use light probes for diffuse global lighting, but want specular reflections from\r\n * traditional light sources without those affecting the diffuse light.\r\n *\r\n * @see away.materials.ColorMaterial.diffuseLightSources\r\n * @see away.materials.ColorMaterial.specularLightSources\r\n * @see away.materials.TextureMaterial.diffuseLightSources\r\n * @see away.materials.TextureMaterial.specularLightSources\r\n */\r\nvar LightSources = (function () {\r\n function LightSources() {\r\n }\r\n return LightSources;\r\n}());\r\nexport { LightSources };\r\n/**\r\n * Defines normal lights are to be used as the source for the lighting\r\n * component.\r\n */\r\nLightSources.LIGHTS = 0x01;\r\n/**\r\n * Defines that global lighting probes are to be used as the source for the\r\n * lighting component.\r\n */\r\nLightSources.PROBES = 0x02;\r\n/**\r\n * Defines that both normal and global lighting probes are to be used as the\r\n * source for the lighting component. This is equivalent to LightSources.LIGHTS | LightSources.PROBES.\r\n */\r\nLightSources.ALL = 0x03;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/lightpickers/LightSources.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetEvent } from \"@awayjs/core\";\r\nimport { DirectionalLight } from \"../display/DirectionalLight\";\r\nimport { LightProbe } from \"../display/LightProbe\";\r\nimport { PointLight } from \"../display/PointLight\";\r\nimport { LightEvent } from \"../events/LightEvent\";\r\nimport { LightPickerBase } from \"../lightpickers/LightPickerBase\";\r\n/**\r\n * StaticLightPicker is a light picker that provides a static set of lights. The lights can be reassigned, but\r\n * if the configuration changes (number of directional lights, point lights, etc), a material recompilation may\r\n * occur.\r\n */\r\nvar StaticLightPicker = (function (_super) {\r\n tslib_1.__extends(StaticLightPicker, _super);\r\n /**\r\n * Creates a new StaticLightPicker object.\r\n * @param lights The lights to be used for shading.\r\n */\r\n function StaticLightPicker(lights) {\r\n var _this = _super.call(this) || this;\r\n _this._onCastShadowChangeDelegate = function (event) { return _this.onCastShadowChange(event); };\r\n _this.lights = lights;\r\n return _this;\r\n }\r\n Object.defineProperty(StaticLightPicker.prototype, \"lights\", {\r\n /**\r\n * The lights used for shading.\r\n */\r\n get: function () {\r\n return this._lights;\r\n },\r\n set: function (value) {\r\n var numPointLights = 0;\r\n var numDirectionalLights = 0;\r\n var numCastingPointLights = 0;\r\n var numCastingDirectionalLights = 0;\r\n var numLightProbes = 0;\r\n var light;\r\n if (this._lights)\r\n this.clearListeners();\r\n this._lights = value;\r\n this._pAllPickedLights = value;\r\n this._pPointLights = new Array();\r\n this._pCastingPointLights = new Array();\r\n this._pDirectionalLights = new Array();\r\n this._pCastingDirectionalLights = new Array();\r\n this._pLightProbes = new Array();\r\n var len = value.length;\r\n for (var i = 0; i < len; ++i) {\r\n light = value[i];\r\n light.addEventListener(LightEvent.CASTS_SHADOW_CHANGE, this._onCastShadowChangeDelegate);\r\n if (light instanceof PointLight) {\r\n if (light.shadowsEnabled)\r\n this._pCastingPointLights[numCastingPointLights++] = light;\r\n else\r\n this._pPointLights[numPointLights++] = light;\r\n }\r\n else if (light instanceof DirectionalLight) {\r\n if (light.shadowsEnabled)\r\n this._pCastingDirectionalLights[numCastingDirectionalLights++] = light;\r\n else\r\n this._pDirectionalLights[numDirectionalLights++] = light;\r\n }\r\n else if (light instanceof LightProbe) {\r\n this._pLightProbes[numLightProbes++] = light;\r\n }\r\n }\r\n if (this._pNumDirectionalLights == numDirectionalLights && this._pNumPointLights == numPointLights && this._pNumLightProbes == numLightProbes && this._pNumCastingPointLights == numCastingPointLights && this._pNumCastingDirectionalLights == numCastingDirectionalLights)\r\n return;\r\n this._pNumDirectionalLights = numDirectionalLights;\r\n this._pNumCastingDirectionalLights = numCastingDirectionalLights;\r\n this._pNumPointLights = numPointLights;\r\n this._pNumCastingPointLights = numCastingPointLights;\r\n this._pNumLightProbes = numLightProbes;\r\n // MUST HAVE MULTIPLE OF 4 ELEMENTS!\r\n this._pLightProbeWeights = new Array(Math.ceil(numLightProbes / 4) * 4);\r\n // notify material lights have changed\r\n this.dispatchEvent(new AssetEvent(AssetEvent.INVALIDATE, this));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Remove configuration change listeners on the lights.\r\n */\r\n StaticLightPicker.prototype.clearListeners = function () {\r\n var len = this._lights.length;\r\n for (var i = 0; i < len; ++i)\r\n this._lights[i].removeEventListener(LightEvent.CASTS_SHADOW_CHANGE, this._onCastShadowChangeDelegate);\r\n };\r\n /**\r\n * Notifies the material of a configuration change.\r\n */\r\n StaticLightPicker.prototype.onCastShadowChange = function (event) {\r\n // TODO: Assign to special caster collections, just append it to the lights in SinglePass\r\n // But keep seperated in multipass\r\n var light = event.target;\r\n if (light instanceof PointLight)\r\n this.updatePointCasting(light);\r\n else if (light instanceof DirectionalLight)\r\n this.updateDirectionalCasting(light);\r\n this.dispatchEvent(new AssetEvent(AssetEvent.INVALIDATE, this));\r\n };\r\n /**\r\n * Called when a directional light's shadow casting configuration changes.\r\n */\r\n StaticLightPicker.prototype.updateDirectionalCasting = function (light) {\r\n var dl = light;\r\n if (light.shadowsEnabled) {\r\n --this._pNumDirectionalLights;\r\n ++this._pNumCastingDirectionalLights;\r\n this._pDirectionalLights.splice(this._pDirectionalLights.indexOf(dl), 1);\r\n this._pCastingDirectionalLights.push(light);\r\n }\r\n else {\r\n ++this._pNumDirectionalLights;\r\n --this._pNumCastingDirectionalLights;\r\n this._pCastingDirectionalLights.splice(this._pCastingDirectionalLights.indexOf(dl), 1);\r\n this._pDirectionalLights.push(light);\r\n }\r\n };\r\n /**\r\n * Called when a point light's shadow casting configuration changes.\r\n */\r\n StaticLightPicker.prototype.updatePointCasting = function (light) {\r\n var pl = light;\r\n if (light.shadowsEnabled) {\r\n --this._pNumPointLights;\r\n ++this._pNumCastingPointLights;\r\n this._pPointLights.splice(this._pPointLights.indexOf(pl), 1);\r\n this._pCastingPointLights.push(light);\r\n }\r\n else {\r\n ++this._pNumPointLights;\r\n --this._pNumCastingPointLights;\r\n this._pCastingPointLights.splice(this._pCastingPointLights.indexOf(pl), 1);\r\n this._pPointLights.push(light);\r\n }\r\n };\r\n return StaticLightPicker;\r\n}(LightPickerBase));\r\nexport { StaticLightPicker };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/lightpickers/StaticLightPicker.js","import * as tslib_1 from \"tslib\";\r\nimport { Rectangle, AssetEvent, PerspectiveProjection } from \"@awayjs/core\";\r\nimport { DirectionalShadowMapper } from \"./DirectionalShadowMapper\";\r\nvar CascadeShadowMapper = (function (_super) {\r\n tslib_1.__extends(CascadeShadowMapper, _super);\r\n function CascadeShadowMapper(numCascades) {\r\n if (numCascades === void 0) { numCascades = 3; }\r\n var _this = _super.call(this) || this;\r\n _this._scissorRectsInvalid = true;\r\n if (numCascades < 1 || numCascades > 4)\r\n throw new Error(\"numCascades must be an integer between 1 and 4\");\r\n _this._numCascades = numCascades;\r\n _this.init();\r\n return _this;\r\n }\r\n CascadeShadowMapper.prototype.getSplitRatio = function (index /*uint*/) {\r\n return this._splitRatios[index];\r\n };\r\n CascadeShadowMapper.prototype.setSplitRatio = function (index /*uint*/, value) {\r\n if (value < 0)\r\n value = 0;\r\n else if (value > 1)\r\n value = 1;\r\n if (index >= this._numCascades)\r\n throw new Error(\"index must be smaller than the number of cascades!\");\r\n this._splitRatios[index] = value;\r\n };\r\n CascadeShadowMapper.prototype.getDepthProjections = function (partition /*uint*/) {\r\n return this._depthProjections[partition].viewMatrix3D;\r\n };\r\n CascadeShadowMapper.prototype.init = function () {\r\n this._splitRatios = new Array(this._numCascades);\r\n this._nearPlaneDistances = new Array(this._numCascades);\r\n var s = 1;\r\n for (var i = this._numCascades - 1; i >= 0; --i) {\r\n this._splitRatios[i] = s;\r\n s *= .4;\r\n }\r\n this._texOffsetsX = Array(-1, 1, -1, 1);\r\n this._texOffsetsY = Array(1, 1, -1, -1);\r\n this._pScissorRects = new Array(4);\r\n this._depthProjections = new Array();\r\n for (i = 0; i < this._numCascades; ++i)\r\n this._depthProjections[i] = new PerspectiveProjection();\r\n };\r\n CascadeShadowMapper.prototype._setDepthMapSize = function (value /*uint*/) {\r\n _super.prototype._setDepthMapSize.call(this, value);\r\n this.invalidateScissorRects();\r\n };\r\n CascadeShadowMapper.prototype.invalidateScissorRects = function () {\r\n this._scissorRectsInvalid = true;\r\n };\r\n Object.defineProperty(CascadeShadowMapper.prototype, \"numCascades\", {\r\n get: function () {\r\n return this._numCascades;\r\n },\r\n set: function (value /*int*/) {\r\n if (value == this._numCascades)\r\n return;\r\n if (value < 1 || value > 4)\r\n throw new Error(\"numCascades must be an integer between 1 and 4\");\r\n this._numCascades = value;\r\n this.invalidateScissorRects();\r\n this.init();\r\n this.dispatchEvent(new AssetEvent(AssetEvent.INVALIDATE, this));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CascadeShadowMapper.prototype._drawDepthMap = function (view, target, renderer) {\r\n if (this._scissorRectsInvalid)\r\n this.updateScissorRects();\r\n renderer.cullPlanes = this._cullPlanes;\r\n renderer._iRenderCascades(this._overallDepthProjection, view, target.image2D, this._numCascades, this._pScissorRects, this._depthProjections);\r\n };\r\n CascadeShadowMapper.prototype.updateScissorRects = function () {\r\n var half = this._depthMapSize * .5;\r\n this._pScissorRects[0] = new Rectangle(0, 0, half, half);\r\n this._pScissorRects[1] = new Rectangle(half, 0, half, half);\r\n this._pScissorRects[2] = new Rectangle(0, half, half, half);\r\n this._pScissorRects[3] = new Rectangle(half, half, half, half);\r\n this._scissorRectsInvalid = false;\r\n };\r\n CascadeShadowMapper.prototype._updateDepthProjection = function (projection) {\r\n var matrix;\r\n var projectionNear = projection.near;\r\n var projectionRange = projection.far - projectionNear;\r\n this._updateProjectionFromFrustumCorners(projection, projection.frustumCorners, this._matrix);\r\n this._matrix.appendScale(.96, .96, 1);\r\n this._overallDepthProjection.frustumMatrix3D = this._matrix;\r\n this._updateCullPlanes(projection);\r\n for (var i = 0; i < this._numCascades; ++i) {\r\n matrix = this._depthProjections[i].frustumMatrix3D;\r\n this._nearPlaneDistances[i] = projectionNear + this._splitRatios[i] * projectionRange;\r\n this._depthProjections[i].transform.matrix3D = this._overallDepthProjection.transform.matrix3D;\r\n this.updateProjectionPartition(matrix, this._splitRatios[i], this._texOffsetsX[i], this._texOffsetsY[i]);\r\n this._depthProjections[i].frustumMatrix3D = matrix;\r\n }\r\n };\r\n CascadeShadowMapper.prototype.updateProjectionPartition = function (matrix, splitRatio, texOffsetX, texOffsetY) {\r\n var xN, yN, zN;\r\n var xF, yF, zF;\r\n var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, minZ;\r\n var maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY, maxZ = Number.NEGATIVE_INFINITY;\r\n var i = 0;\r\n while (i < 12) {\r\n xN = this._localFrustum[i];\r\n yN = this._localFrustum[i + 1];\r\n zN = this._localFrustum[i + 2];\r\n xF = xN + (this._localFrustum[i + 12] - xN) * splitRatio;\r\n yF = yN + (this._localFrustum[i + 13] - yN) * splitRatio;\r\n zF = zN + (this._localFrustum[i + 14] - zN) * splitRatio;\r\n if (xN < minX)\r\n minX = xN;\r\n if (xN > maxX)\r\n maxX = xN;\r\n if (yN < minY)\r\n minY = yN;\r\n if (yN > maxY)\r\n maxY = yN;\r\n if (zN > maxZ)\r\n maxZ = zN;\r\n if (xF < minX)\r\n minX = xF;\r\n if (xF > maxX)\r\n maxX = xF;\r\n if (yF < minY)\r\n minY = yF;\r\n if (yF > maxY)\r\n maxY = yF;\r\n if (zF > maxZ)\r\n maxZ = zF;\r\n i += 3;\r\n }\r\n minZ = 1;\r\n var w = (maxX - minX);\r\n var h = (maxY - minY);\r\n var d = 1 / (maxZ - minZ);\r\n if (minX < 0)\r\n minX -= this._snap; // because int() rounds up for < 0\r\n if (minY < 0)\r\n minY -= this._snap;\r\n minX = Math.floor(minX / this._snap) * this._snap;\r\n minY = Math.floor(minY / this._snap) * this._snap;\r\n var snap2 = 2 * this._snap;\r\n w = Math.floor(w / snap2 + 1) * snap2;\r\n h = Math.floor(h / snap2 + 1) * snap2;\r\n maxX = minX + w;\r\n maxY = minY + h;\r\n w = 1 / w;\r\n h = 1 / h;\r\n var raw = matrix._rawData;\r\n raw[0] = 2 * w;\r\n raw[5] = 2 * h;\r\n raw[10] = d;\r\n raw[12] = -(maxX + minX) * w;\r\n raw[13] = -(maxY + minY) * h;\r\n raw[14] = -minZ * d;\r\n raw[15] = 1;\r\n raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\r\n matrix.appendScale(.96, .96, 1);\r\n matrix.appendTranslation(texOffsetX, texOffsetY, 0);\r\n matrix.appendScale(.5, .5, 1);\r\n };\r\n Object.defineProperty(CascadeShadowMapper.prototype, \"_iNearPlaneDistances\", {\r\n get: function () {\r\n return this._nearPlaneDistances;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CascadeShadowMapper;\r\n}(DirectionalShadowMapper));\r\nexport { CascadeShadowMapper };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shadowmappers/CascadeShadowMapper.js","import * as tslib_1 from \"tslib\";\r\nimport { DirectionalShadowMapper } from \"./DirectionalShadowMapper\";\r\nvar NearDirectionalShadowMapper = (function (_super) {\r\n tslib_1.__extends(NearDirectionalShadowMapper, _super);\r\n function NearDirectionalShadowMapper(coverageRatio) {\r\n if (coverageRatio === void 0) { coverageRatio = .5; }\r\n var _this = _super.call(this) || this;\r\n _this.coverageRatio = coverageRatio;\r\n return _this;\r\n }\r\n Object.defineProperty(NearDirectionalShadowMapper.prototype, \"coverageRatio\", {\r\n /**\r\n * A value between 0 and 1 to indicate the ratio of the view frustum that needs to be covered by the shadow map.\r\n */\r\n get: function () {\r\n return this._coverageRatio;\r\n },\r\n set: function (value) {\r\n if (value > 1)\r\n value = 1;\r\n else if (value < 0)\r\n value = 0;\r\n this._coverageRatio = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NearDirectionalShadowMapper.prototype._updateDepthProjection = function (projection) {\r\n var corners = projection.frustumCorners;\r\n for (var i = 0; i < 12; ++i) {\r\n var v = corners[i];\r\n this._localFrustum[i] = v;\r\n this._localFrustum[i + 12] = v + (corners[i + 12] - v) * this._coverageRatio;\r\n }\r\n this._updateProjectionFromFrustumCorners(projection, this._localFrustum, this._matrix);\r\n this._overallDepthProjection.frustumMatrix3D = this._matrix;\r\n };\r\n return NearDirectionalShadowMapper;\r\n}(DirectionalShadowMapper));\r\nexport { NearDirectionalShadowMapper };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shadowmappers/NearDirectionalShadowMapper.js","import * as tslib_1 from \"tslib\";\r\nimport { ElementsType } from \"@awayjs/graphics\";\r\nimport { PrimitivePrefabBase } from \"../prefabs/PrimitivePrefabBase\";\r\n/**\r\n * A Capsule primitive sprite.\r\n */\r\nvar PrimitiveCapsulePrefab = (function (_super) {\r\n tslib_1.__extends(PrimitiveCapsulePrefab, _super);\r\n /**\r\n * Creates a new Capsule object.\r\n * @param radius The radius of the capsule.\r\n * @param height The height of the capsule.\r\n * @param segmentsW Defines the number of horizontal segments that make up the capsule. Defaults to 16.\r\n * @param segmentsH Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven value.\r\n * @param yUp Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n function PrimitiveCapsulePrefab(material, elementsType, radius, height, segmentsW, segmentsH, yUp) {\r\n if (material === void 0) { material = null; }\r\n if (elementsType === void 0) { elementsType = \"triangle\"; }\r\n if (radius === void 0) { radius = 50; }\r\n if (height === void 0) { height = 100; }\r\n if (segmentsW === void 0) { segmentsW = 16; }\r\n if (segmentsH === void 0) { segmentsH = 15; }\r\n if (yUp === void 0) { yUp = true; }\r\n var _this = _super.call(this, material, elementsType) || this;\r\n _this._numVertices = 0;\r\n _this._radius = radius;\r\n _this._height = height;\r\n _this._segmentsW = segmentsW;\r\n _this._segmentsH = (segmentsH % 2 == 0) ? segmentsH + 1 : segmentsH;\r\n _this._yUp = yUp;\r\n return _this;\r\n }\r\n Object.defineProperty(PrimitiveCapsulePrefab.prototype, \"radius\", {\r\n /**\r\n * The radius of the capsule.\r\n */\r\n get: function () {\r\n return this._radius;\r\n },\r\n set: function (value) {\r\n this._radius = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCapsulePrefab.prototype, \"height\", {\r\n /**\r\n * The height of the capsule.\r\n */\r\n get: function () {\r\n return this._height;\r\n },\r\n set: function (value) {\r\n this._height = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCapsulePrefab.prototype, \"segmentsW\", {\r\n /**\r\n * Defines the number of horizontal segments that make up the capsule. Defaults to 16.\r\n */\r\n get: function () {\r\n return this._segmentsW;\r\n },\r\n set: function (value) {\r\n this._segmentsW = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCapsulePrefab.prototype, \"segmentsH\", {\r\n /**\r\n * Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven.\r\n */\r\n get: function () {\r\n return this._segmentsH;\r\n },\r\n set: function (value) {\r\n this._segmentsH = (value % 2 == 0) ? value + 1 : value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCapsulePrefab.prototype, \"yUp\", {\r\n /**\r\n * Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n get: function () {\r\n return this._yUp;\r\n },\r\n set: function (value) {\r\n this._yUp = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveCapsulePrefab.prototype._pBuildGraphics = function (target, elementsType) {\r\n var indices;\r\n var positions;\r\n var normals;\r\n var tangents;\r\n var stride;\r\n var i;\r\n var j;\r\n var triIndex = 0;\r\n var index = 0;\r\n var startIndex;\r\n var comp1, comp2, t1, t2;\r\n var numIndices = 0;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n var triangleGraphics = target;\r\n // evaluate target number of vertices, triangles and indices\r\n this._numVertices = (this._segmentsH + 1) * (this._segmentsW + 1); // segmentsH + 1 because of closure, segmentsW + 1 because of closure\r\n numIndices = (this._segmentsH - 1) * this._segmentsW * 6; // each level has segmentH quads, each of 2 triangles\r\n // need to initialize raw arrays or can be reused?\r\n if (this._numVertices == triangleGraphics.numVertices) {\r\n triangleGraphics.invalidateIndices();\r\n triangleGraphics.invalidateVertices(triangleGraphics.positions);\r\n triangleGraphics.invalidateVertices(triangleGraphics.normals);\r\n triangleGraphics.invalidateVertices(triangleGraphics.tangents);\r\n }\r\n else {\r\n triangleGraphics.setIndices(new Uint16Array(numIndices));\r\n triangleGraphics.setPositions(new Float32Array(this._numVertices * 3));\r\n triangleGraphics.setNormals(new Float32Array(this._numVertices * 3));\r\n triangleGraphics.setTangents(new Float32Array(this._numVertices * 3));\r\n this._pInvalidateUVs();\r\n }\r\n indices = triangleGraphics.indices.get(triangleGraphics.numElements);\r\n positions = triangleGraphics.positions.get(this._numVertices);\r\n normals = triangleGraphics.normals.get(this._numVertices);\r\n tangents = triangleGraphics.tangents.get(this._numVertices);\r\n stride = triangleGraphics.concatenatedBuffer.stride / 4;\r\n for (j = 0; j <= this._segmentsH; ++j) {\r\n var horangle = Math.PI * j / this._segmentsH;\r\n var z = -this._radius * Math.cos(horangle);\r\n var ringradius = this._radius * Math.sin(horangle);\r\n startIndex = index;\r\n for (i = 0; i <= this._segmentsW; ++i) {\r\n var verangle = 2 * Math.PI * i / this._segmentsW;\r\n var x = ringradius * Math.cos(verangle);\r\n var offset = j > this._segmentsH / 2 ? this._height / 2 : -this._height / 2;\r\n var y = ringradius * Math.sin(verangle);\r\n var normLen = 1 / Math.sqrt(x * x + y * y + z * z);\r\n var tanLen = Math.sqrt(y * y + x * x);\r\n if (this._yUp) {\r\n t1 = 0;\r\n t2 = tanLen > .007 ? x / tanLen : 0;\r\n comp1 = -z;\r\n comp2 = y;\r\n }\r\n else {\r\n t1 = tanLen > .007 ? x / tanLen : 0;\r\n t2 = 0;\r\n comp1 = y;\r\n comp2 = z;\r\n }\r\n if (i == this._segmentsW) {\r\n positions[index] = positions[startIndex];\r\n positions[index + 1] = positions[startIndex + 1];\r\n positions[index + 2] = positions[startIndex + 2];\r\n normals[index] = (normals[startIndex] + (x * normLen)) * .5;\r\n normals[index + 1] = (normals[startIndex + 1] + (comp1 * normLen)) * .5;\r\n normals[index + 2] = (normals[startIndex + 2] + (comp2 * normLen)) * .5;\r\n tangents[index] = (tangents[startIndex] + (tanLen > .007 ? -y / tanLen : 1)) * .5;\r\n tangents[index + 1] = (tangents[startIndex + 1] + t1) * .5;\r\n tangents[index + 2] = (tangents[startIndex + 2] + t2) * .5;\r\n }\r\n else {\r\n // vertex\r\n positions[index] = x;\r\n positions[index + 1] = (this._yUp) ? comp1 - offset : comp1;\r\n positions[index + 2] = (this._yUp) ? comp2 : comp2 + offset;\r\n // normal\r\n normals[index] = x * normLen;\r\n normals[index + 1] = comp1 * normLen;\r\n normals[index + 2] = comp2 * normLen;\r\n // tangent\r\n tangents[index] = tanLen > .007 ? -y / tanLen : 1;\r\n tangents[index + 1] = t1;\r\n tangents[index + 2] = t2;\r\n }\r\n if (i > 0 && j > 0) {\r\n var a = (this._segmentsW + 1) * j + i;\r\n var b = (this._segmentsW + 1) * j + i - 1;\r\n var c = (this._segmentsW + 1) * (j - 1) + i - 1;\r\n var d = (this._segmentsW + 1) * (j - 1) + i;\r\n if (j == this._segmentsH) {\r\n positions[index] = positions[startIndex];\r\n positions[index + 1] = positions[startIndex + 1];\r\n positions[index + 2] = positions[startIndex + 2];\r\n indices[triIndex++] = a;\r\n indices[triIndex++] = c;\r\n indices[triIndex++] = d;\r\n }\r\n else if (j == 1) {\r\n indices[triIndex++] = a;\r\n indices[triIndex++] = b;\r\n indices[triIndex++] = c;\r\n }\r\n else {\r\n indices[triIndex++] = a;\r\n indices[triIndex++] = b;\r\n indices[triIndex++] = c;\r\n indices[triIndex++] = a;\r\n indices[triIndex++] = c;\r\n indices[triIndex++] = d;\r\n }\r\n }\r\n index += stride;\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveCapsulePrefab.prototype._pBuildUVs = function (target, elementsType) {\r\n var i, j;\r\n var uvs;\r\n var stride;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n var triangleGraphics = target;\r\n // need to initialize raw array or can be reused?\r\n if (triangleGraphics.uvs && this._numVertices == triangleGraphics.numVertices) {\r\n triangleGraphics.invalidateVertices(triangleGraphics.uvs);\r\n }\r\n else {\r\n triangleGraphics.setUVs(new Float32Array(this._numVertices * 2));\r\n }\r\n uvs = triangleGraphics.uvs.get(this._numVertices);\r\n stride = triangleGraphics.uvs.stride;\r\n // current uv component index\r\n var index = 0;\r\n // surface\r\n for (j = 0; j <= this._segmentsH; ++j) {\r\n for (i = 0; i <= this._segmentsW; ++i) {\r\n // revolution vertex\r\n uvs[index] = (i / this._segmentsW) * this._scaleU;\r\n uvs[index + 1] = (j / this._segmentsH) * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n }\r\n };\r\n return PrimitiveCapsulePrefab;\r\n}(PrimitivePrefabBase));\r\nexport { PrimitiveCapsulePrefab };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrimitiveCapsulePrefab.js","import * as tslib_1 from \"tslib\";\r\nimport { ElementsType } from \"@awayjs/graphics\";\r\nimport { PrimitivePrefabBase } from \"../prefabs/PrimitivePrefabBase\";\r\n/**\r\n * A Cylinder primitive sprite.\r\n */\r\nvar PrimitiveCylinderPrefab = (function (_super) {\r\n tslib_1.__extends(PrimitiveCylinderPrefab, _super);\r\n /**\r\n * Creates a new Cylinder object.\r\n * @param topRadius The radius of the top end of the cylinder.\r\n * @param bottomRadius The radius of the bottom end of the cylinder\r\n * @param height The radius of the bottom end of the cylinder\r\n * @param segmentsW Defines the number of horizontal segments that make up the cylinder. Defaults to 16.\r\n * @param segmentsH Defines the number of vertical segments that make up the cylinder. Defaults to 1.\r\n * @param topClosed Defines whether the top end of the cylinder is closed (true) or open.\r\n * @param bottomClosed Defines whether the bottom end of the cylinder is closed (true) or open.\r\n * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n function PrimitiveCylinderPrefab(material, elementsType, topRadius, bottomRadius, height, segmentsW, segmentsH, topClosed, bottomClosed, surfaceClosed, yUp) {\r\n if (material === void 0) { material = null; }\r\n if (elementsType === void 0) { elementsType = \"triangle\"; }\r\n if (topRadius === void 0) { topRadius = 50; }\r\n if (bottomRadius === void 0) { bottomRadius = 50; }\r\n if (height === void 0) { height = 100; }\r\n if (segmentsW === void 0) { segmentsW = 16; }\r\n if (segmentsH === void 0) { segmentsH = 1; }\r\n if (topClosed === void 0) { topClosed = true; }\r\n if (bottomClosed === void 0) { bottomClosed = true; }\r\n if (surfaceClosed === void 0) { surfaceClosed = true; }\r\n if (yUp === void 0) { yUp = true; }\r\n var _this = _super.call(this, material, elementsType) || this;\r\n _this._numVertices = 0;\r\n _this._topRadius = topRadius;\r\n _this._pBottomRadius = bottomRadius;\r\n _this._height = height;\r\n _this._pSegmentsW = segmentsW;\r\n _this._pSegmentsH = segmentsH;\r\n _this._topClosed = topClosed;\r\n _this._bottomClosed = bottomClosed;\r\n _this._surfaceClosed = surfaceClosed;\r\n _this._yUp = yUp;\r\n return _this;\r\n }\r\n Object.defineProperty(PrimitiveCylinderPrefab.prototype, \"topRadius\", {\r\n /**\r\n * The radius of the top end of the cylinder.\r\n */\r\n get: function () {\r\n return this._topRadius;\r\n },\r\n set: function (value) {\r\n this._topRadius = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCylinderPrefab.prototype, \"bottomRadius\", {\r\n /**\r\n * The radius of the bottom end of the cylinder.\r\n */\r\n get: function () {\r\n return this._pBottomRadius;\r\n },\r\n set: function (value) {\r\n this._pBottomRadius = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCylinderPrefab.prototype, \"height\", {\r\n /**\r\n * The radius of the top end of the cylinder.\r\n */\r\n get: function () {\r\n return this._height;\r\n },\r\n set: function (value) {\r\n this._height = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCylinderPrefab.prototype, \"segmentsW\", {\r\n /**\r\n * Defines the number of horizontal segments that make up the cylinder. Defaults to 16.\r\n */\r\n get: function () {\r\n return this._pSegmentsW;\r\n },\r\n set: function (value) {\r\n this.setSegmentsW(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PrimitiveCylinderPrefab.prototype.setSegmentsW = function (value) {\r\n this._pSegmentsW = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n };\r\n Object.defineProperty(PrimitiveCylinderPrefab.prototype, \"segmentsH\", {\r\n /**\r\n * Defines the number of vertical segments that make up the cylinder. Defaults to 1.\r\n */\r\n get: function () {\r\n return this._pSegmentsH;\r\n },\r\n set: function (value) {\r\n this.setSegmentsH(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PrimitiveCylinderPrefab.prototype.setSegmentsH = function (value) {\r\n this._pSegmentsH = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n };\r\n Object.defineProperty(PrimitiveCylinderPrefab.prototype, \"topClosed\", {\r\n /**\r\n * Defines whether the top end of the cylinder is closed (true) or open.\r\n */\r\n get: function () {\r\n return this._topClosed;\r\n },\r\n set: function (value) {\r\n this._topClosed = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCylinderPrefab.prototype, \"bottomClosed\", {\r\n /**\r\n * Defines whether the bottom end of the cylinder is closed (true) or open.\r\n */\r\n get: function () {\r\n return this._bottomClosed;\r\n },\r\n set: function (value) {\r\n this._bottomClosed = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveCylinderPrefab.prototype, \"yUp\", {\r\n /**\r\n * Defines whether the cylinder poles should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n get: function () {\r\n return this._yUp;\r\n },\r\n set: function (value) {\r\n this._yUp = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveCylinderPrefab.prototype._pBuildGraphics = function (target, elementsType) {\r\n var indices;\r\n var positions;\r\n var normals;\r\n var tangents;\r\n var stride;\r\n var i;\r\n var j;\r\n var x;\r\n var y;\r\n var z;\r\n var vidx;\r\n var fidx;\r\n var radius;\r\n var revolutionAngle;\r\n var dr;\r\n var latNormElev;\r\n var latNormBase;\r\n var numIndices = 0;\r\n var comp1;\r\n var comp2;\r\n var startIndex = 0;\r\n var nextVertexIndex = 0;\r\n var centerVertexIndex = 0;\r\n var t1;\r\n var t2;\r\n // reset utility variables\r\n this._numVertices = 0;\r\n // evaluate revolution steps\r\n var revolutionAngleDelta = 2 * Math.PI / this._pSegmentsW;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n var triangleGraphics = target;\r\n // evaluate target number of vertices, triangles and indices\r\n if (this._surfaceClosed) {\r\n this._numVertices += (this._pSegmentsH + 1) * (this._pSegmentsW + 1); // segmentsH + 1 because of closure, segmentsW + 1 because of UV unwrapping\r\n numIndices += this._pSegmentsH * this._pSegmentsW * 6; // each level has segmentW quads, each of 2 triangles\r\n }\r\n if (this._topClosed) {\r\n this._numVertices += 2 * (this._pSegmentsW + 1); // segmentsW + 1 because of unwrapping\r\n numIndices += this._pSegmentsW * 3; // one triangle for each segment\r\n }\r\n if (this._bottomClosed) {\r\n this._numVertices += 2 * (this._pSegmentsW + 1);\r\n numIndices += this._pSegmentsW * 3;\r\n }\r\n // need to initialize raw arrays or can be reused?\r\n if (this._numVertices == triangleGraphics.numVertices) {\r\n /*triangleGraphics.invalidateIndices();\r\n triangleGraphics.invalidateVertices(triangleGraphics.positions);\r\n triangleGraphics.invalidateVertices(triangleGraphics.normals);\r\n triangleGraphics.invalidateVertices(triangleGraphics.tangents);*/\r\n triangleGraphics.positions.invalidate();\r\n triangleGraphics.normals.invalidate();\r\n triangleGraphics.tangents.invalidate();\r\n triangleGraphics.indices.invalidate();\r\n }\r\n else {\r\n triangleGraphics.setIndices(new Uint16Array(numIndices));\r\n triangleGraphics.setPositions(new Float32Array(this._numVertices * 3));\r\n triangleGraphics.setNormals(new Float32Array(this._numVertices * 3));\r\n triangleGraphics.setTangents(new Float32Array(this._numVertices * 3));\r\n this._pInvalidateUVs();\r\n }\r\n indices = triangleGraphics.indices.get(triangleGraphics.numElements);\r\n positions = triangleGraphics.positions.get(this._numVertices);\r\n normals = triangleGraphics.normals.get(this._numVertices);\r\n tangents = triangleGraphics.tangents.get(this._numVertices);\r\n stride = triangleGraphics.concatenatedBuffer.stride / 4;\r\n vidx = 0;\r\n fidx = 0;\r\n // top\r\n if (this._topClosed && this._topRadius > 0) {\r\n z = -0.5 * this._height;\r\n // central vertex\r\n if (this._yUp) {\r\n t1 = 1;\r\n t2 = 0;\r\n comp1 = -z;\r\n comp2 = 0;\r\n }\r\n else {\r\n t1 = 0;\r\n t2 = -1;\r\n comp1 = 0;\r\n comp2 = z;\r\n }\r\n positions[vidx] = 0;\r\n positions[vidx + 1] = comp1;\r\n positions[vidx + 2] = comp2;\r\n normals[vidx] = 0;\r\n normals[vidx + 1] = t1;\r\n normals[vidx + 2] = t2;\r\n tangents[vidx] = 1;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 0;\r\n vidx += stride;\r\n nextVertexIndex++;\r\n for (i = 0; i <= this._pSegmentsW; ++i) {\r\n // revolution vertex\r\n revolutionAngle = i * revolutionAngleDelta;\r\n x = this._topRadius * Math.cos(revolutionAngle);\r\n y = this._topRadius * Math.sin(revolutionAngle);\r\n if (this._yUp) {\r\n comp1 = -z;\r\n comp2 = y;\r\n }\r\n else {\r\n comp1 = y;\r\n comp2 = z;\r\n }\r\n if (i == this._pSegmentsW) {\r\n positions[vidx] = positions[startIndex + stride];\r\n positions[vidx + 1] = positions[startIndex + stride + 1];\r\n positions[vidx + 2] = positions[startIndex + stride + 2];\r\n }\r\n else {\r\n positions[vidx] = x;\r\n positions[vidx + 1] = comp1;\r\n positions[vidx + 2] = comp2;\r\n }\r\n normals[vidx] = 0;\r\n normals[vidx + 1] = t1;\r\n normals[vidx + 2] = t2;\r\n tangents[vidx] = 1;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 0;\r\n vidx += stride;\r\n if (i > 0) {\r\n // add triangle\r\n indices[fidx++] = nextVertexIndex - 1;\r\n indices[fidx++] = centerVertexIndex;\r\n indices[fidx++] = nextVertexIndex;\r\n }\r\n nextVertexIndex++;\r\n }\r\n }\r\n // bottom\r\n if (this._bottomClosed && this._pBottomRadius > 0) {\r\n z = 0.5 * this._height;\r\n startIndex = nextVertexIndex * stride;\r\n centerVertexIndex = nextVertexIndex;\r\n // central vertex\r\n if (this._yUp) {\r\n t1 = -1;\r\n t2 = 0;\r\n comp1 = -z;\r\n comp2 = 0;\r\n }\r\n else {\r\n t1 = 0;\r\n t2 = 1;\r\n comp1 = 0;\r\n comp2 = z;\r\n }\r\n if (i > 0) {\r\n positions[vidx] = 0;\r\n positions[vidx + 1] = comp1;\r\n positions[vidx + 2] = comp2;\r\n normals[vidx] = 0;\r\n normals[vidx + 1] = t1;\r\n normals[vidx + 2] = t2;\r\n tangents[vidx] = 1;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 0;\r\n vidx += stride;\r\n }\r\n nextVertexIndex++;\r\n for (i = 0; i <= this._pSegmentsW; ++i) {\r\n // revolution vertex\r\n revolutionAngle = i * revolutionAngleDelta;\r\n x = this._pBottomRadius * Math.cos(revolutionAngle);\r\n y = this._pBottomRadius * Math.sin(revolutionAngle);\r\n if (this._yUp) {\r\n comp1 = -z;\r\n comp2 = y;\r\n }\r\n else {\r\n comp1 = y;\r\n comp2 = z;\r\n }\r\n if (i == this._pSegmentsW) {\r\n positions[vidx] = positions[startIndex + stride];\r\n positions[vidx + 1] = positions[startIndex + stride + 1];\r\n positions[vidx + 2] = positions[startIndex + stride + 2];\r\n }\r\n else {\r\n positions[vidx] = x;\r\n positions[vidx + 1] = comp1;\r\n positions[vidx + 2] = comp2;\r\n }\r\n normals[vidx] = 0;\r\n normals[vidx + 1] = t1;\r\n normals[vidx + 2] = t2;\r\n tangents[vidx] = 1;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 0;\r\n vidx += stride;\r\n if (i > 0) {\r\n // add triangle\r\n indices[fidx++] = nextVertexIndex - 1;\r\n indices[fidx++] = nextVertexIndex;\r\n indices[fidx++] = centerVertexIndex;\r\n }\r\n nextVertexIndex++;\r\n }\r\n }\r\n // The normals on the lateral surface all have the same incline, i.e.\r\n // the \"elevation\" component (Y or Z depending on yUp) is constant.\r\n // Same principle goes for the \"base\" of these vectors, which will be\r\n // calculated such that a vector [base,elev] will be a unit vector.\r\n dr = (this._pBottomRadius - this._topRadius);\r\n latNormElev = dr / this._height;\r\n latNormBase = (latNormElev == 0) ? 1 : this._height / dr;\r\n // lateral surface\r\n if (this._surfaceClosed) {\r\n var a;\r\n var b;\r\n var c;\r\n var d;\r\n var na0, na1, naComp1, naComp2;\r\n for (j = 0; j <= this._pSegmentsH; ++j) {\r\n radius = this._topRadius - ((j / this._pSegmentsH) * (this._topRadius - this._pBottomRadius));\r\n z = -(this._height / 2) + (j / this._pSegmentsH * this._height);\r\n startIndex = nextVertexIndex * stride;\r\n for (i = 0; i <= this._pSegmentsW; ++i) {\r\n // revolution vertex\r\n revolutionAngle = i * revolutionAngleDelta;\r\n x = radius * Math.cos(revolutionAngle);\r\n y = radius * Math.sin(revolutionAngle);\r\n na0 = latNormBase * Math.cos(revolutionAngle);\r\n na1 = latNormBase * Math.sin(revolutionAngle);\r\n if (this._yUp) {\r\n t1 = 0;\r\n t2 = -na0;\r\n comp1 = -z;\r\n comp2 = y;\r\n naComp1 = latNormElev;\r\n naComp2 = na1;\r\n }\r\n else {\r\n t1 = -na0;\r\n t2 = 0;\r\n comp1 = y;\r\n comp2 = z;\r\n naComp1 = na1;\r\n naComp2 = latNormElev;\r\n }\r\n if (i == this._pSegmentsW) {\r\n positions[vidx] = positions[startIndex];\r\n positions[vidx + 1] = positions[startIndex + 1];\r\n positions[vidx + 2] = positions[startIndex + 2];\r\n normals[vidx] = na0;\r\n normals[vidx + 1] = latNormElev;\r\n normals[vidx + 2] = na1;\r\n tangents[vidx] = na1;\r\n tangents[vidx + 1] = t1;\r\n tangents[vidx + 2] = t2;\r\n }\r\n else {\r\n positions[vidx] = x;\r\n positions[vidx + 1] = comp1;\r\n positions[vidx + 2] = comp2;\r\n normals[vidx] = na0;\r\n normals[vidx + 1] = naComp1;\r\n normals[vidx + 2] = naComp2;\r\n tangents[vidx] = -na1;\r\n tangents[vidx + 1] = t1;\r\n tangents[vidx + 2] = t2;\r\n }\r\n vidx += stride;\r\n // close triangle\r\n if (i > 0 && j > 0) {\r\n a = nextVertexIndex; // current\r\n b = nextVertexIndex - 1; // previous\r\n c = b - this._pSegmentsW - 1; // previous of last level\r\n d = a - this._pSegmentsW - 1; // current of last level\r\n indices[fidx++] = a;\r\n indices[fidx++] = b;\r\n indices[fidx++] = c;\r\n indices[fidx++] = a;\r\n indices[fidx++] = c;\r\n indices[fidx++] = d;\r\n }\r\n nextVertexIndex++;\r\n }\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n var lineGraphics = target;\r\n var numSegments = this._pSegmentsH * this._pSegmentsW * 2 + this._pSegmentsW;\r\n positions = new Float32Array(numSegments * 6);\r\n var thickness = new Float32Array(numSegments);\r\n vidx = 0;\r\n fidx = 0;\r\n var _radius = 50;\r\n for (j = 0; j <= this._pSegmentsH; ++j) {\r\n radius = this._topRadius - ((j / this._pSegmentsH) * (this._topRadius - this._pBottomRadius));\r\n z = -(this._height / 2) + (j / this._pSegmentsH * this._height);\r\n for (i = 0; i <= this._pSegmentsW; ++i) {\r\n // revolution vertex\r\n revolutionAngle = i * revolutionAngleDelta;\r\n x = radius * Math.cos(revolutionAngle);\r\n y = radius * Math.sin(revolutionAngle);\r\n if (this._yUp) {\r\n comp1 = -z;\r\n comp2 = y;\r\n }\r\n else {\r\n comp1 = y;\r\n comp2 = z;\r\n }\r\n if (i > 0) {\r\n //horizonal lines\r\n positions[vidx++] = x;\r\n positions[vidx++] = comp1;\r\n positions[vidx++] = comp2;\r\n thickness[fidx++] = 1;\r\n //vertical lines\r\n if (j > 0) {\r\n var addx = (j == 1) ? 3 - (6 * (this._pSegmentsW - i) + 12 * i) : 3 - this._pSegmentsW * 12;\r\n positions[vidx] = positions[vidx++ + addx];\r\n positions[vidx] = positions[vidx++ + addx];\r\n positions[vidx] = positions[vidx++ + addx];\r\n positions[vidx++] = x;\r\n positions[vidx++] = comp1;\r\n positions[vidx++] = comp2;\r\n thickness[fidx++] = 1;\r\n }\r\n }\r\n //horizonal lines\r\n if (i < this._pSegmentsW) {\r\n positions[vidx++] = x;\r\n positions[vidx++] = comp1;\r\n positions[vidx++] = comp2;\r\n }\r\n }\r\n }\r\n // build real data from raw data\r\n lineGraphics.setPositions(positions);\r\n lineGraphics.setThickness(thickness);\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveCylinderPrefab.prototype._pBuildUVs = function (target, elementsType) {\r\n var i;\r\n var j;\r\n var x;\r\n var y;\r\n var revolutionAngle;\r\n var uvs;\r\n var stride;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n var triangleGraphics = target;\r\n // need to initialize raw array or can be reused?\r\n if (triangleGraphics.uvs && this._numVertices == triangleGraphics.numVertices) {\r\n triangleGraphics.invalidateVertices(triangleGraphics.uvs);\r\n }\r\n else {\r\n triangleGraphics.setUVs(new Float32Array(this._numVertices * 2));\r\n }\r\n uvs = triangleGraphics.uvs.get(this._numVertices);\r\n stride = triangleGraphics.uvs.stride;\r\n // evaluate revolution steps\r\n var revolutionAngleDelta = 2 * Math.PI / this._pSegmentsW;\r\n // current uv component index\r\n var index = 0;\r\n // top\r\n if (this._topClosed) {\r\n uvs[index] = 0.5 * this._scaleU; // central vertex\r\n uvs[index + 1] = 0.5 * this._scaleV;\r\n index += stride;\r\n for (i = 0; i <= this._pSegmentsW; ++i) {\r\n revolutionAngle = i * revolutionAngleDelta;\r\n x = 0.5 + 0.5 * -Math.cos(revolutionAngle);\r\n y = 0.5 + 0.5 * Math.sin(revolutionAngle);\r\n uvs[index] = x * this._scaleU; // revolution vertex\r\n uvs[index + 1] = y * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n // bottom\r\n if (this._bottomClosed) {\r\n uvs[index] = 0.5 * this._scaleU; // central vertex\r\n uvs[index + 1] = 0.5 * this._scaleV;\r\n index += stride;\r\n for (i = 0; i <= this._pSegmentsW; ++i) {\r\n revolutionAngle = i * revolutionAngleDelta;\r\n x = 0.5 + 0.5 * Math.cos(revolutionAngle);\r\n y = 0.5 + 0.5 * Math.sin(revolutionAngle);\r\n uvs[index] = x * this._scaleU; // revolution vertex\r\n uvs[index + 1] = y * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n // lateral surface\r\n if (this._surfaceClosed) {\r\n for (j = 0; j <= this._pSegmentsH; ++j) {\r\n for (i = 0; i <= this._pSegmentsW; ++i) {\r\n // revolution vertex\r\n uvs[index] = (i / this._pSegmentsW) * this._scaleU;\r\n uvs[index + 1] = (j / this._pSegmentsH) * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n }\r\n };\r\n return PrimitiveCylinderPrefab;\r\n}(PrimitivePrefabBase));\r\nexport { PrimitiveCylinderPrefab };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrimitiveCylinderPrefab.js","import * as tslib_1 from \"tslib\";\r\nimport { PrimitiveCylinderPrefab } from \"../prefabs/PrimitiveCylinderPrefab\";\r\n/**\r\n * A UV Cone primitive sprite.\r\n */\r\nvar PrimitiveConePrefab = (function (_super) {\r\n tslib_1.__extends(PrimitiveConePrefab, _super);\r\n /**\r\n * Creates a new Cone object.\r\n * @param radius The radius of the bottom end of the cone\r\n * @param height The height of the cone\r\n * @param segmentsW Defines the number of horizontal segments that make up the cone. Defaults to 16.\r\n * @param segmentsH Defines the number of vertical segments that make up the cone. Defaults to 1.\r\n * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n function PrimitiveConePrefab(material, elementsType, radius, height, segmentsW, segmentsH, closed, yUp) {\r\n if (material === void 0) { material = null; }\r\n if (elementsType === void 0) { elementsType = \"triangle\"; }\r\n if (radius === void 0) { radius = 50; }\r\n if (height === void 0) { height = 100; }\r\n if (segmentsW === void 0) { segmentsW = 16; }\r\n if (segmentsH === void 0) { segmentsH = 1; }\r\n if (closed === void 0) { closed = true; }\r\n if (yUp === void 0) { yUp = true; }\r\n return _super.call(this, material, elementsType, 0, radius, height, segmentsW, segmentsH, false, closed, true, yUp) || this;\r\n }\r\n Object.defineProperty(PrimitiveConePrefab.prototype, \"radius\", {\r\n /**\r\n * The radius of the bottom end of the cone.\r\n */\r\n get: function () {\r\n return this._pBottomRadius;\r\n },\r\n set: function (value) {\r\n this._pBottomRadius = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PrimitiveConePrefab;\r\n}(PrimitiveCylinderPrefab));\r\nexport { PrimitiveConePrefab };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrimitiveConePrefab.js","import * as tslib_1 from \"tslib\";\r\nimport { ElementsType } from \"@awayjs/graphics\";\r\nimport { PrimitivePrefabBase } from \"../prefabs/PrimitivePrefabBase\";\r\n/**\r\n * A Plane primitive sprite.\r\n */\r\nvar PrimitivePlanePrefab = (function (_super) {\r\n tslib_1.__extends(PrimitivePlanePrefab, _super);\r\n /**\r\n * Creates a new Plane object.\r\n * @param width The width of the plane.\r\n * @param height The height of the plane.\r\n * @param segmentsW The number of segments that make up the plane along the X-axis.\r\n * @param segmentsH The number of segments that make up the plane along the Y or Z-axis.\r\n * @param yUp Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false).\r\n * @param doubleSided Defines whether the plane will be visible from both sides, with correct vertex normals.\r\n */\r\n function PrimitivePlanePrefab(material, elementsType, width, height, segmentsW, segmentsH, yUp, doubleSided) {\r\n if (material === void 0) { material = null; }\r\n if (elementsType === void 0) { elementsType = \"triangle\"; }\r\n if (width === void 0) { width = 100; }\r\n if (height === void 0) { height = 100; }\r\n if (segmentsW === void 0) { segmentsW = 1; }\r\n if (segmentsH === void 0) { segmentsH = 1; }\r\n if (yUp === void 0) { yUp = true; }\r\n if (doubleSided === void 0) { doubleSided = false; }\r\n var _this = _super.call(this, material, elementsType) || this;\r\n _this._segmentsW = segmentsW;\r\n _this._segmentsH = segmentsH;\r\n _this._yUp = yUp;\r\n _this._width = width;\r\n _this._height = height;\r\n _this._doubleSided = doubleSided;\r\n return _this;\r\n }\r\n Object.defineProperty(PrimitivePlanePrefab.prototype, \"segmentsW\", {\r\n /**\r\n * The number of segments that make up the plane along the X-axis. Defaults to 1.\r\n */\r\n get: function () {\r\n return this._segmentsW;\r\n },\r\n set: function (value) {\r\n this._segmentsW = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePlanePrefab.prototype, \"segmentsH\", {\r\n /**\r\n * The number of segments that make up the plane along the Y or Z-axis, depending on whether yUp is true or\r\n * false, respectively. Defaults to 1.\r\n */\r\n get: function () {\r\n return this._segmentsH;\r\n },\r\n set: function (value) {\r\n this._segmentsH = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePlanePrefab.prototype, \"yUp\", {\r\n /**\r\n * Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false). Defaults to true.\r\n */\r\n get: function () {\r\n return this._yUp;\r\n },\r\n set: function (value) {\r\n this._yUp = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePlanePrefab.prototype, \"doubleSided\", {\r\n /**\r\n * Defines whether the plane will be visible from both sides, with correct vertex normals (as opposed to bothSides on Material). Defaults to false.\r\n */\r\n get: function () {\r\n return this._doubleSided;\r\n },\r\n set: function (value) {\r\n this._doubleSided = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePlanePrefab.prototype, \"width\", {\r\n /**\r\n * The width of the plane.\r\n */\r\n get: function () {\r\n return this._width;\r\n },\r\n set: function (value) {\r\n this._width = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePlanePrefab.prototype, \"height\", {\r\n /**\r\n * The height of the plane.\r\n */\r\n get: function () {\r\n return this._height;\r\n },\r\n set: function (value) {\r\n this._height = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitivePlanePrefab.prototype._pBuildGraphics = function (target, elementsType) {\r\n var indices;\r\n var x, y;\r\n var numIndices;\r\n var stride;\r\n var base;\r\n var tw = this._segmentsW + 1;\r\n var vidx, fidx; // indices\r\n var xi;\r\n var yi;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n var triangleGraphics = target;\r\n var numVertices = (this._segmentsH + 1) * tw;\r\n var positions;\r\n var normals;\r\n var tangents;\r\n if (this._doubleSided)\r\n numVertices *= 2;\r\n numIndices = this._segmentsH * this._segmentsW * 6;\r\n if (this._doubleSided)\r\n numIndices *= 2;\r\n if (triangleGraphics.indices != null && numIndices == triangleGraphics.indices.length) {\r\n triangleGraphics.invalidateIndices();\r\n }\r\n else {\r\n triangleGraphics.setIndices(new Uint16Array(numIndices));\r\n this._pInvalidateUVs();\r\n }\r\n indices = triangleGraphics.indices.get(triangleGraphics.numElements);\r\n if (numVertices == triangleGraphics.numVertices) {\r\n triangleGraphics.invalidateVertices(triangleGraphics.positions);\r\n triangleGraphics.invalidateVertices(triangleGraphics.normals);\r\n triangleGraphics.invalidateVertices(triangleGraphics.tangents);\r\n }\r\n else {\r\n triangleGraphics.setPositions(new Float32Array(numVertices * 3));\r\n triangleGraphics.setNormals(new Float32Array(numVertices * 3));\r\n triangleGraphics.setTangents(new Float32Array(numVertices * 3));\r\n this._pInvalidateUVs();\r\n }\r\n positions = triangleGraphics.positions.get(numVertices);\r\n normals = triangleGraphics.normals.get(numVertices);\r\n tangents = triangleGraphics.tangents.get(numVertices);\r\n stride = triangleGraphics.concatenatedBuffer.stride / 4;\r\n fidx = 0;\r\n vidx = 0;\r\n for (yi = 0; yi <= this._segmentsH; ++yi) {\r\n for (xi = 0; xi <= this._segmentsW; ++xi) {\r\n x = (xi / this._segmentsW - .5) * this._width;\r\n y = (yi / this._segmentsH - .5) * this._height;\r\n positions[vidx] = x;\r\n if (this._yUp) {\r\n positions[vidx + 1] = 0;\r\n positions[vidx + 2] = y;\r\n }\r\n else {\r\n positions[vidx + 1] = y;\r\n positions[vidx + 2] = 0;\r\n }\r\n normals[vidx] = 0;\r\n if (this._yUp) {\r\n normals[vidx + 1] = 1;\r\n normals[vidx + 2] = 0;\r\n }\r\n else {\r\n normals[vidx + 1] = 0;\r\n normals[vidx + 2] = -1;\r\n }\r\n tangents[vidx] = 1;\r\n tangents[vidx + 1] = 0;\r\n tangents[vidx + 2] = 0;\r\n vidx += stride;\r\n // add vertex with same position, but with inverted normal & tangent\r\n if (this._doubleSided) {\r\n for (var i = vidx; i < vidx + 3; ++i) {\r\n positions[i] = positions[i - 3];\r\n normals[i] = -normals[i - 3];\r\n tangents[i] = -tangents[i - 3];\r\n }\r\n vidx += stride;\r\n }\r\n if (xi != this._segmentsW && yi != this._segmentsH) {\r\n base = xi + yi * tw;\r\n var mult = this._doubleSided ? 2 : 1;\r\n indices[fidx++] = base * mult;\r\n indices[fidx++] = (base + tw) * mult;\r\n indices[fidx++] = (base + tw + 1) * mult;\r\n indices[fidx++] = base * mult;\r\n indices[fidx++] = (base + tw + 1) * mult;\r\n indices[fidx++] = (base + 1) * mult;\r\n if (this._doubleSided) {\r\n indices[fidx++] = (base + tw + 1) * mult + 1;\r\n indices[fidx++] = (base + tw) * mult + 1;\r\n indices[fidx++] = base * mult + 1;\r\n indices[fidx++] = (base + 1) * mult + 1;\r\n indices[fidx++] = (base + tw + 1) * mult + 1;\r\n indices[fidx++] = base * mult + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n var lineGraphics = target;\r\n var numSegments = (this._segmentsH + 1) + tw;\r\n var positions;\r\n var thickness;\r\n var hw = this._width / 2;\r\n var hh = this._height / 2;\r\n positions = new Float32Array(numSegments * 6);\r\n thickness = new Float32Array(numSegments);\r\n fidx = 0;\r\n vidx = 0;\r\n for (yi = 0; yi <= this._segmentsH; ++yi) {\r\n positions[vidx++] = -hw;\r\n positions[vidx++] = 0;\r\n positions[vidx++] = yi * this._height - hh;\r\n positions[vidx++] = hw;\r\n positions[vidx++] = 0;\r\n positions[vidx++] = yi * this._height - hh;\r\n thickness[fidx++] = 1;\r\n }\r\n for (xi = 0; xi <= this._segmentsW; ++xi) {\r\n positions[vidx++] = xi * this._width - hw;\r\n positions[vidx++] = 0;\r\n positions[vidx++] = -hh;\r\n positions[vidx++] = xi * this._width - hw;\r\n positions[vidx++] = 0;\r\n positions[vidx++] = hh;\r\n thickness[fidx++] = 1;\r\n }\r\n // build real data from raw data\r\n lineGraphics.setPositions(positions);\r\n lineGraphics.setThickness(thickness);\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitivePlanePrefab.prototype._pBuildUVs = function (target, elementsType) {\r\n var uvs;\r\n var stride;\r\n var numVertices;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n numVertices = (this._segmentsH + 1) * (this._segmentsW + 1);\r\n if (this._doubleSided)\r\n numVertices *= 2;\r\n var triangleGraphics = target;\r\n if (triangleGraphics.uvs && numVertices == triangleGraphics.numVertices) {\r\n triangleGraphics.invalidateVertices(triangleGraphics.uvs);\r\n }\r\n else {\r\n triangleGraphics.setUVs(new Float32Array(numVertices * 2));\r\n }\r\n uvs = triangleGraphics.uvs.get(numVertices);\r\n stride = triangleGraphics.uvs.stride;\r\n var index = 0;\r\n for (var yi = 0; yi <= this._segmentsH; ++yi) {\r\n for (var xi = 0; xi <= this._segmentsW; ++xi) {\r\n uvs[index] = (xi / this._segmentsW) * this._scaleU;\r\n uvs[index + 1] = (1 - yi / this._segmentsH) * this._scaleV;\r\n index += stride;\r\n if (this._doubleSided) {\r\n uvs[index] = (xi / this._segmentsW) * this._scaleU;\r\n uvs[index + 1] = (1 - yi / this._segmentsH) * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n }\r\n };\r\n return PrimitivePlanePrefab;\r\n}(PrimitivePrefabBase));\r\nexport { PrimitivePlanePrefab };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrimitivePlanePrefab.js","import * as tslib_1 from \"tslib\";\r\nimport { PrimitiveCylinderPrefab } from \"../prefabs/PrimitiveCylinderPrefab\";\r\n/**\r\n * A UV RegularPolygon primitive sprite.\r\n */\r\nvar PrimitivePolygonPrefab = (function (_super) {\r\n tslib_1.__extends(PrimitivePolygonPrefab, _super);\r\n /**\r\n * Creates a new RegularPolygon disc object.\r\n * @param radius The radius of the regular polygon\r\n * @param sides Defines the number of sides of the regular polygon.\r\n * @param yUp Defines whether the regular polygon should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n function PrimitivePolygonPrefab(material, elementsType, radius, sides, yUp) {\r\n if (material === void 0) { material = null; }\r\n if (elementsType === void 0) { elementsType = \"triangle\"; }\r\n if (radius === void 0) { radius = 100; }\r\n if (sides === void 0) { sides = 16; }\r\n if (yUp === void 0) { yUp = true; }\r\n return _super.call(this, material, elementsType, radius, 0, 0, sides, 1, true, false, false, yUp) || this;\r\n }\r\n Object.defineProperty(PrimitivePolygonPrefab.prototype, \"radius\", {\r\n /**\r\n * The radius of the regular polygon.\r\n */\r\n get: function () {\r\n return this._pBottomRadius;\r\n },\r\n set: function (value) {\r\n this._pBottomRadius = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePolygonPrefab.prototype, \"sides\", {\r\n /**\r\n * The number of sides of the regular polygon.\r\n */\r\n get: function () {\r\n return this._pSegmentsW;\r\n },\r\n set: function (value) {\r\n this.setSegmentsW(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitivePolygonPrefab.prototype, \"subdivisions\", {\r\n /**\r\n * The number of subdivisions from the edge to the center of the regular polygon.\r\n */\r\n get: function () {\r\n return this._pSegmentsH;\r\n },\r\n set: function (value) {\r\n this.setSegmentsH(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PrimitivePolygonPrefab;\r\n}(PrimitiveCylinderPrefab));\r\nexport { PrimitivePolygonPrefab };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrimitivePolygonPrefab.js","import * as tslib_1 from \"tslib\";\r\nimport { ElementsType } from \"@awayjs/graphics\";\r\nimport { PrimitivePrefabBase } from \"../prefabs/PrimitivePrefabBase\";\r\n/**\r\n * A UV Cylinder primitive sprite.\r\n */\r\nvar PrimitiveTorusPrefab = (function (_super) {\r\n tslib_1.__extends(PrimitiveTorusPrefab, _super);\r\n /**\r\n * Creates a new Torus object.\r\n * @param radius The radius of the torus.\r\n * @param tuebRadius The radius of the inner tube of the torus.\r\n * @param segmentsR Defines the number of horizontal segments that make up the torus.\r\n * @param segmentsT Defines the number of vertical segments that make up the torus.\r\n * @param yUp Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n function PrimitiveTorusPrefab(material, elementsType, radius, tubeRadius, segmentsR, segmentsT, yUp) {\r\n if (material === void 0) { material = null; }\r\n if (elementsType === void 0) { elementsType = \"triangle\"; }\r\n if (radius === void 0) { radius = 50; }\r\n if (tubeRadius === void 0) { tubeRadius = 50; }\r\n if (segmentsR === void 0) { segmentsR = 16; }\r\n if (segmentsT === void 0) { segmentsT = 8; }\r\n if (yUp === void 0) { yUp = true; }\r\n var _this = _super.call(this, material, elementsType) || this;\r\n _this._numVertices = 0;\r\n _this._radius = radius;\r\n _this._tubeRadius = tubeRadius;\r\n _this._segmentsR = segmentsR;\r\n _this._segmentsT = segmentsT;\r\n _this._yUp = yUp;\r\n return _this;\r\n }\r\n Object.defineProperty(PrimitiveTorusPrefab.prototype, \"radius\", {\r\n /**\r\n * The radius of the torus.\r\n */\r\n get: function () {\r\n return this._radius;\r\n },\r\n set: function (value) {\r\n this._radius = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveTorusPrefab.prototype, \"tubeRadius\", {\r\n /**\r\n * The radius of the inner tube of the torus.\r\n */\r\n get: function () {\r\n return this._tubeRadius;\r\n },\r\n set: function (value) {\r\n this._tubeRadius = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveTorusPrefab.prototype, \"segmentsR\", {\r\n /**\r\n * Defines the number of horizontal segments that make up the torus. Defaults to 16.\r\n */\r\n get: function () {\r\n return this._segmentsR;\r\n },\r\n set: function (value) {\r\n this._segmentsR = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveTorusPrefab.prototype, \"segmentsT\", {\r\n /**\r\n * Defines the number of vertical segments that make up the torus. Defaults to 8.\r\n */\r\n get: function () {\r\n return this._segmentsT;\r\n },\r\n set: function (value) {\r\n this._segmentsT = value;\r\n this._pInvalidatePrimitive();\r\n this._pInvalidateUVs();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveTorusPrefab.prototype, \"yUp\", {\r\n /**\r\n * Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).\r\n */\r\n get: function () {\r\n return this._yUp;\r\n },\r\n set: function (value) {\r\n this._yUp = value;\r\n this._pInvalidatePrimitive();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveTorusPrefab.prototype._pBuildGraphics = function (target, elementsType) {\r\n var indices;\r\n var positions;\r\n var normals;\r\n var tangents;\r\n var stride;\r\n var i, j;\r\n var x, y, z, nx, ny, nz, revolutionAngleR, revolutionAngleT;\r\n var vidx;\r\n var fidx;\r\n var numIndices = 0;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n var triangleGraphics = target;\r\n // evaluate target number of vertices, triangles and indices\r\n this._numVertices = (this._segmentsT + 1) * (this._segmentsR + 1); // segmentsT + 1 because of closure, segmentsR + 1 because of closure\r\n numIndices = this._segmentsT * this._segmentsR * 6; // each level has segmentR quads, each of 2 triangles\r\n // need to initialize raw arrays or can be reused?\r\n if (this._numVertices == triangleGraphics.numVertices) {\r\n triangleGraphics.invalidateIndices();\r\n triangleGraphics.invalidateVertices(triangleGraphics.positions);\r\n triangleGraphics.invalidateVertices(triangleGraphics.normals);\r\n triangleGraphics.invalidateVertices(triangleGraphics.tangents);\r\n }\r\n else {\r\n triangleGraphics.setIndices(new Uint16Array(numIndices));\r\n triangleGraphics.setPositions(new Float32Array(this._numVertices * 3));\r\n triangleGraphics.setNormals(new Float32Array(this._numVertices * 3));\r\n triangleGraphics.setTangents(new Float32Array(this._numVertices * 3));\r\n this._pInvalidateUVs();\r\n }\r\n indices = triangleGraphics.indices.get(triangleGraphics.numElements);\r\n positions = triangleGraphics.positions.get(this._numVertices);\r\n normals = triangleGraphics.normals.get(this._numVertices);\r\n tangents = triangleGraphics.tangents.get(this._numVertices);\r\n stride = triangleGraphics.concatenatedBuffer.stride / 4;\r\n vidx = 0;\r\n fidx = 0;\r\n // evaluate revolution steps\r\n var revolutionAngleDeltaR = 2 * Math.PI / this._segmentsR;\r\n var revolutionAngleDeltaT = 2 * Math.PI / this._segmentsT;\r\n var comp1, comp2;\r\n var t1, t2, n1, n2;\r\n var startIndex = 0;\r\n var nextVertexIndex = 0;\r\n // surface\r\n var a, b, c, d, length;\r\n for (j = 0; j <= this._segmentsT; ++j) {\r\n startIndex = vidx;\r\n for (i = 0; i <= this._segmentsR; ++i) {\r\n // revolution vertex\r\n revolutionAngleR = i * revolutionAngleDeltaR;\r\n revolutionAngleT = j * revolutionAngleDeltaT;\r\n length = Math.cos(revolutionAngleT);\r\n nx = length * Math.cos(revolutionAngleR);\r\n ny = length * Math.sin(revolutionAngleR);\r\n nz = Math.sin(revolutionAngleT);\r\n x = this._radius * Math.cos(revolutionAngleR) + this._tubeRadius * nx;\r\n y = this._radius * Math.sin(revolutionAngleR) + this._tubeRadius * ny;\r\n z = (j == this._segmentsT) ? 0 : this._tubeRadius * nz;\r\n if (this._yUp) {\r\n n1 = -nz;\r\n n2 = ny;\r\n t1 = 0;\r\n t2 = (length ? nx / length : x / this._radius);\r\n comp1 = -z;\r\n comp2 = y;\r\n }\r\n else {\r\n n1 = ny;\r\n n2 = nz;\r\n t1 = (length ? nx / length : x / this._radius);\r\n t2 = 0;\r\n comp1 = y;\r\n comp2 = z;\r\n }\r\n if (i == this._segmentsR) {\r\n positions[vidx] = x;\r\n positions[vidx + 1] = positions[startIndex + 1];\r\n positions[vidx + 2] = positions[startIndex + 2];\r\n }\r\n else {\r\n positions[vidx] = x;\r\n positions[vidx + 1] = comp1;\r\n positions[vidx + 2] = comp2;\r\n }\r\n normals[vidx] = nx;\r\n normals[vidx + 1] = n1;\r\n normals[vidx + 2] = n2;\r\n tangents[vidx] = -(length ? ny / length : y / this._radius);\r\n tangents[vidx + 1] = t1;\r\n tangents[vidx + 2] = t2;\r\n vidx += stride;\r\n // close triangle\r\n if (i > 0 && j > 0) {\r\n a = nextVertexIndex; // current\r\n b = nextVertexIndex - 1; // previous\r\n c = b - this._segmentsR - 1; // previous of last level\r\n d = a - this._segmentsR - 1; // current of last level\r\n indices[fidx++] = a;\r\n indices[fidx++] = b;\r\n indices[fidx++] = c;\r\n indices[fidx++] = a;\r\n indices[fidx++] = c;\r\n indices[fidx++] = d;\r\n }\r\n nextVertexIndex++;\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PrimitiveTorusPrefab.prototype._pBuildUVs = function (target, elementsType) {\r\n var i, j;\r\n var uvs;\r\n var stride;\r\n if (elementsType == ElementsType.TRIANGLE) {\r\n var triangleGraphics = target;\r\n // need to initialize raw array or can be reused?\r\n if (triangleGraphics.uvs && this._numVertices == triangleGraphics.numVertices) {\r\n triangleGraphics.invalidateVertices(triangleGraphics.uvs);\r\n }\r\n else {\r\n triangleGraphics.setUVs(new Float32Array(this._numVertices * 2));\r\n }\r\n uvs = triangleGraphics.uvs.get(this._numVertices);\r\n stride = triangleGraphics.uvs.stride;\r\n // current uv component index\r\n var index = 0;\r\n // surface\r\n for (j = 0; j <= this._segmentsT; ++j) {\r\n for (i = 0; i <= this._segmentsR; ++i) {\r\n // revolution vertex\r\n uvs[index] = (i / this._segmentsR) * this._scaleU;\r\n uvs[index + 1] = (j / this._segmentsT) * this._scaleV;\r\n index += stride;\r\n }\r\n }\r\n }\r\n else if (elementsType == ElementsType.LINE) {\r\n }\r\n };\r\n return PrimitiveTorusPrefab;\r\n}(PrimitivePrefabBase));\r\nexport { PrimitiveTorusPrefab };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/prefabs/PrimitiveTorusPrefab.js","/**\r\n * The AntiAliasType class provides values for anti-aliasing in the\r\n * away.text.TextField class.\r\n */\r\nvar AntiAliasType = (function () {\r\n function AntiAliasType() {\r\n }\r\n return AntiAliasType;\r\n}());\r\nexport { AntiAliasType };\r\n/**\r\n * Sets anti-aliasing to advanced anti-aliasing. Advanced anti-aliasing\r\n * allows font faces to be rendered at very high quality at small sizes. It\r\n * is best used with applications that have a lot of small text. Advanced\r\n * anti-aliasing is not recommended for very large fonts(larger than 48\r\n * points). This constant is used for the antiAliasType property\r\n * in the TextField class. Use the syntax\r\n * AntiAliasType.ADVANCED.\r\n */\r\nAntiAliasType.ADVANCED = \"advanced\";\r\n/**\r\n * Sets anti-aliasing to the anti-aliasing that is used in Flash Player 7 and\r\n * earlier. This setting is recommended for applications that do not have a\r\n * lot of text. This constant is used for the antiAliasType\r\n * property in the TextField class. Use the syntax\r\n * AntiAliasType.NORMAL.\r\n */\r\nAntiAliasType.NORMAL = \"normal\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/AntiAliasType.js","/**\r\n * The TextFormat class represents character formatting information. Use the\r\n * TextFormat class to create specific text formatting for text fields. You\r\n * can apply text formatting to both static and dynamic text fields. The\r\n * properties of the TextFormat class apply to device and embedded fonts.\r\n * However, for embedded fonts, bold and italic text actually require specific\r\n * fonts. If you want to display bold or italic text with an embedded font,\r\n * you need to embed the bold and italic variations of that font.\r\n *\r\n *

You must use the constructor new TextFormat() to create a\r\n * TextFormat object before setting its properties. When you apply a\r\n * TextFormat object to a text field using the\r\n * TextField.defaultTextFormat property or the\r\n * TextField.setTextFormat() method, only its defined properties\r\n * are applied. Use the TextField.defaultTextFormat property to\r\n * apply formatting BEFORE you add text to the TextField, and the\r\n * setTextFormat() method to add formatting AFTER you add text to\r\n * the TextField. The TextFormat properties are null\r\n * by default because if you don't provide values for the properties, Flash\r\n * Player uses its own default formatting. The default formatting that Flash\r\n * Player uses for each property(if property's value is null) is\r\n * as follows:

\r\n *\r\n *

The default formatting for each property is also described in each\r\n * property description.

\r\n */\r\nvar BitmapFontChar = (function () {\r\n function BitmapFontChar(id, x, y, width, height, xoff, yoff, xadv, page, channel) {\r\n this.id = id;\r\n this.x = x;\r\n this.y = y;\r\n this.width = width;\r\n this.height = height;\r\n this.x_offset = xoff;\r\n this.y_offset = yoff;\r\n this.x_advance = xadv;\r\n this.page = page;\r\n this.channel = channel;\r\n }\r\n return BitmapFontChar;\r\n}());\r\nexport { BitmapFontChar };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/BitmapFontChar.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase } from \"@awayjs/core\";\r\nimport { BitmapFontChar } from \"./BitmapFontChar\";\r\n/**\r\n * GraphicBase wraps a TriangleElements as a scene graph instantiation. A GraphicBase is owned by a Sprite object.\r\n *\r\n *\r\n * @see away.base.TriangleElements\r\n * @see away.entities.Sprite\r\n *\r\n * @class away.base.GraphicBase\r\n */\r\nvar BitmapFontTable = (function (_super) {\r\n tslib_1.__extends(BitmapFontTable, _super);\r\n //TODO test shader picking\r\n //\t\tpublic get shaderPickingDetails():boolean\r\n //\t\t{\r\n //\r\n //\t\t\treturn this.sourceEntity.shaderPickingDetails;\r\n //\t\t}\r\n /**\r\n * Creates a new TesselatedFont object\r\n */\r\n function BitmapFontTable() {\r\n var _this = _super.call(this) || this;\r\n _this._font_chars = [];\r\n _this._materials = [];\r\n _this._font_chars_dic = new Object();\r\n _this._ascent = 0;\r\n _this._descent = 0;\r\n _this._current_size = 0;\r\n _this._size_multiply = 0;\r\n _this._init_size = 0;\r\n _this._texture_width = 0;\r\n _this._texture_height = 0;\r\n _this._adjust_size = 0;\r\n return _this;\r\n }\r\n Object.defineProperty(BitmapFontTable.prototype, \"assetType\", {\r\n get: function () {\r\n return BitmapFontTable.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n BitmapFontTable.prototype.initFontSize = function (font_size) {\r\n if (this.fallbackTable)\r\n this.fallbackTable.initFontSize(font_size);\r\n if (this._adjust_size)\r\n font_size *= this._adjust_size;\r\n if (this._current_size == font_size)\r\n return;\r\n this._current_size = font_size;\r\n this._size_multiply = font_size / this._init_size;\r\n };\r\n BitmapFontTable.prototype.getCharDataCanvas = function (char_code) {\r\n var this_char = this._font_chars_dic[char_code];\r\n if (this_char) {\r\n //console.log(\"this_char found\");\r\n return [this_char.x, this_char.y, this_char.width, this_char.height, this_char.x_offset * this._size_multiply, this_char.y_offset * this._size_multiply];\r\n }\r\n //console.log(\"this_char not found\" + char_code);\r\n return [];\r\n };\r\n BitmapFontTable.prototype.getCharData = function (char_code) {\r\n var this_char = this._font_chars_dic[char_code];\r\n if (this_char) {\r\n var realheight = (this_char.height / this._init_size) * this._current_size;\r\n var realWidth = (this_char.width / this._init_size) * this._current_size;\r\n //console.log(\"this_char found\");\r\n return [this_char.x / this._texture_width, this_char.y / this._texture_height, this_char.width / this._texture_width, this_char.height / this._texture_height, this_char.x_offset * this._size_multiply, this_char.y_offset * this._size_multiply, realheight, realWidth];\r\n }\r\n //console.log(\"this_char not found\" + char_code);\r\n return [];\r\n };\r\n BitmapFontTable.prototype.getCharVertCnt = function (char_code) {\r\n return 6 * 4;\r\n };\r\n Object.defineProperty(BitmapFontTable.prototype, \"texture_width\", {\r\n get: function () {\r\n return this._texture_width;\r\n },\r\n set: function (value) {\r\n this._texture_width = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BitmapFontTable.prototype, \"texture_height\", {\r\n get: function () {\r\n return this._texture_height;\r\n },\r\n set: function (value) {\r\n this._texture_height = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n BitmapFontTable.prototype.hasChar = function (char_code) {\r\n return this._font_chars_dic[char_code] != null;\r\n };\r\n BitmapFontTable.prototype.getCharWidth = function (char_code) {\r\n var this_char = this._font_chars_dic[char_code];\r\n if (this_char)\r\n return this._size_multiply * (this_char.x_advance);\r\n return 0;\r\n };\r\n BitmapFontTable.prototype.fillTextRun = function (tf, format, startWord, wordCnt) {\r\n };\r\n BitmapFontTable.prototype.getLineHeight = function () {\r\n return this._current_size;\r\n };\r\n /**\r\n *\r\n */\r\n BitmapFontTable.prototype.dispose = function () {\r\n var len = this._materials.length;\r\n for (var i = 0; i < len; ++i) {\r\n this._materials[i].dispose();\r\n }\r\n this._materials.length = 0;\r\n this._font_chars.length = 0;\r\n this._font_chars_dic = null;\r\n };\r\n BitmapFontTable.prototype.addMaterial = function (material) {\r\n this._materials.push(material);\r\n };\r\n BitmapFontTable.prototype.getMaterial = function (idx) {\r\n if (idx === void 0) { idx = 0; }\r\n return this._materials[idx];\r\n };\r\n Object.defineProperty(BitmapFontTable.prototype, \"ascent\", {\r\n get: function () {\r\n return this._ascent;\r\n },\r\n set: function (value) {\r\n this._ascent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BitmapFontTable.prototype, \"descent\", {\r\n get: function () {\r\n return this._descent;\r\n },\r\n set: function (value) {\r\n this._descent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BitmapFontTable.prototype, \"offset_x\", {\r\n get: function () {\r\n return this._offset_x;\r\n },\r\n set: function (value) {\r\n this._offset_x = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BitmapFontTable.prototype, \"offset_y\", {\r\n get: function () {\r\n return this._offset_y;\r\n },\r\n set: function (value) {\r\n this._offset_y = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n BitmapFontTable.prototype.get_font_chars = function () {\r\n return this._font_chars;\r\n };\r\n BitmapFontTable.prototype.get_font_em_size = function () {\r\n return this._font_em_size;\r\n };\r\n BitmapFontTable.prototype.set_whitespace_width = function (value) {\r\n this._whitespace_width = value;\r\n };\r\n BitmapFontTable.prototype.get_whitespace_width = function () {\r\n return this._whitespace_width;\r\n };\r\n BitmapFontTable.prototype.set_font_em_size = function (font_em_size) {\r\n this._font_em_size = font_em_size;\r\n };\r\n /**\r\n *\r\n */\r\n BitmapFontTable.prototype.getChar = function (name) {\r\n return this._font_chars_dic[name];\r\n };\r\n /**\r\n *\r\n */\r\n BitmapFontTable.prototype.setChar = function (id, x, y, width, height, xoff, yoff, xadv, page, channel) {\r\n var bitmap_font_char = new BitmapFontChar(id, x, y, width, height, xoff, yoff, xadv, page, channel);\r\n this._font_chars.push(bitmap_font_char);\r\n this._font_chars_dic[id] = bitmap_font_char;\r\n };\r\n return BitmapFontTable;\r\n}(AssetBase));\r\nexport { BitmapFontTable };\r\nBitmapFontTable.assetType = \"[asset BitmapFontTable]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/BitmapFontTable.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetBase } from \"@awayjs/core\";\r\nimport { TesselatedFontTable } from \"./TesselatedFontTable\";\r\nimport { BitmapFontTable } from \"./BitmapFontTable\";\r\n/**\r\n * Font is a container for FontTables.\r\n *\r\n *\r\n *\r\n */\r\nvar Font = (function (_super) {\r\n tslib_1.__extends(Font, _super);\r\n //TODO test shader picking\r\n //\t\tpublic get shaderPickingDetails():boolean\r\n //\t\t{\r\n //\r\n //\t\t\treturn this.sourceEntity.shaderPickingDetails;\r\n //\t\t}\r\n /**\r\n * Creates a new TesselatedFont object\r\n */\r\n function Font() {\r\n var _this = _super.call(this) || this;\r\n _this._font_styles = [];\r\n // ------------ dummys for as3web:\r\n _this.fontName = null;\r\n return _this;\r\n }\r\n Font.registerFont = function (any) {\r\n };\r\n Object.defineProperty(Font.prototype, \"font_styles\", {\r\n // ------------\r\n get: function () {\r\n return this._font_styles;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Font.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return Font.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n */\r\n Font.prototype.dispose = function () {\r\n var len = this._font_styles.length;\r\n for (var i = 0; i < len; ++i) {\r\n this._font_styles[i].dispose();\r\n }\r\n this._font_styles.length = 0;\r\n };\r\n /**\r\n *Get a font-table for a specific name, or create one if it does not exists.\r\n */\r\n Font.prototype.get_font_table = function (style_name, assetType, openTypeFont) {\r\n if (assetType === void 0) { assetType = TesselatedFontTable.assetType; }\r\n if (openTypeFont === void 0) { openTypeFont = null; }\r\n var len = this._font_styles.length;\r\n //console.log(\"font name\", this.name, style_name);\r\n for (var i = 0; i < len; ++i) {\r\n if ((this._font_styles[i].assetType == assetType) && (this._font_styles[i].name == style_name)) {\r\n // mak\r\n return this._font_styles[i];\r\n }\r\n }\r\n var font_style = null;\r\n if (assetType == TesselatedFontTable.assetType) {\r\n font_style = new TesselatedFontTable(openTypeFont);\r\n }\r\n else if (assetType == BitmapFontTable.assetType) {\r\n font_style = new BitmapFontTable();\r\n }\r\n font_style.name = style_name;\r\n this._font_styles.push(font_style);\r\n return font_style;\r\n };\r\n return Font;\r\n}(AssetBase));\r\nexport { Font };\r\nFont.assetType = \"[asset Font]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/Font.js","/**\r\n * The GridFitType class defines values for grid fitting in the TextField class.\r\n */\r\nvar GridFitType = (function () {\r\n function GridFitType() {\r\n }\r\n return GridFitType;\r\n}());\r\nexport { GridFitType };\r\n/**\r\n * Doesn't set grid fitting. Horizontal and vertical lines in the glyphs are\r\n * not forced to the pixel grid. This constant is used in setting the\r\n * gridFitType property of the TextField class. This is often a\r\n * good setting for animation or for large font sizes. Use the syntax\r\n * GridFitType.NONE.\r\n */\r\nGridFitType.NONE = \"none\";\r\n/**\r\n * Fits strong horizontal and vertical lines to the pixel grid. This constant\r\n * is used in setting the gridFitType property of the TextField\r\n * class. This setting only works for left-justified text fields and acts\r\n * like the GridFitType.SUBPIXEL constant in static text. This\r\n * setting generally provides the best readability for left-aligned text. Use\r\n * the syntax GridFitType.PIXEL.\r\n */\r\nGridFitType.PIXEL = \"pixel\";\r\n/**\r\n * Fits strong horizontal and vertical lines to the sub-pixel grid on LCD\r\n * monitors. (Red, green, and blue are actual pixels on an LCD screen.) This\r\n * is often a good setting for right-aligned or center-aligned dynamic text,\r\n * and it is sometimes a useful tradeoff for animation vs. text quality. This\r\n * constant is used in setting the gridFitType property of the\r\n * TextField class. Use the syntax GridFitType.SUBPIXEL.\r\n */\r\nGridFitType.SUBPIXEL = \"subpixel\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/GridFitType.js","/**\r\n * The TextFormatAlign class provides values for text alignment in the\r\n * TextFormat class.\r\n */\r\nvar TextFormatAlign = (function () {\r\n function TextFormatAlign() {\r\n /**\r\n * Constant; centers the text in the text field. Use the syntax\r\n * TextFormatAlign.CENTER.\r\n */\r\n this.CENTER = \"center\";\r\n /**\r\n * Constant; justifies text within the text field. Use the syntax\r\n * TextFormatAlign.JUSTIFY.\r\n */\r\n this.JUSTIFY = \"justify\";\r\n /**\r\n * Constant; aligns text to the left within the text field. Use the syntax\r\n * TextFormatAlign.LEFT.\r\n */\r\n this.LEFT = \"left\";\r\n /**\r\n * Constant; aligns text to the right within the text field. Use the syntax\r\n * TextFormatAlign.RIGHT.\r\n */\r\n this.RIGHT = \"right\";\r\n }\r\n return TextFormatAlign;\r\n}());\r\nexport { TextFormatAlign };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/TextFormatAlign.js","/**\r\n * A class that defines the Interactive mode of a text field object.\r\n *\r\n * @see away.entities.TextField#textInteractionMode\r\n */\r\nvar TextInteractionMode = (function () {\r\n function TextInteractionMode() {\r\n }\r\n return TextInteractionMode;\r\n}());\r\nexport { TextInteractionMode };\r\n/**\r\n * The text field's default interaction mode is NORMAL and it varies across\r\n * platform. On Desktop, the normal mode implies that the text field is in\r\n * scrollable + selection mode. On Mobile platforms like Android, normal mode\r\n * implies that the text field can only be scrolled but the text can not be\r\n * selected.\r\n */\r\nTextInteractionMode.NORMAL = \"normal\";\r\n/**\r\n * On mobile platforms like Android, the text field starts in normal mode\r\n * (which implies scroll and non-selectable mode). The user can switch to\r\n * selection mode through the in-built context menu of the text field object.\r\n */\r\nTextInteractionMode.SELECTION = \"selection\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/TextInteractionMode.js","/**\r\n * The TextLineMetrics class contains information about the text position and\r\n * measurements of a line of text within a text field. All measurements are in\r\n * pixels. Objects of this class are returned by the\r\n * away.entities.TextField.getLineMetrics() method.\r\n */\r\nvar TextLineMetrics = (function () {\r\n /**\r\n * Creates a TextLineMetrics object. The TextLineMetrics object contains\r\n * information about the text metrics of a line of text in a text field.\r\n * Objects of this class are returned by the\r\n * away.entities.TextField.getLineMetrics() method.\r\n *\r\n * @param x The left position of the first character in pixels.\r\n * @param width The width of the text of the selected lines (not\r\n * necessarily the complete text) in pixels.\r\n * @param height The height of the text of the selected lines (not\r\n * necessarily the complete text) in pixels.\r\n * @param ascent The length from the baseline to the top of the line\r\n * height in pixels.\r\n * @param descent The length from the baseline to the bottom depth of\r\n * the line in pixels.\r\n * @param leading The measurement of the vertical distance between the\r\n * lines of text.\r\n */\r\n function TextLineMetrics(x, width, height, ascent, descent, leading) {\r\n if (x === void 0) { x = NaN; }\r\n if (width === void 0) { width = NaN; }\r\n if (height === void 0) { height = NaN; }\r\n if (ascent === void 0) { ascent = NaN; }\r\n if (descent === void 0) { descent = NaN; }\r\n if (leading === void 0) { leading = NaN; }\r\n }\r\n return TextLineMetrics;\r\n}());\r\nexport { TextLineMetrics };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/text/TextLineMetrics.js","import { AttributesBuffer } from \"@awayjs/core\";\r\nimport { Shape, TriangleElements } from \"@awayjs/graphics\";\r\nimport { Sprite } from \"../display/Sprite\";\r\n/**\r\n * Class Merge merges two or more static sprites into one.Merge\r\n */\r\nvar Merge = (function () {\r\n /**\r\n * @param keepMaterial [optional] Determines if the merged object uses the recevier sprite material information or keeps its source material(s). Defaults to false.\r\n * If false and receiver object has multiple materials, the last material found in receiver subsprites is applied to the merged subsprite(es).\r\n * @param disposeSources [optional] Determines if the sprite and geometry source(s) used for the merging are disposed. Defaults to false.\r\n * If true, only receiver geometry and resulting sprite are kept in memory.\r\n * @param objectSpace [optional] Determines if source sprite(es) is/are merged using objectSpace or worldspace. Defaults to false.\r\n */\r\n function Merge(keepMaterial, disposeSources, objectSpace) {\r\n if (keepMaterial === void 0) { keepMaterial = false; }\r\n if (disposeSources === void 0) { disposeSources = false; }\r\n if (objectSpace === void 0) { objectSpace = false; }\r\n this._keepMaterial = keepMaterial;\r\n this._disposeSources = disposeSources;\r\n this._objectSpace = objectSpace;\r\n }\r\n Object.defineProperty(Merge.prototype, \"disposeSources\", {\r\n get: function () {\r\n return this._disposeSources;\r\n },\r\n /**\r\n * Determines if the sprite and geometry source(s) used for the merging are disposed. Defaults to false.\r\n */\r\n set: function (b) {\r\n this._disposeSources = b;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Merge.prototype, \"keepMaterial\", {\r\n get: function () {\r\n return this._keepMaterial;\r\n },\r\n /**\r\n * Determines if the material source(s) used for the merging are disposed. Defaults to false.\r\n */\r\n set: function (b) {\r\n this._keepMaterial = b;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Merge.prototype, \"objectSpace\", {\r\n get: function () {\r\n return this._objectSpace;\r\n },\r\n /**\r\n * Determines if source sprite(es) is/are merged using objectSpace or worldspace. Defaults to false.\r\n */\r\n set: function (b) {\r\n this._objectSpace = b;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Merges all the children of a container into a single Sprite. If no Sprite object is found, method returns the receiver without modification.\r\n *\r\n * @param receiver The Sprite to receive the merged contents of the container.\r\n * @param objectContainer The DisplayObjectContainer holding the sprites to be mergd.\r\n *\r\n * @return The merged Sprite instance.\r\n */\r\n Merge.prototype.applyToContainer = function (receiver, objectContainer) {\r\n this.reset();\r\n //collect container sprites\r\n this.parseContainer(receiver, objectContainer);\r\n //collect receiver\r\n this.collect(receiver, false);\r\n //merge to receiver\r\n this.merge(receiver, this._disposeSources);\r\n };\r\n /**\r\n * Merges all the sprites found in the Array<Sprite> into a single Sprite.\r\n *\r\n * @param receiver The Sprite to receive the merged contents of the sprites.\r\n * @param sprites A series of Sprites to be merged with the reciever sprite.\r\n */\r\n Merge.prototype.applyToSprites = function (receiver, sprites) {\r\n this.reset();\r\n if (!sprites.length)\r\n return;\r\n //collect sprites in vector\r\n for (var i = 0; i < sprites.length; i++)\r\n if (sprites[i] != receiver)\r\n this.collect(sprites[i], this._disposeSources);\r\n //collect receiver\r\n this.collect(receiver, false);\r\n //merge to receiver\r\n this.merge(receiver, this._disposeSources);\r\n };\r\n /**\r\n * Merges 2 sprites into one. It is recommand to use apply when 2 sprites are to be merged. If more need to be merged, use either applyToSprites or applyToContainer methods.\r\n *\r\n * @param receiver The Sprite to receive the merged contents of both sprites.\r\n * @param sprite The Sprite to be merged with the receiver sprite\r\n */\r\n Merge.prototype.apply = function (receiver, sprite) {\r\n this.reset();\r\n //collect sprite\r\n this.collect(sprite, this._disposeSources);\r\n //collect receiver\r\n this.collect(receiver, false);\r\n //merge to receiver\r\n this.merge(receiver, this._disposeSources);\r\n };\r\n Merge.prototype.reset = function () {\r\n this._toDispose = new Array();\r\n this._shapeVOs = new Array();\r\n };\r\n Merge.prototype.merge = function (destSprite, dispose) {\r\n var i;\r\n //var oldGraphics:Graphics;\r\n var destGraphics;\r\n var useSubMaterials;\r\n //oldGraphics = destSprite.graphics.clone();\r\n destGraphics = destSprite.graphics;\r\n // Only apply materials directly to sub-sprites if necessary,\r\n // i.e. if there is more than one material available.\r\n useSubMaterials = (this._shapeVOs.length > 1);\r\n for (i = 0; i < this._shapeVOs.length; i++) {\r\n var elements = new TriangleElements(new AttributesBuffer());\r\n elements.autoDeriveNormals = false;\r\n elements.autoDeriveTangents = false;\r\n var data = this._shapeVOs[i];\r\n elements.setIndices(data.indices);\r\n elements.setPositions(data.vertices);\r\n elements.setNormals(data.normals);\r\n elements.setTangents(data.tangents);\r\n elements.setUVs(data.uvs);\r\n if (this._keepMaterial && useSubMaterials)\r\n destGraphics.addShape(Shape.getShape(elements, data.material));\r\n else\r\n destGraphics.addShape(Shape.getShape(elements));\r\n }\r\n if (this._keepMaterial && !useSubMaterials && this._shapeVOs.length)\r\n destSprite.material = this._shapeVOs[0].material;\r\n if (dispose) {\r\n var len = this._toDispose.length;\r\n for (var i; i < len; i++)\r\n this._toDispose[i].dispose();\r\n }\r\n this._toDispose = null;\r\n };\r\n Merge.prototype.collect = function (sprite, dispose) {\r\n var subIdx;\r\n var calc;\r\n for (subIdx = 0; subIdx < sprite.graphics.count; subIdx++) {\r\n var i;\r\n var len;\r\n var iIdx, vIdx, nIdx, tIdx, uIdx;\r\n var indexOffset;\r\n var elements;\r\n var vo;\r\n var vertices;\r\n var normals;\r\n var tangents;\r\n var ind;\r\n elements = sprite.graphics.getShapeAt(subIdx).elements;\r\n // Get (or create) a VO for this material\r\n vo = this.getShapeData(sprite.graphics.getShapeAt(subIdx).material);\r\n // Vertices and normals are copied to temporary vectors, to be transformed\r\n // before concatenated onto those of the data. This is unnecessary if no\r\n // transformation will be performed, i.e. for object space merging.\r\n vertices = (this._objectSpace) ? vo.vertices : new Array();\r\n normals = (this._objectSpace) ? vo.normals : new Array();\r\n tangents = (this._objectSpace) ? vo.tangents : new Array();\r\n // Copy over vertex attributes\r\n vIdx = vertices.length;\r\n nIdx = normals.length;\r\n tIdx = tangents.length;\r\n uIdx = vo.uvs.length;\r\n this.copyAttributes(elements.positions, vertices, elements.numVertices, vIdx);\r\n this.copyAttributes(elements.normals, normals, elements.numVertices, nIdx);\r\n this.copyAttributes(elements.tangents, tangents, elements.numVertices, tIdx);\r\n this.copyAttributes(elements.uvs, vo.uvs, elements.numVertices, uIdx);\r\n // Copy over triangle indices\r\n indexOffset = (!this._objectSpace) ? vo.vertices.length / 3 : 0;\r\n iIdx = vo.indices.length;\r\n len = elements.numElements;\r\n ind = elements.indices.get(len);\r\n for (i = 0; i < len; i++) {\r\n calc = i * 3;\r\n vo.indices[iIdx++] = ind[calc] + indexOffset;\r\n vo.indices[iIdx++] = ind[calc + 1] + indexOffset;\r\n vo.indices[iIdx++] = ind[calc + 2] + indexOffset;\r\n }\r\n if (!this._objectSpace) {\r\n sprite.transform.concatenatedMatrix3D.transformVectors(vertices, vertices);\r\n sprite.transform.concatenatedMatrix3D.deltaTransformVectors(normals, normals);\r\n sprite.transform.concatenatedMatrix3D.deltaTransformVectors(tangents, tangents);\r\n // Copy vertex data from temporary (transformed) vectors\r\n vIdx = vo.vertices.length;\r\n nIdx = vo.normals.length;\r\n tIdx = vo.tangents.length;\r\n len = vertices.length;\r\n for (i = 0; i < len; i++) {\r\n vo.vertices[vIdx++] = vertices[i];\r\n vo.normals[nIdx++] = normals[i];\r\n vo.tangents[tIdx++] = tangents[i];\r\n }\r\n }\r\n }\r\n if (dispose)\r\n this._toDispose.push(sprite);\r\n };\r\n Merge.prototype.copyAttributes = function (attributes, array, count, startIndex) {\r\n var vertices = attributes.get(count);\r\n var dim = attributes.dimensions;\r\n var stride = attributes.stride;\r\n var len = count * stride;\r\n for (var i = 0; i < len; i += stride)\r\n for (var j = 0; j < dim; j++)\r\n array[startIndex++] = vertices[i + j];\r\n };\r\n Merge.prototype.getShapeData = function (material) {\r\n var data;\r\n if (this._keepMaterial) {\r\n var i;\r\n var len;\r\n len = this._shapeVOs.length;\r\n for (i = 0; i < len; i++) {\r\n if (this._shapeVOs[i].material == material) {\r\n data = this._shapeVOs[i];\r\n break;\r\n }\r\n }\r\n }\r\n else if (this._shapeVOs.length) {\r\n // If materials are not to be kept, all data can be\r\n // put into a single VO, so return that one.\r\n data = this._shapeVOs[0];\r\n }\r\n // No data (for this material) found, create new.\r\n if (!data) {\r\n data = new ShapeVO();\r\n data.vertices = new Array();\r\n data.normals = new Array();\r\n data.tangents = new Array();\r\n data.uvs = new Array();\r\n data.indices = new Array();\r\n data.material = material;\r\n this._shapeVOs.push(data);\r\n }\r\n return data;\r\n };\r\n Merge.prototype.parseContainer = function (receiver, object) {\r\n var child;\r\n var i;\r\n if (object instanceof Sprite && object != receiver)\r\n this.collect(object, this._disposeSources);\r\n for (i = 0; i < object.numChildren; ++i) {\r\n child = object.getChildAt(i);\r\n this.parseContainer(receiver, child);\r\n }\r\n };\r\n return Merge;\r\n}());\r\nexport { Merge };\r\nvar ShapeVO = (function () {\r\n function ShapeVO() {\r\n }\r\n return ShapeVO;\r\n}());\r\nexport { ShapeVO };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/tools/Merge.js","import { ByteArray } from \"@awayjs/core\";\r\nimport { Image2D, Single2DTexture } from \"@awayjs/graphics\";\r\nimport { CastError } from \"../errors/CastError\";\r\n/**\r\n * Helper class for casting assets to usable objects\r\n */\r\nvar Cast = (function () {\r\n function Cast() {\r\n }\r\n Cast.string = function (data) {\r\n if (typeof (data) == 'function')\r\n data = new data;\r\n if (typeof (data) == 'string')\r\n return data;\r\n return data;\r\n };\r\n Cast.byteArray = function (data) {\r\n if (typeof (data) == 'function')\r\n data = new data;\r\n if (data instanceof ByteArray)\r\n return data;\r\n return data;\r\n };\r\n // public static xml(data:any):XML\r\n // {\r\n // if (typeof(data) == 'function')\r\n // data = new data;\r\n //\r\n // if (data is XML)\r\n // return data;\r\n //\r\n // return XML(data);\r\n // }\r\n Cast.isHex = function (str) {\r\n var length = str.length;\r\n for (var i = 0; i < length; ++i) {\r\n if (this._hexChars.indexOf(str.charAt(i)) == -1)\r\n return false;\r\n }\r\n return true;\r\n };\r\n Cast.tryColor = function (data) {\r\n if (typeof (data) == 'number' /*uint*/)\r\n return Math.floor(data);\r\n if (typeof (data) == 'string') {\r\n if (data == \"random\")\r\n return Math.floor(Math.random() * 0x1000000);\r\n if (this._colorNames == null) {\r\n this._colorNames = new Object();\r\n this._colorNames[\"steelblue\"] = 0x4682B4;\r\n this._colorNames[\"royalblue\"] = 0x041690;\r\n this._colorNames[\"cornflowerblue\"] = 0x6495ED;\r\n this._colorNames[\"lightsteelblue\"] = 0xB0C4DE;\r\n this._colorNames[\"mediumslateblue\"] = 0x7B68EE;\r\n this._colorNames[\"slateblue\"] = 0x6A5ACD;\r\n this._colorNames[\"darkslateblue\"] = 0x483D8B;\r\n this._colorNames[\"midnightblue\"] = 0x191970;\r\n this._colorNames[\"navy\"] = 0x000080;\r\n this._colorNames[\"darkblue\"] = 0x00008B;\r\n this._colorNames[\"mediumblue\"] = 0x0000CD;\r\n this._colorNames[\"blue\"] = 0x0000FF;\r\n this._colorNames[\"dodgerblue\"] = 0x1E90FF;\r\n this._colorNames[\"deepskyblue\"] = 0x00BFFF;\r\n this._colorNames[\"lightskyblue\"] = 0x87CEFA;\r\n this._colorNames[\"skyblue\"] = 0x87CEEB;\r\n this._colorNames[\"lightblue\"] = 0xADD8E6;\r\n this._colorNames[\"powderblue\"] = 0xB0E0E6;\r\n this._colorNames[\"azure\"] = 0xF0FFFF;\r\n this._colorNames[\"lightcyan\"] = 0xE0FFFF;\r\n this._colorNames[\"paleturquoise\"] = 0xAFEEEE;\r\n this._colorNames[\"mediumturquoise\"] = 0x48D1CC;\r\n this._colorNames[\"lightseagreen\"] = 0x20B2AA;\r\n this._colorNames[\"darkcyan\"] = 0x008B8B;\r\n this._colorNames[\"teal\"] = 0x008080;\r\n this._colorNames[\"cadetblue\"] = 0x5F9EA0;\r\n this._colorNames[\"darkturquoise\"] = 0x00CED1;\r\n this._colorNames[\"aqua\"] = 0x00FFFF;\r\n this._colorNames[\"cyan\"] = 0x00FFFF;\r\n this._colorNames[\"turquoise\"] = 0x40E0D0;\r\n this._colorNames[\"aquamarine\"] = 0x7FFFD4;\r\n this._colorNames[\"mediumaquamarine\"] = 0x66CDAA;\r\n this._colorNames[\"darkseagreen\"] = 0x8FBC8F;\r\n this._colorNames[\"mediumseagreen\"] = 0x3CB371;\r\n this._colorNames[\"seagreen\"] = 0x2E8B57;\r\n this._colorNames[\"darkgreen\"] = 0x006400;\r\n this._colorNames[\"green\"] = 0x008000;\r\n this._colorNames[\"forestgreen\"] = 0x228B22;\r\n this._colorNames[\"limegreen\"] = 0x32CD32;\r\n this._colorNames[\"lime\"] = 0x00FF00;\r\n this._colorNames[\"chartreuse\"] = 0x7FFF00;\r\n this._colorNames[\"lawngreen\"] = 0x7CFC00;\r\n this._colorNames[\"greenyellow\"] = 0xADFF2F;\r\n this._colorNames[\"yellowgreen\"] = 0x9ACD32;\r\n this._colorNames[\"palegreen\"] = 0x98FB98;\r\n this._colorNames[\"lightgreen\"] = 0x90EE90;\r\n this._colorNames[\"springgreen\"] = 0x00FF7F;\r\n this._colorNames[\"mediumspringgreen\"] = 0x00FA9A;\r\n this._colorNames[\"darkolivegreen\"] = 0x556B2F;\r\n this._colorNames[\"olivedrab\"] = 0x6B8E23;\r\n this._colorNames[\"olive\"] = 0x808000;\r\n this._colorNames[\"darkkhaki\"] = 0xBDB76B;\r\n this._colorNames[\"darkgoldenrod\"] = 0xB8860B;\r\n this._colorNames[\"goldenrod\"] = 0xDAA520;\r\n this._colorNames[\"gold\"] = 0xFFD700;\r\n this._colorNames[\"yellow\"] = 0xFFFF00;\r\n this._colorNames[\"khaki\"] = 0xF0E68C;\r\n this._colorNames[\"palegoldenrod\"] = 0xEEE8AA;\r\n this._colorNames[\"blanchedalmond\"] = 0xFFEBCD;\r\n this._colorNames[\"moccasin\"] = 0xFFE4B5;\r\n this._colorNames[\"wheat\"] = 0xF5DEB3;\r\n this._colorNames[\"navajowhite\"] = 0xFFDEAD;\r\n this._colorNames[\"burlywood\"] = 0xDEB887;\r\n this._colorNames[\"tan\"] = 0xD2B48C;\r\n this._colorNames[\"rosybrown\"] = 0xBC8F8F;\r\n this._colorNames[\"sienna\"] = 0xA0522D;\r\n this._colorNames[\"saddlebrown\"] = 0x8B4513;\r\n this._colorNames[\"chocolate\"] = 0xD2691E;\r\n this._colorNames[\"peru\"] = 0xCD853F;\r\n this._colorNames[\"sandybrown\"] = 0xF4A460;\r\n this._colorNames[\"darkred\"] = 0x8B0000;\r\n this._colorNames[\"maroon\"] = 0x800000;\r\n this._colorNames[\"brown\"] = 0xA52A2A;\r\n this._colorNames[\"firebrick\"] = 0xB22222;\r\n this._colorNames[\"indianred\"] = 0xCD5C5C;\r\n this._colorNames[\"lightcoral\"] = 0xF08080;\r\n this._colorNames[\"salmon\"] = 0xFA8072;\r\n this._colorNames[\"darksalmon\"] = 0xE9967A;\r\n this._colorNames[\"lightsalmon\"] = 0xFFA07A;\r\n this._colorNames[\"coral\"] = 0xFF7F50;\r\n this._colorNames[\"tomato\"] = 0xFF6347;\r\n this._colorNames[\"darkorange\"] = 0xFF8C00;\r\n this._colorNames[\"orange\"] = 0xFFA500;\r\n this._colorNames[\"orangered\"] = 0xFF4500;\r\n this._colorNames[\"crimson\"] = 0xDC143C;\r\n this._colorNames[\"red\"] = 0xFF0000;\r\n this._colorNames[\"deeppink\"] = 0xFF1493;\r\n this._colorNames[\"fuchsia\"] = 0xFF00FF;\r\n this._colorNames[\"magenta\"] = 0xFF00FF;\r\n this._colorNames[\"hotpink\"] = 0xFF69B4;\r\n this._colorNames[\"lightpink\"] = 0xFFB6C1;\r\n this._colorNames[\"pink\"] = 0xFFC0CB;\r\n this._colorNames[\"palevioletred\"] = 0xDB7093;\r\n this._colorNames[\"mediumvioletred\"] = 0xC71585;\r\n this._colorNames[\"purple\"] = 0x800080;\r\n this._colorNames[\"darkmagenta\"] = 0x8B008B;\r\n this._colorNames[\"mediumpurple\"] = 0x9370DB;\r\n this._colorNames[\"blueviolet\"] = 0x8A2BE2;\r\n this._colorNames[\"indigo\"] = 0x4B0082;\r\n this._colorNames[\"darkviolet\"] = 0x9400D3;\r\n this._colorNames[\"darkorchid\"] = 0x9932CC;\r\n this._colorNames[\"mediumorchid\"] = 0xBA55D3;\r\n this._colorNames[\"orchid\"] = 0xDA70D6;\r\n this._colorNames[\"violet\"] = 0xEE82EE;\r\n this._colorNames[\"plum\"] = 0xDDA0DD;\r\n this._colorNames[\"thistle\"] = 0xD8BFD8;\r\n this._colorNames[\"lavender\"] = 0xE6E6FA;\r\n this._colorNames[\"ghostwhite\"] = 0xF8F8FF;\r\n this._colorNames[\"aliceblue\"] = 0xF0F8FF;\r\n this._colorNames[\"mintcream\"] = 0xF5FFFA;\r\n this._colorNames[\"honeydew\"] = 0xF0FFF0;\r\n this._colorNames[\"lightgoldenrodyellow\"] = 0xFAFAD2;\r\n this._colorNames[\"lemonchiffon\"] = 0xFFFACD;\r\n this._colorNames[\"cornsilk\"] = 0xFFF8DC;\r\n this._colorNames[\"lightyellow\"] = 0xFFFFE0;\r\n this._colorNames[\"ivory\"] = 0xFFFFF0;\r\n this._colorNames[\"floralwhite\"] = 0xFFFAF0;\r\n this._colorNames[\"linen\"] = 0xFAF0E6;\r\n this._colorNames[\"oldlace\"] = 0xFDF5E6;\r\n this._colorNames[\"antiquewhite\"] = 0xFAEBD7;\r\n this._colorNames[\"bisque\"] = 0xFFE4C4;\r\n this._colorNames[\"peachpuff\"] = 0xFFDAB9;\r\n this._colorNames[\"papayawhip\"] = 0xFFEFD5;\r\n this._colorNames[\"beige\"] = 0xF5F5DC;\r\n this._colorNames[\"seashell\"] = 0xFFF5EE;\r\n this._colorNames[\"lavenderblush\"] = 0xFFF0F5;\r\n this._colorNames[\"mistyrose\"] = 0xFFE4E1;\r\n this._colorNames[\"snow\"] = 0xFFFAFA;\r\n this._colorNames[\"white\"] = 0xFFFFFF;\r\n this._colorNames[\"whitesmoke\"] = 0xF5F5F5;\r\n this._colorNames[\"gainsboro\"] = 0xDCDCDC;\r\n this._colorNames[\"lightgrey\"] = 0xD3D3D3;\r\n this._colorNames[\"silver\"] = 0xC0C0C0;\r\n this._colorNames[\"darkgrey\"] = 0xA9A9A9;\r\n this._colorNames[\"grey\"] = 0x808080;\r\n this._colorNames[\"lightslategrey\"] = 0x778899;\r\n this._colorNames[\"slategrey\"] = 0x708090;\r\n this._colorNames[\"dimgrey\"] = 0x696969;\r\n this._colorNames[\"darkslategrey\"] = 0x2F4F4F;\r\n this._colorNames[\"black\"] = 0x000000;\r\n this._colorNames[\"transparent\"] = 0xFF000000;\r\n }\r\n if (this._colorNames[data] != null)\r\n return this._colorNames[data];\r\n if ((data.length == 6) && this.isHex(data))\r\n return parseInt(\"0x\" + data);\r\n }\r\n return null;\r\n };\r\n Cast.color = function (data) {\r\n var result = this.tryColor(data);\r\n if (result == null)\r\n throw new CastError(\"Can't cast to color: \" + data);\r\n return result;\r\n };\r\n Cast.tryClass = function (name) {\r\n if (this._notClasses[name])\r\n return name;\r\n var result = this._classes[name];\r\n if (result != null)\r\n return result;\r\n try {\r\n result = window[name];\r\n this._classes[name] = result;\r\n return result;\r\n }\r\n catch (e /*ReferenceError*/) {\r\n }\r\n this._notClasses[name] = true;\r\n return name;\r\n };\r\n Cast.image2D = function (data) {\r\n if (data == null)\r\n return null;\r\n if (typeof (data) == 'string')\r\n data = this.tryClass(data);\r\n if (typeof (data) == 'function') {\r\n try {\r\n data = new data();\r\n }\r\n catch (e /*ArgumentError*/) {\r\n data = new data(0, 0);\r\n }\r\n }\r\n if (data instanceof Image2D)\r\n return data;\r\n if (data instanceof Single2DTexture)\r\n data = data.image2D;\r\n throw new CastError(\"Can't cast to BitmapImage2D: \" + data);\r\n };\r\n Cast.bitmapTexture = function (data) {\r\n if (data == null)\r\n return null;\r\n if (typeof (data) == 'string')\r\n data = this.tryClass(data);\r\n if (typeof (data) == 'function') {\r\n try {\r\n data = new data();\r\n }\r\n catch (e /*ArgumentError*/) {\r\n data = new data(0, 0);\r\n }\r\n }\r\n if (data instanceof Single2DTexture)\r\n return data;\r\n try {\r\n var bmd = Cast.image2D(data);\r\n return new Single2DTexture(bmd);\r\n }\r\n catch (e /*CastError*/) {\r\n }\r\n throw new CastError(\"Can't cast to Single2DTexture: \" + data);\r\n };\r\n return Cast;\r\n}());\r\nexport { Cast };\r\nCast._hexChars = \"0123456789abcdefABCDEF\";\r\nCast._notClasses = new Object();\r\nCast._classes = new Object();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/Cast.js","import * as tslib_1 from \"tslib\";\r\nimport { DisplayObjectContainer } from \"./display/DisplayObjectContainer\";\r\nvar Scene = (function (_super) {\r\n tslib_1.__extends(Scene, _super);\r\n function Scene() {\r\n var _this = _super.call(this) || this;\r\n _this._objects = new Object();\r\n _this._views = new Array();\r\n _this._iCollectionMark = 0;\r\n _this.mouseEnabled = false;\r\n _this._iIsRoot = true;\r\n _this._iIsPartition = true;\r\n _this._pScene = _this;\r\n _this._pPartition = _this;\r\n return _this;\r\n }\r\n Object.defineProperty(Scene.prototype, \"assetType\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return Scene.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @internal\r\n */\r\n Scene.prototype._iRegisterObject = function (displayObject) {\r\n this._objects[displayObject.id] = displayObject;\r\n var len = this._views.length;\r\n for (var i = 0; i < len; i++)\r\n this._views[i].registerObject(displayObject);\r\n };\r\n /**\r\n * @internal\r\n */\r\n Scene.prototype._iUnregisterObject = function (displayObject) {\r\n delete this._objects[displayObject.id];\r\n var len = this._views.length;\r\n for (var i = 0; i < len; i++)\r\n this._views[i].unRegisterObject(displayObject);\r\n };\r\n /**\r\n * @internal\r\n */\r\n Scene.prototype._iRegisterView = function (view) {\r\n this._views.push(view);\r\n for (var key in this._objects)\r\n view.registerObject(this._objects[key]);\r\n };\r\n /**\r\n * @internal\r\n */\r\n Scene.prototype._iUnregisterView = function (view) {\r\n this._views.splice(this._views.indexOf(view), 1);\r\n for (var key in this._objects)\r\n view.unRegisterObject(this._objects[key]);\r\n };\r\n return Scene;\r\n}(DisplayObjectContainer));\r\nexport { Scene };\r\nScene.assetType = \"[asset Scene]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/Scene.js","export * from \"@awayjs/materials\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/lib/materials.js\n// module id = 10\n// module chunks = 9","var Flags = (function () {\n function Flags() {\n }\n return Flags;\n}());\nexport { Flags };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/assembler/Flags.js","var FS = (function () {\n function FS() {\n }\n return FS;\n}());\nexport { FS };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/assembler/FS.js","import { Flags } from \"../../aglsl/assembler/Flags\";\nimport { FS } from \"../../aglsl/assembler/FS\";\n/**\n *\n */\nvar Opcode = (function () {\n function Opcode(dest, aformat, asize, bformat, bsize, opcode, simple, horizontal, fragonly, matrix) {\n this.a = new FS();\n this.b = new FS();\n this.flags = new Flags();\n this.dest = dest;\n this.a.format = aformat;\n this.a.size = asize;\n this.b.format = bformat;\n this.b.size = bsize;\n this.opcode = opcode;\n this.flags.simple = simple;\n this.flags.horizontal = horizontal;\n this.flags.fragonly = fragonly;\n this.flags.matrix = matrix;\n }\n return Opcode;\n}());\nexport { Opcode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/assembler/Opcode.js","import { Opcode } from \"../../aglsl/assembler/Opcode\";\nvar OpcodeMap = (function () {\n function OpcodeMap() {\n }\n Object.defineProperty(OpcodeMap, \"map\", {\n get: function () {\n if (!OpcodeMap._map) {\n OpcodeMap._map = new Array();\n OpcodeMap._map['mov'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x00, true, null, null, null); //0\n OpcodeMap._map['add'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x01, true, null, null, null); //1\n OpcodeMap._map['sub'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x02, true, null, null, null); //2\n OpcodeMap._map['mul'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x03, true, null, null, null); //3\n OpcodeMap._map['div'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x04, true, null, null, null); //4\n OpcodeMap._map['rcp'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x05, true, null, null, null); //5\n OpcodeMap._map['min'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x06, true, null, null, null); //6\n OpcodeMap._map['max'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x07, true, null, null, null); //7\n OpcodeMap._map['frc'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x08, true, null, null, null); //8\n OpcodeMap._map['sqt'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x09, true, null, null, null); //9\n OpcodeMap._map['rsq'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x0a, true, null, null, null); //10\n OpcodeMap._map['pow'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x0b, true, null, null, null); //11\n OpcodeMap._map['log'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x0c, true, null, null, null); //12\n OpcodeMap._map['exp'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x0d, true, null, null, null); //13\n OpcodeMap._map['nrm'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x0e, true, null, null, null); //14\n OpcodeMap._map['sin'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x0f, true, null, null, null); //15\n OpcodeMap._map['cos'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x10, true, null, null, null); //16\n OpcodeMap._map['crs'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x11, true, true, null, null); //17\n OpcodeMap._map['dp3'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x12, true, true, null, null); //18\n OpcodeMap._map['dp4'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x13, true, true, null, null); //19\n OpcodeMap._map['abs'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x14, true, null, null, null); //20\n OpcodeMap._map['neg'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x15, true, null, null, null); //21\n OpcodeMap._map['sat'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x16, true, null, null, null); //22\n OpcodeMap._map['ted'] = new Opcode(\"vector\", \"vector\", 4, \"sampler\", 1, 0x26, true, null, true, null); //38\n OpcodeMap._map['kil'] = new Opcode(\"none\", \"scalar\", 1, \"none\", 0, 0x27, true, null, true, null); //39\n OpcodeMap._map['tex'] = new Opcode(\"vector\", \"vector\", 4, \"sampler\", 1, 0x28, true, null, true, null); //40\n OpcodeMap._map['m33'] = new Opcode(\"vector\", \"matrix\", 3, \"vector\", 3, 0x17, true, null, null, true); //23\n OpcodeMap._map['m44'] = new Opcode(\"vector\", \"matrix\", 4, \"vector\", 4, 0x18, true, null, null, true); //24\n OpcodeMap._map['m43'] = new Opcode(\"vector\", \"matrix\", 3, \"vector\", 4, 0x19, true, null, null, true); //25\n OpcodeMap._map['ddx'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x1a, true, null, true, null); //26\n OpcodeMap._map['ddy'] = new Opcode(\"vector\", \"vector\", 4, \"none\", 0, 0x1b, true, null, true, null); //27\n OpcodeMap._map['sge'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x29, true, null, null, null); //41\n OpcodeMap._map['slt'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x2a, true, null, null, null); //42\n OpcodeMap._map['sgn'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x2b, true, null, null, null); //43\n OpcodeMap._map['seq'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x2c, true, null, null, null); //44\n OpcodeMap._map['sne'] = new Opcode(\"vector\", \"vector\", 4, \"vector\", 4, 0x2d, true, null, null, null); //45\n }\n return OpcodeMap._map;\n },\n enumerable: true,\n configurable: true\n });\n return OpcodeMap;\n}());\nexport { OpcodeMap };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/assembler/OpcodeMap.js","import { ByteArray } from \"@awayjs/core\";\nvar Part = (function () {\n function Part(name, version) {\n if (name === void 0) { name = null; }\n if (version === void 0) { version = null; }\n this.name = \"\";\n this.version = 0;\n this.name = name;\n this.version = version;\n this.data = new ByteArray();\n }\n return Part;\n}());\nexport { Part };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/assembler/Part.js","var Reg = (function () {\n function Reg(code, desc) {\n this.code = code;\n this.desc = desc;\n }\n return Reg;\n}());\nvar RegMap = (function () {\n /*\n public static va:Reg = new Reg( 0x00, \"vertex attribute\" );\n public static fc:Reg = new Reg( 0x01, \"fragment constant\" );\n public static vc:Reg = new Reg( 0x01, \"vertex constant\" );\n public static ft:Reg = new Reg( 0x02, \"fragment temporary\" );\n public static vt:Reg = new Reg( 0x02, \"vertex temporary\" );\n public static vo:Reg = new Reg( 0x03, \"vertex output\" );\n public static op:Reg = new Reg( 0x03, \"vertex output\" );\n public static fd:Reg = new Reg( 0x03, \"fragment depth output\" );\n public static fo:Reg = new Reg( 0x03, \"fragment output\" );\n public static oc:Reg = new Reg( 0x03, \"fragment output\" );\n public static v: Reg = new Reg( 0x04, \"varying\" );\n public static vi:Reg = new Reg( 0x04, \"varying output\" );\n public static fi:Reg = new Reg( 0x04, \"varying input\" );\n public static fs:Reg = new Reg( 0x05, \"sampler\" );\n */\n function RegMap() {\n }\n Object.defineProperty(RegMap, \"map\", {\n get: function () {\n if (!RegMap._map) {\n RegMap._map = new Array();\n RegMap._map['va'] = new Reg(0x00, \"vertex attribute\");\n RegMap._map['fc'] = new Reg(0x01, \"fragment constant\");\n RegMap._map['vc'] = new Reg(0x01, \"vertex constant\");\n RegMap._map['ft'] = new Reg(0x02, \"fragment temporary\");\n RegMap._map['vt'] = new Reg(0x02, \"vertex temporary\");\n RegMap._map['vo'] = new Reg(0x03, \"vertex output\");\n RegMap._map['op'] = new Reg(0x03, \"vertex output\");\n RegMap._map['fd'] = new Reg(0x03, \"fragment depth output\");\n RegMap._map['fo'] = new Reg(0x03, \"fragment output\");\n RegMap._map['oc'] = new Reg(0x03, \"fragment output\");\n RegMap._map['v'] = new Reg(0x04, \"varying\");\n RegMap._map['vi'] = new Reg(0x04, \"varying output\");\n RegMap._map['fi'] = new Reg(0x04, \"varying input\");\n RegMap._map['fs'] = new Reg(0x05, \"sampler\");\n }\n return RegMap._map;\n },\n enumerable: true,\n configurable: true\n });\n return RegMap;\n}());\nexport { RegMap };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/assembler/RegMap.js","var Sampler = (function () {\n function Sampler(shift, mask, value) {\n this.shift = shift;\n this.mask = mask;\n this.value = value;\n }\n return Sampler;\n}());\nexport { Sampler };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/assembler/Sampler.js","import { Sampler } from \"../../aglsl/assembler/Sampler\";\nvar SamplerMap = (function () {\n /*\n public static map = [ new Sampler( 8, 0xf, 0 ),\n new Sampler( 8, 0xf, 5 ),\n new Sampler( 8, 0xf, 4 ),\n new Sampler( 8, 0xf, 1 ),\n new Sampler( 8, 0xf, 2 ),\n new Sampler( 8, 0xf, 1 ),\n new Sampler( 8, 0xf, 2 ),\n\n // dimension\n new Sampler( 12, 0xf, 0 ),\n new Sampler( 12, 0xf, 1 ),\n new Sampler( 12, 0xf, 2 ),\n\n // special\n new Sampler( 16, 1, 1 ),\n new Sampler( 16, 4, 4 ),\n\n // repeat\n new Sampler( 20, 0xf, 0 ),\n new Sampler( 20, 0xf, 1 ),\n new Sampler( 20, 0xf, 1 ),\n\n // mip\n new Sampler( 24, 0xf, 0 ),\n new Sampler( 24, 0xf, 0 ),\n new Sampler( 24, 0xf, 1 ),\n new Sampler( 24, 0xf, 2 ),\n\n // filter\n new Sampler( 28, 0xf, 0 ),\n new Sampler( 28, 0xf, 1 ) ]\n */\n /*\n public static rgba: Sampler = new Sampler( 8, 0xf, 0 );\n public static rg: Sampler = new Sampler( 8, 0xf, 5 );\n public static r: Sampler = new Sampler( 8, 0xf, 4 );\n public static compressed: Sampler = new Sampler( 8, 0xf, 1 );\n public static compressed_alpha: Sampler = new Sampler( 8, 0xf, 2 );\n public static dxt1: Sampler = new Sampler( 8, 0xf, 1 );\n public static dxt5: Sampler = new Sampler( 8, 0xf, 2 );\n\n // dimension\n public static sampler2d: Sampler = new Sampler( 12, 0xf, 0 );\n public static cube: Sampler = new Sampler( 12, 0xf, 1 );\n public static sampler3d: Sampler = new Sampler( 12, 0xf, 2 );\n\n // special\n public static centroid: Sampler = new Sampler( 16, 1, 1 );\n public static ignoresampler: Sampler = new Sampler( 16, 4, 4 );\n\n // repeat\n public static clamp: Sampler = new Sampler( 20, 0xf, 0 );\n public static repeat: Sampler = new Sampler( 20, 0xf, 1 );\n public static wrap: Sampler = new Sampler( 20, 0xf, 1 );\n\n // mip\n public static nomip: Sampler = new Sampler( 24, 0xf, 0 );\n public static mipnone: Sampler = new Sampler( 24, 0xf, 0 );\n public static mipnearest: Sampler = new Sampler( 24, 0xf, 1 );\n public static miplinear: Sampler = new Sampler( 24, 0xf, 2 );\n\n // filter\n public static nearest: Sampler = new Sampler( 28, 0xf, 0 );\n public static linear: Sampler = new Sampler( 28, 0xf, 1 );\n */\n function SamplerMap() {\n }\n Object.defineProperty(SamplerMap, \"map\", {\n get: function () {\n if (!SamplerMap._map) {\n SamplerMap._map = new Array();\n SamplerMap._map['rgba'] = new Sampler(8, 0xf, 0);\n SamplerMap._map['rg'] = new Sampler(8, 0xf, 5);\n SamplerMap._map['r'] = new Sampler(8, 0xf, 4);\n SamplerMap._map['compressed'] = new Sampler(8, 0xf, 1);\n SamplerMap._map['compressed_alpha'] = new Sampler(8, 0xf, 2);\n SamplerMap._map['dxt1'] = new Sampler(8, 0xf, 1);\n SamplerMap._map['dxt5'] = new Sampler(8, 0xf, 2);\n // dimension\n SamplerMap._map['2d'] = new Sampler(12, 0xf, 0);\n SamplerMap._map['cube'] = new Sampler(12, 0xf, 1);\n SamplerMap._map['3d'] = new Sampler(12, 0xf, 2);\n // special\n SamplerMap._map['centroid'] = new Sampler(16, 1, 1);\n SamplerMap._map['ignoresampler'] = new Sampler(16, 4, 4);\n // repeat\n SamplerMap._map['clamp'] = new Sampler(20, 0xf, 0);\n SamplerMap._map['repeat'] = new Sampler(20, 0xf, 1);\n SamplerMap._map['wrap'] = new Sampler(20, 0xf, 1);\n // mip\n SamplerMap._map['nomip'] = new Sampler(24, 0xf, 0);\n SamplerMap._map['mipnone'] = new Sampler(24, 0xf, 0);\n SamplerMap._map['mipnearest'] = new Sampler(24, 0xf, 1);\n SamplerMap._map['miplinear'] = new Sampler(24, 0xf, 2);\n // filter\n SamplerMap._map['nearest'] = new Sampler(28, 0xf, 0);\n SamplerMap._map['linear'] = new Sampler(28, 0xf, 1);\n }\n return SamplerMap._map;\n },\n enumerable: true,\n configurable: true\n });\n return SamplerMap;\n}());\nexport { SamplerMap };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/assembler/SamplerMap.js","import { OpcodeMap } from \"../../aglsl/assembler/OpcodeMap\";\nimport { Part } from \"../../aglsl/assembler/Part\";\nimport { RegMap } from \"../../aglsl/assembler/RegMap\";\nimport { SamplerMap } from \"../../aglsl/assembler/SamplerMap\";\nvar AGALMiniAssembler = (function () {\n function AGALMiniAssembler() {\n this.r = {};\n this.cur = new Part();\n }\n AGALMiniAssembler.prototype.assemble = function (source, ext_part, ext_version) {\n if (ext_part === void 0) { ext_part = null; }\n if (ext_version === void 0) { ext_version = null; }\n if (!ext_version) {\n ext_version = 1;\n }\n if (ext_part) {\n this.addHeader(ext_part, ext_version);\n }\n var lines = source.replace(/[\\f\\n\\r\\v]+/g, \"\\n\").split(\"\\n\"); // handle breaks, then split into lines\n for (var i in lines) {\n this.processLine(lines[i], i);\n }\n return this.r;\n };\n AGALMiniAssembler.prototype.processLine = function (line, linenr) {\n var startcomment = line.search(\"//\"); // remove comments\n if (startcomment != -1) {\n line = line.slice(0, startcomment);\n }\n line = line.replace(/^\\s+|\\s+$/g, \"\"); // remove outer space\n if (!(line.length > 0)) {\n return;\n }\n var optsi = line.search(/<.*>/g); // split of options part <*> if there\n var opts = null;\n if (optsi != -1) {\n opts = line.slice(optsi).match(/([\\w\\.\\-\\+]+)/gi);\n line = line.slice(0, optsi);\n }\n // get opcode/command\t\t\t\t \n var tokens = line.match(/([\\w\\.\\+\\[\\]]+)/gi); // get tokens in line\n if (!tokens || tokens.length < 1) {\n if (line.length >= 3) {\n console.log(\"Warning: bad line \" + linenr + \": \" + line);\n }\n return;\n }\n //console.log ( linenr, line, cur, tokens ); \n switch (tokens[0]) {\n case \"part\":\n this.addHeader(tokens[1], Number(tokens[2]));\n break;\n case \"endpart\":\n if (!this.cur) {\n throw \"Unexpected endpart\";\n }\n this.cur.data.position = 0;\n this.cur = null;\n return;\n default:\n if (!this.cur) {\n console.log(\"Warning: bad line \" + linenr + \": \" + line + \" (Outside of any part definition)\");\n return;\n }\n if (this.cur.name == \"comment\") {\n return;\n }\n var op = OpcodeMap.map[tokens[0]];\n if (!op) {\n throw \"Bad opcode \" + tokens[0] + \" \" + linenr + \": \" + line;\n }\n // console.log( 'AGALMiniAssembler' , 'op' , op );\n this.emitOpcode(this.cur, op.opcode);\n var ti = 1;\n if (op.dest && op.dest != \"none\") {\n if (!this.emitDest(this.cur, tokens[ti++], op.dest)) {\n throw \"Bad destination register \" + tokens[ti - 1] + \" \" + linenr + \": \" + line;\n }\n }\n else {\n this.emitZeroDword(this.cur);\n }\n if (op.a && op.a.format != \"none\") {\n if (!this.emitSource(this.cur, tokens[ti++], op.a))\n throw \"Bad source register \" + tokens[ti - 1] + \" \" + linenr + \": \" + line;\n }\n else {\n this.emitZeroQword(this.cur);\n }\n if (op.b && op.b.format != \"none\") {\n if (op.b.format == \"sampler\") {\n if (!this.emitSampler(this.cur, tokens[ti++], op.b, opts)) {\n throw \"Bad sampler register \" + tokens[ti - 1] + \" \" + linenr + \": \" + line;\n }\n }\n else {\n if (!this.emitSource(this.cur, tokens[ti++], op.b)) {\n throw \"Bad source register \" + tokens[ti - 1] + \" \" + linenr + \": \" + line;\n }\n }\n }\n else {\n this.emitZeroQword(this.cur);\n }\n break;\n }\n };\n AGALMiniAssembler.prototype.emitHeader = function (pr) {\n pr.data.writeUnsignedByte(0xa0); // tag version\n pr.data.writeUnsignedInt(pr.version);\n if (pr.version >= 0x10) {\n pr.data.writeUnsignedByte(0); // align, for higher versions\n }\n pr.data.writeUnsignedByte(0xa1); // tag program id\n switch (pr.name) {\n case \"fragment\":\n pr.data.writeUnsignedByte(1);\n break;\n case \"vertex\":\n pr.data.writeUnsignedByte(0);\n break;\n case \"cpu\":\n pr.data.writeUnsignedByte(2);\n break;\n default:\n pr.data.writeUnsignedByte(0xff);\n break; // unknown/comment\n }\n };\n AGALMiniAssembler.prototype.emitOpcode = function (pr, opcode) {\n pr.data.writeUnsignedInt(opcode);\n //console.log ( \"Emit opcode: \", opcode ); \n };\n AGALMiniAssembler.prototype.emitZeroDword = function (pr) {\n pr.data.writeUnsignedInt(0);\n };\n AGALMiniAssembler.prototype.emitZeroQword = function (pr) {\n pr.data.writeUnsignedInt(0);\n pr.data.writeUnsignedInt(0);\n };\n AGALMiniAssembler.prototype.emitDest = function (pr, token, opdest) {\n //console.log( 'AGALMiniAssembler' , 'emitDest' , 'RegMap.map' , RegMap.map);\n var reg = token.match(/([fov]?[tpocidavs])(\\d*)(\\.[xyzw]{1,4})?/i); // g1: regname, g2:regnum, g3:mask\n // console.log( 'AGALMiniAssembler' , 'emitDest' , 'reg' , reg , reg[1] , RegMap.map[reg[1]] );\n // console.log( 'AGALMiniAssembler' , 'emitDest' , 'RegMap.map[reg[1]]' , RegMap.map[reg[1]] , 'bool' , !RegMap.map[reg[1]] ) ;\n if (!RegMap.map[reg[1]])\n return false;\n var em = { num: reg[2] ? reg[2] : 0, code: RegMap.map[reg[1]].code, mask: this.stringToMask(reg[3]) };\n pr.data.writeUnsignedShort(em.num);\n pr.data.writeUnsignedByte(em.mask);\n pr.data.writeUnsignedByte(em.code);\n //console.log ( \" Emit dest: \", em );\n return true;\n };\n AGALMiniAssembler.prototype.stringToMask = function (s) {\n if (!s)\n return 0xf;\n var r = 0;\n if (s.indexOf(\"x\") != -1)\n r |= 1;\n if (s.indexOf(\"y\") != -1)\n r |= 2;\n if (s.indexOf(\"z\") != -1)\n r |= 4;\n if (s.indexOf(\"w\") != -1)\n r |= 8;\n return r;\n };\n AGALMiniAssembler.prototype.stringToSwizzle = function (s) {\n if (!s) {\n return 0xe4;\n }\n var chartoindex = { x: 0, y: 1, z: 2, w: 3 };\n var sw = 0;\n if (s.charAt(0) != \".\") {\n throw \"Missing . for swizzle\";\n }\n if (s.length > 1) {\n sw |= chartoindex[s.charAt(1)];\n }\n if (s.length > 2) {\n sw |= chartoindex[s.charAt(2)] << 2;\n }\n else {\n sw |= (sw & 3) << 2;\n }\n if (s.length > 3) {\n sw |= chartoindex[s.charAt(3)] << 4;\n }\n else {\n sw |= (sw & (3 << 2)) << 2;\n }\n if (s.length > 4) {\n sw |= chartoindex[s.charAt(4)] << 6;\n }\n else {\n sw |= (sw & (3 << 4)) << 2;\n }\n return sw;\n };\n AGALMiniAssembler.prototype.emitSampler = function (pr, token, opsrc, opts) {\n var reg = token.match(/fs(\\d*)/i); // g1:regnum\n if (!reg || !reg[1]) {\n return false;\n }\n pr.data.writeUnsignedShort(parseInt(reg[1]));\n pr.data.writeUnsignedByte(0); // bias\n pr.data.writeUnsignedByte(0);\n /*\n pr.data.writeUnsignedByte ( 0x5 );\n pr.data.writeUnsignedByte ( 0 ); // readmode, dim\n pr.data.writeUnsignedByte ( 0 ); // special, wrap\n pr.data.writeUnsignedByte ( 0 ); // mip, filter\n */\n var samplerbits = 0x5;\n var sampleroptset = 0;\n for (var i = 0; i < opts.length; i++) {\n var o = SamplerMap.map[opts[i].toLowerCase()];\n //console.log( 'AGALMiniAssembler' , 'emitSampler' , 'SampleMap opt:' , o , '<-------- WATCH FOR THIS');\n if (o) {\n if (((sampleroptset >> o.shift) & o.mask) != 0) {\n console.log(\"Warning, duplicate sampler option\");\n }\n sampleroptset |= o.mask << o.shift;\n samplerbits &= ~(o.mask << o.shift);\n samplerbits |= o.value << o.shift;\n }\n else {\n console.log(\"Warning, unknown sampler option: \", opts[i]);\n }\n }\n pr.data.writeUnsignedInt(samplerbits);\n return true;\n };\n AGALMiniAssembler.prototype.emitSource = function (pr, token, opsrc) {\n var indexed = token.match(/vc\\[(v[tcai])(\\d+)\\.([xyzw])([\\+\\-]\\d+)?\\](\\.[xyzw]{1,4})?/i); // g1: indexregname, g2:indexregnum, g3:select, [g4:offset], [g5:swizzle]\n var reg;\n if (indexed) {\n if (!RegMap.map[indexed[1]]) {\n return false;\n }\n var selindex = { x: 0, y: 1, z: 2, w: 3 };\n var em = { num: indexed[2] | 0, code: RegMap.map[indexed[1]].code, swizzle: this.stringToSwizzle(indexed[5]), select: selindex[indexed[3]], offset: indexed[4] | 0 };\n pr.data.writeUnsignedShort(em.num);\n pr.data.writeByte(em.offset);\n pr.data.writeUnsignedByte(em.swizzle);\n pr.data.writeUnsignedByte(0x1); // constant reg\n pr.data.writeUnsignedByte(em.code);\n pr.data.writeUnsignedByte(em.select);\n pr.data.writeUnsignedByte(1 << 7);\n }\n else {\n reg = token.match(/([fov]?[tpocidavs])(\\d*)(\\.[xyzw]{1,4})?/i); // g1: regname, g2:regnum, g3:swizzle\n if (!RegMap.map[reg[1]]) {\n return false;\n }\n var em = { num: reg[2] | 0, code: RegMap.map[reg[1]].code, swizzle: this.stringToSwizzle(reg[3]) };\n pr.data.writeUnsignedShort(em.num);\n pr.data.writeUnsignedByte(0);\n pr.data.writeUnsignedByte(em.swizzle);\n pr.data.writeUnsignedByte(em.code);\n pr.data.writeUnsignedByte(0);\n pr.data.writeUnsignedByte(0);\n pr.data.writeUnsignedByte(0);\n }\n return true;\n };\n AGALMiniAssembler.prototype.addHeader = function (partname, version) {\n if (!version) {\n version = 1;\n }\n if (this.r[partname] == undefined) {\n this.r[partname] = new Part(partname, version);\n this.emitHeader(this.r[partname]);\n }\n else if (this.r[partname].version != version) {\n throw \"Multiple versions for part \" + partname;\n }\n this.cur = this.r[partname];\n };\n return AGALMiniAssembler;\n}());\nexport { AGALMiniAssembler };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/assembler/AGALMiniAssembler.js","var Header = (function () {\n function Header() {\n this.progid = 0;\n this.version = 0;\n this.type = \"\";\n }\n return Header;\n}());\nexport { Header };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/Header.js","import { Header } from \"../aglsl/Header\";\nvar Description = (function () {\n function Description() {\n this.regread = [\n [],\n [],\n [],\n [],\n [],\n [],\n []\n ];\n this.regwrite = [\n [],\n [],\n [],\n [],\n [],\n [],\n []\n ];\n this.hasindirect = false;\n this.writedepth = false;\n this.hasmatrix = false;\n this.samplers = [];\n // added due to dynamic assignment 3*0xFFFFFFuuuu\n this.tokens = [];\n this.header = new Header();\n }\n return Description;\n}());\nexport { Description };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/Description.js","var OpLUT = (function () {\n function OpLUT(s, flags, dest, a, b, matrixwidth, matrixheight, ndwm, scaler, dm, lod) {\n this.s = s;\n this.flags = flags;\n this.dest = dest;\n this.a = a;\n this.b = b;\n this.matrixwidth = matrixwidth;\n this.matrixheight = matrixheight;\n this.ndwm = ndwm;\n this.scalar = scaler;\n this.dm = dm;\n this.lod = lod;\n }\n return OpLUT;\n}());\nexport { OpLUT };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/OpLUT.js","import { OpLUT } from \"../aglsl/OpLUT\";\nvar Mapping = (function () {\n //TODO: get rid of hack that fixes including definition file\n function Mapping(include) {\n }\n return Mapping;\n}());\nexport { Mapping };\nMapping.agal2glsllut = [\n // s \t\t\t\t\t\t\t\t\t\t\t\tflags dest a b \t mw \t mh ndwm scale dm\t lod\n new OpLUT(\"%dest = %cast(%a);\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(%a + %b);\\n\", 0, true, true, true, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(%a - %b);\\n\", 0, true, true, true, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(%a * %b);\\n\", 0, true, true, true, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(%a / %b);\\n\", 0, true, true, true, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(1.0) / %a;\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(min(%a,%b));\\n\", 0, true, true, true, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(max(%a,%b));\\n\", 0, true, true, true, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(fract(%a));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(sqrt(abs(%a)));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(inversesqrt(abs(%a)));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(pow(abs(%a),%b));\\n\", 0, true, true, true, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(log2(abs(%a)));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(exp2(%a));\\n\", 0, true, true, false, null, null, null, null, null, null),\n // s \t\t\t\t\t\t\t\t\t\t\t\tflags \tdest a b \t mw \t mh ndwm scale dm\t lod\n new OpLUT(\"%dest = %cast(normalize(vec3( %a ) ));\\n\", 0, true, true, false, null, null, true, null, null, null),\n new OpLUT(\"%dest = %cast(sin(%a));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(cos(%a));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(cross(vec3(%a),vec3(%b)));\\n\", 0, true, true, true, null, null, true, null, null, null),\n new OpLUT(\"%dest = %cast(dot(vec3(%a),vec3(%b)));\\n\", 0, true, true, true, null, null, true, null, null, null),\n new OpLUT(\"%dest = %cast(dot(vec4(%a),vec4(%b)));\\n\", 0, true, true, true, null, null, true, null, null, null),\n new OpLUT(\"%dest = %cast(abs(%a));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(%a * -1.0);\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(clamp(%a,0.0,1.0));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(dot(vec3(%a),vec3(%b)));\\n\", null, true, true, true, 3, 3, true, null, null, null),\n new OpLUT(\"%dest = %cast(dot(vec4(%a),vec4(%b)));\\n\", null, true, true, true, 4, 4, true, null, null, null),\n new OpLUT(\"%dest = %cast(dot(vec4(%a),vec4(%b)));\\n\", null, true, true, true, 4, 3, true, null, null, null),\n //s:string, flags:number, dest:boolean, a:boolean, b:boolean, matrixwidth:number, matrixheight:number, ndwm:boolean, scaler:boolean, dm:boolean, lod:boolean\n new OpLUT(\"%dest = %cast(dFdx(%a));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"%dest = %cast(dFdy(%a));\\n\", 0, true, true, false, null, null, null, null, null, null),\n new OpLUT(\"if (float(%a)==float(%b)) {;\\n\", 0, false, true, true, null, null, null, true, null, null), new OpLUT(\"if (float(%a)!=float(%b)) {;\\n\", 0, false, true, true, null, null, null, true, null, null), new OpLUT(\"if (float(%a)>=float(%b)) {;\\n\", 0, false, true, true, null, null, null, true, null, null), new OpLUT(\"if (float(%a)= 0x10) {\n bytes.readUnsignedByte();\n header.version >>= 1;\n }\n if (bytes.readUnsignedByte() != 0xa1) {\n throw \"Bad AGAL: Missing 0xa1 magic byte.\";\n }\n header.progid = bytes.readUnsignedByte();\n switch (header.progid) {\n case 1:\n header.type = \"fragment\";\n break;\n case 0:\n header.type = \"vertex\";\n break;\n case 2:\n header.type = \"cpu\";\n break;\n default:\n header.type = \"\";\n break;\n }\n var desc = new Description();\n var tokens = [];\n while (bytes.position < bytes.length) {\n var token = new Token();\n token.opcode = bytes.readUnsignedInt();\n var lutentry = Mapping.agal2glsllut[token.opcode];\n if (!lutentry) {\n throw \"Opcode not valid or not implemented yet: \" + token.opcode;\n }\n if (lutentry.matrixheight) {\n desc.hasmatrix = true;\n }\n if (lutentry.dest) {\n token.dest.regnum = bytes.readUnsignedShort();\n token.dest.mask = bytes.readUnsignedByte();\n token.dest.regtype = bytes.readUnsignedByte();\n desc.regwrite[token.dest.regtype][token.dest.regnum] |= token.dest.mask;\n }\n else {\n token.dest = null;\n bytes.readUnsignedInt();\n }\n if (lutentry.a) {\n this.readReg(token.a, 1, desc, bytes);\n }\n else {\n token.a = null;\n bytes.readUnsignedInt();\n bytes.readUnsignedInt();\n }\n if (lutentry.b) {\n this.readReg(token.b, lutentry.matrixheight | 0, desc, bytes);\n }\n else {\n token.b = null;\n bytes.readUnsignedInt();\n bytes.readUnsignedInt();\n }\n tokens.push(token);\n }\n desc.header = header;\n desc.tokens = tokens;\n return desc;\n };\n AGALTokenizer.prototype.readReg = function (s, mh, desc, bytes) {\n s.regnum = bytes.readUnsignedShort();\n s.indexoffset = bytes.readByte();\n s.swizzle = bytes.readUnsignedByte();\n s.regtype = bytes.readUnsignedByte();\n desc.regread[s.regtype][s.regnum] = 0xf; // sould be swizzle to mask? should be |= \n if (s.regtype == 0x5) {\n // sampler\n s.lodbiad = s.indexoffset;\n s.indexoffset = undefined;\n s.swizzle = undefined;\n // sampler \n s.readmode = bytes.readUnsignedByte();\n s.dim = s.readmode >> 4;\n s.readmode &= 0xf;\n s.special = bytes.readUnsignedByte();\n s.wrap = s.special >> 4;\n s.special &= 0xf;\n s.mipmap = bytes.readUnsignedByte();\n s.filter = s.mipmap >> 4;\n s.mipmap &= 0xf;\n desc.samplers[s.regnum] = s;\n }\n else {\n s.indexregtype = bytes.readUnsignedByte();\n s.indexselect = bytes.readUnsignedByte();\n s.indirectflag = bytes.readUnsignedByte();\n }\n if (s.indirectflag) {\n desc.hasindirect = true;\n }\n if (!s.indirectflag && mh) {\n for (var mhi = 0; mhi < mh; mhi++) {\n desc.regread[s.regtype][s.regnum + mhi] = desc.regread[s.regtype][s.regnum];\n }\n }\n };\n return AGALTokenizer;\n}());\nexport { AGALTokenizer };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/AGALTokenizer.js","import { Mapping } from \"../aglsl/Mapping\";\nvar AGLSLParser = (function () {\n function AGLSLParser() {\n }\n AGLSLParser.prototype.parse = function (desc, precision) {\n var header = \"\";\n var body = \"\";\n header += \"precision \" + precision + \" float;\\n\";\n var tag = desc.header.type[0]; //TODO\n // declare uniforms\n if (desc.header.type == \"vertex\") {\n header += \"uniform float yflip;\\n\";\n }\n // if (!desc.hasindirect) {\n // \tfor (var i:number = 0; i < desc.regread[0x1].length; i++) {\n // \t\tif (desc.regread[0x1][i]) {\n // \t\t\theader += \"uniform vec4 \" + tag + \"c\" + i + \";\\n\";\n // \t\t}\n // \t}\n // } else {\n // \theader += \"uniform vec4 \" + tag + \"carrr[\" + AGLSLParser.maxvertexconstants + \"];\\n\"; // use max const count instead\n // }\n var constcount = desc.regread[0x1].length;\n if (constcount > 0)\n header += \"uniform vec4 \" + tag + \"c[\" + constcount + \"];\\n\";\n // declare temps\n for (var i = 0; i < desc.regread[0x2].length || i < desc.regwrite[0x2].length; i++) {\n if (desc.regread[0x2][i] || desc.regwrite[0x2][i]) {\n header += \"vec4 \" + tag + \"t\" + i + \";\\n\";\n }\n }\n // declare streams\n for (var i = 0; i < desc.regread[0x0].length; i++) {\n if (desc.regread[0x0][i]) {\n header += \"attribute vec4 va\" + i + \";\\n\";\n }\n }\n // declare interpolated\n for (var i = 0; i < desc.regread[0x4].length || i < desc.regwrite[0x4].length; i++) {\n if (desc.regread[0x4][i] || desc.regwrite[0x4][i]) {\n header += \"varying vec4 vi\" + i + \";\\n\";\n }\n }\n // declare samplers\n var samptype = [\"2D\", \"Cube\", \"3D\", \"\"];\n for (var i = 0; i < desc.samplers.length; i++) {\n if (desc.samplers[i]) {\n header += \"uniform sampler\" + samptype[desc.samplers[i].dim & 3] + \" fs\" + i + \";\\n\";\n }\n }\n // extra gl fluff: setup position and depth adjust temps\n if (desc.header.type == \"vertex\") {\n header += \"vec4 outpos;\\n\";\n }\n if (desc.writedepth) {\n header += \"vec4 tmp_FragDepth;\\n\";\n }\n //if ( desc.hasmatrix ) \n // header += \"vec4 tmp_matrix;\\n\";\n var derivatives = false;\n // start body of code\n body += \"void main() {\\n\";\n for (var i = 0; i < desc.tokens.length; i++) {\n var lutentry = Mapping.agal2glsllut[desc.tokens[i].opcode];\n if (lutentry.s.indexOf(\"dFdx\") != -1 || lutentry.s.indexOf(\"dFdy\") != -1)\n derivatives = true;\n if (!lutentry) {\n throw \"Opcode not valid or not implemented yet: \";\n }\n var sublines = lutentry.matrixheight || 1;\n for (var sl = 0; sl < sublines; sl++) {\n var line = \" \" + lutentry.s;\n if (desc.tokens[i].dest) {\n if (lutentry.matrixheight) {\n if (((desc.tokens[i].dest.mask >> sl) & 1) != 1) {\n continue;\n }\n var destregstring = this.regtostring(desc.tokens[i].dest.regtype, desc.tokens[i].dest.regnum, desc, tag);\n var destcaststring = \"float\";\n var destmaskstring = [\"x\", \"y\", \"z\", \"w\"][sl];\n destregstring += \".\" + destmaskstring;\n }\n else {\n var destregstring = this.regtostring(desc.tokens[i].dest.regtype, desc.tokens[i].dest.regnum, desc, tag);\n var destcaststring;\n var destmaskstring;\n if (desc.tokens[i].dest.mask != 0xf) {\n var ndest = 0;\n destmaskstring = \"\";\n if (desc.tokens[i].dest.mask & 1) {\n ndest++;\n destmaskstring += \"x\";\n }\n if (desc.tokens[i].dest.mask & 2) {\n ndest++;\n destmaskstring += \"y\";\n }\n if (desc.tokens[i].dest.mask & 4) {\n ndest++;\n destmaskstring += \"z\";\n }\n if (desc.tokens[i].dest.mask & 8) {\n ndest++;\n destmaskstring += \"w\";\n }\n destregstring += \".\" + destmaskstring;\n switch (ndest) {\n case 1:\n destcaststring = \"float\";\n break;\n case 2:\n destcaststring = \"vec2\";\n break;\n case 3:\n destcaststring = \"vec3\";\n break;\n default:\n throw \"Unexpected destination mask\";\n }\n }\n else {\n destcaststring = \"vec4\";\n destmaskstring = \"xyzw\";\n }\n }\n line = line.replace(\"%dest\", destregstring);\n line = line.replace(\"%cast\", destcaststring);\n line = line.replace(\"%dm\", destmaskstring);\n }\n var dwm = 0xf;\n if (!lutentry.ndwm && lutentry.dest && desc.tokens[i].dest) {\n dwm = desc.tokens[i].dest.mask;\n }\n if (desc.tokens[i].a) {\n line = line.replace(\"%a\", this.sourcetostring(desc.tokens[i].a, 0, dwm, lutentry.scalar, desc, tag));\n }\n if (desc.tokens[i].b) {\n line = line.replace(\"%b\", this.sourcetostring(desc.tokens[i].b, sl, dwm, lutentry.scalar, desc, tag));\n if (desc.tokens[i].b.regtype == 0x5) {\n // sampler dim\n var texdim = [\"2D\", \"Cube\", \"3D\"][desc.tokens[i].b.dim];\n var texsize = [\"vec2\", \"vec3\", \"vec3\"][desc.tokens[i].b.dim];\n line = line.replace(\"%texdim\", texdim);\n line = line.replace(\"%texsize\", texsize);\n var texlod = \"\";\n line = line.replace(\"%lod\", texlod);\n }\n }\n body += line;\n }\n }\n // adjust z from opengl range of -1..1 to 0..1 as in d3d, this also enforces a left handed coordinate system\n if (desc.header.type == \"vertex\") {\n body += \" gl_Position = vec4(outpos.x, outpos.y, outpos.z*2.0 - outpos.w, outpos.w);\\n\";\n }\n //flag based switch\n if (derivatives && desc.header.type == \"fragment\") {\n header = \"#extension GL_OES_standard_derivatives : enable\\n\" + header;\n }\n // clamp fragment depth\n if (desc.writedepth) {\n body += \" gl_FragDepth = clamp(tmp_FragDepth,0.0,1.0);\\n\";\n }\n // close main\n body += \"}\\n\";\n return header + body;\n };\n AGLSLParser.prototype.regtostring = function (regtype, regnum, desc, tag) {\n switch (regtype) {\n case 0x0:\n return \"va\" + regnum;\n case 0x1:\n return desc.header.type[0] + \"c[\" + regnum + \"]\";\n // case 0x1:\n // \tif (desc.hasindirect && desc.header.type == \"vertex\") {\n // \t\treturn \"vcarrr[\" + regnum + \"]\";\n // \t} else {\n // \t\treturn tag + \"c\" + regnum;\n // \t}\n case 0x2:\n return tag + \"t\" + regnum;\n case 0x3:\n return desc.header.type == \"vertex\" ? \"outpos\" : \"gl_FragColor\";\n case 0x4:\n return \"vi\" + regnum;\n case 0x5:\n return \"fs\" + regnum;\n case 0x6:\n return \"tmp_FragDepth\";\n default:\n throw \"Unknown register type\";\n }\n };\n AGLSLParser.prototype.sourcetostring = function (s, subline, dwm, isscalar, desc, tag) {\n var swiz = [\"x\", \"y\", \"z\", \"w\"];\n var r;\n if (s.indirectflag) {\n r = \"vcarrr[int(\" + this.regtostring(s.indexregtype, s.regnum, desc, tag) + \".\" + swiz[s.indexselect] + \")\";\n var realofs = subline + s.indexoffset;\n if (realofs < 0)\n r += realofs.toString();\n if (realofs > 0)\n r += \"+\" + realofs.toString();\n r += \"]\";\n }\n else {\n r = this.regtostring(s.regtype, s.regnum + subline, desc, tag);\n }\n // samplers never add swizzle \n if (s.regtype == 0x5) {\n return r;\n }\n // scalar, first component only\n if (isscalar) {\n return r + \".\" + swiz[(s.swizzle >> 0) & 3];\n }\n // identity\n if (s.swizzle == 0xe4 && dwm == 0xf) {\n return r;\n }\n // with destination write mask folded in\n r += \".\";\n if (dwm & 1)\n r += swiz[(s.swizzle >> 0) & 3];\n if (dwm & 2)\n r += swiz[(s.swizzle >> 2) & 3];\n if (dwm & 4)\n r += swiz[(s.swizzle >> 4) & 3];\n if (dwm & 8)\n r += swiz[(s.swizzle >> 6) & 3];\n return r;\n };\n return AGLSLParser;\n}());\nexport { AGLSLParser };\nAGLSLParser.maxvertexconstants = 128;\nAGLSLParser.maxfragconstants = 28;\nAGLSLParser.maxtemp = 8;\nAGLSLParser.maxstreams = 8;\nAGLSLParser.maxtextures = 8;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/aglsl/AGLSLParser.js","/**\n * A single register element (an entire register or a single register's component) used by the RegisterPool.\n */\nvar ShaderRegisterElement = (function () {\n /**\n * Creates a new ShaderRegisterElement object.\n *\n * @param regName The name of the register.\n * @param index The index of the register.\n * @param component The register's component, if not the entire register is represented.\n */\n function ShaderRegisterElement(regName, index, component) {\n if (component === void 0) { component = -1; }\n this._component = component;\n this._regName = regName;\n this._index = index;\n this._toStr = this._regName;\n if (this._index >= 0)\n this._toStr += this._index;\n if (component > -1)\n this._toStr += \".\" + ShaderRegisterElement.COMPONENTS[component];\n }\n /**\n * Converts the register or the components AGAL string representation.\n */\n ShaderRegisterElement.prototype.toString = function () {\n return this._toStr;\n };\n Object.defineProperty(ShaderRegisterElement.prototype, \"regName\", {\n /**\n * The register's name.\n */\n get: function () {\n return this._regName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderRegisterElement.prototype, \"index\", {\n /**\n * The register's index.\n */\n get: function () {\n return this._index;\n },\n enumerable: true,\n configurable: true\n });\n return ShaderRegisterElement;\n}());\nexport { ShaderRegisterElement };\nShaderRegisterElement.COMPONENTS = [\"x\", \"y\", \"z\", \"w\"];\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shaders/ShaderRegisterElement.js","import { ShaderRegisterElement } from \"../../shaders/ShaderRegisterElement\";\n/**\n * ...\n */\nvar AnimationRegisterData = (function () {\n function AnimationRegisterData() {\n this.indexDictionary = new Object();\n }\n AnimationRegisterData.prototype.reset = function (registerCache, sharedRegisters, needVelocity) {\n this.rotationRegisters = new Array();\n this.positionAttribute = sharedRegisters.animatableAttributes[0];\n this.scaleAndRotateTarget = sharedRegisters.animationTargetRegisters[0];\n for (var i = 1; i < sharedRegisters.animationTargetRegisters.length; i++)\n this.rotationRegisters.push(sharedRegisters.animationTargetRegisters[i]);\n //allot const register\n this.vertexZeroConst = registerCache.getFreeVertexConstant();\n this.vertexZeroConst = new ShaderRegisterElement(this.vertexZeroConst.regName, this.vertexZeroConst.index, 0);\n this.vertexOneConst = new ShaderRegisterElement(this.vertexZeroConst.regName, this.vertexZeroConst.index, 1);\n this.vertexTwoConst = new ShaderRegisterElement(this.vertexZeroConst.regName, this.vertexZeroConst.index, 2);\n //allot temp register\n this.positionTarget = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(this.positionTarget, 1);\n this.positionTarget = new ShaderRegisterElement(this.positionTarget.regName, this.positionTarget.index);\n if (needVelocity) {\n this.velocityTarget = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(this.velocityTarget, 1);\n this.velocityTarget = new ShaderRegisterElement(this.velocityTarget.regName, this.velocityTarget.index);\n this.vertexTime = new ShaderRegisterElement(this.velocityTarget.regName, this.velocityTarget.index, 3);\n this.vertexLife = new ShaderRegisterElement(this.positionTarget.regName, this.positionTarget.index, 3);\n }\n else {\n var tempTime = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(tempTime, 1);\n this.vertexTime = new ShaderRegisterElement(tempTime.regName, tempTime.index, 0);\n this.vertexLife = new ShaderRegisterElement(tempTime.regName, tempTime.index, 1);\n }\n };\n AnimationRegisterData.prototype.setUVSourceAndTarget = function (sharedRegisters) {\n this.uvVar = sharedRegisters.uvTarget;\n this.uvAttribute = sharedRegisters.uvSource;\n //uv action is processed after normal actions,so use offsetTarget as uvTarget\n this.uvTarget = new ShaderRegisterElement(this.positionTarget.regName, this.positionTarget.index);\n };\n AnimationRegisterData.prototype.setRegisterIndex = function (node, parameterIndex, registerIndex) {\n //8 should be enough for any node.\n var t = this.indexDictionary[node.id];\n if (t == null)\n t = this.indexDictionary[node.id] = new Array(8);\n t[parameterIndex] = registerIndex;\n };\n AnimationRegisterData.prototype.getRegisterIndex = function (node, parameterIndex) {\n return this.indexDictionary[node.id][parameterIndex];\n };\n return AnimationRegisterData;\n}());\nexport { AnimationRegisterData };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/AnimationRegisterData.js","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\nexport function __extends(d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n};\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n};\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n};\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments)).next());\r\n });\r\n};\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t;\r\n return { next: verb(0), \"throw\": verb(1), \"return\": verb(2) };\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\n\n\n// WEBPACK FOOTER //\n// ../../../../../../../node_modules/tslib/tslib.es6.js","import * as tslib_1 from \"tslib\";\nimport { ErrorBase } from \"@awayjs/core\";\nvar AnimationSetError = (function (_super) {\n tslib_1.__extends(AnimationSetError, _super);\n function AnimationSetError(message) {\n return _super.call(this, message) || this;\n }\n return AnimationSetError;\n}(ErrorBase));\nexport { AnimationSetError };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/errors/AnimationSetError.js","import * as tslib_1 from \"tslib\";\nimport { AssetBase, AbstractMethodError } from \"@awayjs/core\";\nimport { AnimationSetError } from \"../errors/AnimationSetError\";\n/**\n * Provides an abstract base class for data set classes that hold animation data for use in animator classes.\n *\n * @see away.animators.AnimatorBase\n */\nvar AnimationSetBase = (function (_super) {\n tslib_1.__extends(AnimationSetBase, _super);\n function AnimationSetBase() {\n var _this = _super.call(this) || this;\n _this._animations = new Array();\n _this._animationNames = new Array();\n _this._animationDictionary = new Object();\n return _this;\n }\n /**\n * Retrieves a temporary GPU register that's still free.\n *\n * @param exclude An array of non-free temporary registers.\n * @param excludeAnother An additional register that's not free.\n * @return A temporary register that can be used.\n */\n AnimationSetBase.prototype._pFindTempReg = function (exclude, excludeAnother) {\n if (excludeAnother === void 0) { excludeAnother = null; }\n var i = 0;\n var reg;\n while (true) {\n reg = \"vt\" + i;\n if (exclude.indexOf(reg) == -1 && excludeAnother != reg)\n return reg;\n ++i;\n }\n };\n Object.defineProperty(AnimationSetBase.prototype, \"usesCPU\", {\n /**\n * Indicates whether the properties of the animation data contained within the set combined with\n * the vertex registers already in use on shading materials allows the animation data to utilise\n * GPU calls.\n */\n get: function () {\n return this._usesCPU;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Called by the material to reset the GPU indicator before testing whether register space in the shader\n * is available for running GPU-based animation code.\n *\n * @private\n */\n AnimationSetBase.prototype.resetGPUCompatibility = function () {\n this._usesCPU = false;\n };\n AnimationSetBase.prototype.cancelGPUCompatibility = function () {\n this._usesCPU = true;\n };\n /**\n * @inheritDoc\n */\n AnimationSetBase.prototype.getAGALVertexCode = function (shader, registerCache, sharedRegisters) {\n throw new AbstractMethodError();\n };\n /**\n * @inheritDoc\n */\n AnimationSetBase.prototype.getAGALFragmentCode = function (shader, registerCache, shadedTarget) {\n throw new AbstractMethodError();\n };\n /**\n * @inheritDoc\n */\n AnimationSetBase.prototype.getAGALUVCode = function (shader, registerCache, sharedRegisters) {\n throw new AbstractMethodError();\n };\n /**\n * @inheritDoc\n */\n AnimationSetBase.prototype.doneAGALCode = function (shader) {\n throw new AbstractMethodError();\n };\n Object.defineProperty(AnimationSetBase.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return AnimationSetBase.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationSetBase.prototype, \"animations\", {\n /**\n * Returns a vector of animation state objects that make up the contents of the animation data set.\n */\n get: function () {\n return this._animations;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationSetBase.prototype, \"animationNames\", {\n /**\n * Returns a vector of animation state objects that make up the contents of the animation data set.\n */\n get: function () {\n return this._animationNames;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Check to determine whether a state is registered in the animation set under the given name.\n *\n * @param stateName The name of the animation state object to be checked.\n */\n AnimationSetBase.prototype.hasAnimation = function (name) {\n return this._animationDictionary[name] != null;\n };\n /**\n * Retrieves the animation state object registered in the animation data set under the given name.\n *\n * @param stateName The name of the animation state object to be retrieved.\n */\n AnimationSetBase.prototype.getAnimation = function (name) {\n return this._animationDictionary[name];\n };\n /**\n * Adds an animation state object to the aniamtion data set under the given name.\n *\n * @param stateName The name under which the animation state object will be stored.\n * @param animationState The animation state object to be staored in the set.\n */\n AnimationSetBase.prototype.addAnimation = function (node) {\n if (this._animationDictionary[node.name])\n throw new AnimationSetError(\"root node name '\" + node.name + \"' already exists in the set\");\n this._animationDictionary[node.name] = node;\n this._animations.push(node);\n this._animationNames.push(node.name);\n };\n /**\n * Cleans up any resources used by the current object.\n */\n AnimationSetBase.prototype.dispose = function () {\n };\n return AnimationSetBase;\n}(AssetBase));\nexport { AnimationSetBase };\nAnimationSetBase.assetType = \"[asset AnimationSet]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/AnimationSetBase.js","import * as tslib_1 from \"tslib\";\nimport { EventBase } from \"@awayjs/core\";\n/**\n * Dispatched to notify changes in an animator's state.\n */\nvar AnimatorEvent = (function (_super) {\n tslib_1.__extends(AnimatorEvent, _super);\n /**\n * Create a new AnimatorEvent object.\n *\n * @param type The event type.\n * @param animator The animator object that is the subject of this event.\n */\n function AnimatorEvent(type, animator) {\n var _this = _super.call(this, type) || this;\n _this._animator = animator;\n return _this;\n }\n Object.defineProperty(AnimatorEvent.prototype, \"animator\", {\n get: function () {\n return this._animator;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Clones the event.\n *\n * @return An exact duplicate of the current event object.\n */\n AnimatorEvent.prototype.clone = function () {\n return new AnimatorEvent(this.type, this._animator);\n };\n return AnimatorEvent;\n}(EventBase));\nexport { AnimatorEvent };\n/**\n * Defines the value of the type property of a start event object.\n */\nAnimatorEvent.START = \"animatorStart\";\n/**\n * Defines the value of the type property of a stop event object.\n */\nAnimatorEvent.STOP = \"animatorStop\";\n/**\n * Defines the value of the type property of a cycle complete event object.\n */\nAnimatorEvent.CYCLE_COMPLETE = \"animatorCycleComplete\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/AnimatorEvent.js","import * as tslib_1 from \"tslib\";\nimport { AssetBase, AbstractMethodError, RequestAnimationFrame, getTimer } from \"@awayjs/core\";\nimport { AnimatorEvent } from \"../events/AnimatorEvent\";\n/**\n * Dispatched when playback of an animation inside the animator object starts.\n *\n * @eventType away3d.events.AnimatorEvent\n */\n//[Event(name=\"start\", type=\"away3d.events.AnimatorEvent\")]\n/**\n * Dispatched when playback of an animation inside the animator object stops.\n *\n * @eventType away3d.events.AnimatorEvent\n */\n//[Event(name=\"stop\", type=\"away3d.events.AnimatorEvent\")]\n/**\n * Dispatched when playback of an animation reaches the end of an animation.\n *\n * @eventType away3d.events.AnimatorEvent\n */\n//[Event(name=\"cycle_complete\", type=\"away3d.events.AnimatorEvent\")]\n/**\n * Provides an abstract base class for animator classes that control animation output from a data set subtype of AnimationSetBase.\n *\n * @see away.animators.AnimationSetBase\n */\nvar AnimatorBase = (function (_super) {\n tslib_1.__extends(AnimatorBase, _super);\n /**\n * Creates a new AnimatorBase object.\n *\n * @param animationSet The animation data set to be used by the animator object.\n */\n function AnimatorBase(animationSet) {\n var _this = _super.call(this) || this;\n _this._autoUpdate = true;\n _this._time = 0;\n _this._playbackSpeed = 1;\n _this._pOwners = new Array();\n _this._pAbsoluteTime = 0;\n _this._animationStates = new Object();\n /**\n * Enables translation of the animated graphics from data returned per frame via the positionDelta property of the active animation node. Defaults to true.\n *\n * @see away.animators.IAnimationState#positionDelta\n */\n _this.updatePosition = true;\n _this._pAnimationSet = animationSet;\n _this._broadcaster = new RequestAnimationFrame(_this.onEnterFrame, _this);\n return _this;\n }\n AnimatorBase.prototype.getAnimationState = function (node) {\n var className = node.stateClass;\n var uID = node.id;\n if (this._animationStates[uID] == null)\n this._animationStates[uID] = new className(this, node);\n return this._animationStates[uID];\n };\n AnimatorBase.prototype.getAnimationStateByName = function (name) {\n return this.getAnimationState(this._pAnimationSet.getAnimation(name));\n };\n Object.defineProperty(AnimatorBase.prototype, \"absoluteTime\", {\n /**\n * Returns the internal absolute time of the animator, calculated by the current time and the playback speed.\n *\n * @see #time\n * @see #playbackSpeed\n */\n get: function () {\n return this._pAbsoluteTime;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimatorBase.prototype, \"animationSet\", {\n /**\n * Returns the animation data set in use by the animator.\n */\n get: function () {\n return this._pAnimationSet;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimatorBase.prototype, \"activeState\", {\n /**\n * Returns the current active animation state.\n */\n get: function () {\n return this._pActiveState;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimatorBase.prototype, \"activeAnimation\", {\n /**\n * Returns the current active animation node.\n */\n get: function () {\n return this._pAnimationSet.getAnimation(this._pActiveAnimationName);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimatorBase.prototype, \"activeAnimationName\", {\n /**\n * Returns the current active animation node.\n */\n get: function () {\n return this._pActiveAnimationName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimatorBase.prototype, \"autoUpdate\", {\n /**\n * Determines whether the animators internal update mechanisms are active. Used in cases\n * where manual updates are required either via the time property or update() method.\n * Defaults to true.\n *\n * @see #time\n * @see #update()\n */\n get: function () {\n return this._autoUpdate;\n },\n set: function (value) {\n if (this._autoUpdate == value)\n return;\n this._autoUpdate = value;\n if (this._autoUpdate)\n this.start();\n else\n this.stop();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimatorBase.prototype, \"time\", {\n /**\n * Gets and sets the internal time clock of the animator.\n */\n get: function () {\n return this._time;\n },\n set: function (value) {\n if (this._time == value)\n return;\n this.update(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the animation phase of the current active state's animation clip(s).\n *\n * @param value The phase value to use. 0 represents the beginning of an animation clip, 1 represents the end.\n */\n AnimatorBase.prototype.phase = function (value) {\n this._pActiveState.phase(value);\n };\n Object.defineProperty(AnimatorBase.prototype, \"playbackSpeed\", {\n /**\n * The amount by which passed time should be scaled. Used to slow down or speed up animations. Defaults to 1.\n */\n get: function () {\n return this._playbackSpeed;\n },\n set: function (value) {\n this._playbackSpeed = value;\n },\n enumerable: true,\n configurable: true\n });\n AnimatorBase.prototype.setRenderState = function (shader, renderable, stage, projection) {\n throw new AbstractMethodError();\n };\n /**\n * Resumes the automatic playback clock controling the active state of the animator.\n */\n AnimatorBase.prototype.start = function () {\n if (this._isPlaying || !this._autoUpdate)\n return;\n this._time = this._pAbsoluteTime = getTimer();\n this._isPlaying = true;\n this._broadcaster.start();\n if (!this.hasEventListener(AnimatorEvent.START))\n return;\n if (this._startEvent == null)\n this._startEvent = new AnimatorEvent(AnimatorEvent.START, this);\n this.dispatchEvent(this._startEvent);\n };\n /**\n * Pauses the automatic playback clock of the animator, in case manual updates are required via the\n * time property or update() method.\n *\n * @see #time\n * @see #update()\n */\n AnimatorBase.prototype.stop = function () {\n if (!this._isPlaying)\n return;\n this._isPlaying = false;\n this._broadcaster.stop();\n if (!this.hasEventListener(AnimatorEvent.STOP))\n return;\n if (this._stopEvent == null)\n this._stopEvent = new AnimatorEvent(AnimatorEvent.STOP, this);\n this.dispatchEvent(this._stopEvent);\n };\n /**\n * Provides a way to manually update the active state of the animator when automatic\n * updates are disabled.\n *\n * @see #stop()\n * @see #autoUpdate\n */\n AnimatorBase.prototype.update = function (time) {\n var dt = (time - this._time) * this.playbackSpeed;\n this._pUpdateDeltaTime(dt);\n this._time = time;\n };\n AnimatorBase.prototype.reset = function (name, offset) {\n if (offset === void 0) { offset = 0; }\n this.getAnimationState(this._pAnimationSet.getAnimation(name)).offset(offset + this._pAbsoluteTime);\n };\n /**\n * Used by the graphics object to which the animator is applied, registers the owner for internal use.\n *\n * @private\n */\n AnimatorBase.prototype.addOwner = function (entity) {\n this._pOwners.push(entity);\n };\n /**\n * Used by the graphics object from which the animator is removed, unregisters the owner for internal use.\n *\n * @private\n */\n AnimatorBase.prototype.removeOwner = function (entity) {\n this._pOwners.splice(this._pOwners.indexOf(entity), 1);\n };\n /**\n * Internal abstract method called when the time delta property of the animator's contents requires updating.\n *\n * @private\n */\n AnimatorBase.prototype._pUpdateDeltaTime = function (dt) {\n this._pAbsoluteTime += dt;\n this._pActiveState.update(this._pAbsoluteTime);\n if (this.updatePosition)\n this.applyPositionDelta();\n };\n /**\n * Enter frame event handler for automatically updating the active state of the animator.\n */\n AnimatorBase.prototype.onEnterFrame = function (event) {\n if (event === void 0) { event = null; }\n this.update(getTimer());\n };\n AnimatorBase.prototype.applyPositionDelta = function () {\n var delta = this._pActiveState.positionDelta;\n var dist = delta.length;\n var len;\n if (dist > 0) {\n len = this._pOwners.length;\n for (var i = 0; i < len; ++i)\n this._pOwners[i].transform.translateLocal(delta, dist);\n }\n };\n /**\n * for internal use.\n *\n * @private\n */\n AnimatorBase.prototype.dispatchCycleEvent = function () {\n if (this.hasEventListener(AnimatorEvent.CYCLE_COMPLETE)) {\n if (this._cycleEvent == null)\n this._cycleEvent = new AnimatorEvent(AnimatorEvent.CYCLE_COMPLETE, this);\n this.dispatchEvent(this._cycleEvent);\n }\n };\n /**\n * @inheritDoc\n */\n AnimatorBase.prototype.clone = function () {\n throw new AbstractMethodError();\n };\n /**\n * @inheritDoc\n */\n AnimatorBase.prototype.dispose = function () {\n };\n AnimatorBase.prototype.invalidateElements = function () {\n var entity;\n var len = this._pOwners.length;\n for (var i = 0; i < len; i++) {\n entity = this._pOwners[i];\n entity.invalidateElements();\n }\n };\n /**\n * @inheritDoc\n */\n AnimatorBase.prototype.testGPUCompatibility = function (shader) {\n throw new AbstractMethodError();\n };\n Object.defineProperty(AnimatorBase.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return AnimatorBase.assetType;\n },\n enumerable: true,\n configurable: true\n });\n AnimatorBase.prototype.getRenderableElements = function (renderable, sourceElements) {\n //nothing to do here\n return sourceElements;\n };\n return AnimatorBase;\n}(AssetBase));\nexport { AnimatorBase };\nAnimatorBase.assetType = \"[asset Animator]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/AnimatorBase.js","import * as tslib_1 from \"tslib\";\nimport { AbstractionBase } from \"@awayjs/core\";\n/**\n *\n * @class away.pool.GL_AttributesBuffer\n */\nvar GL_AttributesBuffer = (function (_super) {\n tslib_1.__extends(GL_AttributesBuffer, _super);\n function GL_AttributesBuffer(attributesBuffer, stage) {\n var _this = _super.call(this, attributesBuffer, stage) || this;\n _this._stage = stage;\n _this._attributesBuffer = attributesBuffer;\n return _this;\n }\n /**\n *\n */\n GL_AttributesBuffer.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._attributesBuffer = null;\n if (this._indexBuffer) {\n this._indexBuffer.dispose();\n this._indexBuffer = null;\n }\n if (this._vertexBuffer) {\n this._vertexBuffer.dispose();\n this._vertexBuffer = null;\n }\n };\n GL_AttributesBuffer.prototype.activate = function (index, size, dimensions, offset, unsigned) {\n if (unsigned === void 0) { unsigned = false; }\n this._stage.setVertexBuffer(index, this._getVertexBuffer(), size, dimensions, offset, unsigned);\n };\n GL_AttributesBuffer.prototype.draw = function (mode, firstIndex, numIndices) {\n this._stage.context.drawIndices(mode, this._getIndexBuffer(), firstIndex, numIndices);\n };\n GL_AttributesBuffer.prototype._getIndexBuffer = function () {\n if (!this._indexBuffer) {\n this._invalid = true;\n this._indexBuffer = this._stage.context.createIndexBuffer(this._attributesBuffer.count * this._attributesBuffer.stride / 2); //hardcoded assuming UintArray\n }\n if (this._invalid) {\n this._invalid = false;\n this._indexBuffer.uploadFromByteArray(this._attributesBuffer.buffer, 0, this._attributesBuffer.length);\n }\n return this._indexBuffer;\n };\n GL_AttributesBuffer.prototype._getVertexBuffer = function () {\n if (!this._vertexBuffer) {\n this._invalid = true;\n this._vertexBuffer = this._stage.context.createVertexBuffer(this._attributesBuffer.count, this._attributesBuffer.stride);\n }\n if (this._invalid) {\n this._invalid = false;\n this._vertexBuffer.uploadFromByteArray(this._attributesBuffer.buffer, 0, this._attributesBuffer.count);\n }\n return this._vertexBuffer;\n };\n return GL_AttributesBuffer;\n}(AbstractionBase));\nexport { GL_AttributesBuffer };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/attributes/GL_AttributesBuffer.js","export var ContextGLBlendFactor;\n(function (ContextGLBlendFactor) {\n ContextGLBlendFactor[ContextGLBlendFactor[\"DESTINATION_ALPHA\"] = 0] = \"DESTINATION_ALPHA\";\n ContextGLBlendFactor[ContextGLBlendFactor[\"DESTINATION_COLOR\"] = 1] = \"DESTINATION_COLOR\";\n ContextGLBlendFactor[ContextGLBlendFactor[\"ONE\"] = 2] = \"ONE\";\n ContextGLBlendFactor[ContextGLBlendFactor[\"ONE_MINUS_DESTINATION_ALPHA\"] = 3] = \"ONE_MINUS_DESTINATION_ALPHA\";\n ContextGLBlendFactor[ContextGLBlendFactor[\"ONE_MINUS_DESTINATION_COLOR\"] = 4] = \"ONE_MINUS_DESTINATION_COLOR\";\n ContextGLBlendFactor[ContextGLBlendFactor[\"ONE_MINUS_SOURCE_ALPHA\"] = 5] = \"ONE_MINUS_SOURCE_ALPHA\";\n ContextGLBlendFactor[ContextGLBlendFactor[\"ONE_MINUS_SOURCE_COLOR\"] = 6] = \"ONE_MINUS_SOURCE_COLOR\";\n ContextGLBlendFactor[ContextGLBlendFactor[\"SOURCE_ALPHA\"] = 7] = \"SOURCE_ALPHA\";\n ContextGLBlendFactor[ContextGLBlendFactor[\"SOURCE_COLOR\"] = 8] = \"SOURCE_COLOR\";\n ContextGLBlendFactor[ContextGLBlendFactor[\"ZERO\"] = 9] = \"ZERO\";\n})(ContextGLBlendFactor || (ContextGLBlendFactor = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLBlendFactor.js","export var ContextGLClearMask;\n(function (ContextGLClearMask) {\n ContextGLClearMask[ContextGLClearMask[\"COLOR\"] = 1] = \"COLOR\";\n ContextGLClearMask[ContextGLClearMask[\"DEPTH\"] = 2] = \"DEPTH\";\n ContextGLClearMask[ContextGLClearMask[\"STENCIL\"] = 4] = \"STENCIL\";\n ContextGLClearMask[ContextGLClearMask[\"ALL\"] = 7] = \"ALL\";\n})(ContextGLClearMask || (ContextGLClearMask = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLClearMask.js","export var ContextGLCompareMode;\n(function (ContextGLCompareMode) {\n ContextGLCompareMode[ContextGLCompareMode[\"ALWAYS\"] = 0] = \"ALWAYS\";\n ContextGLCompareMode[ContextGLCompareMode[\"EQUAL\"] = 1] = \"EQUAL\";\n ContextGLCompareMode[ContextGLCompareMode[\"GREATER\"] = 2] = \"GREATER\";\n ContextGLCompareMode[ContextGLCompareMode[\"GREATER_EQUAL\"] = 3] = \"GREATER_EQUAL\";\n ContextGLCompareMode[ContextGLCompareMode[\"LESS\"] = 4] = \"LESS\";\n ContextGLCompareMode[ContextGLCompareMode[\"LESS_EQUAL\"] = 5] = \"LESS_EQUAL\";\n ContextGLCompareMode[ContextGLCompareMode[\"NEVER\"] = 6] = \"NEVER\";\n ContextGLCompareMode[ContextGLCompareMode[\"NOT_EQUAL\"] = 7] = \"NOT_EQUAL\";\n})(ContextGLCompareMode || (ContextGLCompareMode = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLCompareMode.js","export var ContextGLDrawMode;\n(function (ContextGLDrawMode) {\n ContextGLDrawMode[ContextGLDrawMode[\"TRIANGLES\"] = 0] = \"TRIANGLES\";\n ContextGLDrawMode[ContextGLDrawMode[\"LINES\"] = 1] = \"LINES\";\n})(ContextGLDrawMode || (ContextGLDrawMode = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLDrawMode.js","export var ContextGLMipFilter;\n(function (ContextGLMipFilter) {\n ContextGLMipFilter[ContextGLMipFilter[\"MIPLINEAR\"] = 0] = \"MIPLINEAR\";\n ContextGLMipFilter[ContextGLMipFilter[\"MIPNEAREST\"] = 1] = \"MIPNEAREST\";\n ContextGLMipFilter[ContextGLMipFilter[\"MIPNONE\"] = 2] = \"MIPNONE\";\n})(ContextGLMipFilter || (ContextGLMipFilter = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLMipFilter.js","export var ContextGLProfile;\n(function (ContextGLProfile) {\n ContextGLProfile[ContextGLProfile[\"BASELINE\"] = 0] = \"BASELINE\";\n ContextGLProfile[ContextGLProfile[\"BASELINE_CONSTRAINED\"] = 1] = \"BASELINE_CONSTRAINED\";\n ContextGLProfile[ContextGLProfile[\"BASELINE_EXTENDED\"] = 2] = \"BASELINE_EXTENDED\";\n})(ContextGLProfile || (ContextGLProfile = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLProfile.js","export var ContextGLProgramType;\n(function (ContextGLProgramType) {\n ContextGLProgramType[ContextGLProgramType[\"FRAGMENT\"] = 0] = \"FRAGMENT\";\n ContextGLProgramType[ContextGLProgramType[\"SAMPLER\"] = 1] = \"SAMPLER\";\n ContextGLProgramType[ContextGLProgramType[\"VERTEX\"] = 2] = \"VERTEX\";\n})(ContextGLProgramType || (ContextGLProgramType = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLProgramType.js","export var ContextGLStencilAction;\n(function (ContextGLStencilAction) {\n ContextGLStencilAction[ContextGLStencilAction[\"DECREMENT_SATURATE\"] = 0] = \"DECREMENT_SATURATE\";\n ContextGLStencilAction[ContextGLStencilAction[\"DECREMENT_WRAP\"] = 1] = \"DECREMENT_WRAP\";\n ContextGLStencilAction[ContextGLStencilAction[\"INCREMENT_SATURATE\"] = 2] = \"INCREMENT_SATURATE\";\n ContextGLStencilAction[ContextGLStencilAction[\"INCREMENT_WRAP\"] = 3] = \"INCREMENT_WRAP\";\n ContextGLStencilAction[ContextGLStencilAction[\"INVERT\"] = 4] = \"INVERT\";\n ContextGLStencilAction[ContextGLStencilAction[\"KEEP\"] = 5] = \"KEEP\";\n ContextGLStencilAction[ContextGLStencilAction[\"SET\"] = 6] = \"SET\";\n ContextGLStencilAction[ContextGLStencilAction[\"ZERO\"] = 7] = \"ZERO\";\n})(ContextGLStencilAction || (ContextGLStencilAction = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLStencilAction.js","export var ContextGLTextureFilter;\n(function (ContextGLTextureFilter) {\n ContextGLTextureFilter[ContextGLTextureFilter[\"LINEAR\"] = 0] = \"LINEAR\";\n ContextGLTextureFilter[ContextGLTextureFilter[\"NEAREST\"] = 1] = \"NEAREST\";\n})(ContextGLTextureFilter || (ContextGLTextureFilter = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLTextureFilter.js","export var ContextGLTextureFormat;\n(function (ContextGLTextureFormat) {\n ContextGLTextureFormat[ContextGLTextureFormat[\"BGRA\"] = 0] = \"BGRA\";\n ContextGLTextureFormat[ContextGLTextureFormat[\"BGRA_PACKED\"] = 1] = \"BGRA_PACKED\";\n ContextGLTextureFormat[ContextGLTextureFormat[\"BGR_PACKED\"] = 2] = \"BGR_PACKED\";\n ContextGLTextureFormat[ContextGLTextureFormat[\"COMPRESSED\"] = 3] = \"COMPRESSED\";\n ContextGLTextureFormat[ContextGLTextureFormat[\"COMPRESSED_ALPHA\"] = 4] = \"COMPRESSED_ALPHA\";\n})(ContextGLTextureFormat || (ContextGLTextureFormat = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLTextureFormat.js","export var ContextGLTriangleFace;\n(function (ContextGLTriangleFace) {\n ContextGLTriangleFace[ContextGLTriangleFace[\"BACK\"] = 0] = \"BACK\";\n ContextGLTriangleFace[ContextGLTriangleFace[\"FRONT\"] = 1] = \"FRONT\";\n ContextGLTriangleFace[ContextGLTriangleFace[\"FRONT_AND_BACK\"] = 2] = \"FRONT_AND_BACK\";\n ContextGLTriangleFace[ContextGLTriangleFace[\"NONE\"] = 3] = \"NONE\";\n})(ContextGLTriangleFace || (ContextGLTriangleFace = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLTriangleFace.js","export var ContextGLVertexBufferFormat;\n(function (ContextGLVertexBufferFormat) {\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"FLOAT_1\"] = 0] = \"FLOAT_1\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"FLOAT_2\"] = 1] = \"FLOAT_2\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"FLOAT_3\"] = 2] = \"FLOAT_3\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"FLOAT_4\"] = 3] = \"FLOAT_4\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"BYTE_1\"] = 4] = \"BYTE_1\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"BYTE_2\"] = 5] = \"BYTE_2\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"BYTE_3\"] = 6] = \"BYTE_3\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"BYTE_4\"] = 7] = \"BYTE_4\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"UNSIGNED_BYTE_1\"] = 8] = \"UNSIGNED_BYTE_1\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"UNSIGNED_BYTE_2\"] = 9] = \"UNSIGNED_BYTE_2\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"UNSIGNED_BYTE_3\"] = 10] = \"UNSIGNED_BYTE_3\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"UNSIGNED_BYTE_4\"] = 11] = \"UNSIGNED_BYTE_4\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"SHORT_1\"] = 12] = \"SHORT_1\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"SHORT_2\"] = 13] = \"SHORT_2\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"SHORT_3\"] = 14] = \"SHORT_3\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"SHORT_4\"] = 15] = \"SHORT_4\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"UNSIGNED_SHORT_1\"] = 16] = \"UNSIGNED_SHORT_1\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"UNSIGNED_SHORT_2\"] = 17] = \"UNSIGNED_SHORT_2\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"UNSIGNED_SHORT_3\"] = 18] = \"UNSIGNED_SHORT_3\";\n ContextGLVertexBufferFormat[ContextGLVertexBufferFormat[\"UNSIGNED_SHORT_4\"] = 19] = \"UNSIGNED_SHORT_4\";\n})(ContextGLVertexBufferFormat || (ContextGLVertexBufferFormat = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLVertexBufferFormat.js","export var ContextGLWrapMode;\n(function (ContextGLWrapMode) {\n ContextGLWrapMode[ContextGLWrapMode[\"CLAMP\"] = 0] = \"CLAMP\";\n ContextGLWrapMode[ContextGLWrapMode[\"REPEAT\"] = 1] = \"REPEAT\";\n})(ContextGLWrapMode || (ContextGLWrapMode = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextGLWrapMode.js","export var ContextMode;\n(function (ContextMode) {\n ContextMode[ContextMode[\"AUTO\"] = 0] = \"AUTO\";\n ContextMode[ContextMode[\"WEBGL\"] = 1] = \"WEBGL\";\n ContextMode[ContextMode[\"FLASH\"] = 2] = \"FLASH\";\n ContextMode[ContextMode[\"GLES\"] = 3] = \"GLES\";\n ContextMode[ContextMode[\"NATIVE\"] = 4] = \"NATIVE\";\n ContextMode[ContextMode[\"SOFTWARE\"] = 5] = \"SOFTWARE\";\n})(ContextMode || (ContextMode = {}));\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/ContextMode.js","var SamplerState = (function () {\n function SamplerState() {\n }\n return SamplerState;\n}());\nexport { SamplerState };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/base/SamplerState.js","import * as tslib_1 from \"tslib\";\nimport { AbstractionBase, AbstractMethodError, AssetEvent } from \"@awayjs/core\";\nimport { ElementsEvent, ElementsUtils } from \"@awayjs/graphics\";\n/**\n *\n * @class away.pool.GL_ElementsBaseBase\n */\nvar GL_ElementsBase = (function (_super) {\n tslib_1.__extends(GL_ElementsBase, _super);\n function GL_ElementsBase(elements, stage) {\n var _this = _super.call(this, elements, stage) || this;\n _this.usages = 0;\n _this._vertices = new Object();\n _this._verticesUpdated = new Object();\n _this._indexMappings = Array();\n _this._numIndices = 0;\n _this._elements = elements;\n _this._stage = stage;\n _this._onInvalidateIndicesDelegate = function (event) { return _this._onInvalidateIndices(event); };\n _this._onClearIndicesDelegate = function (event) { return _this._onClearIndices(event); };\n _this._onInvalidateVerticesDelegate = function (event) { return _this._onInvalidateVertices(event); };\n _this._onClearVerticesDelegate = function (event) { return _this._onClearVertices(event); };\n _this._elements.addEventListener(ElementsEvent.CLEAR_INDICES, _this._onClearIndicesDelegate);\n _this._elements.addEventListener(ElementsEvent.INVALIDATE_INDICES, _this._onInvalidateIndicesDelegate);\n _this._elements.addEventListener(ElementsEvent.CLEAR_VERTICES, _this._onClearVerticesDelegate);\n _this._elements.addEventListener(ElementsEvent.INVALIDATE_VERTICES, _this._onInvalidateVerticesDelegate);\n return _this;\n }\n Object.defineProperty(GL_ElementsBase.prototype, \"elementsType\", {\n get: function () {\n throw new AbstractMethodError();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_ElementsBase.prototype, \"elementsClass\", {\n get: function () {\n throw new AbstractMethodError();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_ElementsBase.prototype, \"elements\", {\n get: function () {\n return this._elements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_ElementsBase.prototype, \"numIndices\", {\n /**\n *\n */\n get: function () {\n return this._numIndices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_ElementsBase.prototype, \"numVertices\", {\n /**\n *\n */\n get: function () {\n return this._numVertices;\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n */\n GL_ElementsBase.prototype.getIndexMappings = function () {\n if (!this._indicesUpdated)\n this._updateIndices();\n return this._indexMappings;\n };\n /**\n *\n */\n GL_ElementsBase.prototype.getIndexBufferGL = function () {\n if (!this._indicesUpdated)\n this._updateIndices();\n return this._indices;\n };\n /**\n *\n */\n GL_ElementsBase.prototype.getVertexBufferGL = function (attributesView) {\n //first check if indices need updating which may affect vertices\n if (!this._indicesUpdated)\n this._updateIndices();\n var bufferId = attributesView.attributesBuffer.id;\n if (!this._verticesUpdated[bufferId])\n this._updateVertices(attributesView);\n return this._vertices[bufferId];\n };\n /**\n *\n */\n GL_ElementsBase.prototype.activateVertexBufferVO = function (index, attributesView, dimensions, offset) {\n if (dimensions === void 0) { dimensions = 0; }\n if (offset === void 0) { offset = 0; }\n this.getVertexBufferGL(attributesView).activate(index, attributesView.size, dimensions || attributesView.dimensions, attributesView.offset + offset, attributesView.unsigned);\n };\n /**\n *\n */\n GL_ElementsBase.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._elements.removeEventListener(ElementsEvent.CLEAR_INDICES, this._onClearIndicesDelegate);\n this._elements.removeEventListener(ElementsEvent.INVALIDATE_INDICES, this._onInvalidateIndicesDelegate);\n this._elements.removeEventListener(ElementsEvent.CLEAR_VERTICES, this._onClearVerticesDelegate);\n this._elements.removeEventListener(ElementsEvent.INVALIDATE_VERTICES, this._onInvalidateVerticesDelegate);\n this._elements = null;\n if (this._overflow) {\n this._overflow.onClear(event);\n this._overflow = null;\n }\n };\n GL_ElementsBase.prototype._setRenderState = function (renderable, shader, projection) {\n if (!this._verticesUpdated)\n this._updateIndices();\n //TODO replace overflow system with something sensible\n //this._render(renderable, camera, viewProjection);\n //\n // if (this._overflow)\n // \tthis._overflow._iRender(renderable, camera, viewProjection);\n };\n GL_ElementsBase.prototype.draw = function (renderable, shader, projection, count, offset) {\n throw new AbstractMethodError();\n };\n /**\n * //TODO\n *\n * @private\n */\n GL_ElementsBase.prototype._updateIndices = function (indexOffset) {\n if (indexOffset === void 0) { indexOffset = 0; }\n var indices = this._elements.indices;\n if (indices) {\n this._indices = this._stage.getAbstraction(ElementsUtils.getSubIndices(indices, this._elements.numVertices, this._indexMappings, indexOffset));\n this._numIndices = this._indices._attributesBuffer.count * indices.dimensions;\n }\n else {\n this._indices = null;\n this._numIndices = 0;\n this._indexMappings = Array();\n }\n indexOffset += this._numIndices;\n //check if there is more to split\n if (indices && indexOffset < indices.count * this._elements.indices.dimensions) {\n if (!this._overflow)\n this._overflow = this._pGetOverflowElements();\n this._overflow._updateIndices(indexOffset);\n }\n else if (this._overflow) {\n this._overflow.onClear(new AssetEvent(AssetEvent.CLEAR, this._elements));\n this._overflow = null;\n }\n this._indicesUpdated = true;\n //invalidate vertices if index mappings exist\n if (this._indexMappings.length)\n for (var key in this._verticesUpdated)\n this._verticesUpdated[key] = false;\n };\n /**\n * //TODO\n *\n * @param attributesView\n * @private\n */\n GL_ElementsBase.prototype._updateVertices = function (attributesView) {\n this._numVertices = this._elements.numVertices;\n var bufferId = attributesView.attributesBuffer.id;\n this._vertices[bufferId] = this._stage.getAbstraction(ElementsUtils.getSubVertices(attributesView.attributesBuffer, this._indexMappings));\n this._verticesUpdated[bufferId] = true;\n };\n /**\n * //TODO\n *\n * @param event\n * @private\n */\n GL_ElementsBase.prototype._onInvalidateIndices = function (event) {\n if (!event.attributesView)\n return;\n this._indicesUpdated = false;\n };\n /**\n * //TODO\n *\n * @param event\n * @private\n */\n GL_ElementsBase.prototype._onClearIndices = function (event) {\n if (!event.attributesView)\n return;\n this._indices.onClear(new AssetEvent(AssetEvent.CLEAR, event.attributesView));\n this._indices = null;\n };\n /**\n * //TODO\n *\n * @param event\n * @private\n */\n GL_ElementsBase.prototype._onInvalidateVertices = function (event) {\n if (!event.attributesView)\n return;\n var bufferId = event.attributesView.attributesBuffer.id;\n this._verticesUpdated[bufferId] = false;\n };\n /**\n * //TODO\n *\n * @param event\n * @private\n */\n GL_ElementsBase.prototype._onClearVertices = function (event) {\n if (!event.attributesView)\n return;\n var bufferId = event.attributesView.attributesBuffer.id;\n if (this._vertices[bufferId]) {\n this._vertices[bufferId].onClear(new AssetEvent(AssetEvent.CLEAR, event.attributesView));\n delete this._vertices[bufferId];\n delete this._verticesUpdated[bufferId];\n }\n };\n /**\n * //TODO\n *\n * @param pool\n * @param renderable\n * @param level\n * @param indexOffset\n * @returns {away.pool.GL_ShapeRenderable}\n * @protected\n */\n GL_ElementsBase.prototype._pGetOverflowElements = function () {\n throw new AbstractMethodError();\n };\n return GL_ElementsBase;\n}(AbstractionBase));\nexport { GL_ElementsBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/elements/GL_ElementsBase.js","import * as tslib_1 from \"tslib\";\nimport { Matrix3D } from \"@awayjs/core\";\nimport { ContextGLDrawMode } from \"../base/ContextGLDrawMode\";\nimport { ContextGLProgramType } from \"../base/ContextGLProgramType\";\nimport { GL_ElementsBase } from \"./GL_ElementsBase\";\n/**\n *\n * @class away.pool.GL_TriangleElements\n */\nvar GL_TriangleElements = (function (_super) {\n tslib_1.__extends(GL_TriangleElements, _super);\n function GL_TriangleElements(triangleElements, stage) {\n var _this = _super.call(this, triangleElements, stage) || this;\n _this._triangleElements = triangleElements;\n return _this;\n }\n Object.defineProperty(GL_TriangleElements.prototype, \"elementsType\", {\n get: function () {\n return GL_TriangleElements.elementsType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_TriangleElements.prototype, \"elementsClass\", {\n get: function () {\n return GL_TriangleElements;\n },\n enumerable: true,\n configurable: true\n });\n GL_TriangleElements._includeDependencies = function (shader) {\n };\n GL_TriangleElements._getVertexCode = function (shader, registerCache, sharedRegisters) {\n var code = \"\";\n //get the projection coordinates\n var position = (shader.globalPosDependencies > 0) ? sharedRegisters.globalPositionVertex : sharedRegisters.animatedPosition;\n //reserving vertex constants for projection matrix\n var viewMatrixReg = registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n shader.viewMatrixIndex = viewMatrixReg.index * 4;\n if (shader.projectionDependencies > 0) {\n sharedRegisters.projectionFragment = registerCache.getFreeVarying();\n var temp = registerCache.getFreeVertexVectorTemp();\n code += \"m44 \" + temp + \", \" + position + \", \" + viewMatrixReg + \"\\n\" +\n \"mov \" + sharedRegisters.projectionFragment + \", \" + temp + \"\\n\" +\n \"mov op, \" + temp + \"\\n\";\n }\n else {\n code += \"m44 op, \" + position + \", \" + viewMatrixReg + \"\\n\";\n }\n return code;\n };\n GL_TriangleElements._getFragmentCode = function (shader, registerCache, sharedRegisters) {\n return \"\";\n };\n GL_TriangleElements.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._triangleElements = null;\n };\n GL_TriangleElements.prototype._setRenderState = function (renderable, shader, projection) {\n _super.prototype._setRenderState.call(this, renderable, shader, projection);\n //set buffers\n //TODO: find a better way to update a concatenated buffer when autoderiving\n if (shader.normalIndex >= 0 && this._triangleElements.autoDeriveNormals)\n this._triangleElements.normals;\n if (shader.tangentIndex >= 0 && this._triangleElements.autoDeriveTangents)\n this._triangleElements.tangents;\n if (shader.curvesIndex >= 0)\n this.activateVertexBufferVO(shader.curvesIndex, this._triangleElements.getCustomAtributes(\"curves\"));\n if (shader.uvIndex >= 0)\n this.activateVertexBufferVO(shader.uvIndex, this._triangleElements.uvs || this._triangleElements.positions);\n if (shader.secondaryUVIndex >= 0)\n this.activateVertexBufferVO(shader.secondaryUVIndex, this._triangleElements.getCustomAtributes(\"secondaryUVs\") || this._triangleElements.uvs || this._triangleElements.positions);\n if (shader.normalIndex >= 0)\n this.activateVertexBufferVO(shader.normalIndex, this._triangleElements.normals);\n if (shader.tangentIndex >= 0)\n this.activateVertexBufferVO(shader.tangentIndex, this._triangleElements.tangents);\n if (shader.jointIndexIndex >= 0)\n this.activateVertexBufferVO(shader.jointIndexIndex, this._triangleElements.jointIndices);\n if (shader.jointWeightIndex >= 0)\n this.activateVertexBufferVO(shader.jointIndexIndex, this._triangleElements.jointWeights);\n this.activateVertexBufferVO(0, this._triangleElements.positions);\n };\n GL_TriangleElements.prototype.draw = function (renderable, shader, projection, count, offset) {\n //set constants\n if (shader.sceneMatrixIndex >= 0) {\n shader.sceneMatrix.copyFrom(renderable.renderSceneTransform, true);\n shader.viewMatrix.copyFrom(projection.viewMatrix3D, true);\n }\n else {\n var matrix3D = Matrix3D.CALCULATION_MATRIX;\n matrix3D.copyFrom(renderable.renderSceneTransform);\n matrix3D.append(projection.viewMatrix3D);\n shader.viewMatrix.copyFrom(matrix3D, true);\n }\n var context = this._stage.context;\n context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, shader.vertexConstantData);\n context.setProgramConstantsFromArray(ContextGLProgramType.FRAGMENT, shader.fragmentConstantData);\n if (this._indices)\n this.getIndexBufferGL().draw(ContextGLDrawMode.TRIANGLES, offset * 3, count * 3 || this.numIndices);\n else\n this._stage.context.drawVertices(ContextGLDrawMode.TRIANGLES, offset, count || this.numVertices);\n };\n /**\n * //TODO\n *\n * @param pool\n * @param renderable\n * @param level\n * @param indexOffset\n * @returns {away.pool.GL_ShapeRenderable}\n * @protected\n */\n GL_TriangleElements.prototype._pGetOverflowElements = function () {\n return new GL_TriangleElements(this._triangleElements, this._stage);\n };\n return GL_TriangleElements;\n}(GL_ElementsBase));\nexport { GL_TriangleElements };\nGL_TriangleElements.elementsType = \"[elements Triangle]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/elements/GL_TriangleElements.js","import * as tslib_1 from \"tslib\";\nimport { EventBase } from \"@awayjs/core\";\nvar StageEvent = (function (_super) {\n tslib_1.__extends(StageEvent, _super);\n function StageEvent(type, stage) {\n var _this = _super.call(this, type) || this;\n _this._stage = stage;\n return _this;\n }\n Object.defineProperty(StageEvent.prototype, \"stage\", {\n /**\n *\n */\n get: function () {\n return this._stage;\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n */\n StageEvent.prototype.clone = function () {\n return new StageEvent(this.type, this._stage);\n };\n return StageEvent;\n}(EventBase));\nexport { StageEvent };\n/**\n *\n */\nStageEvent.STAGE_ERROR = \"stageError\";\n/**\n *\n */\nStageEvent.CONTEXT_CREATED = \"contextCreated\";\n/**\n *\n */\nStageEvent.CONTEXT_DISPOSED = \"contextDisposed\";\n/**\n *\n */\nStageEvent.CONTEXT_RECREATED = \"contextRecreated\";\n/**\n *\n */\nStageEvent.VIEWPORT_UPDATED = \"viewportUpdated\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/StageEvent.js","import * as tslib_1 from \"tslib\";\nimport { EventBase } from \"@awayjs/core\";\nvar PassEvent = (function (_super) {\n tslib_1.__extends(PassEvent, _super);\n function PassEvent(type, pass) {\n var _this = _super.call(this, type) || this;\n _this._pass = pass;\n return _this;\n }\n Object.defineProperty(PassEvent.prototype, \"pass\", {\n /**\n *\n */\n get: function () {\n return this._pass;\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n */\n PassEvent.prototype.clone = function () {\n return new PassEvent(this.type, this._pass);\n };\n return PassEvent;\n}(EventBase));\nexport { PassEvent };\n/**\n *\n */\nPassEvent.INVALIDATE = \"invalidatePass\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/PassEvent.js","var OpCodes = (function () {\n function OpCodes() {\n }\n return OpCodes;\n}());\nexport { OpCodes };\nOpCodes.trueValue = 32;\nOpCodes.falseValue = 33;\nOpCodes.intMask = 63;\nOpCodes.drawTriangles = 41;\nOpCodes.setProgramConstant = 42;\nOpCodes.setProgram = 43;\nOpCodes.present = 44;\nOpCodes.clear = 45;\nOpCodes.initProgram = 46;\nOpCodes.initVertexBuffer = 47;\nOpCodes.initIndexBuffer = 48;\nOpCodes.configureBackBuffer = 49;\nOpCodes.uploadArrayIndexBuffer = 50;\nOpCodes.uploadArrayVertexBuffer = 51;\nOpCodes.uploadAGALBytesProgram = 52;\nOpCodes.setVertexBufferAt = 53;\nOpCodes.uploadBytesIndexBuffer = 54;\nOpCodes.uploadBytesVertexBuffer = 55;\nOpCodes.setColorMask = 56;\nOpCodes.setDepthTest = 57;\nOpCodes.disposeProgram = 58;\nOpCodes.disposeContext = 59;\n// must skip 60 '<' as it will invalidate xml being passed over the bridge\nOpCodes.disposeVertexBuffer = 61;\n// must skip 62 '>' as it will invalidate xml being passed over the bridge\nOpCodes.disposeIndexBuffer = 63;\nOpCodes.initTexture = 64;\nOpCodes.setTextureAt = 65;\nOpCodes.uploadBytesTexture = 66;\nOpCodes.disposeTexture = 67;\nOpCodes.setCulling = 68;\nOpCodes.setScissorRect = 69;\nOpCodes.clearScissorRect = 70;\nOpCodes.setBlendFactors = 71;\nOpCodes.setRenderToTexture = 72;\nOpCodes.clearTextureAt = 73;\nOpCodes.clearVertexBufferAt = 74;\nOpCodes.setStencilActions = 75;\nOpCodes.setStencilReferenceValue = 76;\nOpCodes.initCubeTexture = 77;\nOpCodes.disposeCubeTexture = 78;\nOpCodes.uploadBytesCubeTexture = 79;\nOpCodes.clearRenderToTexture = 80;\nOpCodes.enableErrorChecking = 81;\n// added for gles context:\nOpCodes.drawVertices = 82;\nOpCodes.getFrameBufferForTexture = 83;\nOpCodes.uploadProgram = 84;\nOpCodes.disableCulling = 85;\nOpCodes.disableBlending = 86;\nOpCodes.setSamplerStateAt = 87;\nOpCodes.enableStencil = 88;\nOpCodes.disableStencil = 89;\nOpCodes.setStencilActionsMasks = 90;\n//public static passBitmapToCpp:number = 91; //reserved for java message\nOpCodes.uploadTextureFromURL = 92;\nOpCodes.startSound = 101;\nOpCodes.stopSound = 102;\nOpCodes.updateSound = 103;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/flash/OpCodes.js","var ResourceBaseFlash = (function () {\n function ResourceBaseFlash() {\n }\n Object.defineProperty(ResourceBaseFlash.prototype, \"id\", {\n get: function () {\n return this._pId;\n },\n enumerable: true,\n configurable: true\n });\n ResourceBaseFlash.prototype.dispose = function () {\n };\n ResourceBaseFlash.prototype.generateMipmaps = function () {\n //TODO\n };\n return ResourceBaseFlash;\n}());\nexport { ResourceBaseFlash };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/flash/ResourceBaseFlash.js","import * as tslib_1 from \"tslib\";\nimport { ByteArrayBase } from \"@awayjs/core\";\nimport { OpCodes } from \"./OpCodes\";\nimport { ResourceBaseFlash } from \"./ResourceBaseFlash\";\nvar CubeTextureFlash = (function (_super) {\n tslib_1.__extends(CubeTextureFlash, _super);\n function CubeTextureFlash(context, size, format, forRTT, streaming) {\n if (streaming === void 0) { streaming = false; }\n var _this = _super.call(this) || this;\n _this._context = context;\n _this._size = size;\n _this._context.addStream(String.fromCharCode(OpCodes.initCubeTexture, (forRTT ? OpCodes.trueValue : OpCodes.falseValue)) + size + \",\" + streaming + \",\" + format + \"$\");\n _this._pId = _this._context.execute();\n _this._context._iAddResource(_this);\n return _this;\n }\n Object.defineProperty(CubeTextureFlash.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n CubeTextureFlash.prototype.dispose = function () {\n this._context.addStream(String.fromCharCode(OpCodes.disposeCubeTexture) + this._pId.toString() + \",\");\n this._context.execute();\n this._context._iRemoveResource(this);\n this._context = null;\n };\n CubeTextureFlash.prototype.uploadFromImage = function (imageCube, side, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n var data = imageCube.getImageData(side).data;\n var pos = 0;\n var bytes = ByteArrayBase.internalGetBase64String(data.length, function () {\n return data[pos++];\n }, null);\n this._context.addStream(String.fromCharCode(OpCodes.uploadBytesCubeTexture) + this._pId + \",\" + miplevel + \",\" + side + \",\" + (this.size >> miplevel) + \",\" + bytes + \"%\");\n this._context.execute();\n };\n CubeTextureFlash.prototype.uploadCompressedTextureFromByteArray = function (data, byteArrayOffset /*uint*/, async) {\n if (async === void 0) { async = false; }\n };\n return CubeTextureFlash;\n}(ResourceBaseFlash));\nexport { CubeTextureFlash };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/flash/CubeTextureFlash.js","import * as tslib_1 from \"tslib\";\nimport { OpCodes } from \"./OpCodes\";\nimport { ResourceBaseFlash } from \"./ResourceBaseFlash\";\nvar IndexBufferFlash = (function (_super) {\n tslib_1.__extends(IndexBufferFlash, _super);\n function IndexBufferFlash(context, numIndices) {\n var _this = _super.call(this) || this;\n _this._context = context;\n _this._numIndices = numIndices;\n _this._context.addStream(String.fromCharCode(OpCodes.initIndexBuffer, numIndices + OpCodes.intMask));\n _this._pId = _this._context.execute();\n _this._context._iAddResource(_this);\n return _this;\n }\n IndexBufferFlash.prototype.uploadFromArray = function (data, startOffset, count) {\n this._context.addStream(String.fromCharCode(OpCodes.uploadArrayIndexBuffer, this._pId + OpCodes.intMask) + data.join() + \"#\" + startOffset + \",\" + count + \",\");\n this._context.execute();\n };\n IndexBufferFlash.prototype.uploadFromByteArray = function (data, startOffset, count) {\n };\n IndexBufferFlash.prototype.dispose = function () {\n this._context.addStream(String.fromCharCode(OpCodes.disposeIndexBuffer, this._pId + OpCodes.intMask));\n this._context.execute();\n this._context._iRemoveResource(this);\n this._context = null;\n };\n Object.defineProperty(IndexBufferFlash.prototype, \"numIndices\", {\n get: function () {\n return this._numIndices;\n },\n enumerable: true,\n configurable: true\n });\n return IndexBufferFlash;\n}(ResourceBaseFlash));\nexport { IndexBufferFlash };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/flash/IndexBufferFlash.js","import * as tslib_1 from \"tslib\";\nimport { ContextFlash } from \"./ContextFlash\";\nimport { OpCodes } from \"./OpCodes\";\nimport { ResourceBaseFlash } from \"./ResourceBaseFlash\";\nvar ProgramFlash = (function (_super) {\n tslib_1.__extends(ProgramFlash, _super);\n function ProgramFlash(context) {\n var _this = _super.call(this) || this;\n _this._context = context;\n _this._context.addStream(String.fromCharCode(OpCodes.initProgram));\n _this._pId = _this._context.execute();\n _this._context._iAddResource(_this);\n return _this;\n }\n ProgramFlash.prototype.upload = function (vertexProgram, fragmentProgram) {\n this._context.addStream(String.fromCharCode(OpCodes.uploadAGALBytesProgram, this._pId + OpCodes.intMask) + vertexProgram.readBase64String(vertexProgram.length) + \"%\" + fragmentProgram.readBase64String(fragmentProgram.length) + \"%\");\n if (ContextFlash.debug)\n this._context.execute();\n };\n ProgramFlash.prototype.dispose = function () {\n this._context.addStream(String.fromCharCode(OpCodes.disposeProgram, this._pId + OpCodes.intMask));\n this._context.execute();\n this._context._iRemoveResource(this);\n this._context = null;\n };\n return ProgramFlash;\n}(ResourceBaseFlash));\nexport { ProgramFlash };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/flash/ProgramFlash.js","import * as tslib_1 from \"tslib\";\nimport { ByteArrayBase } from \"@awayjs/core\";\nimport { OpCodes } from \"./OpCodes\";\nimport { ResourceBaseFlash } from \"./ResourceBaseFlash\";\nvar TextureFlash = (function (_super) {\n tslib_1.__extends(TextureFlash, _super);\n function TextureFlash(context, width, height, format, forRTT, streaming) {\n if (streaming === void 0) { streaming = false; }\n var _this = _super.call(this) || this;\n _this._context = context;\n _this._width = width;\n _this._height = height;\n _this._context.addStream(String.fromCharCode(OpCodes.initTexture, (forRTT ? OpCodes.trueValue : OpCodes.falseValue)) + width + \",\" + height + \",\" + streaming + \",\" + format + \"$\");\n _this._pId = _this._context.execute();\n _this._context._iAddResource(_this);\n return _this;\n }\n Object.defineProperty(TextureFlash.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextureFlash.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n TextureFlash.prototype.dispose = function () {\n this._context.addStream(String.fromCharCode(OpCodes.disposeTexture) + this._pId.toString() + \",\");\n this._context.execute();\n this._context._iRemoveResource(this);\n this._context = null;\n };\n TextureFlash.prototype.uploadFromImage = function (image2D, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n var data = image2D.getImageData().data;\n var pos = 0;\n var bytes = ByteArrayBase.internalGetBase64String(data.length, function () {\n return data[pos++];\n }, null);\n this._context.addStream(String.fromCharCode(OpCodes.uploadBytesTexture) + this._pId + \",\" + miplevel + \",\" + (this._width >> miplevel) + \",\" + (this._height >> miplevel) + \",\" + bytes + \"%\");\n this._context.execute();\n };\n TextureFlash.prototype.uploadFromURL = function (urlRequest, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n };\n return TextureFlash;\n}(ResourceBaseFlash));\nexport { TextureFlash };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/flash/TextureFlash.js","import * as tslib_1 from \"tslib\";\nimport { OpCodes } from \"./OpCodes\";\nimport { ResourceBaseFlash } from \"./ResourceBaseFlash\";\nvar VertexBufferFlash = (function (_super) {\n tslib_1.__extends(VertexBufferFlash, _super);\n function VertexBufferFlash(context, numVertices, dataPerVertex) {\n var _this = _super.call(this) || this;\n _this._context = context;\n _this._numVertices = numVertices;\n _this._dataPerVertex = dataPerVertex;\n _this._context.addStream(String.fromCharCode(OpCodes.initVertexBuffer, dataPerVertex + OpCodes.intMask) + numVertices.toString() + \",\");\n _this._pId = _this._context.execute();\n _this._context._iAddResource(_this);\n return _this;\n }\n VertexBufferFlash.prototype.uploadFromArray = function (data, startVertex, numVertices) {\n this._context.addStream(String.fromCharCode(OpCodes.uploadArrayVertexBuffer, this._pId + OpCodes.intMask) + data.join() + \"#\" + [startVertex, numVertices].join() + \",\");\n this._context.execute();\n };\n VertexBufferFlash.prototype.uploadFromByteArray = function (data, startVertex, numVertices) {\n };\n Object.defineProperty(VertexBufferFlash.prototype, \"numVertices\", {\n get: function () {\n return this._numVertices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexBufferFlash.prototype, \"dataPerVertex\", {\n get: function () {\n return this._dataPerVertex;\n },\n enumerable: true,\n configurable: true\n });\n VertexBufferFlash.prototype.dispose = function () {\n this._context.addStream(String.fromCharCode(OpCodes.disposeVertexBuffer, this._pId + OpCodes.intMask));\n this._context.execute();\n this._context._iRemoveResource(this);\n this._context = null;\n };\n return VertexBufferFlash;\n}(ResourceBaseFlash));\nexport { VertexBufferFlash };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/flash/VertexBufferFlash.js","import { CoordinateSystem } from \"@awayjs/core\";\nimport { ContextGLClearMask } from \"../base/ContextGLClearMask\";\nimport { ContextGLProgramType } from \"../base/ContextGLProgramType\";\nimport { ContextGLTriangleFace } from \"../base/ContextGLTriangleFace\";\nimport { ContextGLCompareMode } from \"../base/ContextGLCompareMode\";\nimport { ContextGLStencilAction } from \"../base/ContextGLStencilAction\";\nimport { CubeTextureFlash } from \"./CubeTextureFlash\";\nimport { IndexBufferFlash } from \"./IndexBufferFlash\";\nimport { OpCodes } from \"./OpCodes\";\nimport { ProgramFlash } from \"./ProgramFlash\";\nimport { TextureFlash } from \"./TextureFlash\";\nimport { VertexBufferFlash } from \"./VertexBufferFlash\";\nvar ContextFlash = (function () {\n //TODO: get rid of hack that fixes including definition file\n function ContextFlash(container, callback) {\n this._cmdStream = \"\";\n this._resources = new Array();\n var swfVersionStr = \"11.0.0\";\n // To use express install, set to playerProductInstall.swf, otherwise the empty string.\n var flashvars = {\n id: container.id\n };\n var params = {\n quality: \"high\",\n bgcolor: \"#ffffff\",\n allowscriptaccess: \"sameDomain\",\n allowfullscreen: \"true\",\n wmode: \"direct\"\n };\n this._errorCheckingEnabled = false;\n this._iDriverInfo = \"Unknown\";\n var attributes = {\n salign: \"tl\",\n id: container.id,\n name: container[\"name\"] //TODO: needed?\n };\n this._oldCanvas = container.cloneNode(); // keep the old one to restore on dispose\n this._oldParent = container.parentNode;\n var context3dObj = this;\n ContextFlash.contexts[container.id] = this;\n function callbackSWFObject(callbackInfo) {\n if (!callbackInfo.success)\n return;\n context3dObj._container = callbackInfo.ref;\n context3dObj._iCallback = callback;\n }\n //swfobject.embedSWF(\"libs/molehill_js_flashbridge.swf\", container.id, String(container.width), String(container.height), swfVersionStr, \"\", flashvars, params, attributes, callbackSWFObject);\n }\n ContextFlash.prototype.enableStencil = function () {\n };\n ContextFlash.prototype.disableStencil = function () {\n };\n Object.defineProperty(ContextFlash.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContextFlash.prototype, \"driverInfo\", {\n get: function () {\n return this._iDriverInfo;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContextFlash.prototype, \"errorCheckingEnabled\", {\n get: function () {\n return this._errorCheckingEnabled;\n },\n set: function (value) {\n if (this._errorCheckingEnabled == value)\n return;\n this._errorCheckingEnabled = value;\n this.addStream(String.fromCharCode(OpCodes.enableErrorChecking, value ? OpCodes.trueValue : OpCodes.falseValue));\n this.execute();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContextFlash.prototype, \"pixelRatio\", {\n get: function () {\n return 1;\n },\n enumerable: true,\n configurable: true\n });\n ContextFlash.prototype._iAddResource = function (resource) {\n this._resources.push(resource);\n };\n ContextFlash.prototype._iRemoveResource = function (resource) {\n this._resources.splice(this._resources.indexOf(resource));\n };\n ContextFlash.prototype.createTexture = function (width, height, format, optimizeForRenderToTexture, streamingLevels) {\n if (streamingLevels === void 0) { streamingLevels = 0; }\n //TODO:streaming\n return new TextureFlash(this, width, height, format, optimizeForRenderToTexture);\n };\n ContextFlash.prototype.createCubeTexture = function (size, format, optimizeForRenderToTexture, streamingLevels) {\n if (streamingLevels === void 0) { streamingLevels = 0; }\n //TODO:streaming\n return new CubeTextureFlash(this, size, format, optimizeForRenderToTexture);\n };\n ContextFlash.prototype.setTextureAt = function (sampler, texture) {\n if (texture) {\n this.addStream(String.fromCharCode(OpCodes.setTextureAt) + sampler + \",\" + texture.id + \",\");\n }\n else {\n this.addStream(String.fromCharCode(OpCodes.clearTextureAt) + sampler.toString() + \",\");\n }\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.setSamplerStateAt = function (sampler, wrap, filter, mipfilter) {\n //nothing to do here\n };\n ContextFlash.prototype.setStencilActions = function (triangleFace, compareMode, actionOnBothPass, actionOnDepthFail, actionOnDepthPassStencilFail, coordinateSystem) {\n if (triangleFace === void 0) { triangleFace = ContextGLTriangleFace.FRONT_AND_BACK; }\n if (compareMode === void 0) { compareMode = ContextGLCompareMode.ALWAYS; }\n if (actionOnBothPass === void 0) { actionOnBothPass = ContextGLStencilAction.KEEP; }\n if (actionOnDepthFail === void 0) { actionOnDepthFail = ContextGLStencilAction.KEEP; }\n if (actionOnDepthPassStencilFail === void 0) { actionOnDepthPassStencilFail = ContextGLStencilAction.KEEP; }\n if (coordinateSystem === void 0) { coordinateSystem = CoordinateSystem.LEFT_HANDED; }\n this.addStream(String.fromCharCode(OpCodes.setStencilActions) + triangleFace + \"$\" + compareMode + \"$\" + actionOnBothPass + \"$\" + actionOnDepthFail + \"$\" + actionOnDepthPassStencilFail + \"$\");\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.setStencilReferenceValue = function (referenceValue, readMask, writeMask) {\n if (readMask === void 0) { readMask = 0xFF; }\n if (writeMask === void 0) { writeMask = 0xFF; }\n this.addStream(String.fromCharCode(OpCodes.setStencilReferenceValue, referenceValue + OpCodes.intMask, readMask + OpCodes.intMask, writeMask + OpCodes.intMask));\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.setCulling = function (triangleFaceToCull, coordinateSystem) {\n if (coordinateSystem === void 0) { coordinateSystem = CoordinateSystem.LEFT_HANDED; }\n //TODO implement coordinateSystem option\n this.addStream(String.fromCharCode(OpCodes.setCulling) + triangleFaceToCull + \"$\");\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.drawIndices = function (mode, indexBuffer, firstIndex, numIndices) {\n if (firstIndex === void 0) { firstIndex = 0; }\n if (numIndices === void 0) { numIndices = -1; }\n firstIndex = firstIndex || 0;\n if (!numIndices || numIndices < 0)\n numIndices = indexBuffer.numIndices;\n //assume triangles\n this.addStream(String.fromCharCode(OpCodes.drawTriangles, indexBuffer.id + OpCodes.intMask) + firstIndex + \",\" + numIndices + \",\");\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.drawVertices = function (mode, firstVertex, numVertices) {\n if (firstVertex === void 0) { firstVertex = 0; }\n if (numVertices === void 0) { numVertices = -1; }\n //can't be done in Stage3D\n };\n ContextFlash.prototype.setProgramConstantsFromArray = function (programType, data) {\n var startIndex;\n var numRegisters = data.length / 4;\n var target = (programType == ContextGLProgramType.VERTEX) ? OpCodes.trueValue : OpCodes.falseValue;\n for (var i = 0; i < numRegisters; i++) {\n startIndex = i * 4;\n this.addStream(String.fromCharCode(OpCodes.setProgramConstant, target, i + OpCodes.intMask) + data[startIndex] + \",\" + data[startIndex + 1] + \",\" + data[startIndex + 2] + \",\" + data[startIndex + 3] + \",\");\n if (ContextFlash.debug)\n this.execute();\n }\n };\n ContextFlash.prototype.setProgram = function (program) {\n this.addStream(String.fromCharCode(OpCodes.setProgram, program.id + OpCodes.intMask));\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.present = function () {\n this.addStream(String.fromCharCode(OpCodes.present));\n this.execute();\n };\n ContextFlash.prototype.clear = function (red, green, blue, alpha, depth, stencil, mask) {\n if (red === void 0) { red = 0; }\n if (green === void 0) { green = 0; }\n if (blue === void 0) { blue = 0; }\n if (alpha === void 0) { alpha = 1; }\n if (depth === void 0) { depth = 1; }\n if (stencil === void 0) { stencil = 0; }\n if (mask === void 0) { mask = ContextGLClearMask.ALL; }\n this.addStream(String.fromCharCode(OpCodes.clear) + red + \",\" + green + \",\" + blue + \",\" + alpha + \",\" + depth + \",\" + stencil + \",\" + mask + \",\");\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.createProgram = function () {\n return new ProgramFlash(this);\n };\n ContextFlash.prototype.createVertexBuffer = function (numVertices, data32PerVertex) {\n return new VertexBufferFlash(this, numVertices, data32PerVertex);\n };\n ContextFlash.prototype.createIndexBuffer = function (numIndices) {\n return new IndexBufferFlash(this, numIndices);\n };\n ContextFlash.prototype.configureBackBuffer = function (width, height, antiAlias, enableDepthAndStencil) {\n if (enableDepthAndStencil === void 0) { enableDepthAndStencil = true; }\n this._width = width;\n this._height = height;\n //TODO: add Anitalias setting\n this.addStream(String.fromCharCode(OpCodes.configureBackBuffer) + width + \",\" + height + \",\");\n };\n ContextFlash.prototype.drawToBitmapImage2D = function (destination) {\n //TODO\n };\n ContextFlash.prototype.setVertexBufferAt = function (index, buffer, bufferOffset, format) {\n if (bufferOffset === void 0) { bufferOffset = 0; }\n if (format === void 0) { format = null; }\n if (buffer) {\n this.addStream(String.fromCharCode(OpCodes.setVertexBufferAt, index + OpCodes.intMask) + buffer.id + \",\" + bufferOffset + \",\" + format + \"$\");\n }\n else {\n this.addStream(String.fromCharCode(OpCodes.clearVertexBufferAt, index + OpCodes.intMask));\n }\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.setColorMask = function (red, green, blue, alpha) {\n this.addStream(String.fromCharCode(OpCodes.setColorMask, red ? OpCodes.trueValue : OpCodes.falseValue, green ? OpCodes.trueValue : OpCodes.falseValue, blue ? OpCodes.trueValue : OpCodes.falseValue, alpha ? OpCodes.trueValue : OpCodes.falseValue));\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.setBlendFactors = function (sourceFactor, destinationFactor) {\n this.addStream(String.fromCharCode(OpCodes.setBlendFactors) + sourceFactor + \"$\" + destinationFactor + \"$\");\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.setRenderToTexture = function (target, enableDepthAndStencil, antiAlias, surfaceSelector) {\n if (enableDepthAndStencil === void 0) { enableDepthAndStencil = false; }\n if (antiAlias === void 0) { antiAlias = 0; }\n if (surfaceSelector === void 0) { surfaceSelector = 0; }\n if (target === null || target === undefined) {\n this.addStream(String.fromCharCode(OpCodes.clearRenderToTexture));\n }\n else {\n this.addStream(String.fromCharCode(OpCodes.setRenderToTexture, enableDepthAndStencil ? OpCodes.trueValue : OpCodes.falseValue) + target.id + \",\" + (antiAlias || 0) + \",\");\n }\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.setRenderToBackBuffer = function () {\n this.addStream(String.fromCharCode(OpCodes.clearRenderToTexture));\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.setScissorRectangle = function (rectangle) {\n if (rectangle) {\n this.addStream(String.fromCharCode(OpCodes.setScissorRect) + rectangle.x + \",\" + rectangle.y + \",\" + rectangle.width + \",\" + rectangle.height + \",\");\n }\n else {\n this.addStream(String.fromCharCode(OpCodes.clearScissorRect));\n }\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.setDepthTest = function (depthMask, passCompareMode) {\n this.addStream(String.fromCharCode(OpCodes.setDepthTest, depthMask ? OpCodes.trueValue : OpCodes.falseValue) + passCompareMode + \"$\");\n if (ContextFlash.debug)\n this.execute();\n };\n ContextFlash.prototype.dispose = function () {\n if (this._container == null)\n return;\n console.log(\"Context3D dispose, releasing \" + this._resources.length + \" resources.\");\n while (this._resources.length)\n this._resources[0].dispose();\n if (this._container) {\n // encode command\n this.addStream(String.fromCharCode(OpCodes.disposeContext));\n this.execute();\n //swfobject.removeSWF(this._oldCanvas.id);\n if (this._oldCanvas && this._oldParent) {\n this._oldParent.appendChild(this._oldCanvas);\n this._oldParent = null;\n }\n this._container = null;\n }\n this._oldCanvas = null;\n };\n ContextFlash.prototype.addStream = function (stream) {\n this._cmdStream += stream;\n };\n ContextFlash.prototype.execute = function () {\n if (ContextFlash.logStream)\n console.log(this._cmdStream);\n var result = this._container[\"CallFunction\"](\"\" + this._cmdStream + \"\");\n if (Number(result) <= -3)\n throw \"Exec stream failed\";\n this._cmdStream = \"\";\n return Number(result);\n };\n return ContextFlash;\n}());\nexport { ContextFlash };\nContextFlash.contexts = new Object();\nContextFlash.debug = false;\nContextFlash.logStream = false;\n/**\n* global function for flash callback\n*/\nfunction mountain_js_context_available(id, driverInfo) {\n var ctx = ContextFlash.contexts[id];\n if (ctx._iCallback) {\n ctx._iDriverInfo = driverInfo;\n // get out of the current JS stack frame and call back from flash player\n var timeOutId = window.setTimeout(function () {\n window.clearTimeout(timeOutId);\n try {\n ctx._iCallback(ctx);\n }\n catch (e) {\n console.log(\"Callback failed during flash initialization with '\" + e.toString() + \"'\");\n }\n }, 1);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/flash/ContextFlash.js","var GLESAssetBase = (function () {\n function GLESAssetBase(context, id) {\n this._context = context;\n this._id = id;\n }\n Object.defineProperty(GLESAssetBase.prototype, \"id\", {\n get: function () {\n return this._id;\n },\n enumerable: true,\n configurable: true\n });\n return GLESAssetBase;\n}());\nexport { GLESAssetBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/gles/GLESAssetBase.js","import * as tslib_1 from \"tslib\";\nimport { OpCodes } from \"../flash/OpCodes\";\nimport { GLESAssetBase } from \"./GLESAssetBase\";\nvar TextureBaseGLES = (function (_super) {\n tslib_1.__extends(TextureBaseGLES, _super);\n function TextureBaseGLES(context, gl, id) {\n var _this = _super.call(this, context, id) || this;\n _this.textureType = \"\";\n return _this;\n // this._gl = gl;\n }\n TextureBaseGLES.prototype.dispose = function () {\n //console.log(\"dispose texturedata \"+this.id);\n ///this._context.addStream(String.fromCharCode(OpCodes.disposeTexture) + this.id.toString() + \"#END\");\n this._context._createBytes.writeInt(OpCodes.disposeTexture);\n this._context._createBytes.writeInt(this.id);\n //this._context.execute();\n //GLESConnector.gles.disposeTexture(this.id);\n // this._gl.deleteTexture(this._glTexture);\n };\n Object.defineProperty(TextureBaseGLES.prototype, \"glTexture\", {\n get: function () {\n return this._glTexture;\n },\n enumerable: true,\n configurable: true\n });\n TextureBaseGLES.prototype.generateMipmaps = function () {\n //GLESConnector.gles.generateMipmaps(this.id);\n // this._gl.bindTexture( this._gl.TEXTURE_2D, this._glTexture );\n // this._gl.generateMipmap(this._gl.TEXTURE_2D);\n // //this._gl.bindTexture( this._gl.TEXTURE_2D, null );\n };\n return TextureBaseGLES;\n}(GLESAssetBase));\nexport { TextureBaseGLES };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/gles/TextureBaseGLES.js","import * as tslib_1 from \"tslib\";\nimport { TextureBaseGLES } from \"./TextureBaseGLES\";\nvar CubeTextureGLES = (function (_super) {\n tslib_1.__extends(CubeTextureGLES, _super);\n function CubeTextureGLES(context, gl, size, id) {\n var _this = _super.call(this, context, gl, id) || this;\n _this._textureSelectorDictionary = new Array(6);\n _this.textureType = \"textureCube\";\n _this._size = size;\n return _this;\n //todo\n // this._glTexture = this._gl.createTexture();\n //\n // this._textureSelectorDictionary[0] = gl.TEXTURE_CUBE_MAP_POSITIVE_X;\n // this._textureSelectorDictionary[1] = gl.TEXTURE_CUBE_MAP_NEGATIVE_X;\n // this._textureSelectorDictionary[2] = gl.TEXTURE_CUBE_MAP_POSITIVE_Y;\n // this._textureSelectorDictionary[3] = gl.TEXTURE_CUBE_MAP_NEGATIVE_Y;\n // this._textureSelectorDictionary[4] = gl.TEXTURE_CUBE_MAP_POSITIVE_Z;\n // this._textureSelectorDictionary[5] = gl.TEXTURE_CUBE_MAP_NEGATIVE_Z;\n }\n CubeTextureGLES.prototype.uploadFromImage = function (imageCube, side, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n //todo\n // this._gl.bindTexture(this._gl.TEXTURE_CUBE_MAP, this._glTexture);\n // this._gl.texImage2D(this._textureSelectorDictionary[side], miplevel, this._gl.RGBA, this._gl.RGBA, this._gl.UNSIGNED_BYTE, data);\n // this._gl.bindTexture(this._gl.TEXTURE_CUBE_MAP, null);\n };\n CubeTextureGLES.prototype.uploadCompressedTextureFromByteArray = function (data, byteArrayOffset /*uint*/, async) {\n //todo\n if (async === void 0) { async = false; }\n };\n Object.defineProperty(CubeTextureGLES.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n return CubeTextureGLES;\n}(TextureBaseGLES));\nexport { CubeTextureGLES };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/gles/CubeTextureGLES.js","import * as tslib_1 from \"tslib\";\nimport { GLESAssetBase } from \"./GLESAssetBase\";\nvar IndexBufferGLES = (function (_super) {\n tslib_1.__extends(IndexBufferGLES, _super);\n function IndexBufferGLES(context, gl, numIndices, id) {\n var _this = _super.call(this, context, id) || this;\n _this._gl = gl;\n // this._buffer = this._gl.createBuffer();\n _this._numIndices = numIndices;\n return _this;\n }\n IndexBufferGLES.prototype.uploadFromArray = function (data, startOffset, count) {\n //GLESConnector.gles.uploadIndexDataFromArray(this.id, data, startOffset, count);\n // this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER, this._buffer);\n //\n // if (startOffset)\n // \tthis._gl.bufferSubData(this._gl.ELEMENT_ARRAY_BUFFER, startOffset*2, new Uint16Array(data));\n // else\n // \tthis._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(data), this._gl.STATIC_DRAW);\n };\n IndexBufferGLES.prototype.uploadFromByteArray = function (data, startOffset, count) {\n //GLESConnector.gles.uploadIndexDataFromByteArray(this.id, data, startOffset, count);\n // this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER, this._buffer);\n //\n // if (startOffset)\n // \tthis._gl.bufferSubData(this._gl.ELEMENT_ARRAY_BUFFER, startOffset*2, data);\n // else\n // \tthis._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER, data, this._gl.STATIC_DRAW);\n };\n IndexBufferGLES.prototype.dispose = function () {\n //GLESConnector.gles.disposeIndexBuffer(this.id);\n // this._gl.deleteBuffer(this._buffer);\n };\n Object.defineProperty(IndexBufferGLES.prototype, \"numIndices\", {\n get: function () {\n return this._numIndices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(IndexBufferGLES.prototype, \"glBuffer\", {\n get: function () {\n return this._buffer;\n },\n enumerable: true,\n configurable: true\n });\n return IndexBufferGLES;\n}(GLESAssetBase));\nexport { IndexBufferGLES };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/gles/IndexBufferGLES.js","var GLESConnector = (function () {\n function GLESConnector() {\n }\n Object.defineProperty(GLESConnector, \"gles\", {\n get: function () {\n if (!GLESConnector._gles)\n throw (\"Error: Set GlesConnector.gles before calling methods on ContextGLES!\");\n return GLESConnector._gles;\n },\n set: function (value) {\n GLESConnector._gles = value;\n },\n enumerable: true,\n configurable: true\n });\n ;\n ;\n return GLESConnector;\n}());\nexport { GLESConnector };\nGLESConnector._gles = null;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/gles/GLESConnector.js","import * as tslib_1 from \"tslib\";\nimport { AGALTokenizer } from \"../aglsl/AGALTokenizer\";\nimport { AGLSLParser } from \"../aglsl/AGLSLParser\";\nimport { OpCodes } from \"../flash/OpCodes\";\nimport { GLESAssetBase } from \"./GLESAssetBase\";\nimport { GLESConnector } from \"./GLESConnector\";\nimport { Byte32Array } from \"@awayjs/core\";\nvar ProgramGLES = (function (_super) {\n tslib_1.__extends(ProgramGLES, _super);\n function ProgramGLES(context, gl, id) {\n var _this = _super.call(this, context, id) || this;\n _this._uniforms = [[], [], []];\n _this._attribs = [];\n return _this;\n //console.log(\"awayjs created program with id \"+ id);\n // this._gl = gl;\n // this._program = this._gl.createProgram();\n }\n ProgramGLES.prototype.upload = function (vertexProgram, fragmentProgram) {\n //detect whether highp can be used\n var vertexPrecision = (this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER, this._gl.HIGH_FLOAT).precision != 0) ? \"highp\" : \"mediump\";\n var fragmentPrecision = (this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER, this._gl.HIGH_FLOAT).precision != 0) ? \"highp\" : \"mediump\";\n var vertexString = ProgramGLES._aglslParser.parse(ProgramGLES._tokenizer.decribeAGALByteArray(vertexProgram), vertexPrecision);\n var fragmentString = ProgramGLES._aglslParser.parse(ProgramGLES._tokenizer.decribeAGALByteArray(fragmentProgram), fragmentPrecision);\n //(String.fromCharCode(OpCodes.uploadProgram)+\"\"+this.id + \"###\"+vertexString + \"###\" + fragmentString + \"#END\");\n var newSendbytes = new Byte32Array();\n newSendbytes.writeInt(1); //tells cpp that this is a create-bytes chunk\n newSendbytes.writeInt(OpCodes.uploadProgram);\n newSendbytes.writeInt(this.id);\n newSendbytes.writeUTFBytes(vertexString);\n newSendbytes.writeUTFBytes(fragmentString);\n newSendbytes.bytePosition = 0;\n var localInt32View = new Int32Array(newSendbytes.byteLength / 4);\n newSendbytes.readInt32Array(localInt32View);\n GLESConnector.gles.sendGLESCommands(localInt32View.buffer);\n };\n ProgramGLES.prototype.getUniformLocation = function (programType, index) {\n if (index === void 0) { index = -1; }\n // if (this._uniforms[programType][index + 1] != null)\n // \treturn this._uniforms[programType][index + 1];\n //\n // var name:string = (index == -1)? ProgramGLES._uniformLocationNameDictionary[programType] : ProgramGLES._uniformLocationNameDictionary[programType] + index;\n // return (this._uniforms[programType][index + 1] = this._gl.getUniformLocation(this._program, name));\n return null;\n };\n //\n // public getUniformLocation(programType:number, index:number):WebGLUniformLocation\n // {\n // \tif (this._uniforms[programType][index] != null)\n // \t\treturn this._uniforms[programType][index];\n //\n // \treturn (this._uniforms[programType][index] = this._gl.getUniformLocation(this._program, ProgramGLES._uniformLocationNameDictionary[programType] + index));\n // }\n ProgramGLES.prototype.getAttribLocation = function (index) {\n // if (this._attribs[index] != null)\n // \treturn this._attribs[index];\n //\n // return (this._attribs[index] = this._gl.getAttribLocation(this._program, \"va\" + index));\n return 0;\n };\n ProgramGLES.prototype.dispose = function () {\n //this._context.addStream(String.fromCharCode(OpCodes.disposeProgram)+\"\"+ this.id);\n this._context._createBytes.writeInt(OpCodes.disposeProgram);\n this._context._createBytes.writeInt(this.id);\n //GLESConnector.gles.disposeProgram(this.id);\n // this._gl.deleteProgram(this._program);\n };\n ProgramGLES.prototype.focusProgram = function () {\n //GLESConnector.gles.focusProgram(this.id);\n // this._gl.useProgram(this._program);\n };\n Object.defineProperty(ProgramGLES.prototype, \"glProgram\", {\n get: function () {\n return this._program;\n },\n enumerable: true,\n configurable: true\n });\n return ProgramGLES;\n}(GLESAssetBase));\nexport { ProgramGLES };\nProgramGLES._tokenizer = new AGALTokenizer();\nProgramGLES._aglslParser = new AGLSLParser();\nProgramGLES._uniformLocationNameDictionary = [\"fc\", \"fs\", \"vc\"];\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/gles/ProgramGLES.js","import * as tslib_1 from \"tslib\";\nimport { OpCodes } from \"../flash/OpCodes\";\nimport { TextureBaseGLES } from \"./TextureBaseGLES\";\nimport { GLESConnector } from \"./GLESConnector\";\nimport { Byte32Array } from \"@awayjs/core\";\nvar TextureGLES = (function (_super) {\n tslib_1.__extends(TextureGLES, _super);\n function TextureGLES(context, gl, width, height, id) {\n var _this = _super.call(this, context, gl, id) || this;\n _this.textureType = \"texture2d\";\n _this._width = width;\n _this._height = height;\n return _this;\n //\n // this._glTexture = this._gl.createTexture();\n }\n Object.defineProperty(TextureGLES.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextureGLES.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextureGLES.prototype, \"frameBuffer\", {\n get: function () {\n //this._context.addStream(String.fromCharCode(OpCodes.getFrameBufferForTexture) + this.id.toString() + \"#END\");\n /*\n this._context._createBytes.ensureSpace(2);//the space for the text is ensured during writeUTFBytes\n this._context._createBytes.writeUnsignedByte(OpCodes.disposeVertexBuffer);\n this._context._createBytes.writeByte(this.id);\n */\n //this._context.execute();\n // if (!this._frameBuffer) {\n // \tthis._frameBuffer = this._gl.createFramebuffer();\n // \tthis._gl.bindFramebuffer(this._gl.FRAMEBUFFER, this._frameBuffer);\n // \tthis._gl.bindTexture(this._gl.TEXTURE_2D, this._glTexture);\n // \tthis._gl.texImage2D(this._gl.TEXTURE_2D, 0, this._gl.RGBA, this._width, this._height, 0, this._gl.RGBA, this._gl.UNSIGNED_BYTE, null);\n //\n // \tvar renderBuffer:GLESRenderbuffer = this._gl.createRenderbuffer();\n // \tthis._gl.bindRenderbuffer(this._gl.RENDERBUFFER, renderBuffer);\n // \tthis._gl.renderbufferStorage(this._gl.RENDERBUFFER, this._gl.DEPTH_STENCIL, this._width, this._height);\n //\n // \tthis._gl.framebufferTexture2D(this._gl.FRAMEBUFFER, this._gl.COLOR_ATTACHMENT0, this._gl.TEXTURE_2D, this._glTexture, 0);\n // \tthis._gl.framebufferRenderbuffer(this._gl.FRAMEBUFFER, this._gl.DEPTH_STENCIL_ATTACHMENT, this._gl.RENDERBUFFER, renderBuffer);\n //\n // \tthis._gl.bindTexture(this._gl.TEXTURE_2D, null);\n // \tthis._gl.bindRenderbuffer(this._gl.RENDERBUFFER, null);\n // \tthis._gl.bindFramebuffer(this._gl.FRAMEBUFFER, null);\n // }\n return this._frameBuffer;\n },\n enumerable: true,\n configurable: true\n });\n TextureGLES.prototype.uploadFromImage = function (image2D, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n var newSendbytes = new Byte32Array();\n newSendbytes.writeInt(1); //tells cpp that this is a create-bytes chunk\n newSendbytes.writeInt(OpCodes.uploadBytesTexture | miplevel << 8);\n newSendbytes.writeInt(this.id);\n newSendbytes.writeFloat(this._width);\n newSendbytes.writeFloat(this._height);\n newSendbytes.writeInt(image2D.getImageData().data.buffer.byteLength);\n newSendbytes.writeInt32Array(new Int32Array(image2D.getImageData().data.buffer));\n newSendbytes.bytePosition = 0;\n var localInt32View = new Int32Array(newSendbytes.byteLength / 4);\n newSendbytes.readInt32Array(localInt32View);\n GLESConnector.gles.sendGLESCommands(localInt32View.buffer);\n };\n TextureGLES.prototype.uploadFromURL = function (urlRequest, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n var newSendbytes = new Byte32Array();\n newSendbytes.writeInt(1); //tells cpp that this is a create-bytes chunk\n newSendbytes.writeInt(OpCodes.uploadTextureFromURL | miplevel << 8);\n newSendbytes.writeInt(this.id);\n var myURLString = urlRequest.url.replace(/[^a-zA-Z0-9]/g, '');\n console.log(\"urlRequest.url \" + myURLString);\n newSendbytes.writeUTFBytes(myURLString);\n newSendbytes.bytePosition = 0;\n var localInt32View = new Int32Array(newSendbytes.byteLength / 4);\n newSendbytes.readInt32Array(localInt32View);\n GLESConnector.gles.sendGLESCommands(localInt32View.buffer);\n };\n TextureGLES.prototype.uploadCompressedTextureFromByteArray = function (data, byteArrayOffset /*uint*/, async) {\n if (async === void 0) { async = false; }\n //GLESConnector.gles.uploadCompressedTextureFromByteArray(this.id, data, byteArrayOffset, async);\n // var ext:Object = this._gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n // //this._gl.compressedTexImage2D(this._gl.TEXTURE_2D, 0, this)\n };\n return TextureGLES;\n}(TextureBaseGLES));\nexport { TextureGLES };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/gles/TextureGLES.js","import * as tslib_1 from \"tslib\";\nimport { OpCodes } from \"../flash/OpCodes\";\nimport { GLESAssetBase } from \"./GLESAssetBase\";\nimport { GLESConnector } from \"./GLESConnector\";\nimport { Byte32Array } from \"@awayjs/core\";\nvar VertexBufferGLES = (function (_super) {\n tslib_1.__extends(VertexBufferGLES, _super);\n function VertexBufferGLES(context, gl, numVertices, dataPerVertex, id) {\n var _this = _super.call(this, context, id) || this;\n // this._gl = gl;\n // this._buffer = this._gl.createBuffer();\n _this._numVertices = numVertices;\n _this._dataPerVertex = dataPerVertex;\n return _this;\n }\n VertexBufferGLES.prototype.uploadFromArray = function (vertices, startVertex, numVertices) {\n //GLESConnector.gles.uploadVertexDataFromArray(this.id, vertices, startVertex, numVertices);\n // this._gl.bindBuffer(this._gl.ARRAY_BUFFER, this._buffer);\n //\n // if (startVertex)\n // \tthis._gl.bufferSubData(this._gl.ARRAY_BUFFER, startVertex*this._dataPerVertex, new Float32Array(vertices));\n // else\n // \tthis._gl.bufferData(this._gl.ARRAY_BUFFER, new Float32Array(vertices), this._gl.STATIC_DRAW);\n };\n VertexBufferGLES.prototype.uploadFromByteArray = function (data, startVertex, numVertices) {\n var newSendbytes = new Byte32Array();\n newSendbytes.writeInt(1); //send create bytes\n newSendbytes.writeInt(OpCodes.uploadArrayVertexBuffer);\n newSendbytes.writeInt(this.id);\n newSendbytes.writeInt(startVertex);\n newSendbytes.writeInt(data.byteLength);\n newSendbytes.writeInt32Array(new Int32Array(data)); //TODO: cache the view on the attributebuffer\n newSendbytes.bytePosition = 0;\n var localInt32View = new Int32Array(newSendbytes.byteLength / 4);\n newSendbytes.readInt32Array(localInt32View);\n GLESConnector.gles.sendGLESCommands(localInt32View.buffer);\n };\n Object.defineProperty(VertexBufferGLES.prototype, \"numVertices\", {\n get: function () {\n return this._numVertices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexBufferGLES.prototype, \"dataPerVertex\", {\n get: function () {\n return this._dataPerVertex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexBufferGLES.prototype, \"glBuffer\", {\n get: function () {\n return this._buffer;\n },\n enumerable: true,\n configurable: true\n });\n VertexBufferGLES.prototype.dispose = function () {\n //console.log(\"dispose vertexdata \"+this.id);\n //this._context.addCreateStream(String.fromCharCode(OpCodes.disposeVertexBuffer) + this.id+\"#END\");\n this._context._createBytes.writeInt(OpCodes.disposeVertexBuffer);\n this._context._createBytes.writeInt(this.id);\n };\n return VertexBufferGLES;\n}(GLESAssetBase));\nexport { VertexBufferGLES };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/gles/VertexBufferGLES.js","import { Byte32Array, CoordinateSystem } from \"@awayjs/core\";\nimport { ContextGLBlendFactor } from \"../base/ContextGLBlendFactor\";\nimport { ContextGLDrawMode } from \"../base/ContextGLDrawMode\";\nimport { ContextGLClearMask } from \"../base/ContextGLClearMask\";\nimport { ContextGLCompareMode } from \"../base/ContextGLCompareMode\";\nimport { ContextGLMipFilter } from \"../base/ContextGLMipFilter\";\nimport { ContextGLStencilAction } from \"../base/ContextGLStencilAction\";\nimport { ContextGLTextureFilter } from \"../base/ContextGLTextureFilter\";\nimport { ContextGLTriangleFace } from \"../base/ContextGLTriangleFace\";\nimport { ContextGLWrapMode } from \"../base/ContextGLWrapMode\";\nimport { OpCodes } from \"../flash/OpCodes\";\nimport { CubeTextureGLES } from \"./CubeTextureGLES\";\nimport { IndexBufferGLES } from \"./IndexBufferGLES\";\nimport { ProgramGLES } from \"./ProgramGLES\";\nimport { TextureGLES } from \"./TextureGLES\";\nimport { VertexBufferGLES } from \"./VertexBufferGLES\";\nimport { GLESConnector } from \"./GLESConnector\";\nvar ContextGLES = (function () {\n function ContextGLES(canvas) {\n this._blendFactorDictionary = new Object();\n this._drawModeDictionary = new Object();\n this._compareModeDictionary = new Object();\n this.stencilTriangleFace = new Object();\n this._stencilActionDictionary = new Object();\n this._textureIndexDictionary = new Array(8);\n this._textureTypeDictionary = new Object();\n this._wrapDictionary = new Object();\n this._filterDictionary = new Object();\n this._mipmapFilterDictionary = new Object();\n this._vertexBufferPropertiesDictionary = [];\n this._samplerStates = new Array(8);\n this._stencilReferenceValue = 0;\n this._stencilReadMask = 0xff;\n this._separateStencil = false;\n this._textureCnt = 0;\n this._programCnt = 0;\n this._cubeTextureCnt = 0;\n this._indexBufferCnt = 0;\n this._vertexBufferCnt = 0;\n this._container = canvas;\n this._cmdBytes = new Byte32Array();\n this._createBytes = new Byte32Array();\n ContextGLES._soundBytes = new Byte32Array();\n ContextGLES._soundBytes.writeUnsignedInt(100); //id for sending sound data\n this._cmdBytes.writeUnsignedInt(0); //id for sending cmd data\n this._createBytes.writeUnsignedInt(1); //id for sending create data\n this._blendFactorDictionary[ContextGLBlendFactor.ONE] = 0;\n this._blendFactorDictionary[ContextGLBlendFactor.DESTINATION_ALPHA] = 1;\n this._blendFactorDictionary[ContextGLBlendFactor.DESTINATION_COLOR] = 2;\n this._blendFactorDictionary[ContextGLBlendFactor.ONE_MINUS_DESTINATION_ALPHA] = 3;\n this._blendFactorDictionary[ContextGLBlendFactor.ONE_MINUS_DESTINATION_COLOR] = 4;\n this._blendFactorDictionary[ContextGLBlendFactor.ONE_MINUS_SOURCE_ALPHA] = 5;\n this._blendFactorDictionary[ContextGLBlendFactor.ONE_MINUS_SOURCE_COLOR] = 6;\n this._blendFactorDictionary[ContextGLBlendFactor.SOURCE_ALPHA] = 7;\n this._blendFactorDictionary[ContextGLBlendFactor.SOURCE_COLOR] = 8;\n this._blendFactorDictionary[ContextGLBlendFactor.ZERO] = 9;\n this._drawModeDictionary[ContextGLDrawMode.LINES] = 0;\n this._drawModeDictionary[ContextGLDrawMode.TRIANGLES] = 1;\n this._compareModeDictionary[ContextGLCompareMode.ALWAYS] = 0;\n this._compareModeDictionary[ContextGLCompareMode.EQUAL] = 1;\n this._compareModeDictionary[ContextGLCompareMode.GREATER] = 2;\n this._compareModeDictionary[ContextGLCompareMode.GREATER_EQUAL] = 3;\n this._compareModeDictionary[ContextGLCompareMode.LESS] = 4;\n this._compareModeDictionary[ContextGLCompareMode.LESS_EQUAL] = 5;\n this._compareModeDictionary[ContextGLCompareMode.NEVER] = 6;\n this._compareModeDictionary[ContextGLCompareMode.NOT_EQUAL] = 7;\n this.stencilTriangleFace[ContextGLTriangleFace.BACK] = 2;\n this.stencilTriangleFace[ContextGLTriangleFace.FRONT] = 1;\n this.stencilTriangleFace[ContextGLTriangleFace.FRONT_AND_BACK] = 0;\n //\n this._stencilActionDictionary[ContextGLStencilAction.DECREMENT_SATURATE] = 0;\n this._stencilActionDictionary[ContextGLStencilAction.DECREMENT_WRAP] = 1;\n this._stencilActionDictionary[ContextGLStencilAction.INCREMENT_SATURATE] = 2;\n this._stencilActionDictionary[ContextGLStencilAction.INCREMENT_WRAP] = 3;\n this._stencilActionDictionary[ContextGLStencilAction.INVERT] = 4;\n this._stencilActionDictionary[ContextGLStencilAction.KEEP] = 5;\n this._stencilActionDictionary[ContextGLStencilAction.SET] = 6;\n this._stencilActionDictionary[ContextGLStencilAction.ZERO] = 7;\n this._textureTypeDictionary[\"texture2d\"] = 0;\n this._textureTypeDictionary[\"textureCube\"] = 1;\n this._wrapDictionary[ContextGLWrapMode.REPEAT] = 0;\n this._wrapDictionary[ContextGLWrapMode.CLAMP] = 1;\n this._filterDictionary[ContextGLTextureFilter.LINEAR] = 0;\n this._filterDictionary[ContextGLTextureFilter.NEAREST] = 1;\n this._mipmapFilterDictionary[ContextGLTextureFilter.LINEAR] = new Object();\n this._mipmapFilterDictionary[ContextGLTextureFilter.LINEAR][ContextGLMipFilter.MIPNEAREST] = 2;\n this._mipmapFilterDictionary[ContextGLTextureFilter.LINEAR][ContextGLMipFilter.MIPLINEAR] = 3;\n this._mipmapFilterDictionary[ContextGLTextureFilter.LINEAR][ContextGLMipFilter.MIPNONE] = 0;\n this._mipmapFilterDictionary[ContextGLTextureFilter.NEAREST] = new Object();\n this._mipmapFilterDictionary[ContextGLTextureFilter.NEAREST][ContextGLMipFilter.MIPNEAREST] = 4;\n this._mipmapFilterDictionary[ContextGLTextureFilter.NEAREST][ContextGLMipFilter.MIPLINEAR] = 5;\n this._mipmapFilterDictionary[ContextGLTextureFilter.NEAREST][ContextGLMipFilter.MIPNONE] = 1;\n }\n // soundcommands are excuted on @away/player/AS2SoundAdapter, and stored here as binary data\n // when context is executed, they get send to java along woth the oother data\n ContextGLES.startSound = function (name, id, volume, loop) {\n ContextGLES._soundBytes.writeInt(OpCodes.startSound | ((loop ? 1 : 0) << 8));\n ContextGLES._soundBytes.writeFloat(volume);\n ContextGLES._soundBytes.writeInt(id);\n ContextGLES._soundBytes.writeUTFBytes(name);\n };\n ContextGLES.stopSound = function (id) {\n ContextGLES._soundBytes.writeInt(OpCodes.stopSound);\n ContextGLES._soundBytes.writeInt(id);\n };\n ContextGLES.updateSound = function (id, volume, loop) {\n ContextGLES._soundBytes.writeInt(OpCodes.updateSound | ((loop ? 1 : 0) << 8));\n ContextGLES._soundBytes.writeFloat(volume);\n ContextGLES._soundBytes.writeInt(id);\n };\n Object.defineProperty(ContextGLES.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContextGLES.prototype, \"standardDerivatives\", {\n get: function () {\n return this._standardDerivatives;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContextGLES.prototype, \"pixelRatio\", {\n get: function () {\n return 1;\n },\n enumerable: true,\n configurable: true\n });\n ContextGLES.prototype.enableStencil = function () {\n this._cmdBytes.writeInt(OpCodes.enableStencil);\n };\n ContextGLES.prototype.disableStencil = function () {\n this._cmdBytes.writeInt(OpCodes.disableStencil);\n };\n ContextGLES.prototype.gl = function () {\n return this._gl;\n };\n ContextGLES.prototype.clear = function (red, green, blue, alpha, depth, stencil, mask) {\n if (red === void 0) { red = 0; }\n if (green === void 0) { green = 0; }\n if (blue === void 0) { blue = 0; }\n if (alpha === void 0) { alpha = 1; }\n if (depth === void 0) { depth = 1; }\n if (stencil === void 0) { stencil = 0; }\n if (mask === void 0) { mask = ContextGLClearMask.ALL; }\n this._cmdBytes.writeInt(OpCodes.clear);\n this._cmdBytes.writeFloat(red);\n this._cmdBytes.writeFloat(green);\n this._cmdBytes.writeFloat(blue);\n this._cmdBytes.writeFloat(alpha);\n this._cmdBytes.writeInt(depth);\n this._cmdBytes.writeInt(stencil);\n this._cmdBytes.writeInt(mask);\n };\n ContextGLES.prototype.configureBackBuffer = function (width, height, antiAlias, enableDepthAndStencil) {\n if (enableDepthAndStencil === void 0) { enableDepthAndStencil = true; }\n this._width = width;\n this._height = height;\n this._cmdBytes.writeInt(OpCodes.configureBackBuffer | (enableDepthAndStencil ? 1 : 0) << 8);\n this._cmdBytes.writeFloat(width);\n this._cmdBytes.writeFloat(height);\n };\n ContextGLES.prototype.createCubeTexture = function (size, format, optimizeForRenderToTexture, streamingLevels) {\n if (streamingLevels === void 0) { streamingLevels = 0; }\n // todo: cubetextures not finished / tested for opengl yet\n return new CubeTextureGLES(this, this._gl, size, this._cubeTextureCnt++);\n };\n ContextGLES.prototype.createIndexBuffer = function (numIndices) {\n // todo: indexBuffer not finished / tested for opengl yet\n return new IndexBufferGLES(this, this._gl, numIndices, this._indexBufferCnt++);\n };\n ContextGLES.prototype.createProgram = function () {\n return new ProgramGLES(this, this._gl, this._programCnt++);\n };\n ContextGLES.prototype.createTexture = function (width, height, format, optimizeForRenderToTexture, streamingLevels) {\n if (streamingLevels === void 0) { streamingLevels = 0; }\n //TODO streaming\n return new TextureGLES(this, this._gl, width, height, this._textureCnt++);\n };\n ContextGLES.prototype.createVertexBuffer = function (numVertices, dataPerVertex) {\n return new VertexBufferGLES(this, this._gl, numVertices, dataPerVertex, this._vertexBufferCnt++);\n };\n ContextGLES.prototype.dispose = function () {\n this._cmdBytes.writeInt(OpCodes.disposeContext);\n this.execute();\n };\n ContextGLES.prototype.drawToBitmapImage2D = function (destination) {\n //todo (not needed for icycle (?) )\n // var pixels:Uint8ClampedArray = new Uint8ClampedArray(destination.width*destination.height*4);\n //\n // this._gl.readPixels(0, 0, destination.width, destination.height, this._gl.RGBA, this._gl.UNSIGNED_BYTE, pixels);\n //\n // destination.setPixels(new Rectangle(0, 0, destination.width, destination.height), pixels);\n };\n ContextGLES.prototype.drawIndices = function (mode, indexBuffer, firstIndex, numIndices) {\n if (firstIndex === void 0) { firstIndex = 0; }\n if (numIndices === void 0) { numIndices = -1; }\n //todo (not needed for icycle)\n //GLESConnector.gles.drawIndices(mode, indexBuffer.id, firstIndex, numIndices);\n // if (!this._drawing)\n // \tthrow \"Need to clear before drawing if the buffer has not been cleared since the last present() call.\";\n //\n //\n // this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER, indexBuffer.glBuffer);\n // this._gl.drawElements(this._drawModeDictionary[mode], (numIndices == -1)? indexBuffer.numIndices : numIndices, this._gl.UNSIGNED_SHORT, firstIndex*2);\n };\n ContextGLES.prototype.drawVertices = function (mode, firstVertex, numVertices) {\n if (firstVertex === void 0) { firstVertex = 0; }\n if (numVertices === void 0) { numVertices = -1; }\n // if (!this._drawing)\n // \tthrow \"Need to clear before drawing if the buffer has not been cleared since the last present() call.\";\n this._cmdBytes.writeInt(OpCodes.drawVertices | (this._drawModeDictionary[mode] << 8));\n this._cmdBytes.writeInt(firstVertex);\n this._cmdBytes.writeInt(numVertices);\n };\n ContextGLES.prototype.present = function () {\n this.execute();\n };\n ContextGLES.prototype.setBlendFactors = function (sourceFactor, destinationFactor) {\n this._blendEnabled = true;\n this._blendSourceFactor = this._blendFactorDictionary[sourceFactor];\n this._blendDestinationFactor = this._blendFactorDictionary[destinationFactor];\n this.updateBlendStatus();\n };\n ContextGLES.prototype.setColorMask = function (red, green, blue, alpha) {\n this._cmdBytes.writeInt(OpCodes.setColorMask);\n this._cmdBytes.writeInt((red ? 1 : 0) | (green ? 1 : 0) << 8 | (blue ? 1 : 0) << 16 | (alpha ? 1 : 0) << 24);\n };\n ContextGLES.prototype.setCulling = function (triangleFaceToCull, coordinateSystem) {\n if (coordinateSystem === void 0) { coordinateSystem = CoordinateSystem.LEFT_HANDED; }\n if (triangleFaceToCull == ContextGLTriangleFace.NONE) {\n //this.addStream(String.fromCharCode(OpCodes.disableCulling) + \"#END\");\n this._cmdBytes.writeInt(OpCodes.disableCulling);\n return;\n }\n var faceCulling = this.translateTriangleFace(triangleFaceToCull, coordinateSystem);\n this._cmdBytes.writeInt(OpCodes.setCulling | faceCulling << 8);\n };\n ContextGLES.prototype.setDepthTest = function (depthMask, passCompareMode) {\n this._cmdBytes.writeInt(OpCodes.setDepthTest | (depthMask ? 1 : 0) << 8 | this._compareModeDictionary[passCompareMode] << 16);\n };\n ContextGLES.prototype.setStencilActionsMasks = function (compareMode, referenceValue, writeMask, actionOnBothPass, actionOnDepthFail, actionOnDepthPassStencilFail, coordinateSystem) {\n if (actionOnBothPass === void 0) { actionOnBothPass = \"keep\"; }\n if (actionOnDepthFail === void 0) { actionOnDepthFail = \"keep\"; }\n if (actionOnDepthPassStencilFail === void 0) { actionOnDepthPassStencilFail = \"keep\"; }\n if (coordinateSystem === void 0) { coordinateSystem = \"leftHanded\"; }\n var compareModeGL = this._compareModeDictionary[compareMode];\n var fail = this._stencilActionDictionary[actionOnDepthPassStencilFail];\n var zFail = this._stencilActionDictionary[actionOnDepthFail];\n var pass = this._stencilActionDictionary[actionOnBothPass];\n this._cmdBytes.writeInt(OpCodes.setStencilActionsMasks | (compareModeGL << 8));\n this._cmdBytes.writeInt(referenceValue);\n this._cmdBytes.writeInt(writeMask | fail << 8 | zFail << 16 | pass << 24);\n };\n ContextGLES.prototype.setStencilActions = function (triangleFace, compareMode, actionOnBothPass, actionOnDepthFail, actionOnDepthPassStencilFail, coordinateSystem) {\n if (triangleFace === void 0) { triangleFace = ContextGLTriangleFace.FRONT_AND_BACK; }\n if (compareMode === void 0) { compareMode = ContextGLCompareMode.ALWAYS; }\n if (actionOnBothPass === void 0) { actionOnBothPass = ContextGLStencilAction.KEEP; }\n if (actionOnDepthFail === void 0) { actionOnDepthFail = ContextGLStencilAction.KEEP; }\n if (actionOnDepthPassStencilFail === void 0) { actionOnDepthPassStencilFail = ContextGLStencilAction.KEEP; }\n if (coordinateSystem === void 0) { coordinateSystem = CoordinateSystem.LEFT_HANDED; }\n var compareModeGL = this._compareModeDictionary[compareMode];\n var triangleFaceGL = this.stencilTriangleFace[triangleFace];\n var fail = this._stencilActionDictionary[actionOnDepthPassStencilFail];\n var zFail = this._stencilActionDictionary[actionOnDepthFail];\n var pass = this._stencilActionDictionary[actionOnBothPass];\n this._cmdBytes.writeInt(OpCodes.setStencilActions | triangleFaceGL << 8);\n this._cmdBytes.writeInt(compareModeGL | fail << 8 | zFail << 16 | pass << 24);\n };\n ContextGLES.prototype.setStencilReferenceValue = function (referenceValue, readMask, writeMask) {\n if (readMask === void 0) { readMask = 0xFF; }\n if (writeMask === void 0) { writeMask = 0xFF; }\n this._cmdBytes.writeInt(OpCodes.setStencilReferenceValue);\n this._cmdBytes.writeInt(referenceValue);\n this._cmdBytes.writeInt(readMask);\n this._cmdBytes.writeInt(writeMask);\n };\n ContextGLES.prototype.setProgram = function (program) {\n this._cmdBytes.writeInt(OpCodes.setProgram);\n this._cmdBytes.writeInt(program.id);\n };\n ContextGLES.prototype.setProgramConstantsFromArray = function (programType, data) {\n this._cmdBytes.writeInt(OpCodes.setProgramConstant | programType << 8);\n this._cmdBytes.writeInt(data.length);\n this._cmdBytes.writeFloat32Array(data);\n };\n ContextGLES.prototype.setScissorRectangle = function (rectangle) {\n if (rectangle) {\n this._cmdBytes.writeInt(OpCodes.setScissorRect);\n this._cmdBytes.writeFloat(rectangle.x);\n this._cmdBytes.writeFloat(rectangle.y);\n this._cmdBytes.writeFloat(rectangle.width);\n this._cmdBytes.writeFloat(rectangle.height);\n }\n else {\n this._cmdBytes.writeInt(OpCodes.clearScissorRect);\n }\n };\n ContextGLES.prototype.setTextureAt = function (sampler, texture) {\n if (texture) {\n this._cmdBytes.writeInt(OpCodes.setTextureAt | sampler << 8);\n this._cmdBytes.writeInt(texture.id);\n }\n else {\n this._cmdBytes.writeInt(OpCodes.clearTextureAt | sampler << 8);\n }\n };\n ContextGLES.prototype.setSamplerStateAt = function (sampler, wrap, filter, mipfilter) {\n this._cmdBytes.writeInt(OpCodes.setSamplerStateAt | sampler << 8);\n this._cmdBytes.writeInt(this._wrapDictionary[wrap] | this._filterDictionary[filter] << 8 | this._mipmapFilterDictionary[filter][mipfilter] << 16);\n };\n ContextGLES.prototype.setVertexBufferAt = function (index, buffer, bufferOffset, format) {\n if (bufferOffset === void 0) { bufferOffset = 0; }\n if (format === void 0) { format = 4; }\n if (buffer) {\n this._cmdBytes.writeInt(OpCodes.setVertexBufferAt | index << 8 | format << 16 | buffer.dataPerVertex << 24);\n this._cmdBytes.writeInt(buffer.id);\n this._cmdBytes.writeInt(bufferOffset);\n }\n else {\n this._cmdBytes.writeInt(OpCodes.clearVertexBufferAt | index << 8);\n }\n };\n ContextGLES.prototype.setRenderToTexture = function (target, enableDepthAndStencil, antiAlias, surfaceSelector) {\n if (enableDepthAndStencil === void 0) { enableDepthAndStencil = false; }\n if (antiAlias === void 0) { antiAlias = 0; }\n if (surfaceSelector === void 0) { surfaceSelector = 0; }\n if (target === null || target === undefined) {\n this._cmdBytes.writeInt(OpCodes.clearRenderToTexture);\n }\n else {\n this._cmdBytes.writeInt(OpCodes.setRenderToTexture | (enableDepthAndStencil ? 1 : 0) << 8);\n this._cmdBytes.writeInt(target.id);\n }\n // var texture:TextureGLES = target;\n // var frameBuffer:WebGLFramebuffer = texture.frameBuffer;\n // this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, frameBuffer);\n //\n // if (enableDepthAndStencil) {\n // \tthis._gl.enable(this._gl.STENCIL_TEST);\n // \tthis._gl.enable(this._gl.DEPTH_TEST);\n // }\n //\n // this._gl.viewport(0, 0, texture.width, texture.height );\n };\n ContextGLES.prototype.setRenderToBackBuffer = function () {\n this._cmdBytes.writeInt(OpCodes.clearRenderToTexture);\n //todo\n // this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, null);\n };\n ContextGLES.prototype.updateBlendStatus = function () {\n if (this._blendEnabled) {\n this._cmdBytes.writeInt(OpCodes.setBlendFactors | this._blendSourceFactor << 8 | this._blendDestinationFactor << 16);\n }\n else {\n this._cmdBytes.writeUnsignedInt(OpCodes.disableBlending);\n }\n };\n ContextGLES.prototype.translateTriangleFace = function (triangleFace, coordinateSystem) {\n switch (triangleFace) {\n case ContextGLTriangleFace.BACK:\n return (coordinateSystem == CoordinateSystem.LEFT_HANDED) ? 2 : 1;\n case ContextGLTriangleFace.FRONT:\n return (coordinateSystem == CoordinateSystem.LEFT_HANDED) ? 1 : 2;\n case ContextGLTriangleFace.FRONT_AND_BACK:\n return 0;\n default:\n throw \"Unknown ContextGLTriangleFace type.\"; // TODO error\n }\n };\n ContextGLES.prototype.execute = function () {\n if (this._createBytes.bytePosition > 4) {\n this._createBytes.bytePosition = 0;\n var localInt32View1 = new Int32Array(this._createBytes.byteLength / 4);\n this._createBytes.readInt32Array(localInt32View1);\n GLESConnector.gles.sendGLESCommands(localInt32View1.buffer);\n this._createBytes.byteLength = 0;\n this._createBytes.bytePosition = 0;\n this._createBytes.writeUnsignedInt(1); // make sure first int in bytearray is the id (1 for create bytes)\n }\n if (this._cmdBytes.bytePosition > 4) {\n this._cmdBytes.bytePosition = 0;\n var localInt32View = new Int32Array(this._cmdBytes.byteLength / 4);\n this._cmdBytes.readInt32Array(localInt32View);\n GLESConnector.gles.sendGLESCommands(localInt32View.buffer);\n this._cmdBytes.byteLength = 0;\n this._cmdBytes.bytePosition = 0;\n this._cmdBytes.writeUnsignedInt(0); // make sure first int in bytearray is the id (0 for cmd bytes)\n }\n if (ContextGLES._soundBytes.bytePosition > 4) {\n ContextGLES._soundBytes.bytePosition = 0;\n var localInt32View2 = new Int32Array(ContextGLES._soundBytes.byteLength / 4);\n ContextGLES._soundBytes.readInt32Array(localInt32View2);\n GLESConnector.gles.sendGLESCommands(localInt32View2.buffer);\n ContextGLES._soundBytes.byteLength = 0;\n ContextGLES._soundBytes.bytePosition = 0;\n ContextGLES._soundBytes.writeUnsignedInt(100); // make sure first int in bytearray is the id (100 for cmd soundbytes)\n }\n };\n return ContextGLES;\n}());\nexport { ContextGLES };\nContextGLES._uniformLocationNameDictionary = [\"fc\", \"fs\", \"vc\"];\nContextGLES.MAX_SAMPLERS = 8;\nContextGLES.modulo = 0;\nvar VertexBufferProperties = (function () {\n function VertexBufferProperties(size, type, normalized) {\n this.size = size;\n this.type = type;\n this.normalized = normalized;\n }\n return VertexBufferProperties;\n}());\nexport { VertexBufferProperties };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/gles/ContextGLES.js","import * as tslib_1 from \"tslib\";\nimport { AbstractMethodError, AbstractionBase } from \"@awayjs/core\";\nimport { ImageEvent } from \"@awayjs/graphics\";\n/**\n *\n * @class away.pool.GL_ImageBase\n */\nvar GL_ImageBase = (function (_super) {\n tslib_1.__extends(GL_ImageBase, _super);\n function GL_ImageBase(asset, stage) {\n var _this = _super.call(this, asset, stage) || this;\n _this.usages = 0;\n _this._invalidMipmaps = true;\n _this._stage = stage;\n _this._onInvalidateMipmapsDelegate = function (event) { return _this.onInvalidateMipmaps(event); };\n _this._asset.addEventListener(ImageEvent.INVALIDATE_MIPMAPS, _this._onInvalidateMipmapsDelegate);\n return _this;\n }\n GL_ImageBase.prototype.getTexture = function () {\n if (!this._texture) {\n this._createTexture();\n this._invalid = true;\n }\n return this._texture;\n };\n /**\n *\n */\n GL_ImageBase.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n if (this._texture) {\n this._texture.dispose();\n this._texture = null;\n }\n };\n GL_ImageBase.prototype.activate = function (index, mipmap) {\n this._stage.context.setTextureAt(index, this.getTexture());\n };\n GL_ImageBase.prototype._createTexture = function () {\n throw new AbstractMethodError();\n };\n /**\n *\n */\n GL_ImageBase.prototype.onInvalidateMipmaps = function (event) {\n this._invalidMipmaps = true;\n };\n return GL_ImageBase;\n}(AbstractionBase));\nexport { GL_ImageBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_ImageBase.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLTextureFormat } from \"../base/ContextGLTextureFormat\";\nimport { GL_ImageBase } from \"../image/GL_ImageBase\";\n/**\n *\n * @class away.pool.GL_ImageBase\n */\nvar GL_Image2D = (function (_super) {\n tslib_1.__extends(GL_Image2D, _super);\n function GL_Image2D() {\n return _super.apply(this, arguments) || this;\n }\n GL_Image2D.prototype.activate = function (index, mipmap) {\n _super.prototype.activate.call(this, index, mipmap);\n if (mipmap && this._stage.globalDisableMipmap)\n mipmap = false;\n if (!this._mipmap && mipmap) {\n this._mipmap = true;\n this._invalidMipmaps = true;\n }\n if (this._invalidMipmaps) {\n this._invalidMipmaps = false;\n if (mipmap)\n this._texture.generateMipmaps();\n }\n };\n /**\n *\n * @param context\n * @returns {ITexture}\n */\n GL_Image2D.prototype._createTexture = function () {\n this._texture = this._stage.context.createTexture(this._asset.width, this._asset.height, ContextGLTextureFormat.BGRA, true);\n };\n return GL_Image2D;\n}(GL_ImageBase));\nexport { GL_Image2D };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_Image2D.js","import * as tslib_1 from \"tslib\";\nimport { GL_Image2D } from \"../image/GL_Image2D\";\n/**\n *\n * @class away.pool.ImageObjectBase\n */\nvar GL_BitmapImage2D = (function (_super) {\n tslib_1.__extends(GL_BitmapImage2D, _super);\n function GL_BitmapImage2D() {\n return _super.apply(this, arguments) || this;\n }\n GL_BitmapImage2D.prototype.getTexture = function () {\n _super.prototype.getTexture.call(this);\n if (this._invalid) {\n this._invalid = false;\n this._texture.uploadFromImage(this._asset, 0);\n this._invalidMipmaps = true;\n }\n return this._texture;\n };\n return GL_BitmapImage2D;\n}(GL_Image2D));\nexport { GL_BitmapImage2D };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_BitmapImage2D.js","import * as tslib_1 from \"tslib\";\nimport { GL_Image2D } from \"../image/GL_Image2D\";\n/**\n *\n * @class away.pool.ImageObjectBase\n */\nvar GL_ExternalImage2D = (function (_super) {\n tslib_1.__extends(GL_ExternalImage2D, _super);\n function GL_ExternalImage2D() {\n return _super.apply(this, arguments) || this;\n }\n GL_ExternalImage2D.prototype.getTexture = function () {\n _super.prototype.getTexture.call(this);\n if (this._invalid) {\n this._invalid = false;\n this._texture.uploadFromURL(this._asset.urlRequest, 0);\n this._invalidMipmaps = true;\n }\n return this._texture;\n };\n return GL_ExternalImage2D;\n}(GL_Image2D));\nexport { GL_ExternalImage2D };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_ExternalImage2D.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLTextureFormat } from \"../base/ContextGLTextureFormat\";\nimport { GL_ImageBase } from \"../image/GL_ImageBase\";\n/**\n *\n * @class away.pool.GL_ImageCubeBase\n */\nvar GL_ImageCube = (function (_super) {\n tslib_1.__extends(GL_ImageCube, _super);\n function GL_ImageCube() {\n return _super.apply(this, arguments) || this;\n }\n /**\n *\n * @param context\n * @returns {ITexture}\n */\n GL_ImageCube.prototype._createTexture = function () {\n this._texture = this._stage.context.createCubeTexture(this._asset.size, ContextGLTextureFormat.BGRA, false);\n };\n return GL_ImageCube;\n}(GL_ImageBase));\nexport { GL_ImageCube };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_ImageCube.js","import * as tslib_1 from \"tslib\";\nimport { MipmapGenerator } from \"@awayjs/graphics\";\nimport { GL_ImageCube } from \"../image/GL_ImageCube\";\n/**\n *\n * @class away.pool.ImageObjectBase\n */\nvar GL_BitmapImageCube = (function (_super) {\n tslib_1.__extends(GL_BitmapImageCube, _super);\n function GL_BitmapImageCube() {\n var _this = _super.apply(this, arguments) || this;\n _this._mipmapDataArray = new Array(6);\n return _this;\n }\n GL_BitmapImageCube.prototype.activate = function (index, mipmap) {\n if (mipmap && this._stage.globalDisableMipmap)\n mipmap = false;\n if (!this._texture) {\n this._createTexture();\n this._invalid = true;\n }\n if (!this._mipmap && mipmap) {\n this._mipmap = true;\n this._invalid = true;\n }\n if (this._invalid) {\n this._invalid = false;\n for (var i = 0; i < 6; ++i)\n this._texture.uploadFromImage(this._asset, i, 0);\n if (mipmap)\n this._texture.generateMipmaps();\n }\n // if (this._invalid) {\n // \tthis._invalid = false;\n // \tfor (var i:number = 0; i < 6; ++i) {\n // \t\tif (mipmap) {\n // \t\t\tvar mipmapData:Array = this._mipmapDataArray[i] || (this._mipmapDataArray[i] = new Array());\n //\n // \t\t\tMipmapGenerator._generateMipMaps(( this._asset).getCanvas(i), mipmapData, true);\n // \t\t\tvar len:number = mipmapData.length;\n // \t\t\tfor (var j:number = 0; j < len; j++)\n // \t\t\t\t( this._texture).uploadFromImage(mipmapData[j], i, j);\n // \t\t} else {\n // \t\t\t( this._texture).uploadFromImage( this._asset, i, 0);\n // \t\t}\n // \t}\n // }\n _super.prototype.activate.call(this, index, mipmap);\n };\n /**\n *\n */\n GL_BitmapImageCube.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n for (var i = 0; i < 6; i++) {\n var mipmapData = this._mipmapDataArray[i];\n if (mipmapData) {\n var len = mipmapData.length;\n for (var j = 0; j < len; i++)\n MipmapGenerator._freeMipMapHolder(mipmapData[j]);\n }\n }\n };\n return GL_BitmapImageCube;\n}(GL_ImageCube));\nexport { GL_BitmapImageCube };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_BitmapImageCube.js","import * as tslib_1 from \"tslib\";\nimport { GL_Image2D } from \"../image/GL_Image2D\";\n/**\n *\n * @class away.pool.ImageObjectBase\n */\nvar GL_RenderImage2D = (function (_super) {\n tslib_1.__extends(GL_RenderImage2D, _super);\n function GL_RenderImage2D() {\n return _super.apply(this, arguments) || this;\n }\n return GL_RenderImage2D;\n}(GL_Image2D));\nexport { GL_RenderImage2D };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_RenderImage2D.js","import * as tslib_1 from \"tslib\";\nimport { GL_ImageCube } from \"../image/GL_ImageCube\";\n/**\n *\n * @class away.pool.ImageObjectBase\n */\nvar GL_RenderImageCube = (function (_super) {\n tslib_1.__extends(GL_RenderImageCube, _super);\n function GL_RenderImageCube() {\n return _super.apply(this, arguments) || this;\n }\n GL_RenderImageCube.prototype.activate = function (index, mipmap) {\n _super.prototype.activate.call(this, index, false);\n //TODO: allow automatic mipmap generation\n };\n return GL_RenderImageCube;\n}(GL_ImageCube));\nexport { GL_RenderImageCube };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_RenderImageCube.js","import * as tslib_1 from \"tslib\";\nimport { AbstractMethodError, AbstractionBase } from \"@awayjs/core\";\n/**\n *\n * @class away.pool.GL_SamplerBase\n */\nvar GL_SamplerBase = (function (_super) {\n tslib_1.__extends(GL_SamplerBase, _super);\n function GL_SamplerBase(asset, stage) {\n var _this = _super.call(this, asset, stage) || this;\n _this._stage = stage;\n return _this;\n }\n GL_SamplerBase.prototype.activate = function (index) {\n throw new AbstractMethodError();\n };\n return GL_SamplerBase;\n}(AbstractionBase));\nexport { GL_SamplerBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_SamplerBase.js","import * as tslib_1 from \"tslib\";\nimport { GL_SamplerBase } from \"../image/GL_SamplerBase\";\n/**\n *\n * @class away.pool.GL_SamplerBase\n */\nvar GL_Sampler2D = (function (_super) {\n tslib_1.__extends(GL_Sampler2D, _super);\n function GL_Sampler2D(sampler, stage) {\n var _this = _super.call(this, sampler, stage) || this;\n _this._sampler = sampler;\n return _this;\n }\n GL_Sampler2D.prototype.activate = function (index) {\n this._stage.setSamplerState(index, this._sampler.repeat, this._sampler.smooth, this._sampler.mipmap);\n };\n return GL_Sampler2D;\n}(GL_SamplerBase));\nexport { GL_Sampler2D };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_Sampler2D.js","import * as tslib_1 from \"tslib\";\nimport { GL_SamplerBase } from \"../image/GL_SamplerBase\";\n/**\n *\n * @class away.pool.GL_SamplerBase\n */\nvar GL_SamplerCube = (function (_super) {\n tslib_1.__extends(GL_SamplerCube, _super);\n function GL_SamplerCube(sampler, stage) {\n var _this = _super.call(this, sampler, stage) || this;\n _this._sampler = sampler;\n return _this;\n }\n GL_SamplerCube.prototype.activate = function (index) {\n this._stage.setSamplerState(index, false, this._sampler.smooth, this._sampler.mipmap);\n };\n return GL_SamplerCube;\n}(GL_SamplerBase));\nexport { GL_SamplerCube };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/GL_SamplerCube.js","/**\n *\n * @class away.pool.ProgramDataBase\n */\nvar ProgramData = (function () {\n function ProgramData(pool, context, vertexString, fragmentString) {\n this.usages = 0;\n this._pool = pool;\n this.stage = context;\n this.vertexString = vertexString;\n this.fragmentString = fragmentString;\n this.stage.registerProgram(this);\n }\n /**\n *\n */\n ProgramData.prototype.dispose = function () {\n this.usages--;\n if (!this.usages) {\n this._pool.disposeItem(this.vertexString + this.fragmentString);\n this.stage.unRegisterProgram(this);\n if (this.program) {\n this.program.dispose();\n this.program = null;\n }\n }\n };\n return ProgramData;\n}());\nexport { ProgramData };\nProgramData.PROGRAMDATA_ID_COUNT = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/ProgramData.js","import { ProgramData } from \"../image/ProgramData\";\n/**\n * @class away.pool.ProgramDataPool\n */\nvar ProgramDataPool = (function () {\n /**\n * //TODO\n *\n * @param textureDataClass\n */\n function ProgramDataPool(stage) {\n this._pool = new Object();\n this._stage = stage;\n }\n /**\n * //TODO\n *\n * @param materialOwner\n * @returns ITexture\n */\n ProgramDataPool.prototype.getItem = function (vertexString, fragmentString) {\n var key = vertexString + fragmentString;\n return this._pool[key] || (this._pool[key] = new ProgramData(this, this._stage, vertexString, fragmentString));\n };\n /**\n * //TODO\n *\n * @param materialOwner\n */\n ProgramDataPool.prototype.disposeItem = function (key) {\n this._pool[key] = null;\n };\n return ProgramDataPool;\n}());\nexport { ProgramDataPool };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/ProgramDataPool.js","var IndexBufferSoftware = (function () {\n function IndexBufferSoftware(numIndices) {\n this._numIndices = numIndices;\n }\n IndexBufferSoftware.prototype.uploadFromArray = function (data, startOffset, count) {\n this._startOffset = startOffset * 2;\n this._data = new Uint16Array(data);\n };\n IndexBufferSoftware.prototype.uploadFromByteArray = function (data, startOffset, count) {\n this._startOffset = startOffset * 2;\n this._data = new Uint16Array(data);\n };\n IndexBufferSoftware.prototype.dispose = function () {\n this._data = null;\n };\n Object.defineProperty(IndexBufferSoftware.prototype, \"numIndices\", {\n get: function () {\n return this._numIndices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(IndexBufferSoftware.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(IndexBufferSoftware.prototype, \"startOffset\", {\n get: function () {\n return this._startOffset;\n },\n enumerable: true,\n configurable: true\n });\n return IndexBufferSoftware;\n}());\nexport { IndexBufferSoftware };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/IndexBufferSoftware.js","var VertexBufferSoftware = (function () {\n //private _dataOffset:number;\n function VertexBufferSoftware(numVertices, dataPerVertex) {\n this._numVertices = numVertices;\n this._dataPerVertex = dataPerVertex;\n }\n VertexBufferSoftware.prototype.uploadFromArray = function (vertices, startVertex, numVertices) {\n //this._dataOffset = startVertex * this._dataPerVertex;\n this._floatData = new Float32Array(vertices);\n };\n VertexBufferSoftware.prototype.uploadFromByteArray = function (data, startVertex, numVertices) {\n //this._dataOffset = startVertex * this._dataPerVertex;\n this._floatData = new Float32Array(data, startVertex * this._dataPerVertex, numVertices * this._dataPerVertex / 4);\n this._uintData = new Uint8Array(data);\n };\n Object.defineProperty(VertexBufferSoftware.prototype, \"numVertices\", {\n get: function () {\n return this._numVertices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexBufferSoftware.prototype, \"dataPerVertex\", {\n get: function () {\n return this._dataPerVertex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexBufferSoftware.prototype, \"attributesPerVertex\", {\n get: function () {\n return this._dataPerVertex / 4;\n },\n enumerable: true,\n configurable: true\n });\n VertexBufferSoftware.prototype.dispose = function () {\n this._floatData = null;\n };\n Object.defineProperty(VertexBufferSoftware.prototype, \"data\", {\n get: function () {\n return this._floatData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexBufferSoftware.prototype, \"uintData\", {\n get: function () {\n return this._uintData;\n },\n enumerable: true,\n configurable: true\n });\n return VertexBufferSoftware;\n}());\nexport { VertexBufferSoftware };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/VertexBufferSoftware.js","var TextureSoftware = (function () {\n function TextureSoftware(width, height) {\n this._mipLevels = [];\n this._width = width;\n this._height = height;\n }\n Object.defineProperty(TextureSoftware.prototype, \"textureType\", {\n get: function () {\n return TextureSoftware.textureType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextureSoftware.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextureSoftware.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n TextureSoftware.prototype.dispose = function () {\n this._mipLevels = null;\n };\n TextureSoftware.prototype.isTexture = function (textureClass) {\n return this.textureType == textureClass.textureType;\n };\n TextureSoftware.prototype.uploadFromImage = function (image2D, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n this._mipLevels[miplevel] = image2D.getImageData().data;\n };\n TextureSoftware.prototype.uploadFromURL = function (urlRequest, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n };\n TextureSoftware.prototype.getData = function (miplevel) {\n return this._mipLevels[miplevel];\n };\n TextureSoftware.prototype.getMipLevelsCount = function () {\n return this._mipLevels.length;\n };\n TextureSoftware.prototype.generateMipmaps = function () {\n //TODO\n };\n return TextureSoftware;\n}());\nexport { TextureSoftware };\nTextureSoftware.textureType = \"texture2d\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/TextureSoftware.js","var CubeTextureSoftware = (function () {\n function CubeTextureSoftware(size) {\n this._textureSelectorDictionary = [[], [], [], [], [], []];\n this._size = size;\n }\n Object.defineProperty(CubeTextureSoftware.prototype, \"textureType\", {\n get: function () {\n return CubeTextureSoftware.textureType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CubeTextureSoftware.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n CubeTextureSoftware.prototype.dispose = function () {\n this._textureSelectorDictionary = null;\n };\n CubeTextureSoftware.prototype.isTexture = function (textureClass) {\n return this.textureType == textureClass.textureType;\n };\n CubeTextureSoftware.prototype.uploadFromImage = function (imageCube, side, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n this._textureSelectorDictionary[side][miplevel] = imageCube.getImageData(side).data;\n };\n CubeTextureSoftware.prototype.getData = function (side, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n return this._textureSelectorDictionary[side][miplevel];\n };\n CubeTextureSoftware.prototype.getMipLevelsCount = function () {\n return 1;\n };\n CubeTextureSoftware.prototype.generateMipmaps = function () {\n //TODO\n };\n CubeTextureSoftware.prototype.uploadCompressedTextureFromByteArray = function (data, byteArrayOffset, async) {\n // TODO\n };\n return CubeTextureSoftware;\n}());\nexport { CubeTextureSoftware };\nCubeTextureSoftware.textureType = \"textureCube\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/CubeTextureSoftware.js","var ProgramVOSoftware = (function () {\n function ProgramVOSoftware() {\n this.outputColor = new Float32Array([0, 0, 0, 1]);\n this.discard = false;\n }\n return ProgramVOSoftware;\n}());\nexport { ProgramVOSoftware };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/ProgramVOSoftware.js","import { ContextGLTextureFilter } from \"../base/ContextGLTextureFilter\";\nimport { ContextGLMipFilter } from \"../base/ContextGLMipFilter\";\nimport { ContextGLWrapMode } from \"../base/ContextGLWrapMode\";\n/**\n * The same as SamplerState, but with strings\n * TODO: replace two similar classes with one\n */\nvar SoftwareSamplerState = (function () {\n function SoftwareSamplerState() {\n this.wrap = ContextGLWrapMode.REPEAT;\n this.filter = ContextGLTextureFilter.LINEAR;\n this.mipfilter = ContextGLMipFilter.MIPLINEAR;\n }\n return SoftwareSamplerState;\n}());\nexport { SoftwareSamplerState };\nexport default SoftwareSamplerState;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/SoftwareSamplerState.js","import { ArgumentError } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"../base/ContextGLVertexBufferFormat\";\nimport { ContextGLTextureFilter } from \"../base/ContextGLTextureFilter\";\nimport { ContextGLMipFilter } from \"../base/ContextGLMipFilter\";\nimport { ContextGLWrapMode } from \"../base/ContextGLWrapMode\";\nimport { AGALTokenizer } from \"../aglsl/AGALTokenizer\";\nimport { ProgramVOSoftware } from \"./ProgramVOSoftware\";\nimport { TextureSoftware } from \"./TextureSoftware\";\nimport { CubeTextureSoftware } from \"./CubeTextureSoftware\";\nimport { SoftwareSamplerState } from \"./SoftwareSamplerState\";\nvar ProgramSoftware = (function () {\n function ProgramSoftware() {\n this._numVarying = 0;\n }\n Object.defineProperty(ProgramSoftware.prototype, \"numVarying\", {\n get: function () {\n return this._numVarying;\n },\n enumerable: true,\n configurable: true\n });\n ProgramSoftware.prototype.upload = function (vertexProgram, fragmentProgram) {\n this._vertexDescr = ProgramSoftware._tokenizer.decribeAGALByteArray(vertexProgram);\n this._vertexVO = new ProgramVOSoftware();\n this._vertexVO.temp = new Float32Array(this._vertexDescr.regwrite[0x2].length * 4);\n this._vertexVO.attributes = new Float32Array(this._vertexDescr.regread[0x0].length * 4);\n this._numVarying = this._vertexDescr.regwrite[0x4].length;\n this._fragmentDescr = ProgramSoftware._tokenizer.decribeAGALByteArray(fragmentProgram);\n this._fragmentVO = new ProgramVOSoftware();\n this._fragmentVO.temp = new Float32Array(this._fragmentDescr.regwrite[0x2].length * 4);\n this._fragmentVO.varying = new Float32Array(this._fragmentDescr.regread[0x4].length * 4);\n this._fragmentVO.derivativeX = new Float32Array(this._fragmentVO.varying.length);\n this._fragmentVO.derivativeY = new Float32Array(this._fragmentVO.varying.length);\n };\n ProgramSoftware.prototype.dispose = function () {\n this._vertexDescr = null;\n this._fragmentDescr = null;\n };\n ProgramSoftware.prototype.vertex = function (context, vertexIndex, position, varying) {\n //set attributes\n var i;\n var j = 0;\n var numAttributes = this._vertexDescr.regread[0x0].length;\n var attributes = this._vertexVO.attributes;\n for (i = 0; i < numAttributes; i++) {\n var buffer = context._vertexBuffers[i];\n if (!buffer)\n continue;\n var index = context._vertexBufferOffsets[i] / 4 + vertexIndex * buffer.attributesPerVertex;\n if (context._vertexBufferFormats[i] == ContextGLVertexBufferFormat.UNSIGNED_BYTE_4) {\n attributes[j++] = buffer.uintData[index * 4];\n attributes[j++] = buffer.uintData[index * 4 + 1];\n attributes[j++] = buffer.uintData[index * 4 + 2];\n attributes[j++] = buffer.uintData[index * 4 + 3];\n }\n else if (context._vertexBufferFormats[i] == ContextGLVertexBufferFormat.FLOAT_4) {\n attributes[j++] = buffer.data[index];\n attributes[j++] = buffer.data[index + 1];\n attributes[j++] = buffer.data[index + 2];\n attributes[j++] = buffer.data[index + 3];\n }\n else if (context._vertexBufferFormats[i] == ContextGLVertexBufferFormat.FLOAT_3) {\n attributes[j++] = buffer.data[index];\n attributes[j++] = buffer.data[index + 1];\n attributes[j++] = buffer.data[index + 2];\n attributes[j++] = 1;\n }\n else if (context._vertexBufferFormats[i] == ContextGLVertexBufferFormat.FLOAT_2) {\n attributes[j++] = buffer.data[index];\n attributes[j++] = buffer.data[index + 1];\n attributes[j++] = 0;\n attributes[j++] = 1;\n }\n else if (context._vertexBufferFormats[i] == ContextGLVertexBufferFormat.FLOAT_1) {\n attributes[j++] = buffer.data[index];\n attributes[j++] = 0;\n attributes[j++] = 0;\n attributes[j++] = 1;\n }\n }\n //clear temps\n var temp = this._vertexVO.temp;\n var numTemp = temp.length;\n for (var i = 0; i < numTemp; i += 4) {\n temp[i] = 0;\n temp[i + 1] = 0;\n temp[i + 2] = 0;\n temp[i + 3] = 1;\n }\n this._vertexVO.outputPosition = position;\n this._vertexVO.varying = varying;\n var len = this._vertexDescr.tokens.length;\n for (var i = 0; i < len; i++) {\n var token = this._vertexDescr.tokens[i];\n ProgramSoftware._opCodeFunc[token.opcode](this._vertexVO, this._vertexDescr, token.dest, token.a, token.b, context);\n }\n };\n ProgramSoftware.prototype.fragment = function (context, clip, clipRight, clipBottom, varying0, varying1, varying2, fragDepth) {\n this._fragmentVO.outputDepth = fragDepth;\n this._fragmentVO.discard = false;\n //clear temps\n var temp = this._fragmentVO.temp;\n var numTemp = temp.length;\n for (var i = 0; i < numTemp; i += 4) {\n temp[i] = 0;\n temp[i + 1] = 0;\n temp[i + 2] = 0;\n temp[i + 3] = 1;\n }\n //check for requirement of derivatives\n var varyingDerivatives = [];\n var len = this._fragmentDescr.tokens.length;\n for (var i = 0; i < len; i++) {\n var token = this._fragmentDescr.tokens[i];\n if (token.opcode == 0x28 && context._samplerStates[token.b.regnum] && context._samplerStates[token.b.regnum].mipfilter == ContextGLMipFilter.MIPLINEAR && context._textures[token.b.regnum].getMipLevelsCount() > 1)\n varyingDerivatives.push(token.a.regnum);\n }\n var derivativeX = this._fragmentVO.derivativeX;\n var derivativeY = this._fragmentVO.derivativeY;\n var varying = this._fragmentVO.varying;\n var numVarying = varying.length;\n for (var i = 0; i < numVarying; i += 4) {\n // if (!varying0 || !varying1 || !varying2) continue;\n varying[i] = clip.x * varying0[i] + clip.y * varying1[i] + clip.z * varying2[i];\n varying[i + 1] = clip.x * varying0[i + 1] + clip.y * varying1[i + 1] + clip.z * varying2[i + 1];\n varying[i + 2] = clip.x * varying0[i + 2] + clip.y * varying1[i + 2] + clip.z * varying2[i + 2];\n varying[i + 3] = clip.x * varying0[i + 3] + clip.y * varying1[i + 3] + clip.z * varying2[i + 3];\n if (varyingDerivatives.indexOf(i) == -1)\n continue;\n derivativeX[i] = clipRight.x * varying0[i] + clipRight.y * varying1[i] + clipRight.z * varying2[i];\n derivativeX[i + 1] = clipRight.x * varying0[i + 1] + clipRight.y * varying1[i + 1] + clipRight.z * varying2[i + 1];\n derivativeX[i + 2] = clipRight.x * varying0[i + 2] + clipRight.y * varying1[i + 2] + clipRight.z * varying2[i + 2];\n derivativeX[i + 3] = clipRight.x * varying0[i + 3] + clipRight.y * varying1[i + 3] + clipRight.z * varying2[i + 3];\n derivativeX[i] -= varying[i];\n derivativeX[i + 1] -= varying[i + 1];\n derivativeX[i + 2] -= varying[i + 2];\n derivativeX[i + 3] -= varying[i + 3];\n derivativeY[i] = clipBottom.x * varying0[i] + clipBottom.y * varying1[i] + clipBottom.z * varying2[i];\n derivativeY[i + 1] = clipBottom.x * varying0[i + 1] + clipBottom.y * varying1[i + 1] + clipBottom.z * varying2[i + 1];\n derivativeY[i + 2] = clipBottom.x * varying0[i + 2] + clipBottom.y * varying1[i + 2] + clipBottom.z * varying2[i + 2];\n derivativeY[i + 3] = clipBottom.x * varying0[i + 3] + clipBottom.y * varying1[i + 3] + clipBottom.z * varying2[i + 3];\n derivativeY[i] -= varying[i];\n derivativeY[i + 1] -= varying[i + 1];\n derivativeY[i + 2] -= varying[i + 2];\n derivativeY[i + 3] -= varying[i + 3];\n }\n for (var i = 0; i < len; i++) {\n var token = this._fragmentDescr.tokens[i];\n ProgramSoftware._opCodeFunc[token.opcode](this._fragmentVO, this._fragmentDescr, token.dest, token.a, token.b, context);\n }\n return this._fragmentVO;\n };\n ProgramSoftware.getDestTarget = function (vo, desc, dest) {\n var target;\n if (dest.regtype == 0x2) {\n target = vo.temp;\n }\n else if (dest.regtype == 0x3) {\n if (desc.header.type == \"vertex\") {\n target = vo.outputPosition;\n }\n else {\n target = vo.outputColor;\n }\n }\n else if (dest.regtype == 0x4) {\n target = vo.varying;\n }\n return target;\n };\n ProgramSoftware.getSourceTarget = function (vo, desc, dest, context) {\n var target;\n if (dest.regtype == 0x0) {\n target = vo.attributes;\n }\n else if (dest.regtype == 0x1) {\n if (desc.header.type == \"vertex\") {\n target = context._vertexConstants;\n }\n else {\n target = context._fragmentConstants;\n }\n }\n else if (dest.regtype == 0x2) {\n target = vo.temp;\n }\n else if (dest.regtype == 0x4) {\n target = vo.varying;\n }\n return target;\n };\n ProgramSoftware.mov = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg + ((source1.swizzle >> 0) & 3)];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg + ((source1.swizzle >> 2) & 3)];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg + ((source1.swizzle >> 4) & 3)];\n if (mask & 8)\n target[targetReg + 3] = source1Target[source1Reg + ((source1.swizzle >> 6) & 3)];\n };\n ProgramSoftware.m44 = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg] * source2Target[source2Reg] + source1Target[source1Reg + 1] * source2Target[source2Reg + 1] + source1Target[source1Reg + 2] * source2Target[source2Reg + 2] + source2Target[source2Reg + 3];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg] * source2Target[source2Reg + 4] + source1Target[source1Reg + 1] * source2Target[source2Reg + 5] + source1Target[source1Reg + 2] * source2Target[source2Reg + 6] + source2Target[source2Reg + 7];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg] * source2Target[source2Reg + 8] + source1Target[source1Reg + 1] * source2Target[source2Reg + 9] + source1Target[source1Reg + 2] * source2Target[source2Reg + 10] + source2Target[source2Reg + 11];\n if (mask & 8)\n target[targetReg + 3] = source1Target[source1Reg] * source2Target[source2Reg + 12] + source1Target[source1Reg + 1] * source2Target[source2Reg + 13] + source1Target[source1Reg + 2] * source2Target[source2Reg + 14] + source2Target[source2Reg + 15];\n };\n ProgramSoftware.sample = function (vo, desc, context, source1, textureIndex) {\n var texture = context._textures[textureIndex];\n if (texture.isTexture(TextureSoftware))\n return ProgramSoftware.sampleSimpleTexture(vo, desc, context, source1, textureIndex);\n if (texture.isTexture(CubeTextureSoftware))\n return ProgramSoftware.sampleCubeTexture(vo, desc, context, source1, textureIndex);\n throw new ArgumentError(\"Cannot sample provided texture type\");\n };\n ProgramSoftware.sampleCubeTexture = function (vo, desc, context, source1, textureIndex) {\n var source1Reg = 4 * source1.regnum;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n // Get the direction vector.\n var x = source1Target[source1Reg + ((source1.swizzle >> 0) & 3)];\n var y = source1Target[source1Reg + ((source1.swizzle >> 2) & 3)];\n var z = source1Target[source1Reg + ((source1.swizzle >> 4) & 3)];\n // Determine which of the 6 cube sides to sample,\n // depending on the largest abs value of the direction vector.\n // Once determined, translate to uv within this side.\n var side = 0;\n var u = 0;\n var v = 0;\n var absx = Math.abs(x);\n var absy = Math.abs(y);\n var absz = Math.abs(z);\n var absmax = Math.max(absx, absy, absz);\n if (absmax == absx) {\n if (x >= 0) {\n side = 0;\n u = 0.5 - 0.5 * (z / x);\n v = 0.5 - 0.5 * (y / x);\n }\n else {\n side = 1;\n u = 0.5 - 0.5 * (z / x);\n v = 0.5 + 0.5 * (y / x);\n }\n }\n else if (absmax == absy) {\n if (y >= 0) {\n side = 2;\n u = 0.5 + 0.5 * (x / y);\n v = 0.5 + 0.5 * (z / y);\n }\n else {\n side = 3;\n u = 0.5 - 0.5 * (x / y);\n v = 0.5 + 0.5 * (z / y);\n }\n }\n else if (absmax == absz) {\n if (z >= 0) {\n side = 4;\n u = 0.5 + 0.5 * (x / z);\n v = 0.5 - 0.5 * (y / z);\n }\n else {\n side = 5;\n u = 0.5 + 0.5 * (x / z);\n v = 0.5 + 0.5 * (y / z);\n }\n }\n var texture = context._textures[textureIndex];\n var state = context._samplerStates[textureIndex] || this._defaultSamplerState;\n var repeat = state.wrap == ContextGLWrapMode.REPEAT;\n var mipmap = state.mipfilter == ContextGLMipFilter.MIPLINEAR;\n // TODO: implement mip mapping?\n if (state.filter == ContextGLTextureFilter.LINEAR)\n return ProgramSoftware.sampleBilinear(u, v, texture.getData(side), texture.size, texture.size, repeat, ProgramSoftware._colorValue0);\n return ProgramSoftware.sampleNearest(u, v, texture.getData(side), texture.size, texture.size, repeat, ProgramSoftware._colorValue0);\n };\n ProgramSoftware.sampleSimpleTexture = function (vo, desc, context, source1, textureIndex) {\n var source1Reg = 4 * source1.regnum;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var u = source1Target[source1Reg + ((source1.swizzle >> 0) & 3)];\n var v = source1Target[source1Reg + ((source1.swizzle >> 2) & 3)];\n if (textureIndex >= context._textures.length || context._textures[textureIndex] == null)\n throw new ArgumentError(\"textureIndex contains no texture\");\n var texture = context._textures[textureIndex];\n var state = context._samplerStates[textureIndex] || this._defaultSamplerState;\n var repeat = state.wrap == ContextGLWrapMode.REPEAT;\n var mipmap = state.mipfilter == ContextGLMipFilter.MIPLINEAR;\n if (mipmap && texture.getMipLevelsCount() > 1) {\n var dux = Math.abs(vo.derivativeX[source1Reg + ((source1.swizzle >> 0) & 3)]);\n var dvx = Math.abs(vo.derivativeX[source1Reg + ((source1.swizzle >> 2) & 3)]);\n var duy = Math.abs(vo.derivativeY[source1Reg + ((source1.swizzle >> 0) & 3)]);\n var dvy = Math.abs(vo.derivativeY[source1Reg + ((source1.swizzle >> 2) & 3)]);\n var lambda = Math.log(Math.max(texture.width * Math.sqrt(dux * dux + dvx * dvx), texture.height * Math.sqrt(duy * duy + dvy * dvy))) / Math.LN2;\n if (lambda > 0) {\n var miplevelLow = Math.floor(lambda);\n var miplevelHigh = Math.ceil(lambda);\n var maxmiplevel = Math.log(Math.min(texture.width, texture.height)) / Math.LN2;\n if (miplevelHigh > maxmiplevel)\n miplevelHigh = maxmiplevel;\n if (miplevelLow > maxmiplevel)\n miplevelLow = maxmiplevel;\n var mipblend = lambda - Math.floor(lambda);\n var dataLow = texture.getData(miplevelLow);\n var dataLowWidth = texture.width / Math.pow(2, miplevelLow);\n var dataLowHeight = texture.height / Math.pow(2, miplevelLow);\n var dataHigh = texture.getData(miplevelHigh);\n var dataHighWidth = texture.width / Math.pow(2, miplevelHigh);\n var dataHighHeight = texture.height / Math.pow(2, miplevelHigh);\n if (state.filter == ContextGLTextureFilter.LINEAR) {\n ProgramSoftware.sampleBilinear(u, v, dataLow, dataLowWidth, dataLowHeight, repeat, ProgramSoftware._colorValue0);\n ProgramSoftware.sampleBilinear(u, v, dataHigh, dataHighWidth, dataHighHeight, repeat, ProgramSoftware._colorValue1);\n }\n else {\n ProgramSoftware.sampleNearest(u, v, dataLow, dataLowWidth, dataLowHeight, repeat, ProgramSoftware._colorValue0);\n ProgramSoftware.sampleNearest(u, v, dataHigh, dataHighWidth, dataHighHeight, repeat, ProgramSoftware._colorValue1);\n }\n return ProgramSoftware.interpolateColor(ProgramSoftware._colorValue0, ProgramSoftware._colorValue1, mipblend, ProgramSoftware._colorValue0);\n }\n }\n if (state.filter == ContextGLTextureFilter.LINEAR)\n return ProgramSoftware.sampleBilinear(u, v, texture.getData(0), texture.width, texture.height, repeat, ProgramSoftware._colorValue0);\n return ProgramSoftware.sampleNearest(u, v, texture.getData(0), texture.width, texture.height, repeat, ProgramSoftware._colorValue0);\n };\n ProgramSoftware.sampleNearest = function (u, v, textureData, textureWidth, textureHeight, repeat, output) {\n u *= textureWidth;\n v *= textureHeight;\n if (repeat) {\n u = Math.abs(u % textureWidth);\n v = Math.abs(v % textureHeight);\n }\n else {\n if (u < 0)\n u = 0;\n else if (u > textureWidth - 1)\n u = textureWidth - 1;\n if (v < 0)\n v = 0;\n else if (v > textureHeight - 1)\n v = textureHeight - 1;\n }\n u = Math.floor(u);\n v = Math.floor(v);\n var pos = (u + v * textureWidth) * 4;\n output[0] = textureData[pos] / 255;\n output[1] = textureData[pos + 1] / 255;\n output[2] = textureData[pos + 2] / 255;\n output[3] = textureData[pos + 3] / 255;\n return output;\n };\n ProgramSoftware.sampleBilinear = function (u, v, textureData, textureWidth, textureHeight, repeat, output) {\n var texelSizeX = 1 / textureWidth;\n var texelSizeY = 1 / textureHeight;\n u -= texelSizeX / 2;\n v -= texelSizeY / 2;\n var a = u * textureWidth;\n a = a - Math.floor(a);\n var b = v * textureHeight;\n b = b - Math.floor(b);\n return ProgramSoftware.interpolateColor(ProgramSoftware.interpolateColor(ProgramSoftware.sampleNearest(u, v, textureData, textureWidth, textureHeight, repeat, ProgramSoftware._colorInterpolated0), ProgramSoftware.sampleNearest(u + texelSizeX, v, textureData, textureWidth, textureHeight, repeat, ProgramSoftware._colorValue0), a, ProgramSoftware._colorInterpolated0), ProgramSoftware.interpolateColor(ProgramSoftware.sampleNearest(u, v + texelSizeY, textureData, textureWidth, textureHeight, repeat, ProgramSoftware._colorInterpolated1), ProgramSoftware.sampleNearest(u + texelSizeX, v + texelSizeY, textureData, textureWidth, textureHeight, repeat, ProgramSoftware._colorValue0), a, ProgramSoftware._colorInterpolated1), b, output);\n };\n ProgramSoftware.interpolateColor = function (source, target, a, output) {\n output[0] = source[0] + (target[0] - source[0]) * a;\n output[1] = source[1] + (target[1] - source[1]) * a;\n output[2] = source[2] + (target[2] - source[2]) * a;\n output[3] = source[3] + (target[3] - source[3]) * a;\n return output;\n };\n ProgramSoftware.tex = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var color = ProgramSoftware.sample(vo, desc, context, source1, source2.regnum);\n var mask = dest.mask;\n if (mask & 1)\n target[targetReg] = color[0];\n if (mask & 2)\n target[targetReg + 1] = color[1];\n if (mask & 4)\n target[targetReg + 2] = color[2];\n if (mask & 8)\n target[targetReg + 3] = color[3];\n };\n ProgramSoftware.add = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)] + source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)] + source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)] + source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n if (mask & 8)\n target[targetReg + 3] = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)] + source2Target[source2Reg + ((source2Swizzle >> 6) & 3)];\n };\n ProgramSoftware.sub = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)] - source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)] - source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)] - source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n if (mask & 8)\n target[targetReg + 3] = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)] - source2Target[source2Reg + ((source2Swizzle >> 6) & 3)];\n };\n ProgramSoftware.mul = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)] * source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)] * source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)] * source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n if (mask & 8)\n target[targetReg + 3] = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)] * source2Target[source2Reg + ((source2Swizzle >> 6) & 3)];\n };\n ProgramSoftware.div = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)] / source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)] / source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)] / source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n if (mask & 8)\n target[targetReg + 3] = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)] / source2Target[source2Reg + ((source2Swizzle >> 6) & 3)];\n };\n ProgramSoftware.rcp = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = 1 / source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n if (mask & 2)\n target[targetReg + 1] = 1 / source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n if (mask & 4)\n target[targetReg + 2] = 1 / source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n if (mask & 8)\n target[targetReg + 3] = 1 / source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n };\n ProgramSoftware.min = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n if (mask & 1)\n target[targetReg] = Math.min(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)], source2Target[source2Reg + ((source2Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = Math.min(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)], source2Target[source2Reg + ((source2Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = Math.min(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)], source2Target[source2Reg + ((source2Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = Math.min(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)], source2Target[source2Reg + ((source2Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.max = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n if (mask & 1)\n target[targetReg] = Math.max(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)], source2Target[source2Reg + ((source2Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = Math.max(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)], source2Target[source2Reg + ((source2Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = Math.max(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)], source2Target[source2Reg + ((source2Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = Math.max(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)], source2Target[source2Reg + ((source2Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.frc = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)] - Math.floor(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)] - Math.floor(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)] - Math.floor(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)] - Math.floor(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.sqt = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = Math.sqrt(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = Math.sqrt(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = Math.sqrt(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = Math.sqrt(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.rsq = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = 1 / Math.sqrt(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = 1 / Math.sqrt(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = 1 / Math.sqrt(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = 1 / Math.sqrt(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.pow = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n if (mask & 1)\n target[targetReg] = Math.pow(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)], source2Target[source2Reg + ((source2Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = Math.pow(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)], source2Target[source2Reg + ((source2Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = Math.pow(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)], source2Target[source2Reg + ((source2Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = Math.pow(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)], source2Target[source2Reg + ((source2Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.log = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = Math.log(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)]) / Math.LN2;\n if (mask & 2)\n target[targetReg + 1] = Math.log(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)]) / Math.LN2;\n if (mask & 4)\n target[targetReg + 2] = Math.log(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)]) / Math.LN2;\n if (mask & 8)\n target[targetReg + 3] = Math.log(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)]) / Math.LN2;\n };\n ProgramSoftware.exp = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = Math.exp(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = Math.exp(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = Math.exp(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = Math.exp(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.nrm = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var x = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n var y = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n var z = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n var len = Math.sqrt(x * x + y * y + z * z);\n x /= len;\n y /= len;\n z /= len;\n if (mask & 1)\n target[targetReg] = x;\n if (mask & 2)\n target[targetReg + 1] = y;\n if (mask & 4)\n target[targetReg + 2] = z;\n };\n ProgramSoftware.sin = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = Math.sin(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = Math.sin(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = Math.sin(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = Math.sin(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.cos = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = Math.cos(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = Math.cos(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = Math.cos(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = Math.cos(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.crs = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source1TargetX = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n var source1TargetY = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n var source1TargetZ = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var source2TargetX = source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n var source2TargetY = source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n var source2TargetZ = source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n if (mask & 1)\n target[targetReg] = source1TargetY * source2TargetZ - source1TargetZ * source2TargetY;\n if (mask & 2)\n target[targetReg + 1] = source1TargetZ * source2TargetX - source1TargetX * source2TargetZ;\n if (mask & 4)\n target[targetReg + 2] = source1TargetX * source2TargetY - source1TargetY * source2TargetX;\n };\n ProgramSoftware.dp3 = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source1TargetX = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n var source1TargetY = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n var source1TargetZ = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var source2TargetX = source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n var source2TargetY = source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n var source2TargetZ = source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n if (mask & 1)\n target[targetReg] = source1TargetX * source2TargetX + source1TargetY * source2TargetY + source1TargetZ * source2TargetZ;\n if (mask & 2)\n target[targetReg + 1] = source1TargetX * source2TargetX + source1TargetY * source2TargetY + source1TargetZ * source2TargetZ;\n if (mask & 4)\n target[targetReg + 2] = source1TargetX * source2TargetX + source1TargetY * source2TargetY + source1TargetZ * source2TargetZ;\n if (mask & 8)\n target[targetReg + 3] = source1TargetX * source2TargetX + source1TargetY * source2TargetY + source1TargetZ * source2TargetZ;\n };\n ProgramSoftware.dp4 = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source1TargetX = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n var source1TargetY = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n var source1TargetZ = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n var source1TargetW = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var source2TargetX = source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n var source2TargetY = source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n var source2TargetZ = source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n var source2TargetW = source2Target[source2Reg + ((source2Swizzle >> 6) & 3)];\n if (mask & 1)\n target[targetReg] = source1TargetX * source2TargetX + source1TargetY * source2TargetY + source1TargetZ * source2TargetZ + source1TargetW * source2TargetW;\n if (mask & 2)\n target[targetReg + 1] = source1TargetX * source2TargetX + source1TargetY * source2TargetY + source1TargetZ * source2TargetZ + source1TargetW * source2TargetW;\n if (mask & 4)\n target[targetReg + 2] = source1TargetX * source2TargetX + source1TargetY * source2TargetY + source1TargetZ * source2TargetZ + source1TargetW * source2TargetW;\n if (mask & 8)\n target[targetReg + 3] = source1TargetX * source2TargetX + source1TargetY * source2TargetY + source1TargetZ * source2TargetZ + source1TargetW * source2TargetW;\n };\n ProgramSoftware.abs = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = Math.abs(source1Target[source1Reg + ((source1Swizzle >> 0) & 3)]);\n if (mask & 2)\n target[targetReg + 1] = Math.abs(source1Target[source1Reg + ((source1Swizzle >> 2) & 3)]);\n if (mask & 4)\n target[targetReg + 2] = Math.abs(source1Target[source1Reg + ((source1Swizzle >> 4) & 3)]);\n if (mask & 8)\n target[targetReg + 3] = Math.abs(source1Target[source1Reg + ((source1Swizzle >> 6) & 3)]);\n };\n ProgramSoftware.neg = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = -source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n if (mask & 2)\n target[targetReg + 1] = -source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n if (mask & 4)\n target[targetReg + 2] = -source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n if (mask & 8)\n target[targetReg + 3] = -source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n };\n ProgramSoftware.sat = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = Math.max(0, Math.min(1, source1Target[source1Reg + ((source1Swizzle >> 0) & 3)]));\n if (mask & 2)\n target[targetReg + 1] = Math.max(0, Math.min(1, source1Target[source1Reg + ((source1Swizzle >> 2) & 3)]));\n if (mask & 4)\n target[targetReg + 2] = Math.max(0, Math.min(1, source1Target[source1Reg + ((source1Swizzle >> 4) & 3)]));\n if (mask & 8)\n target[targetReg + 3] = Math.max(0, Math.min(1, source1Target[source1Reg + ((source1Swizzle >> 6) & 3)]));\n };\n ProgramSoftware.m33 = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg] * source2Target[source2Reg] + source1Target[source1Reg + 1] * source2Target[source2Reg + 1] + source1Target[source1Reg + 2] * source2Target[source2Reg + 2];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg] * source2Target[source2Reg + 4] + source1Target[source1Reg + 1] * source2Target[source2Reg + 5] + source1Target[source1Reg + 2] * source2Target[source2Reg + 6];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg] * source2Target[source2Reg + 8] + source1Target[source1Reg + 1] * source2Target[source2Reg + 9] + source1Target[source1Reg + 2] * source2Target[source2Reg + 10];\n };\n ProgramSoftware.m34 = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var mask = dest.mask;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg] * source2Target[source2Reg] + source1Target[source1Reg + 1] * source2Target[source2Reg + 1] + source1Target[source1Reg + 2] * source2Target[source2Reg + 2] + source2Target[source2Reg + 3];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg] * source2Target[source2Reg + 4] + source1Target[source1Reg + 1] * source2Target[source2Reg + 5] + source1Target[source1Reg + 2] * source2Target[source2Reg + 6] + source2Target[source2Reg + 7];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg] * source2Target[source2Reg + 8] + source1Target[source1Reg + 1] * source2Target[source2Reg + 9] + source1Target[source1Reg + 2] * source2Target[source2Reg + 10] + source2Target[source2Reg + 11];\n };\n ProgramSoftware.ddx = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = vo.derivativeX;\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n if (mask & 8)\n target[targetReg + 3] = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n };\n ProgramSoftware.ddy = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var source1Target = vo.derivativeY;\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n if (mask & 1)\n target[targetReg] = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n if (mask & 2)\n target[targetReg + 1] = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n if (mask & 4)\n target[targetReg + 2] = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n if (mask & 8)\n target[targetReg + 3] = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n };\n ProgramSoftware.sge = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source1TargetX = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n var source1TargetY = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n var source1TargetZ = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n var source1TargetW = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var source2TargetX = source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n var source2TargetY = source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n var source2TargetZ = source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n var source2TargetW = source2Target[source2Reg + ((source2Swizzle >> 6) & 3)];\n if (mask & 1)\n target[targetReg] = source1TargetX >= source2TargetX ? 1 : 0;\n if (mask & 2)\n target[targetReg + 1] = source1TargetY >= source2TargetY ? 1 : 0;\n if (mask & 4)\n target[targetReg + 2] = source1TargetZ >= source2TargetZ ? 1 : 0;\n if (mask & 8)\n target[targetReg + 3] = source1TargetW >= source2TargetW ? 1 : 0;\n };\n ProgramSoftware.slt = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source2.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source1TargetX = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n var source1TargetY = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n var source1TargetZ = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n var source1TargetW = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var source2TargetX = source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n var source2TargetY = source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n var source2TargetZ = source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n var source2TargetW = source2Target[source2Reg + ((source2Swizzle >> 6) & 3)];\n if (mask & 1)\n target[targetReg] = source1TargetX < source2TargetX ? 1 : 0;\n if (mask & 2)\n target[targetReg + 1] = source1TargetY < source2TargetY ? 1 : 0;\n if (mask & 4)\n target[targetReg + 2] = source1TargetZ < source2TargetZ ? 1 : 0;\n if (mask & 8)\n target[targetReg + 3] = source1TargetW < source2TargetW ? 1 : 0;\n };\n ProgramSoftware.seq = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source1TargetX = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n var source1TargetY = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n var source1TargetZ = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n var source1TargetW = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var source2TargetX = source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n var source2TargetY = source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n var source2TargetZ = source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n var source2TargetW = source2Target[source2Reg + ((source2Swizzle >> 6) & 3)];\n if (mask & 1)\n target[targetReg] = source1TargetX == source2TargetX ? 1 : 0;\n if (mask & 2)\n target[targetReg + 1] = source1TargetY == source2TargetY ? 1 : 0;\n if (mask & 4)\n target[targetReg + 2] = source1TargetZ == source2TargetZ ? 1 : 0;\n if (mask & 8)\n target[targetReg + 3] = source1TargetW == source2TargetW ? 1 : 0;\n };\n ProgramSoftware.sne = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var source2Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source2Swizzle = source2.swizzle;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source1TargetX = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n var source1TargetY = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n var source1TargetZ = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n var source1TargetW = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n var source2Target = ProgramSoftware.getSourceTarget(vo, desc, source2, context);\n var source2TargetX = source2Target[source2Reg + ((source2Swizzle >> 0) & 3)];\n var source2TargetY = source2Target[source2Reg + ((source2Swizzle >> 2) & 3)];\n var source2TargetZ = source2Target[source2Reg + ((source2Swizzle >> 4) & 3)];\n var source2TargetW = source2Target[source2Reg + ((source2Swizzle >> 6) & 3)];\n if (mask & 1)\n target[targetReg] = source1TargetX != source2TargetX ? 1 : 0;\n if (mask & 2)\n target[targetReg + 1] = source1TargetY != source2TargetY ? 1 : 0;\n if (mask & 4)\n target[targetReg + 2] = source1TargetZ != source2TargetZ ? 1 : 0;\n if (mask & 8)\n target[targetReg + 3] = source1TargetW != source2TargetW ? 1 : 0;\n };\n ProgramSoftware.sgn = function (vo, desc, dest, source1, source2, context) {\n var targetReg = 4 * dest.regnum;\n var source1Reg = 4 * source1.regnum;\n var target = ProgramSoftware.getDestTarget(vo, desc, dest);\n var mask = dest.mask;\n var source1Swizzle = source1.swizzle;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source1TargetX = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n var source1TargetY = source1Target[source1Reg + ((source1Swizzle >> 2) & 3)];\n var source1TargetZ = source1Target[source1Reg + ((source1Swizzle >> 4) & 3)];\n var source1TargetW = source1Target[source1Reg + ((source1Swizzle >> 6) & 3)];\n if (mask & 1)\n target[targetReg] = (source1TargetX < 0) ? -1 : (source1TargetX > 0) ? 1 : 0;\n if (mask & 2)\n target[targetReg + 1] = (source1TargetY < 0) ? -1 : (source1TargetY > 0) ? 1 : 0;\n if (mask & 4)\n target[targetReg + 2] = (source1TargetZ < 0) ? -1 : (source1TargetZ > 0) ? 1 : 0;\n if (mask & 8)\n target[targetReg + 3] = (source1TargetW < 0) ? -1 : (source1TargetW > 0) ? 1 : 0;\n };\n ProgramSoftware.kil = function (vo, desc, dest, source1, source2, context) {\n var source1Reg = 4 * source1.regnum;\n var source1Swizzle = source1.swizzle;\n var source1Target = ProgramSoftware.getSourceTarget(vo, desc, source1, context);\n var source1TargetX = source1Target[source1Reg + ((source1Swizzle >> 0) & 3)];\n if (source1TargetX < 0)\n vo.discard = true;\n };\n return ProgramSoftware;\n}());\nexport { ProgramSoftware };\nProgramSoftware._defaultSamplerState = new SoftwareSamplerState();\nProgramSoftware._tokenizer = new AGALTokenizer();\nProgramSoftware._opCodeFunc = [\n ProgramSoftware.mov,\n ProgramSoftware.add,\n ProgramSoftware.sub,\n ProgramSoftware.mul,\n ProgramSoftware.div,\n ProgramSoftware.rcp,\n ProgramSoftware.min,\n ProgramSoftware.max,\n ProgramSoftware.frc,\n ProgramSoftware.sqt,\n ProgramSoftware.rsq,\n ProgramSoftware.pow,\n ProgramSoftware.log,\n ProgramSoftware.exp,\n ProgramSoftware.nrm,\n ProgramSoftware.sin,\n ProgramSoftware.cos,\n ProgramSoftware.crs,\n ProgramSoftware.dp3,\n ProgramSoftware.dp4,\n ProgramSoftware.abs,\n ProgramSoftware.neg,\n ProgramSoftware.sat,\n ProgramSoftware.m33,\n ProgramSoftware.m44,\n ProgramSoftware.m34,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n ProgramSoftware.kil,\n ProgramSoftware.tex,\n ProgramSoftware.sge,\n ProgramSoftware.slt,\n ProgramSoftware.sgn,\n ProgramSoftware.seq,\n ProgramSoftware.sne\n];\nProgramSoftware._colorValue0 = new Float32Array(4);\nProgramSoftware._colorValue1 = new Float32Array(4);\nProgramSoftware._colorInterpolated0 = new Float32Array(4);\nProgramSoftware._colorInterpolated1 = new Float32Array(4);\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/ProgramSoftware.js","var BlendModeSoftware = (function () {\n function BlendModeSoftware() {\n }\n BlendModeSoftware.destinationAlpha = function (result, target, dest, source) {\n result[0] = target[0] * dest[3] / 0xFF;\n result[1] = target[1] * dest[3] / 0xFF;\n result[2] = target[2] * dest[3] / 0xFF;\n result[3] = target[3] * dest[3] / 0xFF;\n };\n BlendModeSoftware.destinationColor = function (result, target, dest, source) {\n result[0] = target[0] * dest[0] / 0xFF;\n result[1] = target[1] * dest[1] / 0xFF;\n result[2] = target[2] * dest[2] / 0xFF;\n result[3] = target[3] * dest[3] / 0xFF;\n };\n BlendModeSoftware.one = function (result, target, dest, source) {\n result[0] = target[0];\n result[1] = target[1];\n result[2] = target[2];\n result[3] = target[3];\n };\n BlendModeSoftware.oneMinusDestinationAlpha = function (result, target, dest, source) {\n result[0] = target[0] * (1 - dest[3] / 0xFF);\n result[1] = target[1] * (1 - dest[3] / 0xFF);\n result[2] = target[2] * (1 - dest[3] / 0xFF);\n result[3] = target[3] * (1 - dest[3] / 0xFF);\n };\n BlendModeSoftware.oneMinusDestinationColor = function (result, target, dest, source) {\n result[0] = target[0] * (1 - dest[0] / 0xFF);\n result[1] = target[1] * (1 - dest[1] / 0xFF);\n result[2] = target[2] * (1 - dest[2] / 0xFF);\n result[3] = target[3] * (1 - dest[3] / 0xFF);\n };\n BlendModeSoftware.oneMinusSourceAlpha = function (result, target, dest, source) {\n result[0] = target[0] * (1 - source[3] / 0xFF);\n result[1] = target[1] * (1 - source[3] / 0xFF);\n result[2] = target[2] * (1 - source[3] / 0xFF);\n result[3] = target[3] * (1 - source[3] / 0xFF);\n };\n BlendModeSoftware.oneMinusSourceColor = function (result, target, dest, source) {\n result[0] = target[0] * (1 - source[0] / 0xFF);\n result[1] = target[1] * (1 - source[1] / 0xFF);\n result[2] = target[2] * (1 - source[2] / 0xFF);\n result[3] = target[3] * (1 - source[3] / 0xFF);\n };\n BlendModeSoftware.sourceAlpha = function (result, target, dest, source) {\n result[0] = target[0] * source[3] / 0xFF;\n result[1] = target[1] * source[3] / 0xFF;\n result[2] = target[2] * source[3] / 0xFF;\n result[3] = target[3] * source[3] / 0xFF;\n };\n BlendModeSoftware.sourceColor = function (result, target, dest, source) {\n result[0] = target[0] * source[0] / 0xFF;\n result[1] = target[1] * source[1] / 0xFF;\n result[2] = target[2] * source[2] / 0xFF;\n result[3] = target[3] * source[3] / 0xFF;\n };\n BlendModeSoftware.zero = function (result, target, dest, source) {\n };\n return BlendModeSoftware;\n}());\nexport { BlendModeSoftware };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/BlendModeSoftware.js","var DepthCompareModeSoftware = (function () {\n function DepthCompareModeSoftware() {\n }\n DepthCompareModeSoftware.always = function (fragDepth, currentDepth) {\n return true;\n };\n DepthCompareModeSoftware.equal = function (fragDepth, currentDepth) {\n return fragDepth == currentDepth;\n };\n DepthCompareModeSoftware.greater = function (fragDepth, currentDepth) {\n return fragDepth > currentDepth;\n };\n DepthCompareModeSoftware.greaterEqual = function (fragDepth, currentDepth) {\n return fragDepth >= currentDepth;\n };\n DepthCompareModeSoftware.less = function (fragDepth, currentDepth) {\n return fragDepth < currentDepth;\n };\n DepthCompareModeSoftware.lessEqual = function (fragDepth, currentDepth) {\n return fragDepth <= currentDepth;\n };\n DepthCompareModeSoftware.never = function (fragDepth, currentDepth) {\n return false;\n };\n DepthCompareModeSoftware.notEqual = function (fragDepth, currentDepth) {\n return fragDepth != currentDepth;\n };\n return DepthCompareModeSoftware;\n}());\nexport { DepthCompareModeSoftware };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/DepthCompareModeSoftware.js","import { Matrix3D, Matrix, Point, Vector3D, Rectangle, ColorUtils, CoordinateSystem } from \"@awayjs/core\";\nimport { BitmapImage2D } from \"@awayjs/graphics\";\nimport { ContextGLBlendFactor } from \"../base/ContextGLBlendFactor\";\nimport { ContextGLClearMask } from \"../base/ContextGLClearMask\";\nimport { ContextGLCompareMode } from \"../base/ContextGLCompareMode\";\nimport { ContextGLProgramType } from \"../base/ContextGLProgramType\";\nimport { ContextGLTriangleFace } from \"../base/ContextGLTriangleFace\";\nimport { ContextGLStencilAction } from \"../base/ContextGLStencilAction\";\nimport { IndexBufferSoftware } from \"./IndexBufferSoftware\";\nimport { VertexBufferSoftware } from \"./VertexBufferSoftware\";\nimport { TextureSoftware } from \"./TextureSoftware\";\nimport { CubeTextureSoftware } from \"./CubeTextureSoftware\";\nimport { ProgramSoftware } from \"./ProgramSoftware\";\nimport { SoftwareSamplerState } from \"./SoftwareSamplerState\";\nimport { BlendModeSoftware } from \"./BlendModeSoftware\";\nimport { DepthCompareModeSoftware } from \"./DepthCompareModeSoftware\";\nvar ContextSoftware = (function () {\n function ContextSoftware(canvas) {\n this._backBufferRect = new Rectangle();\n this._cullingMode = ContextGLTriangleFace.BACK;\n this._blendSource = ContextGLBlendFactor.ONE;\n this._blendDestination = ContextGLBlendFactor.ZERO;\n this._colorMaskR = true;\n this._colorMaskG = true;\n this._colorMaskB = true;\n this._colorMaskA = true;\n this._writeDepth = true;\n this._depthCompareMode = ContextGLCompareMode.LESS;\n this._depthCompareModeSoftware = function (fragDepth, currentDepth) { return void []; };\n this._blendModeSoftware = function (result, dest, source) { return void []; };\n this._screenMatrix = new Matrix3D();\n this._frontBufferMatrix = new Matrix();\n this._bboxMin = new Point();\n this._bboxMax = new Point();\n this._clamp = new Point();\n this._samplerStates = [];\n this._textures = [];\n this.textureBuffersColor = [];\n this.textureBuffersZ = [];\n this.textureBuffersZClear = [];\n this._vertexBuffers = [];\n this._vertexBufferOffsets = [];\n this._vertexBufferFormats = [];\n this._rgba = new Uint8ClampedArray(4);\n this._source = new Uint8ClampedArray(4);\n this._dest = new Uint8ClampedArray(4);\n this._destComp = new Uint8ClampedArray(4);\n this._sourceComp = new Uint8ClampedArray(4);\n //public static _drawCallback:Function = null;\n this._antialias = 0;\n this._p0 = new Vector3D();\n this._p1 = new Vector3D();\n this._p2 = new Vector3D();\n this._project = new Vector3D();\n this._barycentric = new Vector3D();\n this._barycentricRight = new Vector3D();\n this._barycentricBottom = new Vector3D();\n this._canvas = canvas;\n this._backBufferColor = new BitmapImage2D(100, 100, false, 0, false);\n this._frontBuffer = new BitmapImage2D(100, 100, false, 0, false);\n this._activeBufferColor = this._backBufferColor;\n var len = 100 * 100;\n var zbufferBytes = new ArrayBuffer(len * 8);\n this._backBufferZ = new Float32Array(zbufferBytes, 0, len);\n this._backBufferZClear = new Float32Array(zbufferBytes, len * 4, len);\n for (var i = 0; i < len; i++)\n this._backBufferZClear[i] = 10000000;\n this._activeBufferZ = this._backBufferZ;\n if (document && document.body) {\n var frontCanvas = this._frontBuffer.getCanvas();\n // TODO: remove software renderToTexture\n frontCanvas.style.position = \"absolute\";\n document.body.appendChild(frontCanvas);\n }\n this._depthCompareModeSoftware[ContextGLCompareMode.ALWAYS] = DepthCompareModeSoftware.always;\n this._depthCompareModeSoftware[ContextGLCompareMode.EQUAL] = DepthCompareModeSoftware.equal;\n this._depthCompareModeSoftware[ContextGLCompareMode.GREATER] = DepthCompareModeSoftware.greaterEqual;\n this._depthCompareModeSoftware[ContextGLCompareMode.GREATER_EQUAL] = DepthCompareModeSoftware.greater;\n this._depthCompareModeSoftware[ContextGLCompareMode.LESS] = DepthCompareModeSoftware.less;\n this._depthCompareModeSoftware[ContextGLCompareMode.LESS_EQUAL] = DepthCompareModeSoftware.lessEqual;\n this._depthCompareModeSoftware[ContextGLCompareMode.NEVER] = DepthCompareModeSoftware.never;\n this._depthCompareModeSoftware[ContextGLCompareMode.NOT_EQUAL] = DepthCompareModeSoftware.notEqual;\n this._blendModeSoftware[ContextGLBlendFactor.DESTINATION_ALPHA] = BlendModeSoftware.destinationAlpha;\n this._blendModeSoftware[ContextGLBlendFactor.DESTINATION_COLOR] = BlendModeSoftware.destinationColor;\n this._blendModeSoftware[ContextGLBlendFactor.ONE] = BlendModeSoftware.one;\n this._blendModeSoftware[ContextGLBlendFactor.ONE_MINUS_DESTINATION_ALPHA] = BlendModeSoftware.oneMinusDestinationAlpha;\n this._blendModeSoftware[ContextGLBlendFactor.ONE_MINUS_DESTINATION_COLOR] = BlendModeSoftware.oneMinusDestinationColor;\n this._blendModeSoftware[ContextGLBlendFactor.ONE_MINUS_SOURCE_ALPHA] = BlendModeSoftware.oneMinusSourceAlpha;\n this._blendModeSoftware[ContextGLBlendFactor.ONE_MINUS_SOURCE_COLOR] = BlendModeSoftware.oneMinusSourceColor;\n this._blendModeSoftware[ContextGLBlendFactor.SOURCE_ALPHA] = BlendModeSoftware.sourceAlpha;\n this._blendModeSoftware[ContextGLBlendFactor.SOURCE_COLOR] = BlendModeSoftware.sourceColor;\n this._blendModeSoftware[ContextGLBlendFactor.ZERO] = BlendModeSoftware.zero;\n }\n Object.defineProperty(ContextSoftware.prototype, \"pixelRatio\", {\n get: function () {\n return 1;\n },\n enumerable: true,\n configurable: true\n });\n ContextSoftware.prototype.configureBackBuffer = function (width, height, antiAlias, enableDepthAndStencil) {\n this._antialias = antiAlias;\n if (this._antialias % 2 != 0)\n this._antialias = Math.floor(this._antialias - 0.5);\n if (this._antialias == 0)\n this._antialias = 1;\n this._frontBuffer._setSize(width, height);\n var backBufferWidth = width * this._antialias;\n var backBufferHeight = height * this._antialias;\n //double buffer for fast clearing\n var len = backBufferWidth * backBufferHeight;\n var zbufferBytes = new ArrayBuffer(len * 8);\n this._backBufferZ = new Float32Array(zbufferBytes, 0, len);\n this._backBufferZClear = new Float32Array(zbufferBytes, len * 4, len);\n for (var i = 0; i < len; i++)\n this._backBufferZClear[i] = 10000000;\n if (this._activeBufferColor == this._backBufferColor)\n this._activeBufferZ = this._backBufferZ;\n this._backBufferRect.width = backBufferWidth;\n this._backBufferRect.height = backBufferHeight;\n this._backBufferColor._setSize(backBufferWidth, backBufferHeight);\n this.activateScreenMatrix(this._backBufferRect.width, this._backBufferRect.height, true);\n this._frontBufferMatrix = new Matrix();\n this._frontBufferMatrix.scale(1 / this._antialias, 1 / this._antialias);\n };\n ContextSoftware.prototype.activateScreenMatrix = function (width, height, yflip) {\n var raw = this._screenMatrix._rawData;\n raw[0] = width / 2;\n raw[1] = 0;\n raw[2] = 0;\n raw[3] = 0;\n raw[4] = 0;\n raw[5] = yflip ? -height / 2 : height / 2;\n raw[6] = 0;\n raw[7] = 0;\n raw[8] = 0;\n raw[9] = 0;\n raw[10] = 1;\n raw[11] = 0;\n raw[12] = width / 2;\n raw[13] = height / 2;\n raw[14] = 0;\n raw[15] = 0;\n this._yflip = yflip;\n };\n ContextSoftware.prototype.setRenderToTexture = function (target, enableDepthAndStencil, antiAlias, surfaceSelector) {\n // Create texture buffer and screen matrix if needed.\n var textureBufferColor = this.textureBuffersColor[surfaceSelector];\n if (textureBufferColor == null) {\n // TODO: consider transparency prop\n // TODO: consider fill color prop\n // TODO: consider powerOfTwo prop\n textureBufferColor = this.textureBuffersColor[surfaceSelector] = new BitmapImage2D(target.width, target.height, false, 0xFFFFFF, true);\n // TODO: transfer the initial image2D data from the texture to the BitmapImage2D object.\n target.uploadFromImage(textureBufferColor);\n }\n else {\n textureBufferColor.fillRect(textureBufferColor.rect, 0xFFFFFF);\n }\n this._activeBufferColor = textureBufferColor;\n this._activeBufferColor.lock();\n var textureBufferZ = this.textureBuffersZ[surfaceSelector];\n var textureBufferZClear = this.textureBuffersZClear[surfaceSelector];\n if (textureBufferZ == null) {\n //double buffer for fast clearing\n var len = target.width * target.height;\n var zbufferBytes = new ArrayBuffer(len * 8);\n textureBufferZ = this.textureBuffersZ[surfaceSelector] = new Float32Array(zbufferBytes, 0, len);\n textureBufferZClear = this.textureBuffersZClear[surfaceSelector] = new Float32Array(zbufferBytes, len * 4, len);\n for (var i = 0; i < len; i++)\n textureBufferZClear[i] = 10000000;\n }\n textureBufferZ.set(textureBufferZClear); //fast memcpy\n this._activeBufferZ = textureBufferZ;\n this.activateScreenMatrix(target.width, target.height, false);\n this._activeTexture = target;\n };\n ContextSoftware.prototype.setRenderToBackBuffer = function () {\n this._activeBufferColor = this._backBufferColor;\n this._activeBufferZ = this._backBufferZ;\n this.activateScreenMatrix(this._backBufferColor.width, this._backBufferColor.height, true);\n };\n ContextSoftware.prototype.drawIndices = function (mode, indexBuffer, firstIndex, numIndices) {\n if (!this._program)\n return;\n // These are place holders for vertex transformation operations.\n // Additional placeholders are for potentially interpolated values generated by near clipping\n // used to avoid trying to draw behind the camera\n var position0 = new Float32Array(4);\n var position1 = new Float32Array(4);\n var position2 = new Float32Array(4);\n var position3 = new Float32Array(4); // potentially interpolated\n var position4 = new Float32Array(4); // potentially interpolated\n var varying0 = new Float32Array(this._program.numVarying * 4);\n var varying1 = new Float32Array(this._program.numVarying * 4);\n var varying2 = new Float32Array(this._program.numVarying * 4);\n var varying3 = new Float32Array(this._program.numVarying * 4); // potentially interpolated\n var varying4 = new Float32Array(this._program.numVarying * 4); // potentially interpolated\n var incomingVertices = new Array(5);\n var outgoingVertices = new Array(4);\n incomingVertices[0] = position1;\n incomingVertices[1] = position2;\n incomingVertices[2] = position0; // notice position0 in index 2\n incomingVertices[3] = position3;\n incomingVertices[4] = position4;\n var incomingVaryings = new Array(5);\n var outgoingVaryings = new Array(4);\n incomingVaryings[0] = varying1;\n incomingVaryings[1] = varying2;\n incomingVaryings[2] = varying0;\n incomingVaryings[3] = varying3;\n incomingVaryings[4] = varying4;\n // Sweep triangles according to culling mode and process thru vertex shader.\n if (this._yflip && this._cullingMode == ContextGLTriangleFace.BACK || !this._yflip && this._cullingMode == ContextGLTriangleFace.FRONT) {\n for (var i = firstIndex; i < numIndices; i += 3) {\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i], position0, varying0);\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i + 1], position1, varying1);\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i + 2], position2, varying2);\n this._triangle(incomingVertices, outgoingVertices, incomingVaryings, outgoingVaryings);\n }\n }\n else if (this._yflip && this._cullingMode == ContextGLTriangleFace.FRONT || !this._yflip && this._cullingMode == ContextGLTriangleFace.BACK) {\n for (var i = firstIndex; i < numIndices; i += 3) {\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i + 2], position0, varying0);\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i + 1], position1, varying1);\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i], position2, varying2);\n this._triangle(incomingVertices, outgoingVertices, incomingVaryings, outgoingVaryings);\n }\n }\n else if (this._cullingMode == ContextGLTriangleFace.FRONT_AND_BACK || this._cullingMode == ContextGLTriangleFace.NONE) {\n for (var i = firstIndex; i < numIndices; i += 3) {\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i + 2], position0, varying0);\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i + 1], position1, varying1);\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i], position2, varying2);\n this._triangle(incomingVertices, outgoingVertices, incomingVaryings, outgoingVaryings);\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i], position0, varying0);\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i + 1], position1, varying1);\n this._program.vertex(this, indexBuffer.data[indexBuffer.startOffset + i + 2], position2, varying2);\n this._triangle(incomingVertices, outgoingVertices, incomingVaryings, outgoingVaryings);\n }\n }\n // Transfer buffer data to texture.\n if (this._activeBufferColor != this._backBufferColor) {\n this._activeBufferColor.unlock();\n this._activeTexture.uploadFromImage(this._activeBufferColor);\n }\n };\n ContextSoftware.prototype._triangle = function (incomingVertices, outgoingVertices, incomingVaryings, outgoingVaryings) {\n var numOriginalVerticesInside = 0;\n var numInterpolations = 0;\n var numOutgoingVertices = 0;\n // Check if the vertices are behind the near plane and interpolate\n // new vertices whenever one vertex in a side is in front of the camera AND the other is behind it.\n // Start by considering p0 as the previous vertex.\n var previousVertex = incomingVertices[2]; // p0\n var previousVarying = incomingVaryings[2]; // v0\n var previousVertexIsInside = previousVertex[2] > 0; // z > 0\n if (previousVertexIsInside) {\n outgoingVertices[0] = previousVertex;\n outgoingVaryings[0] = previousVarying;\n numOutgoingVertices++;\n numOriginalVerticesInside++;\n }\n for (var i = 0; i < 3; i++) {\n var currentVertex = incomingVertices[i];\n var currentVarying = incomingVaryings[i];\n // Need interpolation?\n var currentVertexIsInside = currentVertex[2] > 0; // z > 0\n if (currentVertexIsInside != previousVertexIsInside) {\n // Interpolate vertex pair and create a new vertex.\n // z factor\n var dz_current = Math.abs(currentVertex[2]);\n var dz_previous = Math.abs(previousVertex[2]);\n var factorZ = dz_previous / (dz_previous + dz_current);\n this._interpolateVertexPair(factorZ, currentVertex, previousVertex, incomingVertices[3 + numInterpolations]);\n outgoingVertices[numOutgoingVertices] = incomingVertices[3 + numInterpolations];\n this._interpolateVertexPair(factorZ, currentVarying, previousVarying, incomingVaryings[3 + numInterpolations]);\n outgoingVaryings[numOutgoingVertices] = incomingVaryings[3 + numInterpolations];\n numOutgoingVertices++;\n numInterpolations++;\n }\n if (currentVertexIsInside && i != 2) {\n outgoingVertices[numOutgoingVertices] = currentVertex;\n outgoingVaryings[numOutgoingVertices] = currentVarying;\n numOutgoingVertices++;\n numOriginalVerticesInside++;\n }\n previousVertex = currentVertex;\n previousVarying = currentVarying;\n previousVertexIsInside = currentVertexIsInside;\n }\n // Project the resulting vertices as triangles.\n if (numOriginalVerticesInside == 3) {\n this._projectTriangle(incomingVertices[0], incomingVertices[1], incomingVertices[2], incomingVaryings[0], incomingVaryings[1], incomingVaryings[2]);\n }\n else if (numOriginalVerticesInside == 2) {\n this._projectTriangle(outgoingVertices[0], outgoingVertices[1], outgoingVertices[2], outgoingVaryings[0], outgoingVaryings[1], outgoingVaryings[2]);\n this._projectTriangle(outgoingVertices[0], outgoingVertices[2], outgoingVertices[3], outgoingVaryings[0], outgoingVaryings[2], outgoingVaryings[3]);\n }\n else if (numOriginalVerticesInside == 1) {\n this._projectTriangle(outgoingVertices[0], outgoingVertices[1], outgoingVertices[2], outgoingVaryings[0], outgoingVaryings[1], outgoingVaryings[2]);\n }\n // else if (numOriginalVerticesInside == 0) { // full clipping (do nothing)\n // }\n };\n ContextSoftware.prototype._projectTriangle = function (position0, position1, position2, varying0, varying1, varying2) {\n // Wrap the vertex transformed positions in Vector3D objects.\n this._p0.x = position0[0];\n this._p0.y = position0[1];\n this._p0.z = position0[2];\n this._p0.w = position0[3];\n this._p1.x = position1[0];\n this._p1.y = position1[1];\n this._p1.z = position1[2];\n this._p1.w = position1[3];\n this._p2.x = position2[0];\n this._p2.y = position2[1];\n this._p2.z = position2[2];\n this._p2.w = position2[3];\n // Reject any invalid vertices.\n if (this._p0.w == 0 || this._p1.w == 0 || this._p2.w == 0) {\n return;\n } // w = 0 represent direction vectors and we want positions\n if (isNaN(this._p0.x) || isNaN(this._p0.y) || isNaN(this._p0.z) || isNaN(this._p0.w)) {\n return;\n }\n if (isNaN(this._p1.x) || isNaN(this._p1.y) || isNaN(this._p1.z) || isNaN(this._p1.w)) {\n return;\n }\n if (isNaN(this._p2.x) || isNaN(this._p2.y) || isNaN(this._p2.z) || isNaN(this._p2.w)) {\n return;\n }\n // Clip space.\n this._p0.z = this._p0.z * 2 - this._p0.w;\n this._p1.z = this._p1.z * 2 - this._p1.w;\n this._p2.z = this._p2.z * 2 - this._p2.w;\n // Perspective divide.\n this._p0.project();\n this._p1.project();\n this._p2.project();\n // Transform into screen space.\n this._project.x = this._p0.w;\n this._project.y = this._p1.w;\n this._project.z = this._p2.w;\n this._p0.w = 1;\n this._p1.w = 1;\n this._p2.w = 1;\n this._p0 = this._screenMatrix.transformVector(this._p0, this._p0);\n this._p1 = this._screenMatrix.transformVector(this._p1, this._p1);\n this._p2 = this._screenMatrix.transformVector(this._p2, this._p2);\n // Prepare rasterization bounds.\n this._bboxMin.x = 1000000;\n this._bboxMin.y = 1000000;\n this._bboxMax.x = -1000000;\n this._bboxMax.y = -1000000;\n this._clamp.x = this._activeBufferColor.width - 1;\n this._clamp.y = this._activeBufferColor.height - 1;\n this._bboxMin.x = Math.max(0, Math.min(this._bboxMin.x, this._p0.x));\n this._bboxMin.y = Math.max(0, Math.min(this._bboxMin.y, this._p0.y));\n this._bboxMin.x = Math.max(0, Math.min(this._bboxMin.x, this._p1.x));\n this._bboxMin.y = Math.max(0, Math.min(this._bboxMin.y, this._p1.y));\n this._bboxMin.x = Math.max(0, Math.min(this._bboxMin.x, this._p2.x));\n this._bboxMin.y = Math.max(0, Math.min(this._bboxMin.y, this._p2.y));\n this._bboxMax.x = Math.min(this._clamp.x, Math.max(this._bboxMax.x, this._p0.x));\n this._bboxMax.y = Math.min(this._clamp.y, Math.max(this._bboxMax.y, this._p0.y));\n this._bboxMax.x = Math.min(this._clamp.x, Math.max(this._bboxMax.x, this._p1.x));\n this._bboxMax.y = Math.min(this._clamp.y, Math.max(this._bboxMax.y, this._p1.y));\n this._bboxMax.x = Math.min(this._clamp.x, Math.max(this._bboxMax.x, this._p2.x));\n this._bboxMax.y = Math.min(this._clamp.y, Math.max(this._bboxMax.y, this._p2.y));\n this._bboxMin.x = Math.floor(this._bboxMin.x);\n this._bboxMin.y = Math.floor(this._bboxMin.y);\n this._bboxMax.x = Math.floor(this._bboxMax.x);\n this._bboxMax.y = Math.floor(this._bboxMax.y);\n /*\n NOTE:\n 'simplified cross' product calculations below are inlined cross product calculations that ignore the z value and just use the output z value.\n */\n // Skip invalid bounds.\n var w = this._bboxMax.x - this._bboxMin.x;\n var h = this._bboxMax.y - this._bboxMin.y;\n if (w <= 0 || h <= 0) {\n return;\n }\n // Calculate the area division for all barycentric coordinates.\n var area = (this._p1.x - this._p0.x) * (this._p2.y - this._p0.y) - (this._p1.y - this._p0.y) * (this._p2.x - this._p0.x); // simplified cross\n if (area < 0) {\n return;\n } // skip null areas.\n // Pre-calculate barycentric x and y derivatives (steps).\n var w0_dx = -(this._p2.y - this._p1.y) / area;\n var w1_dx = -(this._p0.y - this._p2.y) / area;\n var w2_dx = -(this._p1.y - this._p0.y) / area;\n var w0_dy = (this._p2.x - this._p1.x) / area;\n var w1_dy = (this._p0.x - this._p2.x) / area;\n var w2_dy = (this._p1.x - this._p0.x) / area;\n // Calculate top left barycentric coordinate.\n var w0 = ((this._p2.x - this._p1.x) * (this._bboxMin.y - this._p1.y) - (this._p2.y - this._p1.y) * (this._bboxMin.x - this._p1.x)) / area; // simplified cross\n var w1 = ((this._p0.x - this._p2.x) * (this._bboxMin.y - this._p2.y) - (this._p0.y - this._p2.y) * (this._bboxMin.x - this._p2.x)) / area; // simplified cross\n var w2 = ((this._p1.x - this._p0.x) * (this._bboxMin.y - this._p0.y) - (this._p1.y - this._p0.y) * (this._bboxMin.x - this._p0.x)) / area; // simplified cross\n // Rasterize.\n var cx = 0;\n var cy = 0;\n for (var x = this._bboxMin.x; x <= this._bboxMax.x; x++) {\n for (var y = this._bboxMin.y; y <= this._bboxMax.y; y++) {\n // Calculate the barycentric weights of the pixel.\n this._barycentric.x = w0 + w0_dx * cx + w0_dy * cy;\n this._barycentric.y = w1 + w1_dx * cx + w1_dy * cy;\n this._barycentric.z = w2 + w2_dx * cx + w2_dy * cy;\n // Step y.\n cy += 1;\n // Skip pixel if its not inside the triangle.\n if (this._barycentric.x < 0 || this._barycentric.y < 0 || this._barycentric.z < 0)\n continue;\n // Calculate derivative (neighbor) weights.\n if (x != this._bboxMax.x) {\n this._barycentricRight.x = this._barycentric.x + w0_dx;\n this._barycentricRight.y = this._barycentric.y + w1_dx;\n this._barycentricRight.z = this._barycentric.z + w2_dx;\n this._barycentricRight.x /= this._project.x;\n this._barycentricRight.y /= this._project.y;\n this._barycentricRight.z /= this._project.z;\n this._barycentricRight.scaleBy(1 / (this._barycentricRight.x + this._barycentricRight.y + this._barycentricRight.z));\n }\n if (y != this._bboxMax.y) {\n this._barycentricBottom.x = this._barycentric.x + w0_dy;\n this._barycentricBottom.y = this._barycentric.y + w1_dy;\n this._barycentricBottom.z = this._barycentric.z + w2_dy;\n this._barycentricBottom.x /= this._project.x;\n this._barycentricBottom.y /= this._project.y;\n this._barycentricBottom.z /= this._project.z;\n this._barycentricBottom.scaleBy(1 / (this._barycentricBottom.x + this._barycentricBottom.y + this._barycentricBottom.z));\n }\n // Interpolate frag depth.\n var index = (x % this._activeBufferColor.width) + y * this._activeBufferColor.width;\n var fragDepth = (this._barycentric.x * this._p0.z + this._barycentric.y * this._p1.z + this._barycentric.z * this._p2.z) / (this._barycentric.x + this._barycentric.y + this._barycentric.z);\n this._barycentric.x /= this._project.x;\n this._barycentric.y /= this._project.y;\n this._barycentric.z /= this._project.z;\n this._barycentric.scaleBy(1 / (this._barycentric.x + this._barycentric.y + this._barycentric.z));\n // Depth test.\n if (!this._depthCompareModeSoftware[this._depthCompareMode](fragDepth, this._activeBufferZ[index]))\n continue;\n // Process fragment shader.\n var fragmentVO = this._program.fragment(this, this._barycentric, this._barycentricRight, this._barycentricBottom, varying0, varying1, varying2, fragDepth);\n if (fragmentVO.discard)\n continue;\n // Write z buffer.\n if (this._writeDepth)\n this._activeBufferZ[index] = fragDepth; // TODO: fragmentVO.outputDepth?\n // Write to source and transform color space.\n this._source[0] = fragmentVO.outputColor[0] * 0xFF;\n this._source[1] = fragmentVO.outputColor[1] * 0xFF;\n this._source[2] = fragmentVO.outputColor[2] * 0xFF;\n this._source[3] = fragmentVO.outputColor[3] * 0xFF;\n // Read dest.\n this._activeBufferColor.getPixelData(x, y, this._dest);\n // Write to color buffer.\n this._putPixel(x, y);\n }\n // Step x.\n cy = 0;\n cx += 1;\n }\n };\n ContextSoftware.prototype._putPixel = function (x, y) {\n this._blendModeSoftware[this._blendDestination](this._destComp, this._dest, this._dest, this._source);\n this._blendModeSoftware[this._blendSource](this._sourceComp, this._source, this._dest, this._source);\n this._rgba[0] = this._sourceComp[0] + this._destComp[0];\n this._rgba[1] = this._sourceComp[1] + this._destComp[1];\n this._rgba[2] = this._sourceComp[2] + this._destComp[2];\n this._rgba[3] = this._sourceComp[3] + this._destComp[3];\n this._activeBufferColor.setPixelData(x, y, this._rgba);\n };\n ContextSoftware.prototype.createCubeTexture = function (size, format, optimizeForRenderToTexture, streamingLevels) {\n return new CubeTextureSoftware(size);\n };\n ContextSoftware.prototype.createIndexBuffer = function (numIndices) {\n return new IndexBufferSoftware(numIndices);\n };\n ContextSoftware.prototype.createProgram = function () {\n return new ProgramSoftware();\n };\n ContextSoftware.prototype.createTexture = function (width, height, format, optimizeForRenderToTexture, streamingLevels) {\n return new TextureSoftware(width, height);\n };\n ContextSoftware.prototype.createVertexBuffer = function (numVertices, dataPerVertex) {\n return new VertexBufferSoftware(numVertices, dataPerVertex);\n };\n ContextSoftware.prototype.dispose = function () {\n };\n ContextSoftware.prototype.setBlendFactors = function (sourceFactor, destinationFactor) {\n this._blendSource = sourceFactor;\n this._blendDestination = destinationFactor;\n };\n ContextSoftware.prototype.setColorMask = function (red, green, blue, alpha) {\n this._colorMaskR = red;\n this._colorMaskG = green;\n this._colorMaskB = blue;\n this._colorMaskA = alpha;\n };\n ContextSoftware.prototype.setStencilActions = function (triangleFace, compareMode, actionOnBothPass, actionOnDepthFail, actionOnDepthPassStencilFail, coordinateSystem) {\n if (triangleFace === void 0) { triangleFace = ContextGLTriangleFace.FRONT_AND_BACK; }\n if (compareMode === void 0) { compareMode = ContextGLCompareMode.ALWAYS; }\n if (actionOnBothPass === void 0) { actionOnBothPass = ContextGLStencilAction.KEEP; }\n if (actionOnDepthFail === void 0) { actionOnDepthFail = ContextGLStencilAction.KEEP; }\n if (actionOnDepthPassStencilFail === void 0) { actionOnDepthPassStencilFail = ContextGLStencilAction.KEEP; }\n if (coordinateSystem === void 0) { coordinateSystem = CoordinateSystem.LEFT_HANDED; }\n //TODO:\n };\n ContextSoftware.prototype.setStencilReferenceValue = function (referenceValue, readMask, writeMask) {\n //TODO:\n };\n ContextSoftware.prototype.setCulling = function (triangleFaceToCull, coordinateSystem) {\n //TODO: CoordinateSystem.RIGHT_HAND\n this._cullingMode = triangleFaceToCull;\n };\n ContextSoftware.prototype.setDepthTest = function (depthMask, passCompareMode) {\n this._writeDepth = depthMask;\n this._depthCompareMode = passCompareMode;\n };\n ContextSoftware.prototype.setProgram = function (program) {\n this._program = program;\n };\n ContextSoftware.prototype.setProgramConstantsFromArray = function (programType, data) {\n var target;\n if (programType == ContextGLProgramType.VERTEX)\n target = this._vertexConstants = new Float32Array(data.length);\n else if (programType == ContextGLProgramType.FRAGMENT)\n target = this._fragmentConstants = new Float32Array(data.length);\n target.set(data);\n };\n ContextSoftware.prototype.setTextureAt = function (sampler, texture) {\n this._textures[sampler] = texture;\n };\n ContextSoftware.prototype.setVertexBufferAt = function (index, buffer, bufferOffset, format) {\n this._vertexBuffers[index] = buffer;\n this._vertexBufferOffsets[index] = bufferOffset;\n this._vertexBufferFormats[index] = format;\n };\n ContextSoftware.prototype.present = function () {\n this._backBufferColor.unlock();\n this._frontBuffer.fillRect(this._frontBuffer.rect, 0);\n this._frontBuffer.draw(this._backBufferColor, this._frontBufferMatrix);\n };\n ContextSoftware.prototype.drawToBitmapImage2D = function (destination) {\n destination.setPixels(this._activeBufferColor.rect, this._activeBufferColor.getImageData().data);\n };\n ContextSoftware.prototype._interpolateVertexPair = function (factor, v0, v1, result) {\n for (var i = 0; i < v0.length; i++) {\n var delta = v0[i] - v1[i];\n result[i] = v1[i] + delta * factor;\n }\n };\n ContextSoftware.prototype.clamp = function (value, min, max) {\n if (min === void 0) { min = 0; }\n if (max === void 0) { max = 1; }\n return Math.max(min, Math.min(value, max));\n };\n ContextSoftware.prototype.interpolate = function (min, max, gradient) {\n return min + (max - min) * this.clamp(gradient);\n };\n ContextSoftware.prototype.drawVertices = function (mode, firstVertex, numVertices) {\n //TODO:\n };\n ContextSoftware.prototype.setScissorRectangle = function (rectangle) {\n //TODO:\n };\n ContextSoftware.prototype.setSamplerStateAt = function (sampler, wrap, filter, mipfilter) {\n var state = this._samplerStates[sampler];\n if (!state)\n state = this._samplerStates[sampler] = new SoftwareSamplerState();\n state.wrap = wrap;\n state.filter = filter;\n state.mipfilter = mipfilter;\n };\n ContextSoftware.prototype.enableStencil = function () {\n };\n ContextSoftware.prototype.disableStencil = function () {\n };\n Object.defineProperty(ContextSoftware.prototype, \"frontBuffer\", {\n get: function () {\n return this._frontBuffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContextSoftware.prototype, \"container\", {\n get: function () {\n return this._canvas;\n },\n enumerable: true,\n configurable: true\n });\n ContextSoftware.prototype.clear = function (red, green, blue, alpha, depth, stencil, mask) {\n if (red === void 0) { red = 0; }\n if (green === void 0) { green = 0; }\n if (blue === void 0) { blue = 0; }\n if (alpha === void 0) { alpha = 1; }\n if (depth === void 0) { depth = 1; }\n if (stencil === void 0) { stencil = 0; }\n if (mask === void 0) { mask = ContextGLClearMask.ALL; }\n this._backBufferColor.lock();\n if (mask & ContextGLClearMask.COLOR)\n this._backBufferColor.fillRect(this._backBufferRect, ColorUtils.ARGBtoFloat32(alpha * 0xFF, red * 0xFF, green * 0xFF, blue * 0xFF));\n //TODO: mask & ContextGLClearMask.STENCIL\n if (mask & ContextGLClearMask.DEPTH)\n this._backBufferZ.set(this._backBufferZClear); //fast memcpy\n };\n return ContextSoftware;\n}());\nexport { ContextSoftware };\nContextSoftware.MAX_SAMPLERS = 8;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/software/ContextSoftware.js","import { AbstractMethodError } from \"@awayjs/core\";\nvar TextureBaseWebGL = (function () {\n function TextureBaseWebGL(gl) {\n this.textureType = \"\";\n this._gl = gl;\n }\n TextureBaseWebGL.prototype.dispose = function () {\n this._gl.deleteTexture(this._glTexture);\n };\n Object.defineProperty(TextureBaseWebGL.prototype, \"glTexture\", {\n get: function () {\n return this._glTexture;\n },\n enumerable: true,\n configurable: true\n });\n TextureBaseWebGL.prototype.generateMipmaps = function () {\n throw new AbstractMethodError();\n };\n return TextureBaseWebGL;\n}());\nexport { TextureBaseWebGL };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/webgl/TextureBaseWebGL.js","import * as tslib_1 from \"tslib\";\nimport { TextureBaseWebGL } from \"./TextureBaseWebGL\";\nvar CubeTextureWebGL = (function (_super) {\n tslib_1.__extends(CubeTextureWebGL, _super);\n function CubeTextureWebGL(gl, size) {\n var _this = _super.call(this, gl) || this;\n _this._textureSelectorDictionary = new Array(6);\n _this.textureType = \"textureCube\";\n _this._size = size;\n _this._glTexture = _this._gl.createTexture();\n _this._textureSelectorDictionary[0] = gl.TEXTURE_CUBE_MAP_POSITIVE_X;\n _this._textureSelectorDictionary[1] = gl.TEXTURE_CUBE_MAP_NEGATIVE_X;\n _this._textureSelectorDictionary[2] = gl.TEXTURE_CUBE_MAP_POSITIVE_Y;\n _this._textureSelectorDictionary[3] = gl.TEXTURE_CUBE_MAP_NEGATIVE_Y;\n _this._textureSelectorDictionary[4] = gl.TEXTURE_CUBE_MAP_POSITIVE_Z;\n _this._textureSelectorDictionary[5] = gl.TEXTURE_CUBE_MAP_NEGATIVE_Z;\n return _this;\n }\n CubeTextureWebGL.prototype.uploadFromImage = function (imageCube, side, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n this._gl.bindTexture(this._gl.TEXTURE_CUBE_MAP, this._glTexture);\n this._gl.texImage2D(this._textureSelectorDictionary[side], miplevel, this._gl.RGBA, this._gl.RGBA, this._gl.UNSIGNED_BYTE, imageCube.getImageData(side));\n this._gl.bindTexture(this._gl.TEXTURE_CUBE_MAP, null);\n };\n CubeTextureWebGL.prototype.uploadCompressedTextureFromByteArray = function (data, byteArrayOffset /*uint*/, async) {\n if (async === void 0) { async = false; }\n };\n Object.defineProperty(CubeTextureWebGL.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n CubeTextureWebGL.prototype.generateMipmaps = function () {\n this._gl.bindTexture(this._gl.TEXTURE_CUBE_MAP, this._glTexture);\n this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);\n //this._gl.bindTexture( this._gl.TEXTURE_CUBE_MAP, null );\n };\n return CubeTextureWebGL;\n}(TextureBaseWebGL));\nexport { CubeTextureWebGL };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/webgl/CubeTextureWebGL.js","var IndexBufferWebGL = (function () {\n function IndexBufferWebGL(gl, numIndices) {\n this._gl = gl;\n this._buffer = this._gl.createBuffer();\n this._numIndices = numIndices;\n }\n IndexBufferWebGL.prototype.uploadFromArray = function (data, startOffset, count) {\n this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER, this._buffer);\n if (startOffset)\n this._gl.bufferSubData(this._gl.ELEMENT_ARRAY_BUFFER, startOffset * 2, new Uint16Array(data));\n else\n this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(data), this._gl.STATIC_DRAW);\n };\n IndexBufferWebGL.prototype.uploadFromByteArray = function (data, startOffset, count) {\n this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER, this._buffer);\n if (startOffset)\n this._gl.bufferSubData(this._gl.ELEMENT_ARRAY_BUFFER, startOffset * 2, data);\n else\n this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER, data, this._gl.STATIC_DRAW);\n };\n IndexBufferWebGL.prototype.dispose = function () {\n this._gl.deleteBuffer(this._buffer);\n };\n Object.defineProperty(IndexBufferWebGL.prototype, \"numIndices\", {\n get: function () {\n return this._numIndices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(IndexBufferWebGL.prototype, \"glBuffer\", {\n get: function () {\n return this._buffer;\n },\n enumerable: true,\n configurable: true\n });\n return IndexBufferWebGL;\n}());\nexport { IndexBufferWebGL };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/webgl/IndexBufferWebGL.js","import { AGALTokenizer } from \"../aglsl/AGALTokenizer\";\nimport { AGLSLParser } from \"../aglsl/AGLSLParser\";\nvar ProgramWebGL = (function () {\n function ProgramWebGL(gl) {\n this._uniforms = [[], [], []];\n this._attribs = [];\n this._gl = gl;\n this._program = this._gl.createProgram();\n }\n ProgramWebGL.prototype.upload = function (vertexProgram, fragmentProgram) {\n //detect whether highp can be used\n var vertexPrecision = (this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER, this._gl.HIGH_FLOAT).precision != 0) ? \"highp\" : \"mediump\";\n var fragmentPrecision = (this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER, this._gl.HIGH_FLOAT).precision != 0) ? \"highp\" : \"mediump\";\n var vertexString = ProgramWebGL._aglslParser.parse(ProgramWebGL._tokenizer.decribeAGALByteArray(vertexProgram), vertexPrecision);\n var fragmentString = ProgramWebGL._aglslParser.parse(ProgramWebGL._tokenizer.decribeAGALByteArray(fragmentProgram), fragmentPrecision);\n this._vertexShader = this._gl.createShader(this._gl.VERTEX_SHADER);\n this._fragmentShader = this._gl.createShader(this._gl.FRAGMENT_SHADER);\n this._gl.shaderSource(this._vertexShader, vertexString);\n this._gl.compileShader(this._vertexShader);\n if (!this._gl.getShaderParameter(this._vertexShader, this._gl.COMPILE_STATUS))\n throw new Error(this._gl.getShaderInfoLog(this._vertexShader));\n this._gl.shaderSource(this._fragmentShader, fragmentString);\n this._gl.compileShader(this._fragmentShader);\n if (!this._gl.getShaderParameter(this._fragmentShader, this._gl.COMPILE_STATUS))\n throw new Error(this._gl.getShaderInfoLog(this._fragmentShader));\n this._gl.attachShader(this._program, this._vertexShader);\n this._gl.attachShader(this._program, this._fragmentShader);\n this._gl.linkProgram(this._program);\n if (!this._gl.getProgramParameter(this._program, this._gl.LINK_STATUS))\n throw new Error(this._gl.getProgramInfoLog(this._program));\n this._uniforms[0].length = 0;\n this._uniforms[1].length = 0;\n this._uniforms[2].length = 0;\n this._attribs.length = 0;\n };\n ProgramWebGL.prototype.getUniformLocation = function (programType, index) {\n if (index === void 0) { index = -1; }\n if (this._uniforms[programType][index + 1] != null)\n return this._uniforms[programType][index + 1];\n var name = (index == -1) ? ProgramWebGL._uniformLocationNameDictionary[programType] : ProgramWebGL._uniformLocationNameDictionary[programType] + index;\n return (this._uniforms[programType][index + 1] = this._gl.getUniformLocation(this._program, name));\n };\n //\n // public getUniformLocation(programType:number, index:number):WebGLUniformLocation\n // {\n // \tif (this._uniforms[programType][index] != null)\n // \t\treturn this._uniforms[programType][index];\n //\n // \treturn (this._uniforms[programType][index] = this._gl.getUniformLocation(this._program, ProgramWebGL._uniformLocationNameDictionary[programType] + index));\n // }\n ProgramWebGL.prototype.getAttribLocation = function (index) {\n if (this._attribs[index] != null)\n return this._attribs[index];\n return (this._attribs[index] = this._gl.getAttribLocation(this._program, \"va\" + index));\n };\n ProgramWebGL.prototype.dispose = function () {\n this._gl.deleteProgram(this._program);\n };\n ProgramWebGL.prototype.focusProgram = function () {\n this._gl.useProgram(this._program);\n };\n Object.defineProperty(ProgramWebGL.prototype, \"glProgram\", {\n get: function () {\n return this._program;\n },\n enumerable: true,\n configurable: true\n });\n return ProgramWebGL;\n}());\nexport { ProgramWebGL };\nProgramWebGL._tokenizer = new AGALTokenizer();\nProgramWebGL._aglslParser = new AGLSLParser();\nProgramWebGL._uniformLocationNameDictionary = [\"fc\", \"fs\", \"vc\"];\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/webgl/ProgramWebGL.js","import * as tslib_1 from \"tslib\";\nimport { DefaultMaterialManager } from \"@awayjs/graphics\";\nimport { TextureBaseWebGL } from \"./TextureBaseWebGL\";\nvar TextureWebGL = (function (_super) {\n tslib_1.__extends(TextureWebGL, _super);\n function TextureWebGL(gl, width, height) {\n var _this = _super.call(this, gl) || this;\n _this.textureType = \"texture2d\";\n _this._width = width;\n _this._height = height;\n _this._glTexture = _this._gl.createTexture();\n return _this;\n }\n Object.defineProperty(TextureWebGL.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextureWebGL.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextureWebGL.prototype, \"frameBuffer\", {\n get: function () {\n if (!this._frameBuffer) {\n this._frameBuffer = this._gl.createFramebuffer();\n this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, this._frameBuffer);\n this._gl.bindTexture(this._gl.TEXTURE_2D, this._glTexture);\n this._gl.texImage2D(this._gl.TEXTURE_2D, 0, this._gl.RGBA, this._width, this._height, 0, this._gl.RGBA, this._gl.UNSIGNED_BYTE, null);\n var renderBuffer = this._gl.createRenderbuffer();\n this._gl.bindRenderbuffer(this._gl.RENDERBUFFER, renderBuffer);\n this._gl.renderbufferStorage(this._gl.RENDERBUFFER, this._gl.DEPTH_STENCIL, this._width, this._height);\n this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER, this._gl.COLOR_ATTACHMENT0, this._gl.TEXTURE_2D, this._glTexture, 0);\n this._gl.framebufferRenderbuffer(this._gl.FRAMEBUFFER, this._gl.DEPTH_STENCIL_ATTACHMENT, this._gl.RENDERBUFFER, renderBuffer);\n this._gl.bindTexture(this._gl.TEXTURE_2D, null);\n this._gl.bindRenderbuffer(this._gl.RENDERBUFFER, null);\n this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, null);\n }\n return this._frameBuffer;\n },\n enumerable: true,\n configurable: true\n });\n TextureWebGL.prototype.uploadFromImage = function (imageData, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n this._gl.bindTexture(this._gl.TEXTURE_2D, this._glTexture);\n this._gl.texImage2D(this._gl.TEXTURE_2D, miplevel, this._gl.RGBA, this._gl.RGBA, this._gl.UNSIGNED_BYTE, imageData.getImageData());\n this._gl.bindTexture(this._gl.TEXTURE_2D, null);\n };\n TextureWebGL.prototype.uploadFromURL = function (urlRequest, miplevel) {\n if (miplevel === void 0) { miplevel = 0; }\n //dummy code for testing\n this._gl.bindTexture(this._gl.TEXTURE_2D, this._glTexture);\n this._gl.texImage2D(this._gl.TEXTURE_2D, miplevel, this._gl.RGBA, this._gl.RGBA, this._gl.UNSIGNED_BYTE, DefaultMaterialManager.getDefaultImage2D().getImageData());\n this._gl.bindTexture(this._gl.TEXTURE_2D, null);\n };\n TextureWebGL.prototype.uploadCompressedTextureFromByteArray = function (data, byteArrayOffset /*uint*/, async) {\n if (async === void 0) { async = false; }\n var ext = this._gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n //this._gl.compressedTexImage2D(this._gl.TEXTURE_2D, 0, this)\n };\n TextureWebGL.prototype.generateMipmaps = function () {\n this._gl.bindTexture(this._gl.TEXTURE_2D, this._glTexture);\n this._gl.generateMipmap(this._gl.TEXTURE_2D);\n //this._gl.bindTexture( this._gl.TEXTURE_2D, null );\n };\n return TextureWebGL;\n}(TextureBaseWebGL));\nexport { TextureWebGL };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/webgl/TextureWebGL.js","var VertexBufferWebGL = (function () {\n function VertexBufferWebGL(gl, numVertices, dataPerVertex) {\n this._gl = gl;\n this._buffer = this._gl.createBuffer();\n this._numVertices = numVertices;\n this._dataPerVertex = dataPerVertex;\n }\n VertexBufferWebGL.prototype.uploadFromArray = function (vertices, startVertex, numVertices) {\n this._gl.bindBuffer(this._gl.ARRAY_BUFFER, this._buffer);\n if (startVertex)\n this._gl.bufferSubData(this._gl.ARRAY_BUFFER, startVertex * this._dataPerVertex, new Float32Array(vertices));\n else\n this._gl.bufferData(this._gl.ARRAY_BUFFER, new Float32Array(vertices), this._gl.STATIC_DRAW);\n };\n VertexBufferWebGL.prototype.uploadFromByteArray = function (data, startVertex, numVertices) {\n this._gl.bindBuffer(this._gl.ARRAY_BUFFER, this._buffer);\n if (startVertex)\n this._gl.bufferSubData(this._gl.ARRAY_BUFFER, startVertex * this._dataPerVertex, data);\n else\n this._gl.bufferData(this._gl.ARRAY_BUFFER, data, this._gl.STATIC_DRAW);\n };\n Object.defineProperty(VertexBufferWebGL.prototype, \"numVertices\", {\n get: function () {\n return this._numVertices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexBufferWebGL.prototype, \"dataPerVertex\", {\n get: function () {\n return this._dataPerVertex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexBufferWebGL.prototype, \"glBuffer\", {\n get: function () {\n return this._buffer;\n },\n enumerable: true,\n configurable: true\n });\n VertexBufferWebGL.prototype.dispose = function () {\n this._gl.deleteBuffer(this._buffer);\n };\n return VertexBufferWebGL;\n}());\nexport { VertexBufferWebGL };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/webgl/VertexBufferWebGL.js","import { Rectangle, CoordinateSystem } from \"@awayjs/core\";\nimport { BitmapImage2D } from \"@awayjs/graphics\";\nimport { ContextGLBlendFactor } from \"../base/ContextGLBlendFactor\";\nimport { ContextGLDrawMode } from \"../base/ContextGLDrawMode\";\nimport { ContextGLClearMask } from \"../base/ContextGLClearMask\";\nimport { ContextGLCompareMode } from \"../base/ContextGLCompareMode\";\nimport { ContextGLMipFilter } from \"../base/ContextGLMipFilter\";\nimport { ContextGLProgramType } from \"../base/ContextGLProgramType\";\nimport { ContextGLStencilAction } from \"../base/ContextGLStencilAction\";\nimport { ContextGLTextureFilter } from \"../base/ContextGLTextureFilter\";\nimport { ContextGLTriangleFace } from \"../base/ContextGLTriangleFace\";\nimport { ContextGLVertexBufferFormat } from \"../base/ContextGLVertexBufferFormat\";\nimport { ContextGLWrapMode } from \"../base/ContextGLWrapMode\";\nimport { SamplerState } from \"../base/SamplerState\";\nimport { CubeTextureWebGL } from \"./CubeTextureWebGL\";\nimport { IndexBufferWebGL } from \"./IndexBufferWebGL\";\nimport { ProgramWebGL } from \"./ProgramWebGL\";\nimport { TextureWebGL } from \"./TextureWebGL\";\nimport { VertexBufferWebGL } from \"./VertexBufferWebGL\";\nvar ContextWebGL = (function () {\n function ContextWebGL(canvas) {\n this._blendFactorDictionary = new Object();\n this._drawModeDictionary = new Object();\n this._compareModeDictionary = new Object();\n this._stencilActionDictionary = new Object();\n this._textureIndexDictionary = new Array(8);\n this._textureTypeDictionary = new Object();\n this._wrapDictionary = new Object();\n this._filterDictionary = new Object();\n this._mipmapFilterDictionary = new Object();\n this._vertexBufferPropertiesDictionary = [];\n this._drawing = true;\n this._samplerStates = new Array(8);\n this._stencilReferenceValue = 0;\n this._stencilReadMask = 0xff;\n this._separateStencil = false;\n this._container = canvas;\n var props = {\n alpha: false,\n stencil: true\n };\n try {\n this._gl = canvas.getContext(\"experimental-webgl\", props);\n if (!this._gl)\n this._gl = canvas.getContext(\"webgl\", props);\n }\n catch (e) {\n }\n if (this._gl) {\n //this.dispatchEvent( new away.events.AwayEvent( away.events.AwayEvent.INITIALIZE_SUCCESS ) );\n if (this._gl.getExtension(\"OES_standard_derivatives\")) {\n this._standardDerivatives = true;\n }\n else {\n this._standardDerivatives = false;\n }\n //setup shortcut dictionaries\n this._blendFactorDictionary[ContextGLBlendFactor.ONE] = this._gl.ONE;\n this._blendFactorDictionary[ContextGLBlendFactor.DESTINATION_ALPHA] = this._gl.DST_ALPHA;\n this._blendFactorDictionary[ContextGLBlendFactor.DESTINATION_COLOR] = this._gl.DST_COLOR;\n this._blendFactorDictionary[ContextGLBlendFactor.ONE] = this._gl.ONE;\n this._blendFactorDictionary[ContextGLBlendFactor.ONE_MINUS_DESTINATION_ALPHA] = this._gl.ONE_MINUS_DST_ALPHA;\n this._blendFactorDictionary[ContextGLBlendFactor.ONE_MINUS_DESTINATION_COLOR] = this._gl.ONE_MINUS_DST_COLOR;\n this._blendFactorDictionary[ContextGLBlendFactor.ONE_MINUS_SOURCE_ALPHA] = this._gl.ONE_MINUS_SRC_ALPHA;\n this._blendFactorDictionary[ContextGLBlendFactor.ONE_MINUS_SOURCE_COLOR] = this._gl.ONE_MINUS_SRC_COLOR;\n this._blendFactorDictionary[ContextGLBlendFactor.SOURCE_ALPHA] = this._gl.SRC_ALPHA;\n this._blendFactorDictionary[ContextGLBlendFactor.SOURCE_COLOR] = this._gl.SRC_COLOR;\n this._blendFactorDictionary[ContextGLBlendFactor.ZERO] = this._gl.ZERO;\n this._drawModeDictionary[ContextGLDrawMode.LINES] = this._gl.LINES;\n this._drawModeDictionary[ContextGLDrawMode.TRIANGLES] = this._gl.TRIANGLES;\n this._compareModeDictionary[ContextGLCompareMode.ALWAYS] = this._gl.ALWAYS;\n this._compareModeDictionary[ContextGLCompareMode.EQUAL] = this._gl.EQUAL;\n this._compareModeDictionary[ContextGLCompareMode.GREATER] = this._gl.GREATER;\n this._compareModeDictionary[ContextGLCompareMode.GREATER_EQUAL] = this._gl.GEQUAL;\n this._compareModeDictionary[ContextGLCompareMode.LESS] = this._gl.LESS;\n this._compareModeDictionary[ContextGLCompareMode.LESS_EQUAL] = this._gl.LEQUAL;\n this._compareModeDictionary[ContextGLCompareMode.NEVER] = this._gl.NEVER;\n this._compareModeDictionary[ContextGLCompareMode.NOT_EQUAL] = this._gl.NOTEQUAL;\n this._stencilActionDictionary[ContextGLStencilAction.DECREMENT_SATURATE] = this._gl.DECR;\n this._stencilActionDictionary[ContextGLStencilAction.DECREMENT_WRAP] = this._gl.DECR_WRAP;\n this._stencilActionDictionary[ContextGLStencilAction.INCREMENT_SATURATE] = this._gl.INCR;\n this._stencilActionDictionary[ContextGLStencilAction.INCREMENT_WRAP] = this._gl.INCR_WRAP;\n this._stencilActionDictionary[ContextGLStencilAction.INVERT] = this._gl.INVERT;\n this._stencilActionDictionary[ContextGLStencilAction.KEEP] = this._gl.KEEP;\n this._stencilActionDictionary[ContextGLStencilAction.SET] = this._gl.REPLACE;\n this._stencilActionDictionary[ContextGLStencilAction.ZERO] = this._gl.ZERO;\n this._textureIndexDictionary[0] = this._gl.TEXTURE0;\n this._textureIndexDictionary[1] = this._gl.TEXTURE1;\n this._textureIndexDictionary[2] = this._gl.TEXTURE2;\n this._textureIndexDictionary[3] = this._gl.TEXTURE3;\n this._textureIndexDictionary[4] = this._gl.TEXTURE4;\n this._textureIndexDictionary[5] = this._gl.TEXTURE5;\n this._textureIndexDictionary[6] = this._gl.TEXTURE6;\n this._textureIndexDictionary[7] = this._gl.TEXTURE7;\n this._textureTypeDictionary[\"texture2d\"] = this._gl.TEXTURE_2D;\n this._textureTypeDictionary[\"textureCube\"] = this._gl.TEXTURE_CUBE_MAP;\n this._wrapDictionary[ContextGLWrapMode.REPEAT] = this._gl.REPEAT;\n this._wrapDictionary[ContextGLWrapMode.CLAMP] = this._gl.CLAMP_TO_EDGE;\n this._filterDictionary[ContextGLTextureFilter.LINEAR] = this._gl.LINEAR;\n this._filterDictionary[ContextGLTextureFilter.NEAREST] = this._gl.NEAREST;\n this._mipmapFilterDictionary[ContextGLTextureFilter.LINEAR] = new Object();\n this._mipmapFilterDictionary[ContextGLTextureFilter.LINEAR][ContextGLMipFilter.MIPNEAREST] = this._gl.LINEAR_MIPMAP_NEAREST;\n this._mipmapFilterDictionary[ContextGLTextureFilter.LINEAR][ContextGLMipFilter.MIPLINEAR] = this._gl.LINEAR_MIPMAP_LINEAR;\n this._mipmapFilterDictionary[ContextGLTextureFilter.LINEAR][ContextGLMipFilter.MIPNONE] = this._gl.LINEAR;\n this._mipmapFilterDictionary[ContextGLTextureFilter.NEAREST] = new Object();\n this._mipmapFilterDictionary[ContextGLTextureFilter.NEAREST][ContextGLMipFilter.MIPNEAREST] = this._gl.NEAREST_MIPMAP_NEAREST;\n this._mipmapFilterDictionary[ContextGLTextureFilter.NEAREST][ContextGLMipFilter.MIPLINEAR] = this._gl.NEAREST_MIPMAP_LINEAR;\n this._mipmapFilterDictionary[ContextGLTextureFilter.NEAREST][ContextGLMipFilter.MIPNONE] = this._gl.NEAREST;\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.FLOAT_1] = new VertexBufferProperties(1, this._gl.FLOAT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.FLOAT_2] = new VertexBufferProperties(2, this._gl.FLOAT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.FLOAT_3] = new VertexBufferProperties(3, this._gl.FLOAT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.FLOAT_4] = new VertexBufferProperties(4, this._gl.FLOAT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.BYTE_1] = new VertexBufferProperties(1, this._gl.BYTE, true);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.BYTE_2] = new VertexBufferProperties(2, this._gl.BYTE, true);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.BYTE_3] = new VertexBufferProperties(3, this._gl.BYTE, true);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.BYTE_4] = new VertexBufferProperties(4, this._gl.BYTE, true);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.UNSIGNED_BYTE_1] = new VertexBufferProperties(1, this._gl.UNSIGNED_BYTE, true);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.UNSIGNED_BYTE_2] = new VertexBufferProperties(2, this._gl.UNSIGNED_BYTE, true);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.UNSIGNED_BYTE_3] = new VertexBufferProperties(3, this._gl.UNSIGNED_BYTE, true);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.UNSIGNED_BYTE_4] = new VertexBufferProperties(4, this._gl.UNSIGNED_BYTE, true);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.SHORT_1] = new VertexBufferProperties(1, this._gl.SHORT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.SHORT_2] = new VertexBufferProperties(2, this._gl.SHORT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.SHORT_3] = new VertexBufferProperties(3, this._gl.SHORT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.SHORT_4] = new VertexBufferProperties(4, this._gl.SHORT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.UNSIGNED_SHORT_1] = new VertexBufferProperties(1, this._gl.UNSIGNED_SHORT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.UNSIGNED_SHORT_2] = new VertexBufferProperties(2, this._gl.UNSIGNED_SHORT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.UNSIGNED_SHORT_3] = new VertexBufferProperties(3, this._gl.UNSIGNED_SHORT, false);\n this._vertexBufferPropertiesDictionary[ContextGLVertexBufferFormat.UNSIGNED_SHORT_4] = new VertexBufferProperties(4, this._gl.UNSIGNED_SHORT, false);\n this._stencilCompareMode = this._gl.ALWAYS;\n this._stencilCompareModeBack = this._gl.ALWAYS;\n this._stencilCompareModeFront = this._gl.ALWAYS;\n var dpr = window.devicePixelRatio || 1;\n var bsr = this._gl[\"webkitBackingStorePixelRatio\"] ||\n this._gl[\"mozBackingStorePixelRatio\"] ||\n this._gl[\"msBackingStorePixelRatio\"] ||\n this._gl[\"oBackingStorePixelRatio\"] ||\n this._gl[\"backingStorePixelRatio\"] || 1;\n this._pixelRatio = dpr / bsr;\n }\n else {\n //this.dispatchEvent( new away.events.AwayEvent( away.events.AwayEvent.INITIALIZE_FAILED, e ) );\n alert(\"WebGL is not available.\");\n }\n //defaults\n for (var i = 0; i < ContextWebGL.MAX_SAMPLERS; ++i) {\n this._samplerStates[i] = new SamplerState();\n this._samplerStates[i].wrap = this._gl.REPEAT;\n this._samplerStates[i].filter = this._gl.LINEAR;\n this._samplerStates[i].mipfilter = this._gl.LINEAR;\n }\n }\n Object.defineProperty(ContextWebGL.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContextWebGL.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContextWebGL.prototype, \"standardDerivatives\", {\n get: function () {\n return this._standardDerivatives;\n },\n enumerable: true,\n configurable: true\n });\n ContextWebGL.prototype.gl = function () {\n return this._gl;\n };\n ContextWebGL.prototype.clear = function (red, green, blue, alpha, depth, stencil, mask) {\n if (red === void 0) { red = 0; }\n if (green === void 0) { green = 0; }\n if (blue === void 0) { blue = 0; }\n if (alpha === void 0) { alpha = 1; }\n if (depth === void 0) { depth = 1; }\n if (stencil === void 0) { stencil = 0; }\n if (mask === void 0) { mask = ContextGLClearMask.ALL; }\n if (!this._drawing) {\n this.updateBlendStatus();\n this._drawing = true;\n }\n var glmask = 0;\n if (mask & ContextGLClearMask.COLOR)\n glmask |= this._gl.COLOR_BUFFER_BIT;\n if (mask & ContextGLClearMask.STENCIL)\n glmask |= this._gl.STENCIL_BUFFER_BIT;\n if (mask & ContextGLClearMask.DEPTH)\n glmask |= this._gl.DEPTH_BUFFER_BIT;\n this._gl.clearColor(red, green, blue, alpha);\n this._gl.clearDepth(depth);\n this._gl.clearStencil(stencil);\n this._gl.clear(glmask);\n };\n ContextWebGL.prototype.configureBackBuffer = function (width, height, antiAlias, enableDepthAndStencil) {\n if (enableDepthAndStencil === void 0) { enableDepthAndStencil = true; }\n this._width = width * this._pixelRatio;\n this._height = height * this._pixelRatio;\n if (enableDepthAndStencil) {\n this._gl.enable(this._gl.STENCIL_TEST);\n this._gl.enable(this._gl.DEPTH_TEST);\n }\n this._gl.viewport(0, 0, this._width, this._height);\n };\n ContextWebGL.prototype.createCubeTexture = function (size, format, optimizeForRenderToTexture, streamingLevels) {\n if (streamingLevels === void 0) { streamingLevels = 0; }\n return new CubeTextureWebGL(this._gl, size);\n };\n ContextWebGL.prototype.createIndexBuffer = function (numIndices) {\n return new IndexBufferWebGL(this._gl, numIndices);\n };\n ContextWebGL.prototype.createProgram = function () {\n return new ProgramWebGL(this._gl);\n };\n ContextWebGL.prototype.createTexture = function (width, height, format, optimizeForRenderToTexture, streamingLevels) {\n if (streamingLevels === void 0) { streamingLevels = 0; }\n //TODO streaming\n return new TextureWebGL(this._gl, width, height);\n };\n ContextWebGL.prototype.createVertexBuffer = function (numVertices, dataPerVertex) {\n return new VertexBufferWebGL(this._gl, numVertices, dataPerVertex);\n };\n ContextWebGL.prototype.dispose = function () {\n for (var i = 0; i < this._samplerStates.length; ++i)\n this._samplerStates[i] = null;\n };\n ContextWebGL.prototype.drawToBitmapImage2D = function (destination) {\n var pixels = new Uint8Array(destination.width * destination.height * 4);\n this._gl.readPixels(0, 0, destination.width, destination.height, this._gl.RGBA, this._gl.UNSIGNED_BYTE, pixels);\n var dummy = new BitmapImage2D(destination.width, destination.height, true, 0x0, false);\n dummy.setPixels(new Rectangle(0, 0, destination.width, destination.height), new Uint8ClampedArray(pixels.buffer));\n destination.draw(dummy);\n };\n ContextWebGL.prototype.drawIndices = function (mode, indexBuffer, firstIndex, numIndices) {\n if (firstIndex === void 0) { firstIndex = 0; }\n if (numIndices === void 0) { numIndices = -1; }\n if (!this._drawing)\n throw \"Need to clear before drawing if the buffer has not been cleared since the last present() call.\";\n this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER, indexBuffer.glBuffer);\n // Note: The 2 code options below are for #1 production and #2 debugging. Pick one and comment the other.\n // #1\n this._gl.drawElements(this._drawModeDictionary[mode], (numIndices == -1) ? indexBuffer.numIndices : numIndices, this._gl.UNSIGNED_SHORT, firstIndex * 2);\n // #2\n // for (var i:number = 0; i < numIndices; i+=3) {\n // \tthis._gl.drawElements(this._gl.LINE_LOOP, 3, this._gl.UNSIGNED_SHORT, (firstIndex+i)*2);\n // }\n };\n ContextWebGL.prototype.drawVertices = function (mode, firstVertex, numVertices) {\n if (firstVertex === void 0) { firstVertex = 0; }\n if (numVertices === void 0) { numVertices = -1; }\n if (!this._drawing)\n throw \"Need to clear before drawing if the buffer has not been cleared since the last present() call.\";\n //DEBUG: draws triangle outlines\n // for (var i:number = 0; i < numVertices; i+=3) {\n // \tthis._gl.drawArrays(this._gl.LINE_LOOP, firstVertex+i, 3);\n // }\n // todo: this check should not be needed.\n // for now it is here to prevent ugly gpu warnings when trying to render numVertices=0\n if (numVertices == 0)\n return;\n this._gl.drawArrays(this._drawModeDictionary[mode], firstVertex, numVertices);\n };\n ContextWebGL.prototype.present = function () {\n //this._drawing = false;\n };\n ContextWebGL.prototype.setBlendFactors = function (sourceFactor, destinationFactor) {\n this._blendEnabled = true;\n this._blendSourceFactor = this._blendFactorDictionary[sourceFactor];\n this._blendDestinationFactor = this._blendFactorDictionary[destinationFactor];\n this.updateBlendStatus();\n };\n ContextWebGL.prototype.setColorMask = function (red, green, blue, alpha) {\n this._gl.colorMask(red, green, blue, alpha);\n };\n ContextWebGL.prototype.setCulling = function (triangleFaceToCull, coordinateSystem) {\n if (coordinateSystem === void 0) { coordinateSystem = CoordinateSystem.LEFT_HANDED; }\n if (triangleFaceToCull == ContextGLTriangleFace.NONE) {\n this._gl.disable(this._gl.CULL_FACE);\n }\n else {\n this._gl.enable(this._gl.CULL_FACE);\n this._gl.cullFace(this.translateTriangleFace(triangleFaceToCull, coordinateSystem));\n }\n };\n // TODO ContextGLCompareMode\n ContextWebGL.prototype.setDepthTest = function (depthMask, passCompareMode) {\n this._gl.depthFunc(this._compareModeDictionary[passCompareMode]);\n this._gl.depthMask(depthMask);\n };\n ContextWebGL.prototype.enableStencil = function () {\n this._gl.enable(this._gl.STENCIL_TEST);\n };\n ContextWebGL.prototype.disableStencil = function () {\n this._gl.disable(this._gl.STENCIL_TEST);\n };\n ContextWebGL.prototype.setStencilActions = function (triangleFace, compareMode, actionOnBothPass, actionOnDepthFail, actionOnDepthPassStencilFail, coordinateSystem) {\n if (triangleFace === void 0) { triangleFace = ContextGLTriangleFace.FRONT_AND_BACK; }\n if (compareMode === void 0) { compareMode = ContextGLCompareMode.ALWAYS; }\n if (actionOnBothPass === void 0) { actionOnBothPass = ContextGLStencilAction.KEEP; }\n if (actionOnDepthFail === void 0) { actionOnDepthFail = ContextGLStencilAction.KEEP; }\n if (actionOnDepthPassStencilFail === void 0) { actionOnDepthPassStencilFail = ContextGLStencilAction.KEEP; }\n if (coordinateSystem === void 0) { coordinateSystem = CoordinateSystem.LEFT_HANDED; }\n this._separateStencil = triangleFace != ContextGLTriangleFace.FRONT_AND_BACK;\n var compareModeGL = this._compareModeDictionary[compareMode];\n var fail = this._stencilActionDictionary[actionOnDepthPassStencilFail];\n var zFail = this._stencilActionDictionary[actionOnDepthFail];\n var pass = this._stencilActionDictionary[actionOnBothPass];\n if (!this._separateStencil) {\n this._stencilCompareMode = compareModeGL;\n this._gl.stencilFunc(compareModeGL, this._stencilReferenceValue, this._stencilReadMask);\n this._gl.stencilOp(fail, zFail, pass);\n }\n else if (triangleFace == ContextGLTriangleFace.BACK) {\n this._stencilCompareModeBack = compareModeGL;\n this._gl.stencilFuncSeparate(this._gl.BACK, compareModeGL, this._stencilReferenceValue, this._stencilReadMask);\n this._gl.stencilOpSeparate(this._gl.BACK, fail, zFail, pass);\n }\n else if (triangleFace == ContextGLTriangleFace.FRONT) {\n this._stencilCompareModeFront = compareModeGL;\n this._gl.stencilFuncSeparate(this._gl.FRONT, compareModeGL, this._stencilReferenceValue, this._stencilReadMask);\n this._gl.stencilOpSeparate(this._gl.FRONT, fail, zFail, pass);\n }\n };\n ContextWebGL.prototype.setStencilReferenceValue = function (referenceValue, readMask, writeMask) {\n if (readMask === void 0) { readMask = 0xFF; }\n if (writeMask === void 0) { writeMask = 0xFF; }\n this._stencilReferenceValue = referenceValue;\n this._stencilReadMask = readMask;\n if (this._separateStencil) {\n this._gl.stencilFuncSeparate(this._gl.FRONT, this._stencilCompareModeFront, referenceValue, readMask);\n this._gl.stencilFuncSeparate(this._gl.BACK, this._stencilCompareModeBack, referenceValue, readMask);\n }\n else {\n this._gl.stencilFunc(this._stencilCompareMode, referenceValue, readMask);\n }\n this._gl.stencilMask(writeMask);\n };\n ContextWebGL.prototype.setProgram = function (program) {\n //TODO decide on construction/reference resposibilities\n this._currentProgram = program;\n program.focusProgram();\n };\n ContextWebGL.prototype.setProgramConstantsFromArray = function (programType, data) {\n if (data.length)\n this._gl.uniform4fv(this._currentProgram.getUniformLocation(programType), data);\n };\n ContextWebGL.prototype.setScissorRectangle = function (rectangle) {\n if (!rectangle) {\n this._gl.disable(this._gl.SCISSOR_TEST);\n return;\n }\n this._gl.enable(this._gl.SCISSOR_TEST);\n this._gl.scissor(rectangle.x * this._pixelRatio, this._height - (rectangle.y + rectangle.height) * this._pixelRatio, rectangle.width * this._pixelRatio, rectangle.height * this._pixelRatio);\n };\n ContextWebGL.prototype.setTextureAt = function (sampler, texture) {\n var samplerState = this._samplerStates[sampler];\n if (this._activeTexture != sampler && (texture || samplerState.type)) {\n this._activeTexture = sampler;\n this._gl.activeTexture(this._textureIndexDictionary[sampler]);\n }\n if (!texture) {\n if (samplerState.type) {\n this._gl.bindTexture(samplerState.type, null);\n samplerState.type = null;\n }\n return;\n }\n var textureType = this._textureTypeDictionary[texture.textureType];\n samplerState.type = textureType;\n this._gl.bindTexture(textureType, texture.glTexture);\n this._gl.uniform1i(this._currentProgram.getUniformLocation(ContextGLProgramType.SAMPLER, sampler), sampler);\n this._gl.texParameteri(textureType, this._gl.TEXTURE_WRAP_S, samplerState.wrap);\n this._gl.texParameteri(textureType, this._gl.TEXTURE_WRAP_T, samplerState.wrap);\n this._gl.texParameteri(textureType, this._gl.TEXTURE_MAG_FILTER, samplerState.filter);\n this._gl.texParameteri(textureType, this._gl.TEXTURE_MIN_FILTER, samplerState.mipfilter);\n };\n ContextWebGL.prototype.setSamplerStateAt = function (sampler, wrap, filter, mipfilter) {\n if (0 <= sampler && sampler < ContextWebGL.MAX_SAMPLERS) {\n this._samplerStates[sampler].wrap = this._wrapDictionary[wrap];\n this._samplerStates[sampler].filter = this._filterDictionary[filter];\n this._samplerStates[sampler].mipfilter = this._mipmapFilterDictionary[filter][mipfilter];\n }\n else {\n throw \"Sampler is out of bounds.\";\n }\n };\n ContextWebGL.prototype.setVertexBufferAt = function (index, buffer, bufferOffset, format) {\n if (bufferOffset === void 0) { bufferOffset = 0; }\n if (format === void 0) { format = 4; }\n var location = this._currentProgram ? this._currentProgram.getAttribLocation(index) : -1;\n if (!buffer) {\n if (location > -1)\n this._gl.disableVertexAttribArray(location);\n return;\n }\n //buffer may not have changed if concatenated buffers are being used\n if (this._currentArrayBuffer != buffer) {\n this._currentArrayBuffer = buffer;\n this._gl.bindBuffer(this._gl.ARRAY_BUFFER, buffer ? buffer.glBuffer : null);\n }\n var properties = this._vertexBufferPropertiesDictionary[format];\n this._gl.enableVertexAttribArray(location);\n this._gl.vertexAttribPointer(location, properties.size, properties.type, properties.normalized, buffer.dataPerVertex, bufferOffset);\n };\n ContextWebGL.prototype.setRenderToTexture = function (target, enableDepthAndStencil, antiAlias, surfaceSelector) {\n if (enableDepthAndStencil === void 0) { enableDepthAndStencil = false; }\n if (antiAlias === void 0) { antiAlias = 0; }\n if (surfaceSelector === void 0) { surfaceSelector = 0; }\n var texture = target;\n var frameBuffer = texture.frameBuffer;\n this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, frameBuffer);\n if (enableDepthAndStencil) {\n this._gl.enable(this._gl.STENCIL_TEST);\n this._gl.enable(this._gl.DEPTH_TEST);\n }\n this._gl.viewport(0, 0, texture.width, texture.height);\n };\n ContextWebGL.prototype.setRenderToBackBuffer = function () {\n this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, null);\n };\n ContextWebGL.prototype.updateBlendStatus = function () {\n if (this._blendEnabled) {\n this._gl.enable(this._gl.BLEND);\n this._gl.blendEquation(this._gl.FUNC_ADD);\n this._gl.blendFunc(this._blendSourceFactor, this._blendDestinationFactor);\n }\n else {\n this._gl.disable(this._gl.BLEND);\n }\n };\n ContextWebGL.prototype.translateTriangleFace = function (triangleFace, coordinateSystem) {\n switch (triangleFace) {\n case ContextGLTriangleFace.BACK:\n return (coordinateSystem == CoordinateSystem.LEFT_HANDED) ? this._gl.FRONT : this._gl.BACK;\n case ContextGLTriangleFace.FRONT:\n return (coordinateSystem == CoordinateSystem.LEFT_HANDED) ? this._gl.BACK : this._gl.FRONT;\n case ContextGLTriangleFace.FRONT_AND_BACK:\n return this._gl.FRONT_AND_BACK;\n default:\n throw \"Unknown ContextGLTriangleFace type.\"; // TODO error\n }\n };\n return ContextWebGL;\n}());\nexport { ContextWebGL };\nContextWebGL.MAX_SAMPLERS = 8;\nContextWebGL.modulo = 0;\nvar VertexBufferProperties = (function () {\n function VertexBufferProperties(size, type, normalized) {\n this.size = size;\n this.type = type;\n this.normalized = normalized;\n }\n return VertexBufferProperties;\n}());\nexport { VertexBufferProperties };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/webgl/ContextWebGL.js","import * as tslib_1 from \"tslib\";\nimport { EventDispatcher, Rectangle, CSS } from \"@awayjs/core\";\nimport { ContextMode } from \"./base/ContextMode\";\nimport { ContextGLMipFilter } from \"./base/ContextGLMipFilter\";\nimport { ContextGLTextureFilter } from \"./base/ContextGLTextureFilter\";\nimport { ContextGLVertexBufferFormat } from \"./base/ContextGLVertexBufferFormat\";\nimport { ContextGLWrapMode } from \"./base/ContextGLWrapMode\";\nimport { ContextGLProfile } from \"./base/ContextGLProfile\";\nimport { StageEvent } from \"./events/StageEvent\";\nimport { ContextFlash } from \"./flash/ContextFlash\";\nimport { ContextGLES } from \"./gles/ContextGLES\";\nimport { ProgramDataPool } from \"./image/ProgramDataPool\";\nimport { ContextSoftware } from \"./software/ContextSoftware\";\nimport { ContextWebGL } from \"./webgl/ContextWebGL\";\n/**\n * Stage provides a proxy class to handle the creation and attachment of the Context\n * (and in turn the back buffer) it uses. Stage should never be created directly,\n * but requested through StageManager.\n *\n * @see away.managers.StageManager\n *\n */\nvar Stage = (function (_super) {\n tslib_1.__extends(Stage, _super);\n function Stage(container, stageIndex, stageManager, forceSoftware, profile) {\n if (forceSoftware === void 0) { forceSoftware = false; }\n if (profile === void 0) { profile = ContextGLProfile.BASELINE; }\n var _this = _super.call(this) || this;\n _this._abstractionPool = new Object();\n _this._programData = new Array();\n _this._x = 0;\n _this._y = 0;\n //private static _frameEventDriver:Shape = new Shape(); // TODO: add frame driver/request animation frame\n _this._stageIndex = -1;\n _this._antiAlias = 0;\n //private var _activeVertexBuffers : Vector. = new Vector.(8, true);\n //private var _activeTextures : Vector. = new Vector.(8, true);\n _this._renderTarget = null;\n _this._renderSurfaceSelector = 0;\n //private _mouse3DManager:away.managers.Mouse3DManager;\n //private _touch3DManager:Touch3DManager; //TODO: imeplement dependency Touch3DManager\n _this._initialised = false;\n _this._bufferFormatDictionary = new Array(5);\n _this.globalDisableMipmap = false;\n _this.globalDisableSmooth = false;\n _this._programDataPool = new ProgramDataPool(_this);\n _this._container = container;\n if (_this._container) {\n _this._container.addEventListener(\"webglcontextlost\", function (event) { return _this.onContextLost(event); });\n _this._container.addEventListener(\"webglcontextrestored\", function (event) { return _this.onContextRestored(event); });\n }\n _this._stageIndex = stageIndex;\n _this._stageManager = stageManager;\n _this._viewPort = new Rectangle();\n _this._enableDepthAndStencil = true;\n CSS.setElementX(_this._container, 0);\n CSS.setElementY(_this._container, 0);\n _this._bufferFormatDictionary[1] = new Array(5);\n _this._bufferFormatDictionary[1][1] = ContextGLVertexBufferFormat.BYTE_1;\n _this._bufferFormatDictionary[1][2] = ContextGLVertexBufferFormat.BYTE_2;\n _this._bufferFormatDictionary[1][3] = ContextGLVertexBufferFormat.BYTE_3;\n _this._bufferFormatDictionary[1][4] = ContextGLVertexBufferFormat.BYTE_4;\n _this._bufferFormatDictionary[2] = new Array(5);\n _this._bufferFormatDictionary[2][1] = ContextGLVertexBufferFormat.SHORT_1;\n _this._bufferFormatDictionary[2][2] = ContextGLVertexBufferFormat.SHORT_2;\n _this._bufferFormatDictionary[2][3] = ContextGLVertexBufferFormat.SHORT_3;\n _this._bufferFormatDictionary[2][4] = ContextGLVertexBufferFormat.SHORT_4;\n _this._bufferFormatDictionary[4] = new Array(5);\n _this._bufferFormatDictionary[4][1] = ContextGLVertexBufferFormat.FLOAT_1;\n _this._bufferFormatDictionary[4][2] = ContextGLVertexBufferFormat.FLOAT_2;\n _this._bufferFormatDictionary[4][3] = ContextGLVertexBufferFormat.FLOAT_3;\n _this._bufferFormatDictionary[4][4] = ContextGLVertexBufferFormat.FLOAT_4;\n _this._bufferFormatDictionary[5] = new Array(5);\n _this._bufferFormatDictionary[5][1] = ContextGLVertexBufferFormat.UNSIGNED_BYTE_1;\n _this._bufferFormatDictionary[5][2] = ContextGLVertexBufferFormat.UNSIGNED_BYTE_2;\n _this._bufferFormatDictionary[5][3] = ContextGLVertexBufferFormat.UNSIGNED_BYTE_3;\n _this._bufferFormatDictionary[5][4] = ContextGLVertexBufferFormat.UNSIGNED_BYTE_4;\n _this._bufferFormatDictionary[6] = new Array(5);\n _this._bufferFormatDictionary[6][1] = ContextGLVertexBufferFormat.UNSIGNED_SHORT_1;\n _this._bufferFormatDictionary[6][2] = ContextGLVertexBufferFormat.UNSIGNED_SHORT_2;\n _this._bufferFormatDictionary[6][3] = ContextGLVertexBufferFormat.UNSIGNED_SHORT_3;\n _this._bufferFormatDictionary[6][4] = ContextGLVertexBufferFormat.UNSIGNED_SHORT_4;\n _this.visible = true;\n return _this;\n }\n Stage.prototype.getProgramData = function (vertexString, fragmentString) {\n return this._programDataPool.getItem(vertexString, fragmentString);\n };\n Stage.prototype.setRenderTarget = function (target, enableDepthAndStencil, surfaceSelector) {\n if (enableDepthAndStencil === void 0) { enableDepthAndStencil = false; }\n if (surfaceSelector === void 0) { surfaceSelector = 0; }\n if (this._renderTarget === target && surfaceSelector == this._renderSurfaceSelector && this._enableDepthAndStencil == enableDepthAndStencil)\n return;\n this._renderTarget = target;\n this._renderSurfaceSelector = surfaceSelector;\n this._enableDepthAndStencil = enableDepthAndStencil;\n if (target) {\n this._context.setRenderToTexture(this.getAbstraction(target).getTexture(), enableDepthAndStencil, this._antiAlias, surfaceSelector);\n }\n else {\n this._context.setRenderToBackBuffer();\n this.configureBackBuffer(this._width, this._height, this._antiAlias, this._enableDepthAndStencil);\n }\n };\n Stage.prototype.getAbstraction = function (asset) {\n return (this._abstractionPool[asset.id] || (this._abstractionPool[asset.id] = new Stage._abstractionClassPool[asset.assetType](asset, this)));\n };\n /**\n *\n * @param image\n */\n Stage.prototype.clearAbstraction = function (asset) {\n this._abstractionPool[asset.id] = null;\n };\n /**\n *\n * @param imageObjectClass\n */\n Stage.registerAbstraction = function (gl_assetClass, assetClass) {\n Stage._abstractionClassPool[assetClass.assetType] = gl_assetClass;\n };\n /**\n * Requests a Context object to attach to the managed gl canvas.\n */\n Stage.prototype.requestContext = function (forceSoftware, profile, mode) {\n // If forcing software, we can be certain that the\n // returned Context will be running software mode.\n // If not, we can't be sure and should stick to the\n // old value (will likely be same if re-requesting.)\n var _this = this;\n if (forceSoftware === void 0) { forceSoftware = false; }\n if (profile === void 0) { profile = ContextGLProfile.BASELINE; }\n if (mode === void 0) { mode = ContextMode.AUTO; }\n if (this._usesSoftwareRendering != null)\n this._usesSoftwareRendering = forceSoftware;\n this._profile = profile;\n try {\n if (mode == ContextMode.FLASH)\n new ContextFlash(this._container, function (context) { return _this._callback(context); });\n else if (mode == ContextMode.SOFTWARE)\n this._context = new ContextSoftware(this._container);\n else if (mode == ContextMode.GLES)\n this._context = new ContextGLES(this._container);\n else\n this._context = new ContextWebGL(this._container);\n }\n catch (e) {\n try {\n if (mode == ContextMode.AUTO)\n new ContextFlash(this._container, function (context) { return _this._callback(context); });\n else\n this.dispatchEvent(new StageEvent(StageEvent.STAGE_ERROR, this));\n }\n catch (e) {\n this.dispatchEvent(new StageEvent(StageEvent.STAGE_ERROR, this));\n }\n }\n if (this._context)\n this._callback(this._context);\n };\n Object.defineProperty(Stage.prototype, \"width\", {\n /**\n * The width of the gl canvas\n */\n get: function () {\n return this._width;\n },\n set: function (val) {\n if (this._width == val)\n return;\n this._container.style.width = val + \"px\";\n this._container.width = val * this._context.pixelRatio;\n this._width = this._viewPort.width = val;\n this._backBufferDirty = true;\n this.notifyViewportUpdated();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"height\", {\n /**\n * The height of the gl canvas\n */\n get: function () {\n return this._height;\n },\n set: function (val) {\n if (this._height == val)\n return;\n this._container.style.height = val + \"px\";\n this._container.height = val * this._context.pixelRatio;\n this._height = this._viewPort.height = val;\n this._backBufferDirty = true;\n this.notifyViewportUpdated();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"x\", {\n /**\n * The x position of the gl canvas\n */\n get: function () {\n return this._x;\n },\n set: function (val) {\n if (this._x == val)\n return;\n CSS.setElementX(this._container, val);\n this._x = this._viewPort.x = val;\n this.notifyViewportUpdated();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"y\", {\n /**\n * The y position of the gl canvas\n */\n get: function () {\n return this._y;\n },\n set: function (val) {\n if (this._y == val)\n return;\n CSS.setElementY(this._container, val);\n this._y = this._viewPort.y = val;\n this.notifyViewportUpdated();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"visible\", {\n get: function () {\n return CSS.getElementVisibility(this._container);\n },\n set: function (val) {\n CSS.setElementVisibility(this._container, val);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"context\", {\n /**\n * The Context object associated with the given stage object.\n */\n get: function () {\n return this._context;\n },\n enumerable: true,\n configurable: true\n });\n Stage.prototype.notifyViewportUpdated = function () {\n if (this._viewportDirty)\n return;\n this._viewportDirty = true;\n this.dispatchEvent(new StageEvent(StageEvent.VIEWPORT_UPDATED, this));\n };\n Object.defineProperty(Stage.prototype, \"profile\", {\n get: function () {\n return this._profile;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Disposes the Stage object, freeing the Context attached to the Stage.\n */\n Stage.prototype.dispose = function () {\n for (var id in this._abstractionPool)\n this._abstractionPool[id].clear();\n this._abstractionPool = null;\n this._stageManager.iRemoveStage(this);\n this.freeContext();\n this._stageManager = null;\n this._stageIndex = -1;\n };\n /**\n * Configures the back buffer associated with the Stage object.\n * @param backBufferWidth The width of the backbuffer.\n * @param backBufferHeight The height of the backbuffer.\n * @param antiAlias The amount of anti-aliasing to use.\n * @param enableDepthAndStencil Indicates whether the back buffer contains a depth and stencil buffer.\n */\n Stage.prototype.configureBackBuffer = function (backBufferWidth, backBufferHeight, antiAlias, enableDepthAndStencil) {\n this.width = backBufferWidth;\n this.height = backBufferHeight;\n this._antiAlias = antiAlias;\n this._enableDepthAndStencil = enableDepthAndStencil;\n if (this._context)\n this._context.configureBackBuffer(backBufferWidth, backBufferHeight, antiAlias, enableDepthAndStencil);\n };\n Object.defineProperty(Stage.prototype, \"enableDepthAndStencil\", {\n /*\n * Indicates whether the depth and stencil buffer is used\n */\n get: function () {\n return this._enableDepthAndStencil;\n },\n set: function (enableDepthAndStencil) {\n this._enableDepthAndStencil = enableDepthAndStencil;\n this._backBufferDirty = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"renderTarget\", {\n get: function () {\n return this._renderTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"renderSurfaceSelector\", {\n get: function () {\n return this._renderSurfaceSelector;\n },\n enumerable: true,\n configurable: true\n });\n /*\n * Clear and reset the back buffer when using a shared context\n */\n Stage.prototype.clear = function () {\n if (!this._context)\n return;\n if (this._backBufferDirty) {\n this.configureBackBuffer(this._width, this._height, this._antiAlias, this._enableDepthAndStencil);\n this._backBufferDirty = false;\n }\n this._context.clear((this._color & 0xff000000) >>> 24, // <--------- Zero-fill right shift\n (this._color & 0xff0000) >>> 16, // <-------------|\n (this._color & 0xff00) >>> 8, // <----------------|\n this._color & 0xff);\n this._bufferClear = true;\n };\n Object.defineProperty(Stage.prototype, \"scissorRect\", {\n get: function () {\n return this._scissorRect;\n },\n set: function (value) {\n this._scissorRect = value;\n this._context.setScissorRectangle(this._scissorRect);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"stageIndex\", {\n /**\n * The index of the Stage which is managed by this instance of StageProxy.\n */\n get: function () {\n return this._stageIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"usesSoftwareRendering\", {\n /**\n * Indicates whether the Stage managed by this proxy is running in software mode.\n * Remember to wait for the CONTEXT_CREATED event before checking this property,\n * as only then will it be guaranteed to be accurate.\n */\n get: function () {\n return this._usesSoftwareRendering;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"antiAlias\", {\n /**\n * The antiAliasing of the Stage.\n */\n get: function () {\n return this._antiAlias;\n },\n set: function (antiAlias) {\n this._antiAlias = antiAlias;\n this._backBufferDirty = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"viewPort\", {\n /**\n * A viewPort rectangle equivalent of the Stage size and position.\n */\n get: function () {\n this._viewportDirty = false;\n return this._viewPort;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"color\", {\n /**\n * The background color of the Stage.\n */\n get: function () {\n return this._color;\n },\n set: function (color) {\n this._color = color;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Stage.prototype, \"bufferClear\", {\n /**\n * The freshly cleared state of the backbuffer before any rendering\n */\n get: function () {\n return this._bufferClear;\n },\n set: function (newBufferClear) {\n this._bufferClear = newBufferClear;\n },\n enumerable: true,\n configurable: true\n });\n Stage.prototype.registerProgram = function (programData) {\n var i = 0;\n while (this._programData[i] != null)\n i++;\n this._programData[i] = programData;\n programData.id = i;\n };\n Stage.prototype.unRegisterProgram = function (programData) {\n this._programData[programData.id] = null;\n programData.id = -1;\n };\n /**\n * Frees the Context associated with this StageProxy.\n */\n Stage.prototype.freeContext = function () {\n if (this._context) {\n this._context.dispose();\n this.dispatchEvent(new StageEvent(StageEvent.CONTEXT_DISPOSED, this));\n }\n this._context = null;\n this._initialised = false;\n };\n Stage.prototype.onContextLost = function (event) {\n };\n Stage.prototype.onContextRestored = function (event) {\n };\n Stage.prototype.recoverFromDisposal = function () {\n if (!this._context)\n return false;\n //away.Debug.throwPIR( 'StageProxy' , 'recoverFromDisposal' , '' );\n /*\n if (this._iContext.driverInfo == \"Disposed\")\n {\n this._iContext = null;\n this.dispatchEvent(new StageEvent(StageEvent.CONTEXT_DISPOSED));\n return false;\n\n }\n */\n return true;\n };\n Stage.prototype._callback = function (context) {\n this._context = context;\n this._container = this._context.container;\n // Only configure back buffer if width and height have been set,\n // which they may not have been if View.render() has yet to be\n // invoked for the first time.\n if (this._width && this._height)\n this._context.configureBackBuffer(this._width, this._height, this._antiAlias, this._enableDepthAndStencil);\n // Dispatch the appropriate event depending on whether context was\n // created for the first time or recreated after a device loss.\n this.dispatchEvent(new StageEvent(this._initialised ? StageEvent.CONTEXT_RECREATED : StageEvent.CONTEXT_CREATED, this));\n this._initialised = true;\n };\n Stage.prototype.setVertexBuffer = function (index, buffer, size, dimensions, offset, unsigned) {\n if (unsigned === void 0) { unsigned = false; }\n this._context.setVertexBufferAt(index, buffer, offset, this._bufferFormatDictionary[unsigned ? size + 4 : size][dimensions]);\n };\n Stage.prototype.setSamplerState = function (index, repeat, smooth, mipmap) {\n var wrap = repeat ? ContextGLWrapMode.REPEAT : ContextGLWrapMode.CLAMP;\n var filter = (smooth && !this.globalDisableSmooth) ? ContextGLTextureFilter.LINEAR : ContextGLTextureFilter.NEAREST;\n var mipfilter = (mipmap && !this.globalDisableMipmap) ? ContextGLMipFilter.MIPLINEAR : ContextGLMipFilter.MIPNONE;\n this._context.setSamplerStateAt(index, wrap, filter, mipfilter);\n };\n return Stage;\n}(EventDispatcher));\nexport { Stage };\nStage._abstractionClassPool = new Object();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/Stage.js","import * as tslib_1 from \"tslib\";\nimport { EventDispatcher, ArgumentError } from \"@awayjs/core\";\nimport { ContextMode } from \"../base/ContextMode\";\nimport { ContextGLProfile } from \"../base/ContextGLProfile\";\nimport { StageEvent } from \"../events/StageEvent\";\nimport { Stage } from \"../Stage\";\n/**\n * The StageManager class provides a multiton object that handles management for Stage objects.\n *\n * @see away.base.Stage\n */\nvar StageManager = (function (_super) {\n tslib_1.__extends(StageManager, _super);\n /**\n * Creates a new StageManager class.\n * @param stage The Stage object that contains the Stage objects to be managed.\n * @private\n */\n function StageManager() {\n var _this = _super.call(this) || this;\n _this._stages = new Array(StageManager.STAGE_MAX_QUANTITY);\n _this._onContextCreatedDelegate = function (event) { return _this.onContextCreated(event); };\n return _this;\n }\n /**\n * Gets a StageManager instance for the given Stage object.\n * @param stage The Stage object that contains the Stage objects to be managed.\n * @return The StageManager instance for the given Stage object.\n */\n StageManager.getInstance = function () {\n if (this._instance == null)\n this._instance = new StageManager();\n return this._instance;\n };\n /**\n * Requests the Stage for the given index.\n *\n * @param index The index of the requested Stage.\n * @param forceSoftware Whether to force software mode even if hardware acceleration is available.\n * @param profile The compatibility profile, an enumeration of ContextProfile\n * @return The Stage for the given index.\n */\n StageManager.prototype.getStageAt = function (index, forceSoftware, profile, mode) {\n if (forceSoftware === void 0) { forceSoftware = false; }\n if (profile === void 0) { profile = ContextGLProfile.BASELINE; }\n if (mode === void 0) { mode = ContextMode.AUTO; }\n if (index < 0 || index >= StageManager.STAGE_MAX_QUANTITY)\n throw new ArgumentError(\"Index is out of bounds [0..\" + StageManager.STAGE_MAX_QUANTITY + \"]\");\n if (!this._stages[index]) {\n StageManager._numStages++;\n if (document) {\n var canvas = document.createElement(\"canvas\");\n canvas.id = \"stage\" + index;\n document.body.appendChild(canvas);\n }\n var stage = this._stages[index] = new Stage(canvas, index, this, forceSoftware, profile);\n stage.addEventListener(StageEvent.CONTEXT_CREATED, this._onContextCreatedDelegate);\n stage.requestContext(forceSoftware, profile, mode);\n }\n return this._stages[index];\n };\n /**\n * Removes a Stage from the manager.\n * @param stage\n * @private\n */\n StageManager.prototype.iRemoveStage = function (stage) {\n StageManager._numStages--;\n stage.removeEventListener(StageEvent.CONTEXT_CREATED, this._onContextCreatedDelegate);\n this._stages[stage.stageIndex] = null;\n };\n /**\n * Get the next available stage. An error is thrown if there are no StageProxies available\n * @param forceSoftware Whether to force software mode even if hardware acceleration is available.\n * @param profile The compatibility profile, an enumeration of ContextProfile\n * @return The allocated stage\n */\n StageManager.prototype.getFreeStage = function (forceSoftware, profile, mode) {\n if (forceSoftware === void 0) { forceSoftware = false; }\n if (profile === void 0) { profile = ContextGLProfile.BASELINE; }\n if (mode === void 0) { mode = ContextMode.AUTO; }\n var i = 0;\n var len = this._stages.length;\n while (i < len) {\n if (!this._stages[i])\n return this.getStageAt(i, forceSoftware, profile, mode);\n ++i;\n }\n return null;\n };\n Object.defineProperty(StageManager.prototype, \"hasFreeStage\", {\n /**\n * Checks if a new stage can be created and managed by the class.\n * @return true if there is one slot free for a new stage\n */\n get: function () {\n return StageManager._numStages < StageManager.STAGE_MAX_QUANTITY ? true : false;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StageManager.prototype, \"numSlotsFree\", {\n /**\n * Returns the amount of stage objects that can be created and managed by the class\n * @return the amount of free slots\n */\n get: function () {\n return StageManager.STAGE_MAX_QUANTITY - StageManager._numStages;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StageManager.prototype, \"numSlotsUsed\", {\n /**\n * Returns the amount of Stage objects currently managed by the class.\n * @return the amount of slots used\n */\n get: function () {\n return StageManager._numStages;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StageManager.prototype, \"numSlotsTotal\", {\n /**\n * The maximum amount of Stage objects that can be managed by the class\n */\n get: function () {\n return this._stages.length;\n },\n enumerable: true,\n configurable: true\n });\n StageManager.prototype.onContextCreated = function (event) {\n //var stage:Stage = e.target;\n //document.body.appendChild(stage.canvas)\n };\n return StageManager;\n}(EventDispatcher));\nexport { StageManager };\nStageManager.STAGE_MAX_QUANTITY = 8;\nStageManager._numStages = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/StageManager.js","import { ShaderRegisterElement } from \"./ShaderRegisterElement\";\n/**\n * RegisterPool is used by the shader compilers process to keep track of which registers of a certain type are\n * currently used and should not be allowed to be written to. Either entire registers can be requested and locked,\n * or single components (x, y, z, w) of a single register.\n * It is used by ShaderRegisterCache to track usages of individual register types.\n *\n * @see away.materials.ShaderRegisterCache\n */\nvar RegisterPool = (function () {\n /**\n * Creates a new RegisterPool object.\n * @param regName The base name of the register type (\"ft\" for fragment temporaries, \"vc\" for vertex constants, etc)\n * @param regCount The amount of available registers of this type.\n * @param persistent Whether or not registers, once reserved, can be freed again. For example, temporaries are not persistent, but constants are.\n */\n function RegisterPool(regName, regCount, persistent) {\n if (persistent === void 0) { persistent = true; }\n this._regName = regName;\n this._regCount = regCount;\n this._persistent = persistent;\n this.initRegisters(regName, regCount);\n }\n /**\n * Retrieve an entire vector register that's still available.\n */\n RegisterPool.prototype.requestFreeVectorReg = function () {\n for (var i = 0; i < this._regCount; ++i) {\n if (!this.isRegisterUsed(i)) {\n if (this._persistent)\n this._usedVectorCount[i]++;\n return this._vectorRegisters[i];\n }\n }\n throw new Error(\"Register overflow!\");\n };\n /**\n * Retrieve a single vector component that's still available.\n */\n RegisterPool.prototype.requestFreeRegComponent = function () {\n for (var i = 0; i < this._regCount; ++i) {\n if (this._usedVectorCount[i] > 0)\n continue;\n for (var j = 0; j < 4; ++j) {\n if (this._usedSingleCount[j][i] == 0) {\n if (this._persistent)\n this._usedSingleCount[j][i]++;\n return this._registerComponents[j][i];\n }\n }\n }\n throw new Error(\"Register overflow!\");\n };\n /**\n * Marks a register as used, so it cannot be retrieved. The register won't be able to be used until removeUsage\n * has been called usageCount times again.\n * @param register The register to mark as used.\n * @param usageCount The amount of usages to add.\n */\n RegisterPool.prototype.addUsage = function (register, usageCount) {\n if (register._component > -1)\n this._usedSingleCount[register._component][register.index] += usageCount;\n else\n this._usedVectorCount[register.index] += usageCount;\n };\n /**\n * Removes a usage from a register. When usages reach 0, the register is freed again.\n * @param register The register for which to remove a usage.\n */\n RegisterPool.prototype.removeUsage = function (register) {\n if (register._component > -1) {\n if (--this._usedSingleCount[register._component][register.index] < 0)\n throw new Error(\"More usages removed than exist!\");\n }\n else {\n if (--this._usedVectorCount[register.index] < 0)\n throw new Error(\"More usages removed than exist!\");\n }\n };\n /**\n * Disposes any resources used by the current RegisterPool object.\n */\n RegisterPool.prototype.dispose = function () {\n this._vectorRegisters = null;\n this._registerComponents = null;\n this._usedSingleCount = null;\n this._usedVectorCount = null;\n };\n /**\n * Indicates whether or not any registers are in use.\n */\n RegisterPool.prototype.hasRegisteredRegs = function () {\n for (var i = 0; i < this._regCount; ++i)\n if (this.isRegisterUsed(i))\n return true;\n return false;\n };\n /**\n * Initializes all registers.\n */\n RegisterPool.prototype.initRegisters = function (regName, regCount) {\n var hash = RegisterPool._initPool(regName, regCount);\n this._vectorRegisters = RegisterPool._regPool[hash];\n this._registerComponents = RegisterPool._regCompsPool[hash];\n this._usedVectorCount = this._initArray(Array(regCount), 0);\n this._usedSingleCount = new Array(4);\n this._usedSingleCount[0] = this._initArray(new Array(regCount), 0);\n this._usedSingleCount[1] = this._initArray(new Array(regCount), 0);\n this._usedSingleCount[2] = this._initArray(new Array(regCount), 0);\n this._usedSingleCount[3] = this._initArray(new Array(regCount), 0);\n };\n RegisterPool._initPool = function (regName, regCount) {\n var hash = regName + regCount;\n if (RegisterPool._regPool[hash] != undefined)\n return hash;\n var vectorRegisters = new Array(regCount);\n RegisterPool._regPool[hash] = vectorRegisters;\n var registerComponents = [\n [],\n [],\n [],\n []\n ];\n RegisterPool._regCompsPool[hash] = registerComponents;\n for (var i = 0; i < regCount; ++i) {\n vectorRegisters[i] = new ShaderRegisterElement(regName, i);\n for (var j = 0; j < 4; ++j)\n registerComponents[j][i] = new ShaderRegisterElement(regName, i, j);\n }\n return hash;\n };\n /**\n * Check if the temp register is either used for single or vector use\n */\n RegisterPool.prototype.isRegisterUsed = function (index) {\n if (this._usedVectorCount[index] > 0)\n return true;\n for (var i = 0; i < 4; ++i)\n if (this._usedSingleCount[i][index] > 0)\n return true;\n return false;\n };\n RegisterPool.prototype._initArray = function (a, val) {\n var l = a.length;\n for (var c = 0; c < l; c++)\n a[c] = val;\n return a;\n };\n return RegisterPool;\n}());\nexport { RegisterPool };\nRegisterPool._regPool = new Object();\nRegisterPool._regCompsPool = new Object();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shaders/RegisterPool.js","import { RegisterPool } from \"./RegisterPool\";\nimport { ShaderRegisterElement } from \"./ShaderRegisterElement\";\n/**\n * ShaderRegister Cache provides the usage management system for all registers during shading compilers.\n */\nvar ShaderRegisterCache = (function () {\n /**\n * Create a new ShaderRegisterCache object.\n *\n * @param profile The compatibility profile used by the renderer.\n */\n function ShaderRegisterCache(profile) {\n this._numUsedVertexConstants = 0;\n this._numUsedFragmentConstants = 0;\n this._numUsedStreams = 0;\n this._numUsedTextures = 0;\n this._numUsedVaryings = 0;\n this._profile = profile;\n this.reset();\n }\n /**\n * Resets all registers.\n */\n ShaderRegisterCache.prototype.reset = function () {\n this._fragmentTempCache = new RegisterPool(\"ft\", 8, false);\n this._vertexTempCache = new RegisterPool(\"vt\", 8, false);\n this._varyingCache = new RegisterPool(\"v\", 8);\n this._textureCache = new RegisterPool(\"fs\", 8);\n this._vertexAttributesCache = new RegisterPool(\"va\", 8);\n this._fragmentConstantsCache = new RegisterPool(\"fc\", 28);\n this._vertexConstantsCache = new RegisterPool(\"vc\", 128);\n this._fragmentOutputRegister = new ShaderRegisterElement(\"oc\", -1);\n this._vertexOutputRegister = new ShaderRegisterElement(\"op\", -1);\n this._numUsedVertexConstants = 0;\n this._numUsedStreams = 0;\n this._numUsedTextures = 0;\n this._numUsedVaryings = 0;\n this._numUsedFragmentConstants = 0;\n };\n /**\n * Disposes all resources used.\n */\n ShaderRegisterCache.prototype.dispose = function () {\n this._fragmentTempCache.dispose();\n this._vertexTempCache.dispose();\n this._varyingCache.dispose();\n this._fragmentConstantsCache.dispose();\n this._vertexAttributesCache.dispose();\n this._fragmentTempCache = null;\n this._vertexTempCache = null;\n this._varyingCache = null;\n this._fragmentConstantsCache = null;\n this._vertexAttributesCache = null;\n this._fragmentOutputRegister = null;\n this._vertexOutputRegister = null;\n };\n /**\n * Marks a fragment temporary register as used, so it cannot be retrieved. The register won't be able to be used until removeUsage\n * has been called usageCount times again.\n * @param register The register to mark as used.\n * @param usageCount The amount of usages to add.\n */\n ShaderRegisterCache.prototype.addFragmentTempUsages = function (register, usageCount) {\n this._fragmentTempCache.addUsage(register, usageCount);\n };\n /**\n * Removes a usage from a fragment temporary register. When usages reach 0, the register is freed again.\n * @param register The register for which to remove a usage.\n */\n ShaderRegisterCache.prototype.removeFragmentTempUsage = function (register) {\n this._fragmentTempCache.removeUsage(register);\n };\n /**\n * Marks a vertex temporary register as used, so it cannot be retrieved. The register won't be able to be used\n * until removeUsage has been called usageCount times again.\n * @param register The register to mark as used.\n * @param usageCount The amount of usages to add.\n */\n ShaderRegisterCache.prototype.addVertexTempUsages = function (register, usageCount) {\n this._vertexTempCache.addUsage(register, usageCount);\n };\n /**\n * Removes a usage from a vertex temporary register. When usages reach 0, the register is freed again.\n * @param register The register for which to remove a usage.\n */\n ShaderRegisterCache.prototype.removeVertexTempUsage = function (register) {\n this._vertexTempCache.removeUsage(register);\n };\n /**\n * Retrieve an entire fragment temporary register that's still available. The register won't be able to be used until removeUsage\n * has been called usageCount times again.\n */\n ShaderRegisterCache.prototype.getFreeFragmentVectorTemp = function () {\n return this._fragmentTempCache.requestFreeVectorReg();\n };\n /**\n * Retrieve a single component from a fragment temporary register that's still available.\n */\n ShaderRegisterCache.prototype.getFreeFragmentSingleTemp = function () {\n return this._fragmentTempCache.requestFreeRegComponent();\n };\n /**\n * Retrieve an available varying register\n */\n ShaderRegisterCache.prototype.getFreeVarying = function () {\n ++this._numUsedVaryings;\n return this._varyingCache.requestFreeVectorReg();\n };\n /**\n * Retrieve an available fragment constant register\n */\n ShaderRegisterCache.prototype.getFreeFragmentConstant = function () {\n ++this._numUsedFragmentConstants;\n return this._fragmentConstantsCache.requestFreeVectorReg();\n };\n /**\n * Retrieve an available vertex constant register\n */\n ShaderRegisterCache.prototype.getFreeVertexConstant = function () {\n ++this._numUsedVertexConstants;\n return this._vertexConstantsCache.requestFreeVectorReg();\n };\n /**\n * Retrieve an entire vertex temporary register that's still available.\n */\n ShaderRegisterCache.prototype.getFreeVertexVectorTemp = function () {\n return this._vertexTempCache.requestFreeVectorReg();\n };\n /**\n * Retrieve a single component from a vertex temporary register that's still available.\n */\n ShaderRegisterCache.prototype.getFreeVertexSingleTemp = function () {\n return this._vertexTempCache.requestFreeRegComponent();\n };\n /**\n * Retrieve an available vertex attribute register\n */\n ShaderRegisterCache.prototype.getFreeVertexAttribute = function () {\n ++this._numUsedStreams;\n return this._vertexAttributesCache.requestFreeVectorReg();\n };\n /**\n * Retrieve an available texture register\n */\n ShaderRegisterCache.prototype.getFreeTextureReg = function () {\n ++this._numUsedTextures;\n return this._textureCache.requestFreeVectorReg();\n };\n Object.defineProperty(ShaderRegisterCache.prototype, \"fragmentOutputRegister\", {\n /**\n * The fragment output register.\n */\n get: function () {\n return this._fragmentOutputRegister;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderRegisterCache.prototype, \"numUsedVertexConstants\", {\n /**\n * The amount of used vertex constant registers.\n */\n get: function () {\n return this._numUsedVertexConstants;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderRegisterCache.prototype, \"numUsedFragmentConstants\", {\n /**\n * The amount of used fragment constant registers.\n */\n get: function () {\n return this._numUsedFragmentConstants;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderRegisterCache.prototype, \"numUsedStreams\", {\n /**\n * The amount of used vertex streams.\n */\n get: function () {\n return this._numUsedStreams;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderRegisterCache.prototype, \"numUsedTextures\", {\n /**\n * The amount of used texture slots.\n */\n get: function () {\n return this._numUsedTextures;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderRegisterCache.prototype, \"numUsedVaryings\", {\n /**\n * The amount of used varying registers.\n */\n get: function () {\n return this._numUsedVaryings;\n },\n enumerable: true,\n configurable: true\n });\n return ShaderRegisterCache;\n}());\nexport { ShaderRegisterCache };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shaders/ShaderRegisterCache.js","/**\n * ShaderRegisterData contains the \"named\" registers, generated by the compiler and to be passed on to the methods.\n */\nvar ShaderRegisterData = (function () {\n function ShaderRegisterData() {\n this.textures = new Array();\n this.animatableAttributes = new Array();\n this.animationTargetRegisters = new Array();\n }\n return ShaderRegisterData;\n}());\nexport { ShaderRegisterData };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shaders/ShaderRegisterData.js","import { ShaderRegisterCache } from \"../ShaderRegisterCache\";\nimport { ShaderRegisterData } from \"../ShaderRegisterData\";\n/**\n * CompilerBase is an abstract base class for shader compilers that use modular shader methods to assemble a\n * material. Concrete subclasses are used by the default materials.\n *\n * @see away.materials.ShadingMethodBase\n */\nvar CompilerBase = (function () {\n /**\n * Creates a new CompilerBase object.\n * @param profile The compatibility profile of the renderer.\n */\n function CompilerBase(elementsClass, pass, shader) {\n this._vertexCode = ''; // Changed to emtpy string- AwayTS\n this._fragmentCode = ''; // Changed to emtpy string - AwayTS\n this._postAnimationFragmentCode = ''; // Changed to emtpy string - AwayTS\n this._elementsClass = elementsClass;\n this._renderPass = pass;\n this._shader = shader;\n this._sharedRegisters = new ShaderRegisterData();\n this._registerCache = new ShaderRegisterCache(shader.profile);\n }\n /**\n * Compiles the code after all setup on the compiler has finished.\n */\n CompilerBase.prototype.compile = function () {\n this._shader.reset();\n this._shader._includeDependencies();\n this.pInitRegisterIndices();\n this.pCompileDependencies();\n //compile custom vertex & fragment codes\n this._vertexCode += this._renderPass._getVertexCode(this._registerCache, this._sharedRegisters);\n this._fragmentCode += this._renderPass._getFragmentCode(this._registerCache, this._sharedRegisters);\n this._postAnimationFragmentCode += this._renderPass._getPostAnimationFragmentCode(this._registerCache, this._sharedRegisters);\n //assign the final output color to the output register\n this._postAnimationFragmentCode += \"mov \" + this._registerCache.fragmentOutputRegister + \", \" + this._sharedRegisters.shadedTarget + \"\\n\";\n this._registerCache.removeFragmentTempUsage(this._sharedRegisters.shadedTarget);\n };\n /**\n * Calculate the transformed colours\n */\n CompilerBase.prototype.compileColorTransformCode = function () {\n // rm, gm, bm, am - multiplier\n // ro, go, bo, ao - offset\n var ct1 = this._registerCache.getFreeFragmentConstant();\n var ct2 = this._registerCache.getFreeFragmentConstant();\n this._shader.colorTransformIndex = ct1.index * 4;\n this._postAnimationFragmentCode += \"mul \" + this._sharedRegisters.shadedTarget + \", \" + this._sharedRegisters.shadedTarget + \", \" + ct1 + \"\\n\";\n this._postAnimationFragmentCode += \"add \" + this._sharedRegisters.shadedTarget + \", \" + this._sharedRegisters.shadedTarget + \", \" + ct2 + \"\\n\";\n };\n /**\n * Compile the code for the methods.\n */\n CompilerBase.prototype.pCompileDependencies = function () {\n this._sharedRegisters.shadedTarget = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(this._sharedRegisters.shadedTarget, 1);\n //compile the world-space position if required\n if (this._shader.globalPosDependencies > 0)\n this.compileGlobalPositionCode();\n //compile the local-space position if required\n if (this._shader.usesPositionFragment)\n this.compilePositionCode();\n if (this._shader.usesCurves)\n this.compileCurvesCode();\n if (this._shader.usesColorTransform)\n this.compileColorTransformCode();\n //Calculate the (possibly animated) UV coordinates.\n if (this._shader.uvDependencies > 0)\n this.compileUVCode();\n if (this._shader.secondaryUVDependencies > 0)\n this.compileSecondaryUVCode();\n if (this._shader.normalDependencies > 0)\n this.compileNormalCode();\n if (this._shader.viewDirDependencies > 0)\n this.compileViewDirCode();\n //collect code from material\n this._vertexCode += this._elementsClass._getVertexCode(this._shader, this._registerCache, this._sharedRegisters);\n this._fragmentCode += this._elementsClass._getFragmentCode(this._shader, this._registerCache, this._sharedRegisters);\n };\n CompilerBase.prototype.compileGlobalPositionCode = function () {\n this._registerCache.addVertexTempUsages(this._sharedRegisters.globalPositionVertex = this._registerCache.getFreeVertexVectorTemp(), this._shader.globalPosDependencies);\n var sceneMatrixReg = this._registerCache.getFreeVertexConstant();\n this._registerCache.getFreeVertexConstant();\n this._registerCache.getFreeVertexConstant();\n this._registerCache.getFreeVertexConstant();\n this._shader.sceneMatrixIndex = sceneMatrixReg.index * 4;\n this._vertexCode += \"m44 \" + this._sharedRegisters.globalPositionVertex + \", \" + this._sharedRegisters.animatedPosition + \", \" + sceneMatrixReg + \"\\n\";\n if (this._shader.usesGlobalPosFragment) {\n this._sharedRegisters.globalPositionVarying = this._registerCache.getFreeVarying();\n this._vertexCode += \"mov \" + this._sharedRegisters.globalPositionVarying + \", \" + this._sharedRegisters.globalPositionVertex + \"\\n\";\n }\n };\n CompilerBase.prototype.compilePositionCode = function () {\n this._sharedRegisters.positionVarying = this._registerCache.getFreeVarying();\n this._vertexCode += \"mov \" + this._sharedRegisters.positionVarying + \", \" + this._sharedRegisters.animatedPosition + \"\\n\";\n };\n CompilerBase.prototype.compileCurvesCode = function () {\n this._sharedRegisters.curvesInput = this._registerCache.getFreeVertexAttribute();\n this._shader.curvesIndex = this._sharedRegisters.curvesInput.index;\n this._sharedRegisters.curvesVarying = this._registerCache.getFreeVarying();\n this._vertexCode += \"mov \" + this._sharedRegisters.curvesVarying + \", \" + this._sharedRegisters.curvesInput + \"\\n\";\n var temp = this._registerCache.getFreeFragmentSingleTemp();\n this._fragmentCode += \"mul \" + temp + \", \" + this._sharedRegisters.curvesVarying + \".y, \" + this._sharedRegisters.curvesVarying + \".y\\n\" +\n \"sub \" + temp + \", \" + temp + \", \" + this._sharedRegisters.curvesVarying + \".z\\n\" +\n \"mul \" + temp + \", \" + temp + \", \" + this._sharedRegisters.curvesVarying + \".x\\n\" +\n \"kil \" + temp + \"\\n\";\n // var temp:ShaderRegisterElement = this._registerCache.getFreeFragmentVectorTemp();\n //\n // this._postAnimationFragmentCode += \"mul \" + temp + \".x, \" + this._sharedRegisters.curvesVarying + \".y, \" + this._sharedRegisters.curvesVarying + \".y\\n\" +\n // \t\t\t\t\t\"sub \" + temp + \".x, \" + temp + \".x, \" + this._sharedRegisters.curvesVarying + \".z\\n\" +\n // \t\t\t\t\t\"mul \" + temp + \".x, \" + temp + \".x, \" + this._sharedRegisters.curvesVarying + \".x\\n\" +\n // \t\t\t\t\t\"ddx \" + temp + \".y,\" + temp + \".x\\n\" +\n // \t\t\t\t\t\"ddy \" + temp + \".z,\" + temp + \".x\\n\" +\n // \t\t\t\t\t\"mul \" + temp + \".y, \" + temp + \".y, \" + temp + \".y\\n\" +\n // \t\t\t\t\t\"mul \" + temp + \".z, \" + temp + \".z, \" + temp + \".z\\n\" +\n // \t\t\t\t\t\"add \" + this._sharedRegisters.shadedTarget + \".w, \" + temp + \".y, \" + temp + \".z\\n\" +\n // \t\t\t\t\t\"sqt \" + this._sharedRegisters.shadedTarget + \".w, \" + this._sharedRegisters.shadedTarget + \".w\\n\" +\n // \t\t\t\t\t\"div \" + this._sharedRegisters.shadedTarget + \".w, \" + temp + \".x, \" + this._sharedRegisters.shadedTarget + \".w\\n\" +\n // \t\t\t\t\t\"max \" + this._sharedRegisters.shadedTarget + \".w, \" + this._sharedRegisters.shadedTarget + \".w, \" + this._sharedRegisters.commons + \".y\\n\" +\n // \t\t\t\t\t\"min \" + this._sharedRegisters.shadedTarget + \".w, \" + this._sharedRegisters.shadedTarget + \".w, \" + this._sharedRegisters.commons + \".w\\n\";\n };\n /**\n * Calculate the (possibly animated) UV coordinates.\n */\n CompilerBase.prototype.compileUVCode = function () {\n var uvAttributeReg = this._registerCache.getFreeVertexAttribute();\n this._shader.uvIndex = uvAttributeReg.index;\n var varying = this._sharedRegisters.uvVarying = this._registerCache.getFreeVarying();\n if (this._shader.usesUVTransform) {\n // a, b, 0, tx\n // c, d, 0, ty\n var uvTransform1 = this._registerCache.getFreeVertexConstant();\n var uvTransform2 = this._registerCache.getFreeVertexConstant();\n this._shader.uvMatrixIndex = uvTransform1.index * 4;\n this._vertexCode += \"dp4 \" + varying + \".x, \" + uvAttributeReg + \", \" + uvTransform1 + \"\\n\" +\n \"dp4 \" + varying + \".y, \" + uvAttributeReg + \", \" + uvTransform2 + \"\\n\" +\n \"mov \" + varying + \".zw, \" + uvAttributeReg + \".zw \\n\";\n }\n else {\n this._shader.uvMatrixIndex = -1;\n this._sharedRegisters.uvTarget = varying;\n this._sharedRegisters.uvSource = uvAttributeReg;\n }\n };\n /**\n * Provide the secondary UV coordinates.\n */\n CompilerBase.prototype.compileSecondaryUVCode = function () {\n var uvAttributeReg = this._registerCache.getFreeVertexAttribute();\n this._shader.secondaryUVIndex = uvAttributeReg.index;\n this._sharedRegisters.secondaryUVVarying = this._registerCache.getFreeVarying();\n this._vertexCode += \"mov \" + this._sharedRegisters.secondaryUVVarying + \", \" + uvAttributeReg + \"\\n\";\n };\n /**\n * Calculate the view direction.\n */\n CompilerBase.prototype.compileViewDirCode = function () {\n var cameraPositionReg = this._registerCache.getFreeVertexConstant();\n this._sharedRegisters.viewDirVarying = this._registerCache.getFreeVarying();\n this._sharedRegisters.viewDirFragment = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(this._sharedRegisters.viewDirFragment, this._shader.viewDirDependencies);\n this._shader.cameraPositionIndex = cameraPositionReg.index * 4;\n if (this._shader.usesTangentSpace) {\n var temp = this._registerCache.getFreeVertexVectorTemp();\n this._vertexCode += \"sub \" + temp + \", \" + cameraPositionReg + \", \" + this._sharedRegisters.animatedPosition + \"\\n\" +\n \"m33 \" + this._sharedRegisters.viewDirVarying + \".xyz, \" + temp + \", \" + this._sharedRegisters.animatedTangent + \"\\n\" +\n \"mov \" + this._sharedRegisters.viewDirVarying + \".w, \" + this._sharedRegisters.animatedPosition + \".w\\n\";\n }\n else {\n this._vertexCode += \"sub \" + this._sharedRegisters.viewDirVarying + \", \" + cameraPositionReg + \", \" + this._sharedRegisters.globalPositionVertex + \"\\n\";\n this._registerCache.removeVertexTempUsage(this._sharedRegisters.globalPositionVertex);\n }\n //TODO is this required in all cases? (re: distancemappass)\n this._fragmentCode += \"nrm \" + this._sharedRegisters.viewDirFragment + \".xyz, \" + this._sharedRegisters.viewDirVarying + \"\\n\" +\n \"mov \" + this._sharedRegisters.viewDirFragment + \".w, \" + this._sharedRegisters.viewDirVarying + \".w\\n\";\n };\n /**\n * Calculate the normal.\n */\n CompilerBase.prototype.compileNormalCode = function () {\n this._sharedRegisters.normalFragment = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(this._sharedRegisters.normalFragment, this._shader.normalDependencies);\n //simple normal aquisition if no tangent space is being used\n if (this._shader.outputsNormals && !this._shader.outputsTangentNormals) {\n this._vertexCode += this._renderPass._getNormalVertexCode(this._registerCache, this._sharedRegisters);\n this._fragmentCode += this._renderPass._getNormalFragmentCode(this._registerCache, this._sharedRegisters);\n return;\n }\n var normalMatrix;\n if (!this._shader.outputsNormals || !this._shader.usesTangentSpace) {\n normalMatrix = new Array(3);\n normalMatrix[0] = this._registerCache.getFreeVertexConstant();\n normalMatrix[1] = this._registerCache.getFreeVertexConstant();\n normalMatrix[2] = this._registerCache.getFreeVertexConstant();\n this._registerCache.getFreeVertexConstant();\n this._shader.sceneNormalMatrixIndex = normalMatrix[0].index * 4;\n this._sharedRegisters.normalVarying = this._registerCache.getFreeVarying();\n }\n if (this._shader.outputsNormals) {\n if (this._shader.usesTangentSpace) {\n // normalize normal + tangent vector and generate (approximated) bitangent used in m33 operation for view\n this._vertexCode += \"nrm \" + this._sharedRegisters.animatedNormal + \".xyz, \" + this._sharedRegisters.animatedNormal + \"\\n\" +\n \"nrm \" + this._sharedRegisters.animatedTangent + \".xyz, \" + this._sharedRegisters.animatedTangent + \"\\n\" +\n \"crs \" + this._sharedRegisters.bitangent + \".xyz, \" + this._sharedRegisters.animatedNormal + \", \" + this._sharedRegisters.animatedTangent + \"\\n\";\n this._fragmentCode += this._renderPass._getNormalFragmentCode(this._registerCache, this._sharedRegisters);\n }\n else {\n //Compiles the vertex shader code for tangent-space normal maps.\n this._sharedRegisters.tangentVarying = this._registerCache.getFreeVarying();\n this._sharedRegisters.bitangentVarying = this._registerCache.getFreeVarying();\n var temp = this._registerCache.getFreeVertexVectorTemp();\n this._vertexCode += \"m33 \" + temp + \".xyz, \" + this._sharedRegisters.animatedNormal + \", \" + normalMatrix[0] + \"\\n\" +\n \"nrm \" + this._sharedRegisters.animatedNormal + \".xyz, \" + temp + \"\\n\" +\n \"m33 \" + temp + \".xyz, \" + this._sharedRegisters.animatedTangent + \", \" + normalMatrix[0] + \"\\n\" +\n \"nrm \" + this._sharedRegisters.animatedTangent + \".xyz, \" + temp + \"\\n\" +\n \"mov \" + this._sharedRegisters.tangentVarying + \".x, \" + this._sharedRegisters.animatedTangent + \".x \\n\" +\n \"mov \" + this._sharedRegisters.tangentVarying + \".z, \" + this._sharedRegisters.animatedNormal + \".x \\n\" +\n \"mov \" + this._sharedRegisters.tangentVarying + \".w, \" + this._sharedRegisters.normalInput + \".w \\n\" +\n \"mov \" + this._sharedRegisters.bitangentVarying + \".x, \" + this._sharedRegisters.animatedTangent + \".y \\n\" +\n \"mov \" + this._sharedRegisters.bitangentVarying + \".z, \" + this._sharedRegisters.animatedNormal + \".y \\n\" +\n \"mov \" + this._sharedRegisters.bitangentVarying + \".w, \" + this._sharedRegisters.normalInput + \".w \\n\" +\n \"mov \" + this._sharedRegisters.normalVarying + \".x, \" + this._sharedRegisters.animatedTangent + \".z \\n\" +\n \"mov \" + this._sharedRegisters.normalVarying + \".z, \" + this._sharedRegisters.animatedNormal + \".z \\n\" +\n \"mov \" + this._sharedRegisters.normalVarying + \".w, \" + this._sharedRegisters.normalInput + \".w \\n\" +\n \"crs \" + temp + \".xyz, \" + this._sharedRegisters.animatedNormal + \", \" + this._sharedRegisters.animatedTangent + \"\\n\" +\n \"mov \" + this._sharedRegisters.tangentVarying + \".y, \" + temp + \".x \\n\" +\n \"mov \" + this._sharedRegisters.bitangentVarying + \".y, \" + temp + \".y \\n\" +\n \"mov \" + this._sharedRegisters.normalVarying + \".y, \" + temp + \".z \\n\";\n this._registerCache.removeVertexTempUsage(this._sharedRegisters.animatedTangent);\n //Compiles the fragment shader code for tangent-space normal maps.\n var t;\n var b;\n var n;\n t = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(t, 1);\n b = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(b, 1);\n n = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(n, 1);\n this._fragmentCode += \"nrm \" + t + \".xyz, \" + this._sharedRegisters.tangentVarying + \"\\n\" +\n \"mov \" + t + \".w, \" + this._sharedRegisters.tangentVarying + \".w\t\\n\" +\n \"nrm \" + b + \".xyz, \" + this._sharedRegisters.bitangentVarying + \"\\n\" +\n \"nrm \" + n + \".xyz, \" + this._sharedRegisters.normalVarying + \"\\n\";\n //compile custom fragment code for normal calcs\n this._fragmentCode += this._renderPass._getNormalFragmentCode(this._registerCache, this._sharedRegisters) +\n \"m33 \" + this._sharedRegisters.normalFragment + \".xyz, \" + this._sharedRegisters.normalFragment + \", \" + t + \"\\n\" +\n \"mov \" + this._sharedRegisters.normalFragment + \".w, \" + this._sharedRegisters.normalVarying + \".w\\n\";\n this._registerCache.removeFragmentTempUsage(b);\n this._registerCache.removeFragmentTempUsage(t);\n this._registerCache.removeFragmentTempUsage(n);\n }\n }\n else {\n // no output, world space is enough\n this._vertexCode += \"m33 \" + this._sharedRegisters.normalVarying + \".xyz, \" + this._sharedRegisters.animatedNormal + \", \" + normalMatrix[0] + \"\\n\" +\n \"mov \" + this._sharedRegisters.normalVarying + \".w, \" + this._sharedRegisters.animatedNormal + \".w\\n\";\n this._fragmentCode += \"nrm \" + this._sharedRegisters.normalFragment + \".xyz, \" + this._sharedRegisters.normalVarying + \"\\n\" +\n \"mov \" + this._sharedRegisters.normalFragment + \".w, \" + this._sharedRegisters.normalVarying + \".w\\n\";\n if (this._shader.tangentDependencies > 0) {\n this._sharedRegisters.tangentVarying = this._registerCache.getFreeVarying();\n this._vertexCode += \"m33 \" + this._sharedRegisters.tangentVarying + \".xyz, \" + this._sharedRegisters.animatedTangent + \", \" + normalMatrix[0] + \"\\n\" +\n \"mov \" + this._sharedRegisters.tangentVarying + \".w, \" + this._sharedRegisters.animatedTangent + \".w\\n\";\n }\n }\n if (!this._shader.usesTangentSpace)\n this._registerCache.removeVertexTempUsage(this._sharedRegisters.animatedNormal);\n };\n /**\n * Reset all the indices to \"unused\".\n */\n CompilerBase.prototype.pInitRegisterIndices = function () {\n this._shader.pInitRegisterIndices();\n this._sharedRegisters.animatedPosition = this._registerCache.getFreeVertexVectorTemp();\n this._registerCache.addVertexTempUsages(this._sharedRegisters.animatedPosition, 1);\n this._sharedRegisters.animatableAttributes.push(this._registerCache.getFreeVertexAttribute());\n this._sharedRegisters.animationTargetRegisters.push(this._sharedRegisters.animatedPosition);\n this._vertexCode = \"\";\n this._fragmentCode = \"\";\n this._postAnimationFragmentCode = \"\";\n //create commonly shared constant registers\n if (this._shader.usesCommonData || this._shader.normalDependencies > 0) {\n this._sharedRegisters.commons = this._registerCache.getFreeFragmentConstant();\n this._shader.commonsDataIndex = this._sharedRegisters.commons.index * 4;\n }\n //Creates the registers to contain the tangent data.\n //Needs to be created FIRST and in this order (for when using tangent space)\n if (this._shader.tangentDependencies > 0 || this._shader.outputsNormals) {\n this._sharedRegisters.tangentInput = this._registerCache.getFreeVertexAttribute();\n this._shader.tangentIndex = this._sharedRegisters.tangentInput.index;\n this._sharedRegisters.animatedTangent = this._registerCache.getFreeVertexVectorTemp();\n this._registerCache.addVertexTempUsages(this._sharedRegisters.animatedTangent, 1);\n if (this._shader.usesTangentSpace) {\n this._sharedRegisters.bitangent = this._registerCache.getFreeVertexVectorTemp();\n this._registerCache.addVertexTempUsages(this._sharedRegisters.bitangent, 1);\n }\n this._sharedRegisters.animatableAttributes.push(this._sharedRegisters.tangentInput);\n this._sharedRegisters.animationTargetRegisters.push(this._sharedRegisters.animatedTangent);\n }\n if (this._shader.normalDependencies > 0) {\n this._sharedRegisters.normalInput = this._registerCache.getFreeVertexAttribute();\n this._shader.normalIndex = this._sharedRegisters.normalInput.index;\n this._sharedRegisters.animatedNormal = this._registerCache.getFreeVertexVectorTemp();\n this._registerCache.addVertexTempUsages(this._sharedRegisters.animatedNormal, 1);\n this._sharedRegisters.animatableAttributes.push(this._sharedRegisters.normalInput);\n this._sharedRegisters.animationTargetRegisters.push(this._sharedRegisters.animatedNormal);\n }\n if (this._shader.colorDependencies > 0) {\n this._sharedRegisters.colorInput = this._registerCache.getFreeVertexAttribute();\n this._shader.colorBufferIndex = this._sharedRegisters.colorInput.index;\n this._sharedRegisters.colorVarying = this._registerCache.getFreeVarying();\n this._vertexCode += \"mov \" + this._sharedRegisters.colorVarying + \", \" + this._sharedRegisters.colorInput + \"\\n\";\n }\n };\n /**\n * Disposes all resources used by the compiler.\n */\n CompilerBase.prototype.dispose = function () {\n this._registerCache.dispose();\n this._registerCache = null;\n this._sharedRegisters = null;\n };\n Object.defineProperty(CompilerBase.prototype, \"vertexCode\", {\n /**\n * The generated vertex code.\n */\n get: function () {\n return this._vertexCode;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompilerBase.prototype, \"fragmentCode\", {\n /**\n * The generated fragment code.\n */\n get: function () {\n return this._fragmentCode;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompilerBase.prototype, \"postAnimationFragmentCode\", {\n /**\n * The generated fragment code.\n */\n get: function () {\n return this._postAnimationFragmentCode;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompilerBase.prototype, \"sharedRegisters\", {\n /**\n * The shared registers.\n */\n get: function () {\n return this._sharedRegisters;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompilerBase.prototype, \"registerCache\", {\n /**\n * The shared registers.\n */\n get: function () {\n return this._registerCache;\n },\n enumerable: true,\n configurable: true\n });\n return CompilerBase;\n}());\nexport { CompilerBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shaders/compilers/CompilerBase.js","import { Matrix3D, ArgumentError } from \"@awayjs/core\";\nimport { BlendMode } from \"@awayjs/graphics\";\nimport { ContextGLBlendFactor } from \"../base/ContextGLBlendFactor\";\nimport { ContextGLCompareMode } from \"../base/ContextGLCompareMode\";\nimport { ContextGLTriangleFace } from \"../base/ContextGLTriangleFace\";\nimport { CompilerBase } from \"./compilers/CompilerBase\";\n/**\n * ShaderBase keeps track of the number of dependencies for \"named registers\" used across a pass.\n * Named registers are that are not necessarily limited to a single method. They are created by the compiler and\n * passed on to methods. The compiler uses the results to reserve usages through RegisterPool, which can be removed\n * each time a method has been compiled into the shader.\n *\n * @see RegisterPool.addUsage\n */\nvar ShaderBase = (function () {\n /**\n * Creates a new MethodCompilerVO object.\n */\n function ShaderBase(elementsClass, pass, stage) {\n this._abstractionPool = new Object();\n this._blendFactorSource = ContextGLBlendFactor.ONE;\n this._blendFactorDest = ContextGLBlendFactor.ZERO;\n this._invalidProgram = true;\n this._animationVertexCode = \"\";\n this._animationFragmentCode = \"\";\n this.usesBlending = false;\n this.useImageRect = false;\n this.usesCurves = false;\n /**\n * The depth compare mode used to render the renderables using this material.\n *\n * @see away.stagegl.ContextGLCompareMode\n */\n this.depthCompareMode = ContextGLCompareMode.LESS_EQUAL;\n /**\n * Indicate whether the shader should write to the depth buffer or not. Ignored when blending is enabled.\n */\n this.writeDepth = true;\n this._defaultCulling = ContextGLTriangleFace.BACK;\n this._pInverseSceneMatrix = new Float32Array(16);\n //set ambient values to default\n this.ambientR = 0xFF;\n this.ambientG = 0xFF;\n this.ambientB = 0xFF;\n /**\n * Indicates whether there are any dependencies on the world-space position vector.\n */\n this.usesGlobalPosFragment = false;\n /**\n * Indicates whether there are any dependencies on the local position vector.\n */\n this.usesPositionFragment = false;\n /**\n *\n */\n this.imageIndices = new Array();\n this._elementsClass = elementsClass;\n this._pass = pass;\n this._stage = stage;\n this.profile = this._stage.profile;\n }\n Object.defineProperty(ShaderBase.prototype, \"pass\", {\n get: function () {\n return this._pass;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderBase.prototype, \"programData\", {\n get: function () {\n if (this._invalidProgram)\n this._updateProgram();\n return this._programData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderBase.prototype, \"usesAnimation\", {\n get: function () {\n return this._usesAnimation;\n },\n set: function (value) {\n if (this._usesAnimation == value)\n return;\n this._usesAnimation = value;\n this.invalidateProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderBase.prototype, \"numUsedVertexConstants\", {\n get: function () {\n if (this._invalidProgram)\n this._updateProgram();\n return this._numUsedVertexConstants;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderBase.prototype, \"numUsedFragmentConstants\", {\n get: function () {\n if (this._invalidProgram)\n this._updateProgram();\n return this._numUsedFragmentConstants;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderBase.prototype, \"numUsedStreams\", {\n /**\n * The amount of used vertex streams in the vertex code. Used by the animation code generation to know from which index on streams are available.\n */\n get: function () {\n if (this._invalidProgram)\n this._updateProgram();\n return this._numUsedStreams;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShaderBase.prototype, \"numUsedTextures\", {\n /**\n *\n */\n get: function () {\n if (this._invalidProgram)\n this._updateProgram();\n return this._numUsedTextures;\n },\n enumerable: true,\n configurable: true\n });\n ShaderBase.prototype.getAbstraction = function (asset) {\n return (this._abstractionPool[asset.id] || (this._abstractionPool[asset.id] = new ShaderBase._abstractionClassPool[asset.assetType](asset, this)));\n };\n /**\n *\n * @param image\n */\n ShaderBase.prototype.clearAbstraction = function (texture) {\n this._abstractionPool[texture.id] = null;\n };\n /**\n *\n * @param imageObjectClass\n */\n ShaderBase.registerAbstraction = function (gl_assetClass, assetClass) {\n ShaderBase._abstractionClassPool[assetClass.assetType] = gl_assetClass;\n };\n ShaderBase.prototype.getImageIndex = function (texture, index) {\n if (index === void 0) { index = 0; }\n return this._pass.getImageIndex(texture, index);\n };\n ShaderBase.prototype._includeDependencies = function () {\n this._pass._includeDependencies(this);\n //this.usesCommonData = this.usesCurves || this.usesCommonData;\n };\n /**\n * Factory method to create a concrete compiler object for this object\n *\n * @param elementsClass\n * @param pass\n * @param stage\n * @returns {CompilerBase}\n */\n ShaderBase.prototype.createCompiler = function (elementsClass, pass) {\n return new CompilerBase(elementsClass, pass, this);\n };\n /**\n * Clears dependency counts for all registers. Called when recompiling a pass.\n */\n ShaderBase.prototype.reset = function () {\n this.projectionDependencies = 0;\n this.normalDependencies = 0;\n this.colorDependencies = 0;\n this.viewDirDependencies = 0;\n this.uvDependencies = 0;\n this.secondaryUVDependencies = 0;\n this.globalPosDependencies = 0;\n this.tangentDependencies = 0;\n this.usesCommonData = false;\n this.usesGlobalPosFragment = false;\n this.usesPositionFragment = false;\n this.usesFragmentAnimation = false;\n this.usesTangentSpace = false;\n this.outputsNormals = false;\n this.outputsTangentNormals = false;\n };\n ShaderBase.prototype.pInitRegisterIndices = function () {\n this.commonsDataIndex = -1;\n this.cameraPositionIndex = -1;\n this.curvesIndex = -1;\n this.uvIndex = -1;\n this.uvMatrixIndex = -1;\n this.colorTransformIndex = -1;\n this.secondaryUVIndex = -1;\n this.normalIndex = -1;\n this.colorBufferIndex = -1;\n this.tangentIndex = -1;\n this.sceneMatrixIndex = -1;\n this.sceneNormalMatrixIndex = -1;\n this.jointIndexIndex = -1;\n this.jointWeightIndex = -1;\n this.imageIndices.length = 0;\n };\n /**\n * Initializes the unchanging constant data for this shader object.\n */\n ShaderBase.prototype.initConstantData = function (registerCache) {\n //Updates the amount of used register indices.\n this._numUsedVertexConstants = registerCache.numUsedVertexConstants;\n this._numUsedFragmentConstants = registerCache.numUsedFragmentConstants;\n this._numUsedStreams = registerCache.numUsedStreams;\n this._numUsedTextures = registerCache.numUsedTextures;\n this.vertexConstantData = new Float32Array(registerCache.numUsedVertexConstants * 4);\n this.fragmentConstantData = new Float32Array(registerCache.numUsedFragmentConstants * 4);\n //Initialies viewMatrix\n if (this.viewMatrixIndex >= 0) {\n this.viewMatrix = new Matrix3D(new Float32Array(this.vertexConstantData.buffer, this.viewMatrixIndex * 4, 16));\n }\n else if (this.viewMatrix) {\n this.viewMatrix = null;\n }\n //Initialies sceneMatrix\n if (this.sceneMatrixIndex >= 0) {\n this.sceneMatrix = new Matrix3D(new Float32Array(this.vertexConstantData.buffer, this.sceneMatrixIndex * 4, 16));\n }\n else if (this.sceneMatrix) {\n this.sceneMatrix = null;\n }\n //Initializes commonly required constant values.\n if (this.commonsDataIndex >= 0) {\n this.fragmentConstantData[this.commonsDataIndex] = .5;\n this.fragmentConstantData[this.commonsDataIndex + 1] = 0;\n this.fragmentConstantData[this.commonsDataIndex + 2] = 1 / 255;\n this.fragmentConstantData[this.commonsDataIndex + 3] = 1;\n }\n //Initializes the default UV transformation matrix.\n if (this.uvMatrixIndex >= 0) {\n this.vertexConstantData[this.uvMatrixIndex] = 1;\n this.vertexConstantData[this.uvMatrixIndex + 1] = 0;\n this.vertexConstantData[this.uvMatrixIndex + 2] = 0;\n this.vertexConstantData[this.uvMatrixIndex + 3] = 0;\n this.vertexConstantData[this.uvMatrixIndex + 4] = 0;\n this.vertexConstantData[this.uvMatrixIndex + 5] = 1;\n this.vertexConstantData[this.uvMatrixIndex + 6] = 0;\n this.vertexConstantData[this.uvMatrixIndex + 7] = 0;\n }\n //Initializes the default colorTransform.\n if (this.colorTransformIndex >= 0) {\n this.fragmentConstantData[this.colorTransformIndex] = 1;\n this.fragmentConstantData[this.colorTransformIndex + 1] = 1;\n this.fragmentConstantData[this.colorTransformIndex + 2] = 1;\n this.fragmentConstantData[this.colorTransformIndex + 3] = 1;\n this.fragmentConstantData[this.colorTransformIndex + 4] = 0;\n this.fragmentConstantData[this.colorTransformIndex + 5] = 0;\n this.fragmentConstantData[this.colorTransformIndex + 6] = 0;\n this.fragmentConstantData[this.colorTransformIndex + 7] = 0;\n }\n if (this.sceneNormalMatrixIndex >= 0) {\n this.sceneNormalMatrix = new Matrix3D(new Float32Array(this.vertexConstantData.buffer, this.sceneNormalMatrixIndex * 4, 16));\n }\n else if (this.sceneNormalMatrix) {\n this.sceneNormalMatrix = null;\n }\n if (this.cameraPositionIndex >= 0)\n this.vertexConstantData[this.cameraPositionIndex + 3] = 1;\n // init constant data in pass\n this._pass._initConstantData(this);\n //init constant data in animation\n if (this.usesAnimation)\n this._pass.animationSet.doneAGALCode(this);\n };\n /**\n * The blend mode to use when drawing this renderable. The following blend modes are supported:\n *
    \n *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \n *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \n *
  • BlendMode.MULTIPLY
  • \n *
  • BlendMode.ADD
  • \n *
  • BlendMode.ALPHA
  • \n *
\n */\n ShaderBase.prototype.setBlendMode = function (value) {\n switch (value) {\n case BlendMode.NORMAL:\n this._blendFactorSource = ContextGLBlendFactor.ONE;\n this._blendFactorDest = ContextGLBlendFactor.ZERO;\n this.usesBlending = false;\n break;\n case BlendMode.LAYER:\n this._blendFactorSource = ContextGLBlendFactor.SOURCE_ALPHA;\n this._blendFactorDest = ContextGLBlendFactor.ONE_MINUS_SOURCE_ALPHA;\n this.usesBlending = true;\n break;\n case BlendMode.MULTIPLY:\n this._blendFactorSource = ContextGLBlendFactor.ZERO;\n this._blendFactorDest = ContextGLBlendFactor.SOURCE_COLOR;\n this.usesBlending = true;\n break;\n case BlendMode.ADD:\n this._blendFactorSource = ContextGLBlendFactor.SOURCE_ALPHA;\n this._blendFactorDest = ContextGLBlendFactor.ONE;\n this.usesBlending = true;\n break;\n case BlendMode.ALPHA:\n this._blendFactorSource = ContextGLBlendFactor.ZERO;\n this._blendFactorDest = ContextGLBlendFactor.SOURCE_ALPHA;\n this.usesBlending = true;\n break;\n default:\n throw new ArgumentError(\"Unsupported blend mode!\");\n }\n };\n /**\n * @inheritDoc\n */\n ShaderBase.prototype._activate = function (projection) {\n this._stage.context.setCulling(this.useBothSides ? ContextGLTriangleFace.NONE : this._defaultCulling, projection.coordinateSystem);\n if (!this.usesTangentSpace && this.cameraPositionIndex >= 0) {\n var pos = projection.transform.concatenatedMatrix3D.position;\n this.vertexConstantData[this.cameraPositionIndex] = pos.x;\n this.vertexConstantData[this.cameraPositionIndex + 1] = pos.y;\n this.vertexConstantData[this.cameraPositionIndex + 2] = pos.z;\n }\n this._stage.context.setDepthTest((this.writeDepth && !this.usesBlending), this.depthCompareMode);\n if (this.usesBlending)\n this._stage.context.setBlendFactors(this._blendFactorSource, this._blendFactorDest);\n this.activeElements = null;\n };\n /**\n * @inheritDoc\n */\n ShaderBase.prototype._deactivate = function () {\n //For the love of god don't remove this if you want your multi-material shadows to not flicker like shit\n this._stage.context.setDepthTest(true, ContextGLCompareMode.LESS_EQUAL);\n this.activeElements = null;\n };\n /**\n *\n *\n * @param renderable\n * @param stage\n * @param camera\n */\n ShaderBase.prototype._setRenderState = function (renderable, projection) {\n if (renderable.sourceEntity.animator)\n renderable.sourceEntity.animator.setRenderState(this, renderable, this._stage, projection);\n var rawData;\n if (this.usesUVTransform) {\n var uvMatrix = renderable.uvMatrix;\n if (uvMatrix) {\n //transpose\n rawData = uvMatrix.rawData;\n this.vertexConstantData[this.uvMatrixIndex] = rawData[0];\n this.vertexConstantData[this.uvMatrixIndex + 1] = rawData[2];\n this.vertexConstantData[this.uvMatrixIndex + 3] = rawData[4];\n this.vertexConstantData[this.uvMatrixIndex + 4] = rawData[1];\n this.vertexConstantData[this.uvMatrixIndex + 5] = rawData[3];\n this.vertexConstantData[this.uvMatrixIndex + 7] = rawData[5];\n }\n else {\n this.vertexConstantData[this.uvMatrixIndex] = 1;\n this.vertexConstantData[this.uvMatrixIndex + 1] = 0;\n this.vertexConstantData[this.uvMatrixIndex + 3] = 0;\n this.vertexConstantData[this.uvMatrixIndex + 4] = 0;\n this.vertexConstantData[this.uvMatrixIndex + 5] = 1;\n this.vertexConstantData[this.uvMatrixIndex + 7] = 0;\n }\n }\n if (this.usesColorTransform) {\n var colorTransform = renderable.sourceEntity._iAssignedColorTransform();\n if (colorTransform) {\n //TODO: AWDParser to write normalised color offsets\n rawData = colorTransform._rawData;\n this.fragmentConstantData[this.colorTransformIndex] = rawData[0];\n this.fragmentConstantData[this.colorTransformIndex + 1] = rawData[1];\n this.fragmentConstantData[this.colorTransformIndex + 2] = rawData[2];\n this.fragmentConstantData[this.colorTransformIndex + 3] = rawData[3];\n this.fragmentConstantData[this.colorTransformIndex + 4] = rawData[4] / 255;\n this.fragmentConstantData[this.colorTransformIndex + 5] = rawData[5] / 255;\n this.fragmentConstantData[this.colorTransformIndex + 6] = rawData[6] / 255;\n this.fragmentConstantData[this.colorTransformIndex + 7] = rawData[7] / 255;\n }\n else {\n this.fragmentConstantData[this.colorTransformIndex] = 1;\n this.fragmentConstantData[this.colorTransformIndex + 1] = 1;\n this.fragmentConstantData[this.colorTransformIndex + 2] = 1;\n this.fragmentConstantData[this.colorTransformIndex + 3] = 1;\n this.fragmentConstantData[this.colorTransformIndex + 4] = 0;\n this.fragmentConstantData[this.colorTransformIndex + 5] = 0;\n this.fragmentConstantData[this.colorTransformIndex + 6] = 0;\n this.fragmentConstantData[this.colorTransformIndex + 7] = 0;\n }\n }\n if (this.sceneNormalMatrixIndex >= 0) {\n this.sceneNormalMatrix.copyFrom(renderable.sourceEntity.transform.inverseConcatenatedMatrix3D);\n }\n if (this.usesTangentSpace && this.cameraPositionIndex >= 0) {\n renderable.sourceEntity.transform.inverseConcatenatedMatrix3D.copyRawDataTo(this._pInverseSceneMatrix);\n var pos = projection.transform.concatenatedMatrix3D.position;\n var x = pos.x;\n var y = pos.y;\n var z = pos.z;\n this.vertexConstantData[this.cameraPositionIndex] = this._pInverseSceneMatrix[0] * x + this._pInverseSceneMatrix[4] * y + this._pInverseSceneMatrix[8] * z + this._pInverseSceneMatrix[12];\n this.vertexConstantData[this.cameraPositionIndex + 1] = this._pInverseSceneMatrix[1] * x + this._pInverseSceneMatrix[5] * y + this._pInverseSceneMatrix[9] * z + this._pInverseSceneMatrix[13];\n this.vertexConstantData[this.cameraPositionIndex + 2] = this._pInverseSceneMatrix[2] * x + this._pInverseSceneMatrix[6] * y + this._pInverseSceneMatrix[10] * z + this._pInverseSceneMatrix[14];\n }\n };\n ShaderBase.prototype.invalidateProgram = function () {\n this._invalidProgram = true;\n };\n ShaderBase.prototype.dispose = function () {\n this._programData.dispose();\n this._programData = null;\n };\n ShaderBase.prototype._updateProgram = function () {\n this._invalidProgram = false;\n var compiler = this.createCompiler(this._elementsClass, this._pass);\n compiler.compile();\n this._calcAnimationCode(compiler.registerCache, compiler.sharedRegisters.shadedTarget, compiler.sharedRegisters);\n //initialise the required shader constants\n this.initConstantData(compiler.registerCache);\n var programData = this._stage.getProgramData(this._animationVertexCode + compiler.vertexCode, compiler.fragmentCode + this._animationFragmentCode + compiler.postAnimationFragmentCode);\n //check program data hasn't changed, keep count of program usages\n if (this._programData != programData) {\n if (this._programData)\n this._programData.dispose();\n this._programData = programData;\n programData.usages++;\n }\n };\n ShaderBase.prototype._calcAnimationCode = function (registerCache, shadedTarget, sharedRegisters) {\n //reset code\n this._animationVertexCode = \"\";\n this._animationFragmentCode = \"\";\n //check to see if GPU animation is used\n if (this.usesAnimation) {\n var animationSet = this._pass.animationSet;\n this._animationVertexCode += animationSet.getAGALVertexCode(this, registerCache, sharedRegisters);\n if (this.uvDependencies > 0 && !this.usesUVTransform)\n this._animationVertexCode += animationSet.getAGALUVCode(this, registerCache, sharedRegisters);\n if (this.usesFragmentAnimation)\n this._animationFragmentCode += animationSet.getAGALFragmentCode(this, registerCache, shadedTarget);\n }\n else {\n // simply write attributes to targets, do not animate them\n // projection will pick up on targets[0] to do the projection\n var len = sharedRegisters.animatableAttributes.length;\n for (var i = 0; i < len; ++i)\n this._animationVertexCode += \"mov \" + sharedRegisters.animationTargetRegisters[i] + \", \" + sharedRegisters.animatableAttributes[i] + \"\\n\";\n if (this.uvDependencies > 0 && !this.usesUVTransform)\n this._animationVertexCode += \"mov \" + sharedRegisters.uvTarget + \",\" + sharedRegisters.uvSource + \"\\n\";\n }\n };\n ShaderBase.prototype.setVertexConst = function (index, x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 0; }\n index *= 4;\n this.vertexConstantData[index++] = x;\n this.vertexConstantData[index++] = y;\n this.vertexConstantData[index++] = z;\n this.vertexConstantData[index] = w;\n };\n ShaderBase.prototype.setVertexConstFromArray = function (index, data) {\n index *= 4;\n for (var i = 0; i < data.length; i++)\n this.vertexConstantData[index++] = data[i];\n };\n ShaderBase.prototype.setVertexConstFromMatrix = function (index, matrix) {\n index *= 4;\n var rawData = matrix._rawData;\n this.vertexConstantData[index++] = rawData[0];\n this.vertexConstantData[index++] = rawData[4];\n this.vertexConstantData[index++] = rawData[8];\n this.vertexConstantData[index++] = rawData[12];\n this.vertexConstantData[index++] = rawData[1];\n this.vertexConstantData[index++] = rawData[5];\n this.vertexConstantData[index++] = rawData[9];\n this.vertexConstantData[index++] = rawData[13];\n this.vertexConstantData[index++] = rawData[2];\n this.vertexConstantData[index++] = rawData[6];\n this.vertexConstantData[index++] = rawData[10];\n this.vertexConstantData[index++] = rawData[14];\n this.vertexConstantData[index++] = rawData[3];\n this.vertexConstantData[index++] = rawData[7];\n this.vertexConstantData[index++] = rawData[11];\n this.vertexConstantData[index] = rawData[15];\n };\n ShaderBase.prototype.setFragmentConst = function (index, x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 0; }\n index *= 4;\n this.fragmentConstantData[index++] = x;\n this.fragmentConstantData[index++] = y;\n this.fragmentConstantData[index++] = z;\n this.fragmentConstantData[index] = w;\n };\n return ShaderBase;\n}());\nexport { ShaderBase };\nShaderBase._abstractionClassPool = new Object();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shaders/ShaderBase.js","import * as tslib_1 from \"tslib\";\nimport { EventDispatcher } from \"@awayjs/core\";\nimport { PassEvent } from \"../../events/PassEvent\";\n/**\n * PassBase provides an abstract base class for material shader passes. A material pass constitutes at least\n * a render call per required renderable.\n */\nvar PassBase = (function (_super) {\n tslib_1.__extends(PassBase, _super);\n /**\n * Creates a new PassBase object.\n */\n function PassBase(material, materialPool) {\n var _this = _super.call(this) || this;\n _this._preserveAlpha = true;\n _this._forceSeparateMVP = false;\n _this._material = material;\n _this._elementsClass = materialPool.elementsClass;\n _this._stage = materialPool.materialGroup.stage;\n return _this;\n }\n Object.defineProperty(PassBase.prototype, \"shader\", {\n get: function () {\n return this._shader;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PassBase.prototype, \"samplers\", {\n get: function () {\n return this._material.samplers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PassBase.prototype, \"images\", {\n get: function () {\n return this._material.images;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PassBase.prototype, \"style\", {\n get: function () {\n return this._material.material.style;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PassBase.prototype, \"animationSet\", {\n get: function () {\n return this._material.material.animationSet;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PassBase.prototype, \"preserveAlpha\", {\n /**\n * Indicates whether the output alpha value should remain unchanged compared to the material's original alpha.\n */\n get: function () {\n return this._preserveAlpha;\n },\n set: function (value) {\n if (this._preserveAlpha == value)\n return;\n this._preserveAlpha = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PassBase.prototype, \"forceSeparateMVP\", {\n /**\n * Indicates whether the screen projection should be calculated by forcing a separate scene matrix and\n * view-projection matrix. This is used to prevent rounding errors when using multiple passes with different\n * projection code.\n */\n get: function () {\n return this._forceSeparateMVP;\n },\n set: function (value) {\n if (this._forceSeparateMVP == value)\n return;\n this._forceSeparateMVP = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n PassBase.prototype.getImageIndex = function (texture, index) {\n if (index === void 0) { index = 0; }\n return this._material.getImageIndex(texture, index);\n };\n /**\n * Marks the shader program as invalid, so it will be recompiled before the next render.\n */\n PassBase.prototype.invalidate = function () {\n this._shader.invalidateProgram();\n this.dispatchEvent(new PassEvent(PassEvent.INVALIDATE, this));\n };\n /**\n * Cleans up any resources used by the current object.\n * @param deep Indicates whether other resources should be cleaned up, that could potentially be shared across different instances.\n */\n PassBase.prototype.dispose = function () {\n this._material = null;\n this._elementsClass = null;\n this._stage = null;\n if (this._shader) {\n this._shader.dispose();\n this._shader = null;\n }\n };\n /**\n * Renders the current pass. Before calling pass, activatePass needs to be called with the same index.\n * @param pass The pass used to render the renderable.\n * @param renderable The IRenderable object to draw.\n * @param stage The Stage object used for rendering.\n * @param entityCollector The EntityCollector object that contains the visible scene data.\n * @param viewProjection The view-projection matrix used to project to the screen. This is not the same as\n * camera.viewProjection as it includes the scaling factors when rendering to textures.\n *\n * @internal\n */\n PassBase.prototype._setRenderState = function (renderable, projection) {\n this._shader._setRenderState(renderable, projection);\n };\n /**\n * Sets the render state for the pass that is independent of the rendered object. This needs to be called before\n * calling pass. Before activating a pass, the previously used pass needs to be deactivated.\n * @param stage The Stage object which is currently used for rendering.\n * @param camera The camera from which the scene is viewed.\n * @private\n */\n PassBase.prototype._activate = function (projection) {\n this._shader._activate(projection);\n };\n /**\n * Clears the render state for the pass. This needs to be called before activating another pass.\n * @param stage The Stage used for rendering\n *\n * @private\n */\n PassBase.prototype._deactivate = function () {\n this._shader._deactivate();\n };\n PassBase.prototype._includeDependencies = function (shader) {\n this._material._includeDependencies(shader);\n if (this._forceSeparateMVP)\n this._shader.globalPosDependencies++;\n };\n PassBase.prototype._initConstantData = function (shader) {\n };\n PassBase.prototype._getVertexCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n PassBase.prototype._getFragmentCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n PassBase.prototype._getPostAnimationFragmentCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n PassBase.prototype._getNormalVertexCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n PassBase.prototype._getNormalFragmentCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n return PassBase;\n}(EventDispatcher));\nexport { PassBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/passes/PassBase.js","import * as tslib_1 from \"tslib\";\nimport { AssetEvent } from \"@awayjs/core\";\nimport { ShaderBase } from \"../../shaders/ShaderBase\";\nimport { PassBase } from \"./PassBase\";\n/**\n * BasicMaterialPass forms an abstract base class for the default shaded materials provided by Stage,\n * using material methods to define their appearance.\n */\nvar BasicMaterialPass = (function (_super) {\n tslib_1.__extends(BasicMaterialPass, _super);\n function BasicMaterialPass(material, materialPool) {\n var _this = _super.call(this, material, materialPool) || this;\n _this._diffuseR = 1;\n _this._diffuseG = 1;\n _this._diffuseB = 1;\n _this._diffuseA = 1;\n _this._shader = new ShaderBase(materialPool.elementsClass, _this, _this._stage);\n _this.invalidate();\n return _this;\n }\n BasicMaterialPass.prototype._includeDependencies = function (shader) {\n _super.prototype._includeDependencies.call(this, shader);\n if (this._textureVO != null)\n shader.uvDependencies++;\n };\n BasicMaterialPass.prototype.invalidate = function () {\n _super.prototype.invalidate.call(this);\n this._textureVO = this._material.material.getTextureAt(0) ? this._shader.getAbstraction(this._material.material.getTextureAt(0)) : null;\n };\n BasicMaterialPass.prototype.dispose = function () {\n if (this._textureVO) {\n this._textureVO.onClear(new AssetEvent(AssetEvent.CLEAR, this._material.material.getTextureAt(0)));\n this._textureVO = null;\n }\n _super.prototype.dispose.call(this);\n };\n /**\n * @inheritDoc\n */\n BasicMaterialPass.prototype._getFragmentCode = function (regCache, sharedReg) {\n var code = \"\";\n var alphaReg;\n if (this.preserveAlpha) {\n alphaReg = regCache.getFreeFragmentSingleTemp();\n regCache.addFragmentTempUsages(alphaReg, 1);\n code += \"mov \" + alphaReg + \", \" + sharedReg.shadedTarget + \".w\\n\";\n }\n var targetReg = sharedReg.shadedTarget;\n if (this._textureVO != null) {\n code += this._textureVO._getFragmentCode(targetReg, regCache, sharedReg, sharedReg.uvVarying);\n if (this._shader.alphaThreshold > 0) {\n var cutOffReg = regCache.getFreeFragmentConstant();\n this._fragmentConstantsIndex = cutOffReg.index * 4;\n code += \"sub \" + targetReg + \".w, \" + targetReg + \".w, \" + cutOffReg + \".x\\n\" + \"kil \" + targetReg + \".w\\n\" + \"add \" + targetReg + \".w, \" + targetReg + \".w, \" + cutOffReg + \".x\\n\";\n }\n }\n else if (this._shader.colorBufferIndex != -1) {\n code += \"mov \" + targetReg + \", \" + sharedReg.colorVarying + \"\\n\";\n }\n else {\n var diffuseInputReg = regCache.getFreeFragmentConstant();\n this._fragmentConstantsIndex = diffuseInputReg.index * 4;\n code += \"mov \" + targetReg + \", \" + diffuseInputReg + \"\\n\";\n }\n if (this.preserveAlpha) {\n code += \"mul \" + sharedReg.shadedTarget + \".w, \" + sharedReg.shadedTarget + \".w, \" + alphaReg + \"\\n\";\n regCache.removeFragmentTempUsage(alphaReg);\n }\n return code;\n };\n BasicMaterialPass.prototype._setRenderState = function (renderable, projection) {\n _super.prototype._setRenderState.call(this, renderable, projection);\n if (this._textureVO != null)\n this._textureVO._setRenderState(renderable);\n };\n /**\n * @inheritDoc\n */\n BasicMaterialPass.prototype._activate = function (projection) {\n _super.prototype._activate.call(this, projection);\n if (this._textureVO != null) {\n this._textureVO.activate();\n if (this._shader.alphaThreshold > 0)\n this._shader.fragmentConstantData[this._fragmentConstantsIndex] = this._shader.alphaThreshold;\n }\n else if (this._shader.colorBufferIndex == -1) {\n var index = this._fragmentConstantsIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = this._diffuseR;\n data[index + 1] = this._diffuseG;\n data[index + 2] = this._diffuseB;\n data[index + 3] = this._diffuseA;\n }\n };\n return BasicMaterialPass;\n}(PassBase));\nexport { BasicMaterialPass };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/passes/BasicMaterialPass.js","import * as tslib_1 from \"tslib\";\nimport { AbstractionBase } from \"@awayjs/core\";\nimport { MaterialEvent, MaterialBase, DefaultMaterialManager } from \"@awayjs/graphics\";\nimport { PassEvent } from \"../events/PassEvent\";\n/**\n *\n * @class away.pool.Passes\n */\nvar GL_MaterialBase = (function (_super) {\n tslib_1.__extends(GL_MaterialBase, _super);\n function GL_MaterialBase(material, materialPool) {\n var _this = _super.call(this, material, materialPool) || this;\n _this.usages = 0;\n _this._forceSeparateMVP = false;\n _this._usesAnimation = true;\n _this._invalidAnimation = true;\n _this._invalidRender = true;\n _this._invalidImages = true;\n _this._passes = new Array();\n _this._imageIndices = new Object();\n _this._pRequiresBlending = false;\n _this.images = new Array();\n _this.samplers = new Array();\n _this._onInvalidateAnimationDelegate = function (event) { return _this.onInvalidateAnimation(event); };\n _this._onInvalidatePassesDelegate = function (event) { return _this.onInvalidatePasses(event); };\n _this.materialID = material.id;\n _this._material = material;\n _this._elementsClass = materialPool.elementsClass;\n _this._stage = materialPool.materialGroup.stage;\n _this._material.addEventListener(MaterialEvent.INVALIDATE_ANIMATION, _this._onInvalidateAnimationDelegate);\n _this._material.addEventListener(MaterialEvent.INVALIDATE_PASSES, _this._onInvalidatePassesDelegate);\n _this._onPassInvalidateDelegate = function (event) { return _this.onPassInvalidate(event); };\n return _this;\n }\n Object.defineProperty(GL_MaterialBase.prototype, \"style\", {\n get: function () {\n return this._material.style;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MaterialBase.prototype, \"requiresBlending\", {\n /**\n * Indicates whether or not the renderable requires alpha blending during rendering.\n */\n get: function () {\n return this._pRequiresBlending;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MaterialBase.prototype, \"renderOrderId\", {\n get: function () {\n if (this._invalidAnimation)\n this._updateAnimation();\n return this._renderOrderId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MaterialBase.prototype, \"passes\", {\n get: function () {\n if (this._invalidAnimation)\n this._updateAnimation();\n return this._passes;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MaterialBase.prototype, \"material\", {\n get: function () {\n return this._material;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MaterialBase.prototype, \"numImages\", {\n get: function () {\n if (this._invalidImages)\n this._updateImages();\n return this._numImages;\n },\n enumerable: true,\n configurable: true\n });\n GL_MaterialBase.prototype._includeDependencies = function (shader) {\n this._elementsClass._includeDependencies(shader);\n shader.alphaThreshold = this._material.alphaThreshold;\n shader.useImageRect = this._material.imageRect;\n shader.usesCurves = this._material.curves;\n if (this._material instanceof MaterialBase) {\n var material = this._material;\n shader.useAlphaPremultiplied = material.alphaPremultiplied;\n shader.useBothSides = material.bothSides;\n shader.usesUVTransform = material.animateUVs;\n shader.usesColorTransform = material.useColorTransform;\n }\n };\n GL_MaterialBase.prototype.getImageIndex = function (texture, index) {\n if (index === void 0) { index = 0; }\n if (this._invalidImages)\n this._updateImages();\n return this._imageIndices[texture.id][index];\n };\n /**\n *\n */\n GL_MaterialBase.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n var len = this._passes.length;\n for (var i = 0; i < len; i++) {\n this._passes[i].removeEventListener(PassEvent.INVALIDATE, this._onPassInvalidateDelegate);\n this._passes[i].dispose();\n }\n this._passes = null;\n this._material.removeEventListener(MaterialEvent.INVALIDATE_ANIMATION, this._onInvalidateAnimationDelegate);\n this._material.removeEventListener(MaterialEvent.INVALIDATE_PASSES, this._onInvalidatePassesDelegate);\n this._material = null;\n this._elementsClass = null;\n this._stage = null;\n };\n /**\n *\n */\n GL_MaterialBase.prototype.onInvalidate = function (event) {\n _super.prototype.onInvalidate.call(this, event);\n this._invalidRender = true;\n this._invalidAnimation = true;\n };\n /**\n *\n */\n GL_MaterialBase.prototype.onInvalidatePasses = function (event) {\n var len = this._passes.length;\n for (var i = 0; i < len; i++)\n this._passes[i].invalidate();\n this._invalidAnimation = true;\n this._invalidImages = true;\n };\n /**\n *\n */\n GL_MaterialBase.prototype.onInvalidateAnimation = function (event) {\n this._invalidAnimation = true;\n };\n /**\n *\n * @param surface\n */\n GL_MaterialBase.prototype._updateAnimation = function () {\n if (this._invalidRender)\n this._pUpdateRender();\n this._invalidAnimation = false;\n var usesAnimation = this._getEnabledGPUAnimation();\n var renderOrderId = 0;\n var mult = 1;\n var shader;\n var len = this._passes.length;\n for (var i = 0; i < len; i++) {\n shader = this._passes[i].shader;\n shader.usesAnimation = usesAnimation;\n renderOrderId += shader.programData.id * mult;\n mult *= 1000;\n }\n if (this._usesAnimation != usesAnimation) {\n this._usesAnimation = usesAnimation;\n var renderables = this._material.iOwners;\n var numOwners = renderables.length;\n for (var j = 0; j < numOwners; j++)\n renderables[j].invalidateElements();\n }\n this._renderOrderId = renderOrderId;\n };\n GL_MaterialBase.prototype._updateImages = function () {\n this._invalidImages = false;\n var numTextures = this._material.getNumTextures();\n var texture;\n var numImages;\n var images;\n var image;\n var sampler;\n var index = 0;\n for (var i = 0; i < numTextures; i++) {\n texture = this._material.getTextureAt(i);\n numImages = texture.getNumImages();\n images = this._imageIndices[texture.id] = new Array();\n for (var j = 0; j < numImages; j++) {\n image = texture.getImageAt(j) || (this._material.style ? this._material.style.getImageAt(texture, j) : null) || DefaultMaterialManager.getDefaultImage2D();\n this.images[index] = this._stage.getAbstraction(image);\n sampler = texture.getSamplerAt(j) || (this._material.style ? this._material.style.getSamplerAt(texture, j) : null) || DefaultMaterialManager.getDefaultSampler();\n this.samplers[index] = this._stage.getAbstraction(sampler);\n images[j] = index++;\n }\n }\n this._numImages = index;\n };\n /**\n * Performs any processing that needs to occur before any of its passes are used.\n *\n * @private\n */\n GL_MaterialBase.prototype._pUpdateRender = function () {\n this._invalidRender = false;\n //overrride to update shader object properties\n };\n /**\n * Removes a pass from the surface.\n * @param pass The pass to be removed.\n */\n GL_MaterialBase.prototype._pRemovePass = function (pass) {\n pass.removeEventListener(PassEvent.INVALIDATE, this._onPassInvalidateDelegate);\n this._passes.splice(this._passes.indexOf(pass), 1);\n };\n /**\n * Removes all passes from the surface\n */\n GL_MaterialBase.prototype._pClearPasses = function () {\n var len = this._passes.length;\n for (var i = 0; i < len; ++i)\n this._passes[i].removeEventListener(PassEvent.INVALIDATE, this._onPassInvalidateDelegate);\n this._passes.length = 0;\n };\n /**\n * Adds a pass to the surface\n * @param pass\n */\n GL_MaterialBase.prototype._pAddPass = function (pass) {\n this._passes.push(pass);\n pass.addEventListener(PassEvent.INVALIDATE, this._onPassInvalidateDelegate);\n };\n /**\n * Listener for when a pass's shader code changes. It recalculates the render order id.\n */\n GL_MaterialBase.prototype.onPassInvalidate = function (event) {\n this._invalidAnimation = true;\n };\n /**\n * test if animation will be able to run on gpu BEFORE compiling materials\n * test if the shader objects supports animating the animation set in the vertex shader\n * if any object using this material fails to support accelerated animations for any of the shader objects,\n * we should do everything on cpu (otherwise we have the cost of both gpu + cpu animations)\n */\n GL_MaterialBase.prototype._getEnabledGPUAnimation = function () {\n if (this._material.animationSet) {\n this._material.animationSet.resetGPUCompatibility();\n var entities = this._material.iOwners;\n var numOwners = entities.length;\n var len = this._passes.length;\n var shader;\n for (var i = 0; i < len; i++) {\n shader = this._passes[i].shader;\n shader.usesAnimation = false;\n for (var j = 0; j < numOwners; j++)\n if (entities[j].animator)\n entities[j].animator.testGPUCompatibility(shader);\n }\n return !this._material.animationSet.usesCPU;\n }\n return false;\n };\n return GL_MaterialBase;\n}(AbstractionBase));\nexport { GL_MaterialBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/GL_MaterialBase.js","import * as tslib_1 from \"tslib\";\nimport { BlendMode } from \"@awayjs/graphics\";\nimport { BasicMaterialPass } from \"./passes/BasicMaterialPass\";\nimport { GL_MaterialBase } from \"./GL_MaterialBase\";\n/**\n * RenderMaterialObject forms an abstract base class for the default shaded materials provided by Stage,\n * using material methods to define their appearance.\n */\nvar GL_BasicMaterial = (function (_super) {\n tslib_1.__extends(GL_BasicMaterial, _super);\n function GL_BasicMaterial(material, materialPool) {\n var _this = _super.call(this, material, materialPool) || this;\n _this._basicMaterial = material;\n _this._pAddPass(_this._pass = new BasicMaterialPass(_this, materialPool));\n return _this;\n }\n GL_BasicMaterial.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._basicMaterial = null;\n };\n /**\n * @inheritDoc\n */\n GL_BasicMaterial.prototype._pUpdateRender = function () {\n _super.prototype._pUpdateRender.call(this);\n this._pRequiresBlending = (this._basicMaterial.blendMode != BlendMode.NORMAL || this._basicMaterial.alphaBlending || (this._basicMaterial.colorTransform && this._basicMaterial.colorTransform.alphaMultiplier < 1));\n this._pass.preserveAlpha = this._basicMaterial.preserveAlpha; //this._pRequiresBlending;\n this._pass.shader.setBlendMode((this._basicMaterial.blendMode == BlendMode.NORMAL && this._pRequiresBlending) ? BlendMode.LAYER : this._basicMaterial.blendMode);\n //this._pass.forceSeparateMVP = false;\n };\n return GL_BasicMaterial;\n}(GL_MaterialBase));\nexport { GL_BasicMaterial };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/GL_BasicMaterial.js","import * as tslib_1 from \"tslib\";\nimport { PassEvent } from \"../events/PassEvent\";\nimport { GL_MaterialBase } from \"./GL_MaterialBase\";\n/**\n * GL_MaterialPassBase provides an abstract base class for material shader passes. A material pass constitutes at least\n * a render call per required renderable.\n */\nvar GL_MaterialPassBase = (function (_super) {\n tslib_1.__extends(GL_MaterialPassBase, _super);\n function GL_MaterialPassBase() {\n return _super.apply(this, arguments) || this;\n }\n Object.defineProperty(GL_MaterialPassBase.prototype, \"shader\", {\n get: function () {\n return this._shader;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MaterialPassBase.prototype, \"animationSet\", {\n get: function () {\n return this._material.animationSet;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Marks the shader program as invalid, so it will be recompiled before the next render.\n */\n GL_MaterialPassBase.prototype.invalidate = function () {\n this._shader.invalidateProgram();\n this.dispatchEvent(new PassEvent(PassEvent.INVALIDATE, this));\n };\n GL_MaterialPassBase.prototype.dispose = function () {\n if (this._shader) {\n this._shader.dispose();\n this._shader = null;\n }\n };\n /**\n * Renders the current pass. Before calling pass, activatePass needs to be called with the same index.\n * @param pass The pass used to render the renderable.\n * @param renderable The IRenderable object to draw.\n * @param stage The Stage object used for rendering.\n * @param entityCollector The EntityCollector object that contains the visible scene data.\n * @param viewProjection The view-projection matrix used to project to the screen. This is not the same as\n * camera.viewProjection as it includes the scaling factors when rendering to textures.\n *\n * @internal\n */\n GL_MaterialPassBase.prototype._setRenderState = function (renderable, projection) {\n this._shader._setRenderState(renderable, projection);\n };\n /**\n * Sets the render state for the pass that is independent of the rendered object. This needs to be called before\n * calling pass. Before activating a pass, the previously used pass needs to be deactivated.\n * @param stage The Stage object which is currently used for rendering.\n * @param camera The camera from which the scene is viewed.\n * @private\n */\n GL_MaterialPassBase.prototype._activate = function (projection) {\n this._shader._activate(projection);\n };\n /**\n * Clears the render state for the pass. This needs to be called before activating another pass.\n * @param stage The Stage used for rendering\n *\n * @private\n */\n GL_MaterialPassBase.prototype._deactivate = function () {\n this._shader._deactivate();\n };\n GL_MaterialPassBase.prototype._initConstantData = function (shader) {\n };\n GL_MaterialPassBase.prototype._getVertexCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n GL_MaterialPassBase.prototype._getFragmentCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n GL_MaterialPassBase.prototype._getPostAnimationFragmentCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n GL_MaterialPassBase.prototype._getNormalVertexCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n GL_MaterialPassBase.prototype._getNormalFragmentCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n return GL_MaterialPassBase;\n}(GL_MaterialBase));\nexport { GL_MaterialPassBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/GL_MaterialPassBase.js","/**\n * @class away.pool.RenderablePool\n */\nvar RenderablePool = (function () {\n /**\n * //TODO\n *\n * @param materialClassGL\n */\n function RenderablePool(entity, materialGroup) {\n this._abstractionPool = new Object();\n this._entity = entity;\n this._materialGroup = materialGroup;\n }\n Object.defineProperty(RenderablePool.prototype, \"entity\", {\n /**\n *\n * @returns {IEntity}\n */\n get: function () {\n return this._entity;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RenderablePool.prototype, \"materialGroup\", {\n /**\n *\n * @returns {MaterialGroupBase}\n */\n get: function () {\n return this._materialGroup;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * //TODO\n *\n * @param renderable\n * @returns GL_RenderableBase\n */\n RenderablePool.prototype.getAbstraction = function (renderable) {\n return this._abstractionPool[renderable.id] || (this._abstractionPool[renderable.id] = new RenderablePool._abstractionClassPool[renderable.assetType](renderable, this));\n };\n /**\n *\n * @param renderable\n */\n RenderablePool.prototype.clearAbstraction = function (renderable) {\n this._abstractionPool[renderable.id] = null;\n };\n /**\n *\n * @param imageObjectClass\n */\n RenderablePool.registerAbstraction = function (renderableClass, assetClass) {\n RenderablePool._abstractionClassPool[assetClass.assetType] = renderableClass;\n };\n return RenderablePool;\n}());\nexport { RenderablePool };\nRenderablePool._abstractionClassPool = new Object();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/renderables/RenderablePool.js","/**\n * @class away.pool.MaterialPool\n */\nvar MaterialPool = (function () {\n /**\n * //TODO\n *\n * @param materialClassGL\n */\n function MaterialPool(elementsClass, materialGroup) {\n this._abstractionPool = new Object();\n this._elementsClass = elementsClass;\n this._materialGroup = materialGroup;\n this._abstractionClassPool = materialGroup.abstractionClassPool;\n }\n Object.defineProperty(MaterialPool.prototype, \"elementsClass\", {\n get: function () {\n return this._elementsClass;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaterialPool.prototype, \"materialGroup\", {\n get: function () {\n return this._materialGroup;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * //TODO\n *\n * @param elementsOwner\n * @returns IElements\n */\n MaterialPool.prototype.getAbstraction = function (material) {\n return (this._abstractionPool[material.id] || (this._abstractionPool[material.id] = new this._abstractionClassPool[material.assetType](material, this)));\n };\n /**\n * //TODO\n *\n * @param elementsOwner\n */\n MaterialPool.prototype.clearAbstraction = function (material) {\n delete this._abstractionPool[material.id];\n };\n return MaterialPool;\n}());\nexport { MaterialPool };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/MaterialPool.js","import { RenderablePool } from \"../renderables/RenderablePool\";\nimport { MaterialPool } from \"./MaterialPool\";\n/**\n * @class away.pool.MaterialGroupBase\n */\nvar MaterialGroupBase = (function () {\n /**\n * //TODO\n *\n * @param materialClassGL\n */\n function MaterialGroupBase(stage, abstractionClassPool) {\n this._abstractionClassPool = new Object();\n this._materialPools = new Object();\n this._renderablePools = new Object();\n this._stage = stage;\n this._abstractionClassPool = abstractionClassPool;\n }\n Object.defineProperty(MaterialGroupBase.prototype, \"stage\", {\n get: function () {\n return this._stage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaterialGroupBase.prototype, \"abstractionClassPool\", {\n get: function () {\n return this._abstractionClassPool;\n },\n enumerable: true,\n configurable: true\n });\n MaterialGroupBase.prototype.getMaterialPool = function (elements) {\n return this._materialPools[elements.elementsType] || (this._materialPools[elements.elementsType] = new MaterialPool(elements.elementsClass, this));\n };\n MaterialGroupBase.prototype.getRenderablePool = function (entity) {\n return this._renderablePools[entity.id] || (this._renderablePools[entity.id] = new RenderablePool(entity, this));\n };\n return MaterialGroupBase;\n}());\nexport { MaterialGroupBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/MaterialGroupBase.js","import * as tslib_1 from \"tslib\";\nimport { AbstractMethodError, AssetEvent, AbstractionBase } from \"@awayjs/core\";\nimport { RenderableEvent } from \"@awayjs/graphics\";\n/**\n * @class RenderableListItem\n */\nvar GL_RenderableBase = (function (_super) {\n tslib_1.__extends(GL_RenderableBase, _super);\n /**\n *\n * @param renderable\n * @param sourceEntity\n * @param surface\n * @param renderer\n */\n function GL_RenderableBase(renderable, renderablePool) {\n var _this = _super.call(this, renderable, renderablePool) || this;\n _this._count = 0;\n _this._offset = 0;\n _this._elementsDirty = true;\n _this._materialDirty = true;\n /**\n *\n */\n _this.images = new Array();\n /**\n *\n */\n _this.samplers = new Array();\n _this._onInvalidateMaterialDelegate = function (event) { return _this._onInvalidateMaterial(event); };\n _this._onInvalidateElementsDelegate = function (event) { return _this.onInvalidateElements(event); };\n //store references\n _this.sourceEntity = renderablePool.entity;\n _this._materialGroup = renderablePool.materialGroup;\n _this._stage = _this._materialGroup.stage;\n _this.renderable = renderable;\n _this.renderable.addEventListener(RenderableEvent.INVALIDATE_MATERIAL, _this._onInvalidateMaterialDelegate);\n _this.renderable.addEventListener(RenderableEvent.INVALIDATE_ELEMENTS, _this._onInvalidateElementsDelegate);\n return _this;\n }\n Object.defineProperty(GL_RenderableBase.prototype, \"elementsGL\", {\n /**\n *\n * @returns {GL_ElementsBase}\n */\n get: function () {\n if (this._elementsDirty)\n this._updateElements();\n return this._elementsGL;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_RenderableBase.prototype, \"materialGL\", {\n /**\n *\n * @returns {GL_MaterialBase}\n */\n get: function () {\n if (this._materialDirty)\n this._updateMaterial();\n return this._materialGL;\n },\n enumerable: true,\n configurable: true\n });\n GL_RenderableBase.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this.next = null;\n this.masksConfig = null;\n this.renderSceneTransform = null;\n this.sourceEntity = null;\n this._materialGroup = null;\n this._stage = null;\n this.renderable.removeEventListener(RenderableEvent.INVALIDATE_MATERIAL, this._onInvalidateMaterialDelegate);\n this.renderable.removeEventListener(RenderableEvent.INVALIDATE_ELEMENTS, this._onInvalidateElementsDelegate);\n this.renderable = null;\n this._materialGL.usages--;\n if (!this._materialGL.usages)\n this._materialGL.onClear(new AssetEvent(AssetEvent.CLEAR, this._materialGL.material));\n this._materialGL = null;\n this._elementsGL = null;\n };\n GL_RenderableBase.prototype.onInvalidateElements = function (event) {\n this._elementsDirty = true;\n };\n GL_RenderableBase.prototype._onInvalidateMaterial = function (event) {\n this._materialDirty = true;\n };\n GL_RenderableBase.prototype._getElements = function () {\n throw new AbstractMethodError();\n };\n GL_RenderableBase.prototype._getMaterial = function () {\n throw new AbstractMethodError();\n };\n /**\n * Renders an object to the current render target.\n *\n * @private\n */\n GL_RenderableBase.prototype._iRender = function (pass, projection) {\n this._setRenderState(pass, projection);\n this._elementsGL.draw(this, pass.shader, projection, this._count, this._offset);\n };\n GL_RenderableBase.prototype._setRenderState = function (pass, projection) {\n if (this._elementsDirty)\n this._updateElements();\n pass._setRenderState(this, projection);\n if (pass.shader.activeElements != this._elementsGL) {\n pass.shader.activeElements = this._elementsGL;\n this._elementsGL._setRenderState(this, pass.shader, projection);\n }\n };\n /**\n * //TODO\n *\n * @private\n */\n GL_RenderableBase.prototype._updateElements = function () {\n this._elementsGL = this._getElements();\n this._elementsDirty = false;\n };\n GL_RenderableBase.prototype._updateMaterial = function () {\n var materialGL = this._getMaterial();\n if (this._materialGL != materialGL) {\n if (this._materialGL) {\n this._materialGL.usages--;\n //dispose current materialGL object\n if (!this._materialGL.usages)\n this._materialGL.onClear(new AssetEvent(AssetEvent.CLEAR, this._materialGL.material));\n }\n this._materialGL = materialGL;\n this._materialGL.usages++;\n }\n //create a cache of image & sampler objects for the renderable\n var numImages = materialGL.numImages;\n var style = this.renderable.style || this.sourceEntity.style;\n var material = this._materialGL.material;\n this.images.length = numImages;\n this.samplers.length = numImages;\n this.uvMatrix = style ? style.uvMatrix : material.style ? material.style.uvMatrix : null;\n var numTextures = this._materialGL.material.getNumTextures();\n var texture;\n var numImages;\n var image;\n var sampler;\n var index;\n for (var i = 0; i < numTextures; i++) {\n texture = material.getTextureAt(i);\n numImages = texture.getNumImages();\n for (var j = 0; j < numImages; j++) {\n index = materialGL.getImageIndex(texture, j);\n image = style ? style.getImageAt(texture, j) : null;\n this.images[index] = image ? this._stage.getAbstraction(image) : null;\n sampler = style ? style.getSamplerAt(texture, j) : null;\n this.samplers[index] = sampler ? this._stage.getAbstraction(sampler) : null;\n }\n }\n this._materialDirty = false;\n };\n return GL_RenderableBase;\n}(AbstractionBase));\nexport { GL_RenderableBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/renderables/GL_RenderableBase.js","import * as tslib_1 from \"tslib\";\nimport { DefaultMaterialManager } from \"@awayjs/graphics\";\nimport { GL_RenderableBase } from \"./GL_RenderableBase\";\n/**\n * @class away.pool.GL_ShapeRenderable\n */\nvar GL_ShapeRenderable = (function (_super) {\n tslib_1.__extends(GL_ShapeRenderable, _super);\n /**\n * //TODO\n *\n * @param renderablePool\n * @param shape\n * @param level\n * @param indexOffset\n */\n function GL_ShapeRenderable(shape, renderablePool) {\n var _this = _super.call(this, shape, renderablePool) || this;\n _this.shape = shape;\n return _this;\n }\n GL_ShapeRenderable.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this.shape = null;\n };\n /**\n *\n * @returns {ElementsBase}\n * @protected\n */\n GL_ShapeRenderable.prototype._getElements = function () {\n this._offset = this.shape.offset;\n this._count = this.shape.count;\n return this._stage.getAbstraction((this.sourceEntity.animator) ? this.sourceEntity.animator.getRenderableElements(this, this.shape.elements) : this.shape.elements);\n };\n GL_ShapeRenderable.prototype._getMaterial = function () {\n return this._materialGroup.getMaterialPool(this.elementsGL).getAbstraction(this.shape.material || this.sourceEntity.material || DefaultMaterialManager.getDefaultMaterial(this.renderable));\n };\n return GL_ShapeRenderable;\n}(GL_RenderableBase));\nexport { GL_ShapeRenderable };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/renderables/GL_ShapeRenderable.js","import * as tslib_1 from \"tslib\";\nimport { AbstractMethodError, AbstractionBase } from \"@awayjs/core\";\n/**\n *\n * @class away.pool.GL_TextureBaseBase\n */\nvar GL_TextureBase = (function (_super) {\n tslib_1.__extends(GL_TextureBase, _super);\n function GL_TextureBase(texture, shader) {\n var _this = _super.call(this, texture, shader) || this;\n _this._texture = texture;\n _this._shader = shader;\n _this._stage = shader._stage;\n return _this;\n }\n /**\n *\n */\n GL_TextureBase.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._texture = null;\n this._shader = null;\n this._stage = null;\n };\n GL_TextureBase.prototype._getFragmentCode = function (targetReg, regCache, sharedReg, inputReg) {\n if (inputReg === void 0) { inputReg = null; }\n throw new AbstractMethodError();\n };\n GL_TextureBase.prototype._setRenderState = function (renderable) {\n //overidden for state logic\n };\n GL_TextureBase.prototype.activate = function () {\n //overridden for activation logic\n };\n GL_TextureBase.prototype.getTextureReg = function (imageIndex, regCache, sharedReg) {\n var index = this._shader.imageIndices.indexOf(imageIndex); //todo: collapse the index based on duplicate image objects to save registrations\n if (index == -1) {\n var textureReg = regCache.getFreeTextureReg();\n sharedReg.textures.push(textureReg);\n this._shader.imageIndices.push(imageIndex);\n return textureReg;\n }\n return sharedReg.textures[index];\n };\n return GL_TextureBase;\n}(AbstractionBase));\nexport { GL_TextureBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/textures/GL_TextureBase.js","import * as tslib_1 from \"tslib\";\nimport { MappingMode } from \"@awayjs/graphics\";\nimport { GL_TextureBase } from \"./GL_TextureBase\";\n/**\n *\n * @class away.pool.GL_Single2DTexture\n */\nvar GL_Single2DTexture = (function (_super) {\n tslib_1.__extends(GL_Single2DTexture, _super);\n function GL_Single2DTexture(single2DTexture, shader) {\n var _this = _super.call(this, single2DTexture, shader) || this;\n _this._single2DTexture = single2DTexture;\n return _this;\n }\n GL_Single2DTexture.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._single2DTexture = null;\n };\n /**\n *\n * @param shader\n * @param regCache\n * @param targetReg The register in which to store the sampled colour.\n * @param uvReg The uv coordinate vector with which to sample the texture map.\n * @returns {string}\n * @private\n */\n GL_Single2DTexture.prototype._getFragmentCode = function (targetReg, regCache, sharedReg, inputReg) {\n var code = \"\";\n var wrap = \"wrap\";\n var format = \"\"; //this.getFormatString(this._single2DTexture.image2D);\n var filter = \"linear,miplinear\";\n var temp;\n //modify depending on mapping mode\n if (this._single2DTexture.mappingMode == MappingMode.RADIAL) {\n temp = regCache.getFreeFragmentVectorTemp();\n code += \"mul \" + temp + \".xy, \" + inputReg + \", \" + inputReg + \"\\n\";\n code += \"add \" + temp + \".x, \" + temp + \".x, \" + temp + \".y\\n\";\n code += \"sub \" + temp + \".y, \" + temp + \".y, \" + temp + \".y\\n\";\n code += \"sqt \" + temp + \".x, \" + temp + \".x, \" + temp + \".x\\n\";\n inputReg = temp;\n }\n //handles texture atlasing\n if (this._shader.useImageRect) {\n var samplerReg = regCache.getFreeFragmentConstant();\n this._samplerIndex = samplerReg.index * 4;\n temp = regCache.getFreeFragmentVectorTemp();\n code += \"mul \" + temp + \", \" + inputReg + \", \" + samplerReg + \".xy\\n\";\n code += \"add \" + temp + \", \" + temp + \", \" + samplerReg + \".zw\\n\";\n inputReg = temp;\n }\n this._imageIndex = this._shader.getImageIndex(this._single2DTexture, 0);\n var textureReg = this.getTextureReg(this._imageIndex, regCache, sharedReg);\n this._textureIndex = textureReg.index;\n code += \"tex \" + targetReg + \", \" + inputReg + \", \" + textureReg + \" <2d,\" + filter + \",\" + format + wrap + \">\\n\";\n return code;\n };\n GL_Single2DTexture.prototype.activate = function () {\n var sampler = this._shader.pass.samplers[this._imageIndex];\n sampler.activate(this._textureIndex);\n var image = this._shader.pass.images[this._imageIndex];\n image.activate(this._textureIndex, sampler._sampler.mipmap);\n if (this._shader.useImageRect) {\n var index = this._samplerIndex;\n var data = this._shader.fragmentConstantData;\n if (!sampler._sampler.imageRect) {\n data[index] = 1;\n data[index + 1] = 1;\n data[index + 2] = 0;\n data[index + 3] = 0;\n }\n else {\n data[index] = sampler._sampler.imageRect.width;\n data[index + 1] = sampler._sampler.imageRect.height;\n data[index + 2] = sampler._sampler.imageRect.x;\n data[index + 3] = sampler._sampler.imageRect.y;\n }\n }\n };\n GL_Single2DTexture.prototype._setRenderState = function (renderable) {\n var sampler = renderable.samplers[this._imageIndex];\n if (sampler)\n sampler.activate(this._textureIndex);\n var image = renderable.images[this._imageIndex];\n if (image)\n image.activate(this._textureIndex, sampler._sampler.mipmap);\n if (this._shader.useImageRect && sampler) {\n var index = this._samplerIndex;\n var data = this._shader.fragmentConstantData;\n if (!sampler._sampler.imageRect) {\n data[index] = 1;\n data[index + 1] = 1;\n data[index + 2] = 0;\n data[index + 3] = 0;\n }\n else {\n data[index] = sampler._sampler.imageRect.width;\n data[index + 1] = sampler._sampler.imageRect.height;\n data[index + 2] = sampler._sampler.imageRect.x;\n data[index + 3] = sampler._sampler.imageRect.y;\n }\n }\n };\n return GL_Single2DTexture;\n}(GL_TextureBase));\nexport { GL_Single2DTexture };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/textures/GL_Single2DTexture.js","import * as tslib_1 from \"tslib\";\nimport { GL_TextureBase } from \"./GL_TextureBase\";\n/**\n *\n * @class away.pool.TextureDataBase\n */\nvar GL_SingleCubeTexture = (function (_super) {\n tslib_1.__extends(GL_SingleCubeTexture, _super);\n function GL_SingleCubeTexture(singleCubeTexture, shader) {\n var _this = _super.call(this, singleCubeTexture, shader) || this;\n _this._singleCubeTexture = singleCubeTexture;\n return _this;\n }\n GL_SingleCubeTexture.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._singleCubeTexture = null;\n };\n GL_SingleCubeTexture.prototype._includeDependencies = function (includeInput) {\n if (includeInput === void 0) { includeInput = true; }\n if (includeInput)\n this._shader.usesPositionFragment = true;\n };\n /**\n *\n * @param shader\n * @param regCache\n * @param targetReg The register in which to store the sampled colour.\n * @param uvReg The direction vector with which to sample the cube map.\n * @returns {string}\n * @private\n */\n GL_SingleCubeTexture.prototype._getFragmentCode = function (targetReg, regCache, sharedReg, inputReg) {\n var format = \"\"; //this.getFormatString(this._singleCubeTexture.imageCube);\n var filter = \"linear,miplinear\";\n this._imageIndex = this._shader.getImageIndex(this._singleCubeTexture, 0);\n var textureReg = this.getTextureReg(this._imageIndex, regCache, sharedReg);\n this._textureIndex = textureReg.index;\n return \"tex \" + targetReg + \", \" + inputReg + \", \" + textureReg + \" \\n\";\n };\n GL_SingleCubeTexture.prototype.activate = function () {\n var sampler = this._shader.pass.samplers[this._imageIndex];\n if (sampler)\n sampler.activate(this._textureIndex);\n if (this._shader.pass.images[this._imageIndex])\n this._shader.pass.images[this._imageIndex].activate(this._textureIndex, sampler._sampler.mipmap);\n };\n GL_SingleCubeTexture.prototype._setRenderState = function (renderable) {\n var sampler = renderable.samplers[this._imageIndex];\n if (sampler)\n sampler.activate(this._textureIndex);\n if (renderable.images[this._imageIndex] && sampler)\n renderable.images[this._imageIndex].activate(this._textureIndex, sampler._sampler.mipmap);\n };\n return GL_SingleCubeTexture;\n}(GL_TextureBase));\nexport { GL_SingleCubeTexture };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/textures/GL_SingleCubeTexture.js","/**\n * ...\n */\nvar AnimationElements = (function () {\n function AnimationElements() {\n this._pVertexBuffer = new Array(8);\n this._pBufferContext = new Array(8);\n this._pBufferDirty = new Array(8);\n this.numProcessedVertices = 0;\n this.previousTime = Number.NEGATIVE_INFINITY;\n this.animationParticles = new Array();\n for (var i = 0; i < 8; i++)\n this._pBufferDirty[i] = true;\n this._iUniqueId = AnimationElements.SUBGEOM_ID_COUNT++;\n }\n AnimationElements.prototype.createVertexData = function (numVertices, totalLenOfOneVertex) {\n this._numVertices = numVertices;\n this._totalLenOfOneVertex = totalLenOfOneVertex;\n this._pVertexData = new Array(numVertices * totalLenOfOneVertex);\n };\n AnimationElements.prototype.activateVertexBuffer = function (index, bufferOffset, stage, format) {\n var contextIndex = stage.stageIndex;\n var context = stage.context;\n var buffer = this._pVertexBuffer[contextIndex];\n if (!buffer || this._pBufferContext[contextIndex] != context) {\n buffer = this._pVertexBuffer[contextIndex] = context.createVertexBuffer(this._numVertices, this._totalLenOfOneVertex * 4);\n this._pBufferContext[contextIndex] = context;\n this._pBufferDirty[contextIndex] = true;\n }\n if (this._pBufferDirty[contextIndex]) {\n buffer.uploadFromArray(this._pVertexData, 0, this._numVertices);\n this._pBufferDirty[contextIndex] = false;\n }\n context.setVertexBufferAt(index, buffer, bufferOffset * 4, format);\n };\n AnimationElements.prototype.dispose = function () {\n while (this._pVertexBuffer.length) {\n var vertexBuffer = this._pVertexBuffer.pop();\n if (vertexBuffer)\n vertexBuffer.dispose();\n }\n };\n AnimationElements.prototype.invalidateBuffer = function () {\n for (var i = 0; i < 8; i++)\n this._pBufferDirty[i] = true;\n };\n Object.defineProperty(AnimationElements.prototype, \"vertexData\", {\n get: function () {\n return this._pVertexData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationElements.prototype, \"numVertices\", {\n get: function () {\n return this._numVertices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationElements.prototype, \"totalLenOfOneVertex\", {\n get: function () {\n return this._totalLenOfOneVertex;\n },\n enumerable: true,\n configurable: true\n });\n return AnimationElements;\n}());\nexport { AnimationElements };\nAnimationElements.SUBGEOM_ID_COUNT = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/AnimationElements.js","var ColorSegmentPoint = (function () {\n function ColorSegmentPoint(life, color) {\n //0= 1)\n throw (new Error(\"life exceeds range (0,1)\"));\n this._life = life;\n this._color = color;\n }\n Object.defineProperty(ColorSegmentPoint.prototype, \"color\", {\n get: function () {\n return this._color;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColorSegmentPoint.prototype, \"life\", {\n get: function () {\n return this._life;\n },\n enumerable: true,\n configurable: true\n });\n return ColorSegmentPoint;\n}());\nexport { ColorSegmentPoint };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/ColorSegmentPoint.js","import { Matrix3D, Quaternion, Vector3D } from \"@awayjs/core\";\n/**\n * Contains transformation data for a skeleton joint, used for skeleton animation.\n *\n * @see away.animation.Skeleton\n * @see away.animation.SkeletonJoint\n *\n * todo: support (uniform) scale\n */\nvar JointPose = (function () {\n function JointPose() {\n /**\n * The rotation of the pose stored as a quaternion\n */\n this.orientation = new Quaternion();\n /**\n * The translation of the pose\n */\n this.translation = new Vector3D();\n }\n /**\n * Converts the transformation to a Matrix3D representation.\n *\n * @param target An optional target matrix to store the transformation. If not provided, it will create a new instance.\n * @return The transformation matrix of the pose.\n */\n JointPose.prototype.toMatrix3D = function (target) {\n if (target === void 0) { target = null; }\n if (target == null)\n target = new Matrix3D();\n this.orientation.toMatrix3D(target);\n target.appendTranslation(this.translation.x, this.translation.y, this.translation.z);\n return target;\n };\n /**\n * Copies the transformation data from a source pose object into the existing pose object.\n *\n * @param pose The source pose to copy from.\n */\n JointPose.prototype.copyFrom = function (pose) {\n var or = pose.orientation;\n var tr = pose.translation;\n this.orientation.x = or.x;\n this.orientation.y = or.y;\n this.orientation.z = or.z;\n this.orientation.w = or.w;\n this.translation.x = tr.x;\n this.translation.y = tr.y;\n this.translation.z = tr.z;\n };\n return JointPose;\n}());\nexport { JointPose };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/JointPose.js","/**\n * ...\n */\nvar ParticleAnimationData = (function () {\n function ParticleAnimationData(index, startTime, duration, delay, particle) {\n this.index = index;\n this.startTime = startTime;\n this.totalTime = duration + delay;\n this.duration = duration;\n this.delay = delay;\n this.startVertexIndex = particle.startVertexIndex;\n this.numVertices = particle.numVertices;\n }\n return ParticleAnimationData;\n}());\nexport { ParticleAnimationData };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/ParticleAnimationData.js","/**\n * Dynamic class for holding the local properties of a particle, used for processing the static properties\n * of particles in the particle animation set before beginning upload to the GPU.\n */\nvar ParticleProperties = (function () {\n function ParticleProperties() {\n }\n return ParticleProperties;\n}());\nexport { ParticleProperties };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/ParticleProperties.js","/**\n * Options for setting the properties mode of a particle animation node.\n */\nvar ParticlePropertiesMode = (function () {\n function ParticlePropertiesMode() {\n }\n return ParticlePropertiesMode;\n}());\nexport { ParticlePropertiesMode };\n/**\n * Mode that defines the particle node as acting on global properties (ie. the properties set in the node constructor or the corresponding animation state).\n */\nParticlePropertiesMode.GLOBAL = 0;\n/**\n * Mode that defines the particle node as acting on local static properties (ie. the properties of particles set in the initialising on the animation set).\n */\nParticlePropertiesMode.LOCAL_STATIC = 1;\n/**\n * Mode that defines the particle node as acting on local dynamic properties (ie. the properties of the particles set in the corresponding animation state).\n */\nParticlePropertiesMode.LOCAL_DYNAMIC = 2;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/ParticlePropertiesMode.js","import * as tslib_1 from \"tslib\";\nimport { AssetBase } from \"@awayjs/core\";\n/**\n * A Skeleton object is a hierarchical grouping of joint objects that can be used for skeletal animation.\n *\n * @see away.animators.SkeletonJoint\n */\nvar Skeleton = (function (_super) {\n tslib_1.__extends(Skeleton, _super);\n /**\n * Creates a new Skeleton object\n */\n function Skeleton() {\n var _this = _super.call(this) || this;\n // in the long run, it might be a better idea to not store Joint objects, but keep all data in Vectors, that we can upload easily?\n _this.joints = new Array();\n return _this;\n }\n Object.defineProperty(Skeleton.prototype, \"numJoints\", {\n /**\n * The total number of joints in the skeleton.\n */\n get: function () {\n return this.joints.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns the joint object in the skeleton with the given name, otherwise returns a null object.\n *\n * @param jointName The name of the joint object to be found.\n * @return The joint object with the given name.\n *\n * @see #joints\n */\n Skeleton.prototype.jointFromName = function (jointName) {\n var jointIndex = this.jointIndexFromName(jointName);\n if (jointIndex != -1)\n return this.joints[jointIndex];\n else\n return null;\n };\n /**\n * Returns the joint index, given the joint name. -1 is returned if the joint name is not found.\n *\n * @param jointName The name of the joint object to be found.\n * @return The index of the joint object in the joints Array\n *\n * @see #joints\n */\n Skeleton.prototype.jointIndexFromName = function (jointName) {\n // this is implemented as a linear search, rather than a possibly\n // more optimal method (Dictionary lookup, for example) because:\n // a) it is assumed that it will be called once for each joint\n // b) it is assumed that it will be called only during load, and not during main loop\n // c) maintaining a dictionary (for safety) would dictate an interface to access SkeletonJoints,\n // rather than direct array access. this would be sub-optimal.\n var jointIndex;\n var joint;\n for (var i; i < this.joints.length; i++) {\n joint = this.joints[i];\n if (joint.name == jointName)\n return jointIndex;\n jointIndex++;\n }\n return -1;\n };\n /**\n * @inheritDoc\n */\n Skeleton.prototype.dispose = function () {\n this.joints.length = 0;\n };\n Object.defineProperty(Skeleton.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return Skeleton.assetType;\n },\n enumerable: true,\n configurable: true\n });\n return Skeleton;\n}(AssetBase));\nexport { Skeleton };\nSkeleton.assetType = \"[asset Skeleton]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/Skeleton.js","/**\n * A value obect representing a single joint in a skeleton object.\n *\n * @see away.animators.Skeleton\n */\nvar SkeletonJoint = (function () {\n /**\n * Creates a new SkeletonJoint object\n */\n function SkeletonJoint() {\n /**\n * The index of the parent joint in the skeleton's joints vector.\n *\n * @see away.animators.Skeleton#joints\n */\n this.parentIndex = -1;\n }\n return SkeletonJoint;\n}());\nexport { SkeletonJoint };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/SkeletonJoint.js","import * as tslib_1 from \"tslib\";\nimport { AssetBase } from \"@awayjs/core\";\nimport { JointPose } from \"./JointPose\";\n/**\n * A collection of pose objects, determining the pose for an entire skeleton.\n * The jointPoses vector object corresponds to a skeleton's joints vector object, however, there is no\n * reference to a skeleton's instance, since several skeletons can be influenced by the same pose (eg: animation\n * clips are added to any animator with a valid skeleton)\n *\n * @see away.animators.Skeleton\n * @see away.animators.JointPose\n */\nvar SkeletonPose = (function (_super) {\n tslib_1.__extends(SkeletonPose, _super);\n /**\n * Creates a new SkeletonPose object.\n */\n function SkeletonPose() {\n var _this = _super.call(this) || this;\n _this.jointPoses = new Array();\n return _this;\n }\n Object.defineProperty(SkeletonPose.prototype, \"numJointPoses\", {\n /**\n * The total number of joint poses in the skeleton pose.\n */\n get: function () {\n return this.jointPoses.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SkeletonPose.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return SkeletonPose.assetType;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns the joint pose object with the given joint name, otherwise returns a null object.\n *\n * @param jointName The name of the joint object whose pose is to be found.\n * @return The pose object with the given joint name.\n */\n SkeletonPose.prototype.jointPoseFromName = function (jointName) {\n var jointPoseIndex = this.jointPoseIndexFromName(jointName);\n if (jointPoseIndex != -1)\n return this.jointPoses[jointPoseIndex];\n else\n return null;\n };\n /**\n * Returns the pose index, given the joint name. -1 is returned if the joint name is not found in the pose.\n *\n * @param The name of the joint object whose pose is to be found.\n * @return The index of the pose object in the jointPoses Array\n *\n * @see #jointPoses\n */\n SkeletonPose.prototype.jointPoseIndexFromName = function (jointName) {\n // this is implemented as a linear search, rather than a possibly\n // more optimal method (Dictionary lookup, for example) because:\n // a) it is assumed that it will be called once for each joint\n // b) it is assumed that it will be called only during load, and not during main loop\n // c) maintaining a dictionary (for safety) would dictate an interface to access JointPoses,\n // rather than direct array access. this would be sub-optimal.\n var jointPoseIndex;\n var jointPose;\n for (var i; i < this.jointPoses.length; i++) {\n jointPose = this.jointPoses[i];\n if (jointPose.name == jointName)\n return jointPoseIndex;\n jointPoseIndex++;\n }\n return -1;\n };\n /**\n * Creates a copy of the SkeletonPose object, with a dulpicate of its component joint poses.\n *\n * @return SkeletonPose\n */\n SkeletonPose.prototype.clone = function () {\n var clone = new SkeletonPose();\n var numJointPoses = this.jointPoses.length;\n for (var i = 0; i < numJointPoses; i++) {\n var cloneJointPose = new JointPose();\n var thisJointPose = this.jointPoses[i];\n cloneJointPose.name = thisJointPose.name;\n cloneJointPose.copyFrom(thisJointPose);\n clone.jointPoses[i] = cloneJointPose;\n }\n return clone;\n };\n /**\n * @inheritDoc\n */\n SkeletonPose.prototype.dispose = function () {\n this.jointPoses.length = 0;\n };\n return SkeletonPose;\n}(AssetBase));\nexport { SkeletonPose };\nSkeletonPose.assetType = \"[asset SkeletonPose]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/SkeletonPose.js","/**\n * Options for setting the animation mode of a vertex animator object.\n *\n * @see away.animators.VertexAnimator\n */\nvar VertexAnimationMode = (function () {\n function VertexAnimationMode() {\n }\n return VertexAnimationMode;\n}());\nexport { VertexAnimationMode };\n/**\n * Animation mode that adds all outputs from active vertex animation state to form the current vertex animation pose.\n */\nVertexAnimationMode.ADDITIVE = \"additive\";\n/**\n * Animation mode that picks the output from a single vertex animation state to form the current vertex animation pose.\n */\nVertexAnimationMode.ABSOLUTE = \"absolute\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/data/VertexAnimationMode.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { AnimationNodeBase } from \"@awayjs/graphics\";\n/**\n * Provides an abstract base class for nodes with time-based animation data in an animation blend tree.\n */\nvar AnimationClipNodeBase = (function (_super) {\n tslib_1.__extends(AnimationClipNodeBase, _super);\n /**\n * Creates a new AnimationClipNodeBase object.\n */\n function AnimationClipNodeBase() {\n var _this = _super.call(this) || this;\n _this._pLooping = true;\n _this._pTotalDuration = 0;\n _this._pStitchDirty = true;\n _this._pStitchFinalFrame = false;\n _this._pNumFrames = 0;\n _this._pDurations = new Array();\n /*uint*/\n _this._pTotalDelta = new Vector3D();\n _this.fixedFrameRate = true;\n return _this;\n }\n Object.defineProperty(AnimationClipNodeBase.prototype, \"looping\", {\n /**\n * Determines whether the contents of the animation node have looping characteristics enabled.\n */\n get: function () {\n return this._pLooping;\n },\n set: function (value) {\n if (this._pLooping == value)\n return;\n this._pLooping = value;\n this._pStitchDirty = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationClipNodeBase.prototype, \"stitchFinalFrame\", {\n /**\n * Defines if looping content blends the final frame of animation data with the first (true) or works on the\n * assumption that both first and last frames are identical (false). Defaults to false.\n */\n get: function () {\n return this._pStitchFinalFrame;\n },\n set: function (value) {\n if (this._pStitchFinalFrame == value)\n return;\n this._pStitchFinalFrame = value;\n this._pStitchDirty = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationClipNodeBase.prototype, \"totalDuration\", {\n get: function () {\n if (this._pStitchDirty)\n this._pUpdateStitch();\n return this._pTotalDuration;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationClipNodeBase.prototype, \"totalDelta\", {\n get: function () {\n if (this._pStitchDirty)\n this._pUpdateStitch();\n return this._pTotalDelta;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationClipNodeBase.prototype, \"lastFrame\", {\n get: function () {\n if (this._pStitchDirty)\n this._pUpdateStitch();\n return this._pLastFrame;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationClipNodeBase.prototype, \"durations\", {\n /**\n * Returns a vector of time values representing the duration (in milliseconds) of each animation frame in the clip.\n */\n get: function () {\n return this._pDurations;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Updates the node's final frame stitch state.\n *\n * @see #stitchFinalFrame\n */\n AnimationClipNodeBase.prototype._pUpdateStitch = function () {\n this._pStitchDirty = false;\n this._pLastFrame = (this._pStitchFinalFrame) ? this._pNumFrames : this._pNumFrames - 1;\n this._pTotalDuration = 0;\n this._pTotalDelta.x = 0;\n this._pTotalDelta.y = 0;\n this._pTotalDelta.z = 0;\n };\n return AnimationClipNodeBase;\n}(AnimationNodeBase));\nexport { AnimationClipNodeBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/AnimationClipNodeBase.js","import { Vector3D } from \"@awayjs/core\";\n/**\n *\n */\nvar AnimationStateBase = (function () {\n function AnimationStateBase(animator, animationNode) {\n this._pRootDelta = new Vector3D();\n this._pPositionDeltaDirty = true;\n this._pStartTime = 0;\n this._pAnimator = animator;\n this._pAnimationNode = animationNode;\n }\n Object.defineProperty(AnimationStateBase.prototype, \"positionDelta\", {\n /**\n * Returns a 3d vector representing the translation delta of the animating entity for the current timestep of animation\n */\n get: function () {\n if (this._pPositionDeltaDirty) {\n this._pUpdatePositionDelta();\n }\n return this._pRootDelta;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Resets the start time of the node to a new value.\n *\n * @param startTime The absolute start time (in milliseconds) of the node's starting time.\n */\n AnimationStateBase.prototype.offset = function (startTime) {\n this._pStartTime = startTime;\n this._pPositionDeltaDirty = true;\n };\n /**\n * Updates the configuration of the node to its current state.\n *\n * @param time The absolute time (in milliseconds) of the animator's play head position.\n *\n * @see AnimatorBase#update()\n */\n AnimationStateBase.prototype.update = function (time) {\n if (this._pTime == time - this._pStartTime) {\n return;\n }\n this._pUpdateTime(time);\n };\n /**\n * Sets the animation phase of the node.\n *\n * @param value The phase value to use. 0 represents the beginning of an animation clip, 1 represents the end.\n */\n AnimationStateBase.prototype.phase = function (value) {\n };\n /**\n * Updates the node's internal playhead position.\n *\n * @param time The local time (in milliseconds) of the node's playhead position.\n */\n AnimationStateBase.prototype._pUpdateTime = function (time) {\n this._pTime = time - this._pStartTime;\n this._pPositionDeltaDirty = true;\n };\n /**\n * Updates the node's root delta position\n */\n AnimationStateBase.prototype._pUpdatePositionDelta = function () {\n };\n return AnimationStateBase;\n}());\nexport { AnimationStateBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/AnimationStateBase.js","import * as tslib_1 from \"tslib\";\nimport { AnimationStateBase } from \"./AnimationStateBase\";\n/**\n * ...\n */\nvar ParticleStateBase = (function (_super) {\n tslib_1.__extends(ParticleStateBase, _super);\n function ParticleStateBase(animator, particleNode, needUpdateTime) {\n if (needUpdateTime === void 0) { needUpdateTime = false; }\n var _this = _super.call(this, animator, particleNode) || this;\n _this._pDynamicProperties = new Array();\n _this._pDynamicPropertiesDirty = new Object();\n _this._pParticleAnimator = animator;\n _this._particleNode = particleNode;\n _this._pNeedUpdateTime = needUpdateTime;\n return _this;\n }\n Object.defineProperty(ParticleStateBase.prototype, \"needUpdateTime\", {\n get: function () {\n return this._pNeedUpdateTime;\n },\n enumerable: true,\n configurable: true\n });\n ParticleStateBase.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n };\n ParticleStateBase.prototype._pUpdateDynamicProperties = function (animationElements) {\n this._pDynamicPropertiesDirty[animationElements._iUniqueId] = true;\n var animationParticles = animationElements.animationParticles;\n var vertexData = animationElements.vertexData;\n var totalLenOfOneVertex = animationElements.totalLenOfOneVertex;\n var dataLength = this._particleNode.dataLength;\n var dataOffset = this._particleNode._iDataOffset;\n var vertexLength;\n //\t\t\tvar particleOffset:number;\n var startingOffset;\n var vertexOffset;\n var data;\n var animationParticle;\n //\t\t\tvar numParticles:number = _positions.length/dataLength;\n var numParticles = this._pDynamicProperties.length;\n var i = 0;\n var j = 0;\n var k = 0;\n //loop through all particles\n while (i < numParticles) {\n //loop through each particle data for the current particle\n while (j < numParticles && (animationParticle = animationParticles[j]).index == i) {\n data = this._pDynamicProperties[i];\n vertexLength = animationParticle.numVertices * totalLenOfOneVertex;\n startingOffset = animationParticle.startVertexIndex * totalLenOfOneVertex + dataOffset;\n //loop through each vertex in the particle data\n for (k = 0; k < vertexLength; k += totalLenOfOneVertex) {\n vertexOffset = startingOffset + k;\n //\t\t\t\t\t\tparticleOffset = i * dataLength;\n //loop through all vertex data for the current particle data\n for (k = 0; k < vertexLength; k += totalLenOfOneVertex) {\n vertexOffset = startingOffset + k;\n vertexData[vertexOffset++] = data.x;\n vertexData[vertexOffset++] = data.y;\n vertexData[vertexOffset++] = data.z;\n if (dataLength == 4)\n vertexData[vertexOffset++] = data.w;\n }\n }\n j++;\n }\n i++;\n }\n animationElements.invalidateBuffer();\n };\n return ParticleStateBase;\n}(AnimationStateBase));\nexport { ParticleStateBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleStateBase.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleAccelerationState = (function (_super) {\n tslib_1.__extends(ParticleAccelerationState, _super);\n function ParticleAccelerationState(animator, particleAccelerationNode) {\n var _this = _super.call(this, animator, particleAccelerationNode) || this;\n _this._particleAccelerationNode = particleAccelerationNode;\n _this._acceleration = _this._particleAccelerationNode._acceleration;\n _this.updateAccelerationData();\n return _this;\n }\n Object.defineProperty(ParticleAccelerationState.prototype, \"acceleration\", {\n /**\n * Defines the acceleration vector of the state, used when in global mode.\n */\n get: function () {\n return this._acceleration;\n },\n set: function (value) {\n this._acceleration.x = value.x;\n this._acceleration.y = value.y;\n this._acceleration.z = value.z;\n this.updateAccelerationData();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ParticleAccelerationState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleAccelerationState.ACCELERATION_INDEX);\n if (this._particleAccelerationNode.mode == ParticlePropertiesMode.LOCAL_STATIC)\n animationElements.activateVertexBuffer(index, this._particleAccelerationNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n else\n shader.setVertexConst(index, this._halfAcceleration.x, this._halfAcceleration.y, this._halfAcceleration.z);\n };\n ParticleAccelerationState.prototype.updateAccelerationData = function () {\n if (this._particleAccelerationNode.mode == ParticlePropertiesMode.GLOBAL)\n this._halfAcceleration = new Vector3D(this._acceleration.x / 2, this._acceleration.y / 2, this._acceleration.z / 2);\n };\n return ParticleAccelerationState;\n}(ParticleStateBase));\nexport { ParticleAccelerationState };\n/** @private */\nParticleAccelerationState.ACCELERATION_INDEX = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleAccelerationState.js","import * as tslib_1 from \"tslib\";\nimport { AnimationNodeBase } from \"@awayjs/graphics\";\n/**\n * Provides an abstract base class for particle animation nodes.\n */\nvar ParticleNodeBase = (function (_super) {\n tslib_1.__extends(ParticleNodeBase, _super);\n /**\n * Creates a new ParticleNodeBase object.\n *\n * @param name Defines the generic name of the particle animation node.\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param dataLength Defines the length of the data used by the node when in LOCAL_STATIC mode.\n * @param [optional] priority the priority of the particle animation node, used to order the agal generated in a particle animation set. Defaults to 1.\n */\n function ParticleNodeBase(name, mode, dataLength, priority) {\n if (priority === void 0) { priority = 1; }\n var _this = _super.call(this) || this;\n _this._pDataLength = 3;\n name = name + ParticleNodeBase.MODES[mode];\n _this.name = name;\n _this._pMode = mode;\n _this._priority = priority;\n _this._pDataLength = dataLength;\n _this._pOneData = new Array(_this._pDataLength);\n return _this;\n }\n Object.defineProperty(ParticleNodeBase.prototype, \"mode\", {\n /**\n * Returns the property mode of the particle animation node. Typically set in the node constructor\n *\n * @see away.animators.ParticlePropertiesMode\n */\n get: function () {\n return this._pMode;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleNodeBase.prototype, \"priority\", {\n /**\n * Returns the priority of the particle animation node, used to order the agal generated in a particle animation set. Set automatically on instantiation.\n *\n * @see away.animators.ParticleAnimationSet\n * @see #getAGALVertexCode\n */\n get: function () {\n return this._priority;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleNodeBase.prototype, \"dataLength\", {\n /**\n * Returns the length of the data used by the node when in LOCAL_STATIC mode. Used to generate the local static data of the particle animation set.\n *\n * @see away.animators.ParticleAnimationSet\n * @see #getAGALVertexCode\n */\n get: function () {\n return this._pDataLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleNodeBase.prototype, \"oneData\", {\n /**\n * Returns the generated data vector of the node after one particle pass during the generation of all local static data of the particle animation set.\n *\n * @see away.animators.ParticleAnimationSet\n * @see #generatePropertyOfOneParticle\n */\n get: function () {\n return this._pOneData;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns the AGAL code of the particle animation node for use in the vertex shader.\n */\n ParticleNodeBase.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n return \"\";\n };\n /**\n * Returns the AGAL code of the particle animation node for use in the fragment shader.\n */\n ParticleNodeBase.prototype.getAGALFragmentCode = function (shader, animationSet, registerCache, animationRegisterData) {\n return \"\";\n };\n /**\n * Returns the AGAL code of the particle animation node for use in the fragment shader when UV coordinates are required.\n */\n ParticleNodeBase.prototype.getAGALUVCode = function (shader, animationSet, registerCache, animationRegisterData) {\n return \"\";\n };\n /**\n * Called internally by the particle animation set when assigning the set of static properties originally defined by the initParticleFunc of the set.\n *\n * @see away.animators.ParticleAnimationSet#initParticleFunc\n */\n ParticleNodeBase.prototype._iGeneratePropertyOfOneParticle = function (param) {\n };\n /**\n * Called internally by the particle animation set when determining the requirements of the particle animation node AGAL.\n */\n ParticleNodeBase.prototype._iProcessAnimationSetting = function (particleAnimationSet) {\n };\n return ParticleNodeBase;\n}(AnimationNodeBase));\nexport { ParticleNodeBase };\n//modes alias\nParticleNodeBase.GLOBAL = 'Global';\nParticleNodeBase.LOCAL_STATIC = 'LocalStatic';\nParticleNodeBase.LOCAL_DYNAMIC = 'LocalDynamic';\n//modes list\nParticleNodeBase.MODES = {\n 0: ParticleNodeBase.GLOBAL,\n 1: ParticleNodeBase.LOCAL_STATIC,\n 2: ParticleNodeBase.LOCAL_DYNAMIC\n};\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleNodeBase.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleAccelerationState } from \"../states/ParticleAccelerationState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to apply a constant acceleration vector to the motion of a particle.\n */\nvar ParticleAccelerationNode = (function (_super) {\n tslib_1.__extends(ParticleAccelerationNode, _super);\n /**\n * Creates a new ParticleAccelerationNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] acceleration Defines the default acceleration vector of the node, used when in global mode.\n */\n function ParticleAccelerationNode(mode, acceleration) {\n if (acceleration === void 0) { acceleration = null; }\n var _this = _super.call(this, \"ParticleAcceleration\", mode, 3) || this;\n _this._pStateClass = ParticleAccelerationState;\n _this._acceleration = acceleration || new Vector3D();\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleAccelerationNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var accelerationValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleAccelerationState.ACCELERATION_INDEX, accelerationValue.index);\n var temp = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp, 1);\n var code = \"mul \" + temp + \",\" + animationRegisterData.vertexTime + \",\" + accelerationValue + \"\\n\";\n if (animationSet.needVelocity) {\n var temp2 = registerCache.getFreeVertexVectorTemp();\n code += \"mul \" + temp2 + \",\" + temp + \",\" + animationRegisterData.vertexTwoConst + \"\\n\";\n code += \"add \" + animationRegisterData.velocityTarget + \".xyz,\" + temp2 + \".xyz,\" + animationRegisterData.velocityTarget + \".xyz\\n\";\n }\n registerCache.removeVertexTempUsage(temp);\n code += \"mul \" + temp + \",\" + temp + \",\" + animationRegisterData.vertexTime + \"\\n\";\n code += \"add \" + animationRegisterData.positionTarget + \".xyz,\" + temp + \",\" + animationRegisterData.positionTarget + \".xyz\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleAccelerationNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleAccelerationNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n var tempAcceleration = param[ParticleAccelerationNode.ACCELERATION_VECTOR3D];\n if (!tempAcceleration)\n throw new Error(\"there is no \" + ParticleAccelerationNode.ACCELERATION_VECTOR3D + \" in param!\");\n this._pOneData[0] = tempAcceleration.x / 2;\n this._pOneData[1] = tempAcceleration.y / 2;\n this._pOneData[2] = tempAcceleration.z / 2;\n };\n return ParticleAccelerationNode;\n}(ParticleNodeBase));\nexport { ParticleAccelerationNode };\n/**\n * Reference for acceleration node properties on a single particle (when in local property mode).\n * Expects a Vector3D object representing the direction of acceleration on the particle.\n */\nParticleAccelerationNode.ACCELERATION_VECTOR3D = \"AccelerationVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleAccelerationNode.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleBezierCurveState = (function (_super) {\n tslib_1.__extends(ParticleBezierCurveState, _super);\n function ParticleBezierCurveState(animator, particleBezierCurveNode) {\n var _this = _super.call(this, animator, particleBezierCurveNode) || this;\n _this._particleBezierCurveNode = particleBezierCurveNode;\n _this._controlPoint = _this._particleBezierCurveNode._iControlPoint;\n _this._endPoint = _this._particleBezierCurveNode._iEndPoint;\n return _this;\n }\n Object.defineProperty(ParticleBezierCurveState.prototype, \"controlPoint\", {\n /**\n * Defines the default control point of the node, used when in global mode.\n */\n get: function () {\n return this._controlPoint;\n },\n set: function (value) {\n this._controlPoint = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleBezierCurveState.prototype, \"endPoint\", {\n /**\n * Defines the default end point of the node, used when in global mode.\n */\n get: function () {\n return this._endPoint;\n },\n set: function (value) {\n this._endPoint = value;\n },\n enumerable: true,\n configurable: true\n });\n ParticleBezierCurveState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n var controlIndex = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleBezierCurveState.BEZIER_CONTROL_INDEX);\n var endIndex = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleBezierCurveState.BEZIER_END_INDEX);\n if (this._particleBezierCurveNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {\n animationElements.activateVertexBuffer(controlIndex, this._particleBezierCurveNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n animationElements.activateVertexBuffer(endIndex, this._particleBezierCurveNode._iDataOffset + 3, stage, ContextGLVertexBufferFormat.FLOAT_3);\n }\n else {\n shader.setVertexConst(controlIndex, this._controlPoint.x, this._controlPoint.y, this._controlPoint.z);\n shader.setVertexConst(endIndex, this._endPoint.x, this._endPoint.y, this._endPoint.z);\n }\n };\n return ParticleBezierCurveState;\n}(ParticleStateBase));\nexport { ParticleBezierCurveState };\n/** @private */\nParticleBezierCurveState.BEZIER_CONTROL_INDEX = 0;\n/** @private */\nParticleBezierCurveState.BEZIER_END_INDEX = 1;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleBezierCurveState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ShaderRegisterElement } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleBezierCurveState } from \"../states/ParticleBezierCurveState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to control the position of a particle over time along a bezier curve.\n */\nvar ParticleBezierCurveNode = (function (_super) {\n tslib_1.__extends(ParticleBezierCurveNode, _super);\n /**\n * Creates a new ParticleBezierCurveNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] controlPoint Defines the default control point of the node, used when in global mode.\n * @param [optional] endPoint Defines the default end point of the node, used when in global mode.\n */\n function ParticleBezierCurveNode(mode, controlPoint, endPoint) {\n if (controlPoint === void 0) { controlPoint = null; }\n if (endPoint === void 0) { endPoint = null; }\n var _this = _super.call(this, \"ParticleBezierCurve\", mode, 6) || this;\n _this._pStateClass = ParticleBezierCurveState;\n _this._iControlPoint = controlPoint || new Vector3D();\n _this._iEndPoint = endPoint || new Vector3D();\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleBezierCurveNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var controlValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleBezierCurveState.BEZIER_CONTROL_INDEX, controlValue.index);\n var endValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleBezierCurveState.BEZIER_END_INDEX, endValue.index);\n var temp = registerCache.getFreeVertexVectorTemp();\n var rev_time = new ShaderRegisterElement(temp.regName, temp.index, 0);\n var time_2 = new ShaderRegisterElement(temp.regName, temp.index, 1);\n var time_temp = new ShaderRegisterElement(temp.regName, temp.index, 2);\n registerCache.addVertexTempUsages(temp, 1);\n var temp2 = registerCache.getFreeVertexVectorTemp();\n var distance = new ShaderRegisterElement(temp2.regName, temp2.index);\n registerCache.removeVertexTempUsage(temp);\n var code = \"\";\n code += \"sub \" + rev_time + \",\" + animationRegisterData.vertexOneConst + \",\" + animationRegisterData.vertexLife + \"\\n\";\n code += \"mul \" + time_2 + \",\" + animationRegisterData.vertexLife + \",\" + animationRegisterData.vertexLife + \"\\n\";\n code += \"mul \" + time_temp + \",\" + animationRegisterData.vertexLife + \",\" + rev_time + \"\\n\";\n code += \"mul \" + time_temp + \",\" + time_temp + \",\" + animationRegisterData.vertexTwoConst + \"\\n\";\n code += \"mul \" + distance + \".xyz,\" + time_temp + \",\" + controlValue + \"\\n\";\n code += \"add \" + animationRegisterData.positionTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterData.positionTarget + \".xyz\\n\";\n code += \"mul \" + distance + \".xyz,\" + time_2 + \",\" + endValue + \"\\n\";\n code += \"add \" + animationRegisterData.positionTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterData.positionTarget + \".xyz\\n\";\n if (animationSet.needVelocity) {\n code += \"mul \" + time_2 + \",\" + animationRegisterData.vertexLife + \",\" + animationRegisterData.vertexTwoConst + \"\\n\";\n code += \"sub \" + time_temp + \",\" + animationRegisterData.vertexOneConst + \",\" + time_2 + \"\\n\";\n code += \"mul \" + time_temp + \",\" + animationRegisterData.vertexTwoConst + \",\" + time_temp + \"\\n\";\n code += \"mul \" + distance + \".xyz,\" + controlValue + \",\" + time_temp + \"\\n\";\n code += \"add \" + animationRegisterData.velocityTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterData.velocityTarget + \".xyz\\n\";\n code += \"mul \" + distance + \".xyz,\" + endValue + \",\" + time_2 + \"\\n\";\n code += \"add \" + animationRegisterData.velocityTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterData.velocityTarget + \".xyz\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleBezierCurveNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleBezierCurveNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n var bezierControl = param[ParticleBezierCurveNode.BEZIER_CONTROL_VECTOR3D];\n if (!bezierControl)\n throw new Error(\"there is no \" + ParticleBezierCurveNode.BEZIER_CONTROL_VECTOR3D + \" in param!\");\n var bezierEnd = param[ParticleBezierCurveNode.BEZIER_END_VECTOR3D];\n if (!bezierEnd)\n throw new Error(\"there is no \" + ParticleBezierCurveNode.BEZIER_END_VECTOR3D + \" in param!\");\n this._pOneData[0] = bezierControl.x;\n this._pOneData[1] = bezierControl.y;\n this._pOneData[2] = bezierControl.z;\n this._pOneData[3] = bezierEnd.x;\n this._pOneData[4] = bezierEnd.y;\n this._pOneData[5] = bezierEnd.z;\n };\n return ParticleBezierCurveNode;\n}(ParticleNodeBase));\nexport { ParticleBezierCurveNode };\n/**\n * Reference for bezier curve node properties on a single particle (when in local property mode).\n * Expects a Vector3D object representing the control point position (0, 1, 2) of the curve.\n */\nParticleBezierCurveNode.BEZIER_CONTROL_VECTOR3D = \"BezierControlVector3D\";\n/**\n * Reference for bezier curve node properties on a single particle (when in local property mode).\n * Expects a Vector3D object representing the end point position (0, 1, 2) of the curve.\n */\nParticleBezierCurveNode.BEZIER_END_VECTOR3D = \"BezierEndVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleBezierCurveNode.js","import * as tslib_1 from \"tslib\";\nimport { Matrix3D, Orientation3D, MathConsts } from \"@awayjs/core\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleBillboardState = (function (_super) {\n tslib_1.__extends(ParticleBillboardState, _super);\n /**\n *\n */\n function ParticleBillboardState(animator, particleNode) {\n var _this = _super.call(this, animator, particleNode) || this;\n _this._matrix = new Matrix3D;\n _this._billboardAxis = particleNode._iBillboardAxis;\n return _this;\n }\n ParticleBillboardState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n var comps;\n if (this._billboardAxis) {\n var pos = renderable.sourceEntity.transform.concatenatedMatrix3D.position;\n var look = projection.transform.concatenatedMatrix3D.position.subtract(pos);\n var right = look.crossProduct(this._billboardAxis);\n right.normalize();\n look = this.billboardAxis.crossProduct(right);\n look.normalize();\n //create a quick inverse projection matrix\n this._matrix.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D);\n comps = this._matrix.decompose(Orientation3D.AXIS_ANGLE);\n this._matrix.copyColumnFrom(0, right);\n this._matrix.copyColumnFrom(1, this.billboardAxis);\n this._matrix.copyColumnFrom(2, look);\n this._matrix.copyColumnFrom(3, pos);\n this._matrix.appendRotation(-comps[1].w * MathConsts.RADIANS_TO_DEGREES, comps[1]);\n }\n else {\n //create a quick inverse projection matrix\n this._matrix.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D);\n this._matrix.append(projection.transform.inverseConcatenatedMatrix3D);\n //decompose using axis angle rotations\n comps = this._matrix.decompose(Orientation3D.AXIS_ANGLE);\n //recreate the matrix with just the rotation data\n this._matrix.identity();\n this._matrix.appendRotation(-comps[1].w * MathConsts.RADIANS_TO_DEGREES, comps[1]);\n }\n //set a new matrix transform constant\n shader.setVertexConstFromMatrix(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleBillboardState.MATRIX_INDEX), this._matrix);\n };\n Object.defineProperty(ParticleBillboardState.prototype, \"billboardAxis\", {\n /**\n * Defines the billboard axis.\n */\n get: function () {\n return this.billboardAxis;\n },\n set: function (value) {\n this.billboardAxis = value ? value.clone() : null;\n if (this.billboardAxis)\n this.billboardAxis.normalize();\n },\n enumerable: true,\n configurable: true\n });\n return ParticleBillboardState;\n}(ParticleStateBase));\nexport { ParticleBillboardState };\n/** @private */\nParticleBillboardState.MATRIX_INDEX = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleBillboardState.js","import * as tslib_1 from \"tslib\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleBillboardState } from \"../states/ParticleBillboardState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node that controls the rotation of a particle to always face the camera.\n */\nvar ParticleBillboardNode = (function (_super) {\n tslib_1.__extends(ParticleBillboardNode, _super);\n /**\n * Creates a new ParticleBillboardNode\n */\n function ParticleBillboardNode(billboardAxis) {\n if (billboardAxis === void 0) { billboardAxis = null; }\n var _this = _super.call(this, \"ParticleBillboard\", ParticlePropertiesMode.GLOBAL, 0, 4) || this;\n _this._pStateClass = ParticleBillboardState;\n _this._iBillboardAxis = billboardAxis;\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleBillboardNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var rotationMatrixRegister = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleBillboardState.MATRIX_INDEX, rotationMatrixRegister.index);\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n var temp = registerCache.getFreeVertexVectorTemp();\n var code = \"m33 \" + temp + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \",\" + rotationMatrixRegister + \"\\n\" +\n \"mov \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + temp + \"\\n\";\n var shaderRegisterElement;\n for (var i = 0; i < animationRegisterData.rotationRegisters.length; i++) {\n shaderRegisterElement = animationRegisterData.rotationRegisters[i];\n code += \"m33 \" + temp + \".xyz,\" + shaderRegisterElement + \",\" + rotationMatrixRegister + \"\\n\" +\n \"mov \" + shaderRegisterElement + \".xyz,\" + shaderRegisterElement + \"\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleBillboardNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleBillboardNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {\n particleAnimationSet.hasBillboard = true;\n };\n return ParticleBillboardNode;\n}(ParticleNodeBase));\nexport { ParticleBillboardNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleBillboardNode.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n * @author ...\n */\nvar ParticleColorState = (function (_super) {\n tslib_1.__extends(ParticleColorState, _super);\n function ParticleColorState(animator, particleColorNode) {\n var _this = _super.call(this, animator, particleColorNode) || this;\n _this._particleColorNode = particleColorNode;\n _this._usesMultiplier = _this._particleColorNode._iUsesMultiplier;\n _this._usesOffset = _this._particleColorNode._iUsesOffset;\n _this._usesCycle = _this._particleColorNode._iUsesCycle;\n _this._usesPhase = _this._particleColorNode._iUsesPhase;\n _this._startColor = _this._particleColorNode._iStartColor;\n _this._endColor = _this._particleColorNode._iEndColor;\n _this._cycleDuration = _this._particleColorNode._iCycleDuration;\n _this._cyclePhase = _this._particleColorNode._iCyclePhase;\n _this.updateColorData();\n return _this;\n }\n Object.defineProperty(ParticleColorState.prototype, \"startColor\", {\n /**\n * Defines the start color transform of the state, when in global mode.\n */\n get: function () {\n return this._startColor;\n },\n set: function (value) {\n this._startColor = value;\n this.updateColorData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleColorState.prototype, \"endColor\", {\n /**\n * Defines the end color transform of the state, when in global mode.\n */\n get: function () {\n return this._endColor;\n },\n set: function (value) {\n this._endColor = value;\n this.updateColorData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleColorState.prototype, \"cycleDuration\", {\n /**\n * Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.\n */\n get: function () {\n return this._cycleDuration;\n },\n set: function (value) {\n this._cycleDuration = value;\n this.updateColorData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleColorState.prototype, \"cyclePhase\", {\n /**\n * Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.\n */\n get: function () {\n return this._cyclePhase;\n },\n set: function (value) {\n this._cyclePhase = value;\n this.updateColorData();\n },\n enumerable: true,\n configurable: true\n });\n ParticleColorState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (shader.usesFragmentAnimation) {\n var dataOffset = this._particleColorNode._iDataOffset;\n var index;\n if (this._usesCycle)\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleColorState.CYCLE_INDEX), this._cycleData.x, this._cycleData.y, this._cycleData.z, this._cycleData.w);\n if (this._usesMultiplier) {\n if (this._particleColorNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleColorState.START_MULTIPLIER_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n dataOffset += 4;\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleColorState.DELTA_MULTIPLIER_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n dataOffset += 4;\n }\n else {\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleColorState.START_MULTIPLIER_INDEX), this._startMultiplierData.x, this._startMultiplierData.y, this._startMultiplierData.z, this._startMultiplierData.w);\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleColorState.DELTA_MULTIPLIER_INDEX), this._deltaMultiplierData.x, this._deltaMultiplierData.y, this._deltaMultiplierData.z, this._deltaMultiplierData.w);\n }\n }\n if (this._usesOffset) {\n if (this._particleColorNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleColorState.START_OFFSET_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n dataOffset += 4;\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleColorState.DELTA_OFFSET_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n }\n else {\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleColorState.START_OFFSET_INDEX), this._startOffsetData.x, this._startOffsetData.y, this._startOffsetData.z, this._startOffsetData.w);\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleColorState.DELTA_OFFSET_INDEX), this._deltaOffsetData.x, this._deltaOffsetData.y, this._deltaOffsetData.z, this._deltaOffsetData.w);\n }\n }\n }\n };\n ParticleColorState.prototype.updateColorData = function () {\n if (this._usesCycle) {\n if (this._cycleDuration <= 0)\n throw (new Error(\"the cycle duration must be greater than zero\"));\n this._cycleData = new Vector3D(Math.PI * 2 / this._cycleDuration, this._cyclePhase * Math.PI / 180, 0, 0);\n }\n if (this._particleColorNode.mode == ParticlePropertiesMode.GLOBAL) {\n if (this._usesCycle) {\n if (this._usesMultiplier) {\n this._startMultiplierData = new Vector3D((this._startColor.redMultiplier + this._endColor.redMultiplier) / 2, (this._startColor.greenMultiplier + this._endColor.greenMultiplier) / 2, (this._startColor.blueMultiplier + this._endColor.blueMultiplier) / 2, (this._startColor.alphaMultiplier + this._endColor.alphaMultiplier) / 2);\n this._deltaMultiplierData = new Vector3D((this._endColor.redMultiplier - this._startColor.redMultiplier) / 2, (this._endColor.greenMultiplier - this._startColor.greenMultiplier) / 2, (this._endColor.blueMultiplier - this._startColor.blueMultiplier) / 2, (this._endColor.alphaMultiplier - this._startColor.alphaMultiplier) / 2);\n }\n if (this._usesOffset) {\n this._startOffsetData = new Vector3D((this._startColor.redOffset + this._endColor.redOffset) / (255 * 2), (this._startColor.greenOffset + this._endColor.greenOffset) / (255 * 2), (this._startColor.blueOffset + this._endColor.blueOffset) / (255 * 2), (this._startColor.alphaOffset + this._endColor.alphaOffset) / (255 * 2));\n this._deltaOffsetData = new Vector3D((this._endColor.redOffset - this._startColor.redOffset) / (255 * 2), (this._endColor.greenOffset - this._startColor.greenOffset) / (255 * 2), (this._endColor.blueOffset - this._startColor.blueOffset) / (255 * 2), (this._endColor.alphaOffset - this._startColor.alphaOffset) / (255 * 2));\n }\n }\n else {\n if (this._usesMultiplier) {\n this._startMultiplierData = new Vector3D(this._startColor.redMultiplier, this._startColor.greenMultiplier, this._startColor.blueMultiplier, this._startColor.alphaMultiplier);\n this._deltaMultiplierData = new Vector3D((this._endColor.redMultiplier - this._startColor.redMultiplier), (this._endColor.greenMultiplier - this._startColor.greenMultiplier), (this._endColor.blueMultiplier - this._startColor.blueMultiplier), (this._endColor.alphaMultiplier - this._startColor.alphaMultiplier));\n }\n if (this._usesOffset) {\n this._startOffsetData = new Vector3D(this._startColor.redOffset / 255, this._startColor.greenOffset / 255, this._startColor.blueOffset / 255, this._startColor.alphaOffset / 255);\n this._deltaOffsetData = new Vector3D((this._endColor.redOffset - this._startColor.redOffset) / 255, (this._endColor.greenOffset - this._startColor.greenOffset) / 255, (this._endColor.blueOffset - this._startColor.blueOffset) / 255, (this._endColor.alphaOffset - this._startColor.alphaOffset) / 255);\n }\n }\n }\n };\n return ParticleColorState;\n}(ParticleStateBase));\nexport { ParticleColorState };\n/** @private */\nParticleColorState.START_MULTIPLIER_INDEX = 0;\n/** @private */\nParticleColorState.DELTA_MULTIPLIER_INDEX = 1;\n/** @private */\nParticleColorState.START_OFFSET_INDEX = 2;\n/** @private */\nParticleColorState.DELTA_OFFSET_INDEX = 3;\n/** @private */\nParticleColorState.CYCLE_INDEX = 4;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleColorState.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleTimeState = (function (_super) {\n tslib_1.__extends(ParticleTimeState, _super);\n function ParticleTimeState(animator, particleTimeNode) {\n var _this = _super.call(this, animator, particleTimeNode, true) || this;\n _this._particleTimeNode = particleTimeNode;\n return _this;\n }\n ParticleTimeState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleTimeState.TIME_STREAM_INDEX), this._particleTimeNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n var particleTime = this._pTime / 1000;\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleTimeState.TIME_CONSTANT_INDEX), particleTime, particleTime, particleTime, particleTime);\n };\n return ParticleTimeState;\n}(ParticleStateBase));\nexport { ParticleTimeState };\n/** @private */\nParticleTimeState.TIME_STREAM_INDEX = 0;\n/** @private */\nParticleTimeState.TIME_CONSTANT_INDEX = 1;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleTimeState.js","import * as tslib_1 from \"tslib\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleTimeState } from \"../states/ParticleTimeState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used as the base node for timekeeping inside a particle. Automatically added to a particle animation set on instatiation.\n */\nvar ParticleTimeNode = (function (_super) {\n tslib_1.__extends(ParticleTimeNode, _super);\n /**\n * Creates a new ParticleTimeNode\n *\n * @param [optional] usesDuration Defines whether the node uses the duration data in the static properties to determine how long a particle is visible for. Defaults to false.\n * @param [optional] usesDelay Defines whether the node uses the delay data in the static properties to determine how long a particle is hidden for. Defaults to false. Requires usesDuration to be true.\n * @param [optional] usesLooping Defines whether the node creates a looping timeframe for each particle determined by the startTime, duration and delay data in the static properties function. Defaults to false. Requires usesLooping to be true.\n */\n function ParticleTimeNode(usesDuration, usesLooping, usesDelay) {\n if (usesDuration === void 0) { usesDuration = false; }\n if (usesLooping === void 0) { usesLooping = false; }\n if (usesDelay === void 0) { usesDelay = false; }\n var _this = _super.call(this, \"ParticleTime\", ParticlePropertiesMode.LOCAL_STATIC, 4, 0) || this;\n _this._pStateClass = ParticleTimeState;\n _this._iUsesDuration = usesDuration;\n _this._iUsesLooping = usesLooping;\n _this._iUsesDelay = usesDelay;\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleTimeNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var timeStreamRegister = registerCache.getFreeVertexAttribute(); //timeStreamRegister.x is start,timeStreamRegister.y is during time\n animationRegisterData.setRegisterIndex(this, ParticleTimeState.TIME_STREAM_INDEX, timeStreamRegister.index);\n var timeConst = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleTimeState.TIME_CONSTANT_INDEX, timeConst.index);\n var code = \"\";\n code += \"sub \" + animationRegisterData.vertexTime + \",\" + timeConst + \",\" + timeStreamRegister + \".x\\n\";\n //if time=0,set the position to zero.\n var temp = registerCache.getFreeVertexSingleTemp();\n code += \"sge \" + temp + \",\" + animationRegisterData.vertexTime + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mul \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + temp + \"\\n\";\n if (this._iUsesDuration) {\n if (this._iUsesLooping) {\n var div = registerCache.getFreeVertexSingleTemp();\n if (this._iUsesDelay) {\n code += \"div \" + div + \",\" + animationRegisterData.vertexTime + \",\" + timeStreamRegister + \".z\\n\";\n code += \"frc \" + div + \",\" + div + \"\\n\";\n code += \"mul \" + animationRegisterData.vertexTime + \",\" + div + \",\" + timeStreamRegister + \".z\\n\";\n code += \"slt \" + div + \",\" + animationRegisterData.vertexTime + \",\" + timeStreamRegister + \".y\\n\";\n code += \"mul \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + div + \"\\n\";\n }\n else {\n code += \"mul \" + div + \",\" + animationRegisterData.vertexTime + \",\" + timeStreamRegister + \".w\\n\";\n code += \"frc \" + div + \",\" + div + \"\\n\";\n code += \"mul \" + animationRegisterData.vertexTime + \",\" + div + \",\" + timeStreamRegister + \".y\\n\";\n }\n }\n else {\n var sge = registerCache.getFreeVertexSingleTemp();\n code += \"sge \" + sge + \",\" + timeStreamRegister + \".y,\" + animationRegisterData.vertexTime + \"\\n\";\n code += \"mul \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + sge + \"\\n\";\n }\n }\n code += \"mul \" + animationRegisterData.vertexLife + \",\" + animationRegisterData.vertexTime + \",\" + timeStreamRegister + \".w\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleTimeNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleTimeNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n this._pOneData[0] = param.startTime;\n this._pOneData[1] = param.duration;\n this._pOneData[2] = param.delay + param.duration;\n this._pOneData[3] = 1 / param.duration;\n };\n return ParticleTimeNode;\n}(ParticleNodeBase));\nexport { ParticleTimeNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleTimeNode.js","import * as tslib_1 from \"tslib\";\nimport { AnimationRegisterData, AnimationSetBase } from \"@awayjs/stage\";\nimport { AnimationElements } from \"./data/AnimationElements\";\nimport { ParticleAnimationData } from \"./data/ParticleAnimationData\";\nimport { ParticleProperties } from \"./data/ParticleProperties\";\nimport { ParticlePropertiesMode } from \"./data/ParticlePropertiesMode\";\nimport { ParticleTimeNode } from \"./nodes/ParticleTimeNode\";\n/**\n * The animation data set used by particle-based animators, containing particle animation data.\n *\n * @see away.animators.ParticleAnimator\n */\nvar ParticleAnimationSet = (function (_super) {\n tslib_1.__extends(ParticleAnimationSet, _super);\n /**\n * Creates a new ParticleAnimationSet\n *\n * @param [optional] usesDuration Defines whether the animation set uses the duration data in its static properties to determine how long a particle is visible for. Defaults to false.\n * @param [optional] usesLooping Defines whether the animation set uses a looping timeframe for each particle determined by the startTime, duration and delay data in its static properties function. Defaults to false. Requires usesDuration to be true.\n * @param [optional] usesDelay Defines whether the animation set uses the delay data in its static properties to determine how long a particle is hidden for. Defaults to false. Requires usesLooping to be true.\n */\n function ParticleAnimationSet(usesDuration, usesLooping, usesDelay) {\n if (usesDuration === void 0) { usesDuration = false; }\n if (usesLooping === void 0) { usesLooping = false; }\n if (usesDelay === void 0) { usesDelay = false; }\n var _this = _super.call(this) || this;\n _this._animationElements = new Object();\n _this._particleNodes = new Array();\n _this._localDynamicNodes = new Array();\n _this._localStaticNodes = new Array();\n _this._totalLenOfOneVertex = 0;\n /**\n *\n */\n _this.shareAnimationGraphics = true;\n //automatically add a particle time node to the set\n _this.addAnimation(_this._timeNode = new ParticleTimeNode(usesDuration, usesLooping, usesDelay));\n return _this;\n }\n Object.defineProperty(ParticleAnimationSet.prototype, \"particleNodes\", {\n /**\n * Returns a vector of the particle animation nodes contained within the set.\n */\n get: function () {\n return this._particleNodes;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ParticleAnimationSet.prototype.addAnimation = function (node) {\n var i;\n var n = node;\n n._iProcessAnimationSetting(this);\n if (n.mode == ParticlePropertiesMode.LOCAL_STATIC) {\n n._iDataOffset = this._totalLenOfOneVertex;\n this._totalLenOfOneVertex += n.dataLength;\n this._localStaticNodes.push(n);\n }\n else if (n.mode == ParticlePropertiesMode.LOCAL_DYNAMIC)\n this._localDynamicNodes.push(n);\n for (i = this._particleNodes.length - 1; i >= 0; i--) {\n if (this._particleNodes[i].priority <= n.priority)\n break;\n }\n this._particleNodes.splice(i + 1, 0, n);\n _super.prototype.addAnimation.call(this, node);\n };\n /**\n * @inheritDoc\n */\n ParticleAnimationSet.prototype.getAGALVertexCode = function (shader, registerCache, sharedRegisters) {\n //grab animationRegisterData from the materialpassbase or create a new one if the first time\n this._iAnimationRegisterData = shader.animationRegisterData;\n if (this._iAnimationRegisterData == null)\n this._iAnimationRegisterData = shader.animationRegisterData = new AnimationRegisterData();\n //reset animationRegisterData\n this._iAnimationRegisterData.reset(registerCache, sharedRegisters, this.needVelocity);\n var code = \"\";\n var len = sharedRegisters.animatableAttributes.length;\n for (var i = 0; i < len; i++)\n code += \"mov \" + sharedRegisters.animationTargetRegisters[i] + \",\" + sharedRegisters.animatableAttributes[i] + \"\\n\";\n code += \"mov \" + this._iAnimationRegisterData.positionTarget + \".xyz,\" + this._iAnimationRegisterData.vertexZeroConst + \"\\n\";\n if (this.needVelocity)\n code += \"mov \" + this._iAnimationRegisterData.velocityTarget + \".xyz,\" + this._iAnimationRegisterData.vertexZeroConst + \"\\n\";\n var node;\n var i;\n for (i = 0; i < this._particleNodes.length; i++) {\n node = this._particleNodes[i];\n if (node.priority < ParticleAnimationSet.POST_PRIORITY)\n code += node.getAGALVertexCode(shader, this, registerCache, this._iAnimationRegisterData);\n }\n code += \"add \" + this._iAnimationRegisterData.scaleAndRotateTarget + \".xyz,\" + this._iAnimationRegisterData.scaleAndRotateTarget + \".xyz,\" + this._iAnimationRegisterData.positionTarget + \".xyz\\n\";\n for (i = 0; i < this._particleNodes.length; i++) {\n node = this._particleNodes[i];\n if (node.priority >= ParticleAnimationSet.POST_PRIORITY && node.priority < ParticleAnimationSet.COLOR_PRIORITY)\n code += node.getAGALVertexCode(shader, this, registerCache, this._iAnimationRegisterData);\n }\n if (this.hasColorMulNode) {\n this._iAnimationRegisterData.colorMulTarget = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(this._iAnimationRegisterData.colorMulTarget, 1);\n this._iAnimationRegisterData.colorMulVary = registerCache.getFreeVarying();\n code += \"mov \" + this._iAnimationRegisterData.colorMulTarget + \",\" + this._iAnimationRegisterData.vertexOneConst + \"\\n\";\n }\n if (this.hasColorAddNode) {\n this._iAnimationRegisterData.colorAddTarget = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(this._iAnimationRegisterData.colorAddTarget, 1);\n this._iAnimationRegisterData.colorAddVary = registerCache.getFreeVarying();\n code += \"mov \" + this._iAnimationRegisterData.colorAddTarget + \",\" + this._iAnimationRegisterData.vertexZeroConst + \"\\n\";\n }\n for (i = 0; i < this._particleNodes.length; i++) {\n node = this._particleNodes[i];\n if (node.priority >= ParticleAnimationSet.COLOR_PRIORITY)\n code += node.getAGALVertexCode(shader, this, registerCache, this._iAnimationRegisterData);\n }\n if (shader.usesFragmentAnimation && (this.hasColorAddNode || this.hasColorMulNode)) {\n if (this.hasColorMulNode)\n code += \"mov \" + this._iAnimationRegisterData.colorMulVary + \",\" + this._iAnimationRegisterData.colorMulTarget + \"\\n\";\n if (this.hasColorAddNode)\n code += \"mov \" + this._iAnimationRegisterData.colorAddVary + \",\" + this._iAnimationRegisterData.colorAddTarget + \"\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleAnimationSet.prototype.getAGALUVCode = function (shader, registerCache, sharedRegisters) {\n var code = \"\";\n if (this.hasUVNode) {\n this._iAnimationRegisterData.setUVSourceAndTarget(sharedRegisters);\n code += \"mov \" + this._iAnimationRegisterData.uvTarget + \".xy,\" + this._iAnimationRegisterData.uvAttribute.toString() + \"\\n\";\n var node;\n for (var i = 0; i < this._particleNodes.length; i++)\n node = this._particleNodes[i];\n code += node.getAGALUVCode(shader, this, registerCache, this._iAnimationRegisterData);\n code += \"mov \" + this._iAnimationRegisterData.uvVar + \",\" + this._iAnimationRegisterData.uvTarget + \".xy\\n\";\n }\n else\n code += \"mov \" + sharedRegisters.uvTarget + \",\" + sharedRegisters.uvSource + \"\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleAnimationSet.prototype.getAGALFragmentCode = function (shader, registerCache, shadedTarget) {\n var code = \"\";\n if (shader.usesFragmentAnimation && (this.hasColorAddNode || this.hasColorMulNode)) {\n if (this.hasColorMulNode)\n code += \"mul \" + shadedTarget + \",\" + shadedTarget + \",\" + this._iAnimationRegisterData.colorMulVary + \"\\n\";\n if (this.hasColorAddNode)\n code += \"add \" + shadedTarget + \",\" + shadedTarget + \",\" + this._iAnimationRegisterData.colorAddVary + \"\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleAnimationSet.prototype.doneAGALCode = function (shader) {\n //set vertexZeroConst,vertexOneConst,vertexTwoConst\n shader.setVertexConst(this._iAnimationRegisterData.vertexZeroConst.index, 0, 1, 2, 0);\n };\n Object.defineProperty(ParticleAnimationSet.prototype, \"usesCPU\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return false;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ParticleAnimationSet.prototype.cancelGPUCompatibility = function () {\n };\n ParticleAnimationSet.prototype.dispose = function () {\n for (var key in this._animationElements)\n this._animationElements[key].dispose();\n _super.prototype.dispose.call(this);\n };\n ParticleAnimationSet.prototype.getAnimationElements = function (graphics, shape) {\n var animationElements = (this.shareAnimationGraphics) ? this._animationElements[shape.elements.id] : this._animationElements[shape.id];\n if (animationElements)\n return animationElements;\n this._iGenerateAnimationElements(graphics);\n return (this.shareAnimationGraphics) ? this._animationElements[shape.elements.id] : this._animationElements[shape.id];\n };\n /** @private */\n ParticleAnimationSet.prototype._iGenerateAnimationElements = function (graphics) {\n if (this.initParticleFunc == null)\n throw (new Error(\"no initParticleFunc set\"));\n var i, j, k;\n var animationElements;\n var newAnimationElements = false;\n var elements;\n var shape;\n var localNode;\n for (i = 0; i < graphics.count; i++) {\n shape = graphics.getShapeAt(i);\n elements = shape.elements;\n if (this.shareAnimationGraphics) {\n animationElements = this._animationElements[elements.id];\n if (animationElements)\n continue;\n }\n animationElements = new AnimationElements();\n if (this.shareAnimationGraphics)\n this._animationElements[elements.id] = animationElements;\n else\n this._animationElements[shape.id] = animationElements;\n newAnimationElements = true;\n //create the vertexData vector that will be used for local node data\n animationElements.createVertexData(elements.numVertices, this._totalLenOfOneVertex);\n }\n if (!newAnimationElements)\n return;\n var particles = graphics.particles;\n var particlesLength = particles.length;\n var numParticles = graphics.numParticles;\n var particleProperties = new ParticleProperties();\n var particle;\n var oneDataLen;\n var oneDataOffset;\n var counterForVertex;\n var counterForOneData;\n var oneData;\n var numVertices;\n var vertexData;\n var vertexLength;\n var startingOffset;\n var vertexOffset;\n //default values for particle param\n particleProperties.total = numParticles;\n particleProperties.startTime = 0;\n particleProperties.duration = 1000;\n particleProperties.delay = 0.1;\n i = 0;\n j = 0;\n while (i < numParticles) {\n particleProperties.index = i;\n //call the init on the particle parameters\n this.initParticleFunc.call(this.initParticleScope, particleProperties);\n //create the next set of node properties for the particle\n for (k = 0; k < this._localStaticNodes.length; k++)\n this._localStaticNodes[k]._iGeneratePropertyOfOneParticle(particleProperties);\n //loop through all particle data for the curent particle\n while (j < particlesLength && (particle = particles[j]).particleIndex == i) {\n //find the target animationElements\n for (k = 0; k < graphics.count; k++) {\n shape = graphics.getShapeAt(k);\n if (shape.elements == particle.elements) {\n animationElements = (this.shareAnimationGraphics) ? this._animationElements[shape.elements.id] : this._animationElements[shape.id];\n break;\n }\n }\n numVertices = particle.numVertices;\n vertexData = animationElements.vertexData;\n vertexLength = numVertices * this._totalLenOfOneVertex;\n startingOffset = animationElements.numProcessedVertices * this._totalLenOfOneVertex;\n //loop through each static local node in the animation set\n for (k = 0; k < this._localStaticNodes.length; k++) {\n localNode = this._localStaticNodes[k];\n oneData = localNode.oneData;\n oneDataLen = localNode.dataLength;\n oneDataOffset = startingOffset + localNode._iDataOffset;\n //loop through each vertex set in the vertex data\n for (counterForVertex = 0; counterForVertex < vertexLength; counterForVertex += this._totalLenOfOneVertex) {\n vertexOffset = oneDataOffset + counterForVertex;\n //add the data for the local node to the vertex data\n for (counterForOneData = 0; counterForOneData < oneDataLen; counterForOneData++)\n vertexData[vertexOffset + counterForOneData] = oneData[counterForOneData];\n }\n }\n //store particle properties if they need to be retreived for dynamic local nodes\n if (this._localDynamicNodes.length)\n animationElements.animationParticles.push(new ParticleAnimationData(i, particleProperties.startTime, particleProperties.duration, particleProperties.delay, particle));\n animationElements.numProcessedVertices += numVertices;\n //next index\n j++;\n }\n //next particle\n i++;\n }\n };\n return ParticleAnimationSet;\n}(AnimationSetBase));\nexport { ParticleAnimationSet };\n/**\n * Property used by particle nodes that require compilers at the end of the shader\n */\nParticleAnimationSet.POST_PRIORITY = 9;\n/**\n * Property used by particle nodes that require color compilers\n */\nParticleAnimationSet.COLOR_PRIORITY = 18;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/ParticleAnimationSet.js","import * as tslib_1 from \"tslib\";\nimport { ColorTransform } from \"@awayjs/core\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleColorState } from \"../states/ParticleColorState\";\nimport { ParticleAnimationSet } from \"../ParticleAnimationSet\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to control the color variation of a particle over time.\n */\nvar ParticleColorNode = (function (_super) {\n tslib_1.__extends(ParticleColorNode, _super);\n /**\n * Creates a new ParticleColorNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] usesMultiplier Defines whether the node uses multiplier data in the shader for its color transformations. Defaults to true.\n * @param [optional] usesOffset Defines whether the node uses offset data in the shader for its color transformations. Defaults to true.\n * @param [optional] usesCycle Defines whether the node uses the cycleDuration property in the shader to calculate the period of the animation independent of particle duration. Defaults to false.\n * @param [optional] usesPhase Defines whether the node uses the cyclePhase property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false.\n * @param [optional] startColor Defines the default start color transform of the node, when in global mode.\n * @param [optional] endColor Defines the default end color transform of the node, when in global mode.\n * @param [optional] cycleDuration Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.\n * @param [optional] cyclePhase Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.\n */\n function ParticleColorNode(mode, usesMultiplier, usesOffset, usesCycle, usesPhase, startColor, endColor, cycleDuration, cyclePhase) {\n if (usesMultiplier === void 0) { usesMultiplier = true; }\n if (usesOffset === void 0) { usesOffset = true; }\n if (usesCycle === void 0) { usesCycle = false; }\n if (usesPhase === void 0) { usesPhase = false; }\n if (startColor === void 0) { startColor = null; }\n if (endColor === void 0) { endColor = null; }\n if (cycleDuration === void 0) { cycleDuration = 1; }\n if (cyclePhase === void 0) { cyclePhase = 0; }\n var _this = _super.call(this, \"ParticleColor\", mode, (usesMultiplier && usesOffset) ? 16 : 8, ParticleAnimationSet.COLOR_PRIORITY) || this;\n _this._pStateClass = ParticleColorState;\n _this._iUsesMultiplier = usesMultiplier;\n _this._iUsesOffset = usesOffset;\n _this._iUsesCycle = usesCycle;\n _this._iUsesPhase = usesPhase;\n _this._iStartColor = startColor || new ColorTransform();\n _this._iEndColor = endColor || new ColorTransform();\n _this._iCycleDuration = cycleDuration;\n _this._iCyclePhase = cyclePhase;\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleColorNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var code = \"\";\n if (shader.usesFragmentAnimation) {\n var temp = registerCache.getFreeVertexVectorTemp();\n if (this._iUsesCycle) {\n var cycleConst = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleColorState.CYCLE_INDEX, cycleConst.index);\n registerCache.addVertexTempUsages(temp, 1);\n var sin = registerCache.getFreeVertexSingleTemp();\n registerCache.removeVertexTempUsage(temp);\n code += \"mul \" + sin + \",\" + animationRegisterData.vertexTime + \",\" + cycleConst + \".x\\n\";\n if (this._iUsesPhase)\n code += \"add \" + sin + \",\" + sin + \",\" + cycleConst + \".y\\n\";\n code += \"sin \" + sin + \",\" + sin + \"\\n\";\n }\n if (this._iUsesMultiplier) {\n var startMultiplierValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n var deltaMultiplierValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleColorState.START_MULTIPLIER_INDEX, startMultiplierValue.index);\n animationRegisterData.setRegisterIndex(this, ParticleColorState.DELTA_MULTIPLIER_INDEX, deltaMultiplierValue.index);\n code += \"mul \" + temp + \",\" + deltaMultiplierValue + \",\" + (this._iUsesCycle ? sin : animationRegisterData.vertexLife) + \"\\n\";\n code += \"add \" + temp + \",\" + temp + \",\" + startMultiplierValue + \"\\n\";\n code += \"mul \" + animationRegisterData.colorMulTarget + \",\" + temp + \",\" + animationRegisterData.colorMulTarget + \"\\n\";\n }\n if (this._iUsesOffset) {\n var startOffsetValue = (this._pMode == ParticlePropertiesMode.LOCAL_STATIC) ? registerCache.getFreeVertexAttribute() : registerCache.getFreeVertexConstant();\n var deltaOffsetValue = (this._pMode == ParticlePropertiesMode.LOCAL_STATIC) ? registerCache.getFreeVertexAttribute() : registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleColorState.START_OFFSET_INDEX, startOffsetValue.index);\n animationRegisterData.setRegisterIndex(this, ParticleColorState.DELTA_OFFSET_INDEX, deltaOffsetValue.index);\n code += \"mul \" + temp + \",\" + deltaOffsetValue + \",\" + (this._iUsesCycle ? sin : animationRegisterData.vertexLife) + \"\\n\";\n code += \"add \" + temp + \",\" + temp + \",\" + startOffsetValue + \"\\n\";\n code += \"add \" + animationRegisterData.colorAddTarget + \",\" + temp + \",\" + animationRegisterData.colorAddTarget + \"\\n\";\n }\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleColorNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleColorNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {\n if (this._iUsesMultiplier)\n particleAnimationSet.hasColorMulNode = true;\n if (this._iUsesOffset)\n particleAnimationSet.hasColorAddNode = true;\n };\n /**\n * @inheritDoc\n */\n ParticleColorNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n var startColor = param[ParticleColorNode.COLOR_START_COLORTRANSFORM];\n if (!startColor)\n throw (new Error(\"there is no \" + ParticleColorNode.COLOR_START_COLORTRANSFORM + \" in param!\"));\n var endColor = param[ParticleColorNode.COLOR_END_COLORTRANSFORM];\n if (!endColor)\n throw (new Error(\"there is no \" + ParticleColorNode.COLOR_END_COLORTRANSFORM + \" in param!\"));\n var i = 0;\n if (!this._iUsesCycle) {\n //multiplier\n if (this._iUsesMultiplier) {\n this._pOneData[i++] = startColor.redMultiplier;\n this._pOneData[i++] = startColor.greenMultiplier;\n this._pOneData[i++] = startColor.blueMultiplier;\n this._pOneData[i++] = startColor.alphaMultiplier;\n this._pOneData[i++] = endColor.redMultiplier - startColor.redMultiplier;\n this._pOneData[i++] = endColor.greenMultiplier - startColor.greenMultiplier;\n this._pOneData[i++] = endColor.blueMultiplier - startColor.blueMultiplier;\n this._pOneData[i++] = endColor.alphaMultiplier - startColor.alphaMultiplier;\n }\n //offset\n if (this._iUsesOffset) {\n this._pOneData[i++] = startColor.redOffset / 255;\n this._pOneData[i++] = startColor.greenOffset / 255;\n this._pOneData[i++] = startColor.blueOffset / 255;\n this._pOneData[i++] = startColor.alphaOffset / 255;\n this._pOneData[i++] = (endColor.redOffset - startColor.redOffset) / 255;\n this._pOneData[i++] = (endColor.greenOffset - startColor.greenOffset) / 255;\n this._pOneData[i++] = (endColor.blueOffset - startColor.blueOffset) / 255;\n this._pOneData[i++] = (endColor.alphaOffset - startColor.alphaOffset) / 255;\n }\n }\n else {\n //multiplier\n if (this._iUsesMultiplier) {\n this._pOneData[i++] = (startColor.redMultiplier + endColor.redMultiplier) / 2;\n this._pOneData[i++] = (startColor.greenMultiplier + endColor.greenMultiplier) / 2;\n this._pOneData[i++] = (startColor.blueMultiplier + endColor.blueMultiplier) / 2;\n this._pOneData[i++] = (startColor.alphaMultiplier + endColor.alphaMultiplier) / 2;\n this._pOneData[i++] = (startColor.redMultiplier - endColor.redMultiplier) / 2;\n this._pOneData[i++] = (startColor.greenMultiplier - endColor.greenMultiplier) / 2;\n this._pOneData[i++] = (startColor.blueMultiplier - endColor.blueMultiplier) / 2;\n this._pOneData[i++] = (startColor.alphaMultiplier - endColor.alphaMultiplier) / 2;\n }\n //offset\n if (this._iUsesOffset) {\n this._pOneData[i++] = (startColor.redOffset + endColor.redOffset) / (255 * 2);\n this._pOneData[i++] = (startColor.greenOffset + endColor.greenOffset) / (255 * 2);\n this._pOneData[i++] = (startColor.blueOffset + endColor.blueOffset) / (255 * 2);\n this._pOneData[i++] = (startColor.alphaOffset + endColor.alphaOffset) / (255 * 2);\n this._pOneData[i++] = (startColor.redOffset - endColor.redOffset) / (255 * 2);\n this._pOneData[i++] = (startColor.greenOffset - endColor.greenOffset) / (255 * 2);\n this._pOneData[i++] = (startColor.blueOffset - endColor.blueOffset) / (255 * 2);\n this._pOneData[i++] = (startColor.alphaOffset - endColor.alphaOffset) / (255 * 2);\n }\n }\n };\n return ParticleColorNode;\n}(ParticleNodeBase));\nexport { ParticleColorNode };\n/**\n * Reference for color node properties on a single particle (when in local property mode).\n * Expects a ColorTransform object representing the start color transform applied to the particle.\n */\nParticleColorNode.COLOR_START_COLORTRANSFORM = \"ColorStartColorTransform\";\n/**\n * Reference for color node properties on a single particle (when in local property mode).\n * Expects a ColorTransform object representing the end color transform applied to the particle.\n */\nParticleColorNode.COLOR_END_COLORTRANSFORM = \"ColorEndColorTransform\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleColorNode.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D, MathConsts } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleFollowState = (function (_super) {\n tslib_1.__extends(ParticleFollowState, _super);\n function ParticleFollowState(animator, particleFollowNode) {\n var _this = _super.call(this, animator, particleFollowNode, true) || this;\n _this._targetPos = new Vector3D();\n _this._targetEuler = new Vector3D();\n //temporary vector3D for calculation\n _this._temp = new Vector3D();\n _this._particleFollowNode = particleFollowNode;\n _this._smooth = particleFollowNode._iSmooth;\n return _this;\n }\n Object.defineProperty(ParticleFollowState.prototype, \"followTarget\", {\n get: function () {\n return this._followTarget;\n },\n set: function (value) {\n this._followTarget = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleFollowState.prototype, \"smooth\", {\n get: function () {\n return this._smooth;\n },\n set: function (value) {\n this._smooth = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ParticleFollowState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (this._followTarget) {\n if (this._particleFollowNode._iUsesPosition) {\n this._targetPos.x = this._followTarget.transform.position.x / renderable.sourceEntity.transform.scale.x;\n this._targetPos.y = this._followTarget.transform.position.y / renderable.sourceEntity.transform.scale.y;\n this._targetPos.z = this._followTarget.transform.position.z / renderable.sourceEntity.transform.scale.z;\n }\n if (this._particleFollowNode._iUsesRotation) {\n this._targetEuler.x = this._followTarget.rotationX;\n this._targetEuler.y = this._followTarget.rotationY;\n this._targetEuler.z = this._followTarget.rotationZ;\n this._targetEuler.scaleBy(MathConsts.DEGREES_TO_RADIANS);\n }\n }\n //initialization\n if (!this._prePos)\n this._prePos = this._targetPos.clone();\n if (!this._preEuler)\n this._preEuler = this._targetEuler.clone();\n var currentTime = this._pTime / 1000;\n var previousTime = animationElements.previousTime;\n var deltaTime = currentTime - previousTime;\n var needProcess = previousTime != currentTime;\n if (this._particleFollowNode._iUsesPosition && this._particleFollowNode._iUsesRotation) {\n if (needProcess)\n this.processPositionAndRotation(currentTime, deltaTime, animationElements);\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleFollowState.FOLLOW_POSITION_INDEX), this._particleFollowNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleFollowState.FOLLOW_ROTATION_INDEX), this._particleFollowNode._iDataOffset + 3, stage, ContextGLVertexBufferFormat.FLOAT_3);\n }\n else if (this._particleFollowNode._iUsesPosition) {\n if (needProcess)\n this.processPosition(currentTime, deltaTime, animationElements);\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleFollowState.FOLLOW_POSITION_INDEX), this._particleFollowNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n }\n else if (this._particleFollowNode._iUsesRotation) {\n if (needProcess)\n this.precessRotation(currentTime, deltaTime, animationElements);\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleFollowState.FOLLOW_ROTATION_INDEX), this._particleFollowNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n }\n this._prePos.copyFrom(this._targetPos);\n this._targetEuler.copyFrom(this._targetEuler);\n animationElements.previousTime = currentTime;\n };\n ParticleFollowState.prototype.processPosition = function (currentTime, deltaTime, animationElements) {\n var data = animationElements.animationParticles;\n var vertexData = animationElements.vertexData;\n var changed = false;\n var len = data.length;\n var interpolatedPos;\n var posVelocity;\n if (this._smooth) {\n posVelocity = this._prePos.subtract(this._targetPos);\n posVelocity.scaleBy(1 / deltaTime);\n }\n else\n interpolatedPos = this._targetPos;\n for (var i = 0; i < len; i++) {\n var k = (currentTime - data[i].startTime) / data[i].totalTime;\n var t = (k - Math.floor(k)) * data[i].totalTime;\n if (t - deltaTime <= 0) {\n var inc = data[i].startVertexIndex * animationElements.totalLenOfOneVertex + this._particleFollowNode._iDataOffset;\n if (this._smooth) {\n this._temp.copyFrom(posVelocity);\n this._temp.scaleBy(t);\n interpolatedPos = this._targetPos.add(this._temp);\n }\n if (vertexData[inc] != interpolatedPos.x || vertexData[inc + 1] != interpolatedPos.y || vertexData[inc + 2] != interpolatedPos.z) {\n changed = true;\n for (var j = 0; j < data[i].numVertices; j++) {\n vertexData[inc++] = interpolatedPos.x;\n vertexData[inc++] = interpolatedPos.y;\n vertexData[inc++] = interpolatedPos.z;\n }\n }\n }\n }\n if (changed)\n animationElements.invalidateBuffer();\n };\n ParticleFollowState.prototype.precessRotation = function (currentTime, deltaTime, animationElements) {\n var data = animationElements.animationParticles;\n var vertexData = animationElements.vertexData;\n var changed = false;\n var len = data.length;\n var interpolatedRotation;\n var rotationVelocity;\n if (this._smooth) {\n rotationVelocity = this._preEuler.subtract(this._targetEuler);\n rotationVelocity.scaleBy(1 / deltaTime);\n }\n else\n interpolatedRotation = this._targetEuler;\n for (var i = 0; i < len; i++) {\n var k = (currentTime - data[i].startTime) / data[i].totalTime;\n var t = (k - Math.floor(k)) * data[i].totalTime;\n if (t - deltaTime <= 0) {\n var inc = data[i].startVertexIndex * animationElements.totalLenOfOneVertex + this._particleFollowNode._iDataOffset;\n if (this._smooth) {\n this._temp.copyFrom(rotationVelocity);\n this._temp.scaleBy(t);\n interpolatedRotation = this._targetEuler.add(this._temp);\n }\n if (vertexData[inc] != interpolatedRotation.x || vertexData[inc + 1] != interpolatedRotation.y || vertexData[inc + 2] != interpolatedRotation.z) {\n changed = true;\n for (var j = 0; j < data[i].numVertices; j++) {\n vertexData[inc++] = interpolatedRotation.x;\n vertexData[inc++] = interpolatedRotation.y;\n vertexData[inc++] = interpolatedRotation.z;\n }\n }\n }\n }\n if (changed)\n animationElements.invalidateBuffer();\n };\n ParticleFollowState.prototype.processPositionAndRotation = function (currentTime, deltaTime, animationElements) {\n var data = animationElements.animationParticles;\n var vertexData = animationElements.vertexData;\n var changed = false;\n var len = data.length;\n var interpolatedPos;\n var interpolatedRotation;\n var posVelocity;\n var rotationVelocity;\n if (this._smooth) {\n posVelocity = this._prePos.subtract(this._targetPos);\n posVelocity.scaleBy(1 / deltaTime);\n rotationVelocity = this._preEuler.subtract(this._targetEuler);\n rotationVelocity.scaleBy(1 / deltaTime);\n }\n else {\n interpolatedPos = this._targetPos;\n interpolatedRotation = this._targetEuler;\n }\n for (var i = 0; i < len; i++) {\n var k = (currentTime - data[i].startTime) / data[i].totalTime;\n var t = (k - Math.floor(k)) * data[i].totalTime;\n if (t - deltaTime <= 0) {\n var inc = data[i].startVertexIndex * animationElements.totalLenOfOneVertex + this._particleFollowNode._iDataOffset;\n if (this._smooth) {\n this._temp.copyFrom(posVelocity);\n this._temp.scaleBy(t);\n interpolatedPos = this._targetPos.add(this._temp);\n this._temp.copyFrom(rotationVelocity);\n this._temp.scaleBy(t);\n interpolatedRotation = this._targetEuler.add(this._temp);\n }\n if (vertexData[inc] != interpolatedPos.x || vertexData[inc + 1] != interpolatedPos.y || vertexData[inc + 2] != interpolatedPos.z || vertexData[inc + 3] != interpolatedRotation.x || vertexData[inc + 4] != interpolatedRotation.y || vertexData[inc + 5] != interpolatedRotation.z) {\n changed = true;\n for (var j = 0; j < data[i].numVertices; j++) {\n vertexData[inc++] = interpolatedPos.x;\n vertexData[inc++] = interpolatedPos.y;\n vertexData[inc++] = interpolatedPos.z;\n vertexData[inc++] = interpolatedRotation.x;\n vertexData[inc++] = interpolatedRotation.y;\n vertexData[inc++] = interpolatedRotation.z;\n }\n }\n }\n }\n if (changed)\n animationElements.invalidateBuffer();\n };\n return ParticleFollowState;\n}(ParticleStateBase));\nexport { ParticleFollowState };\n/** @private */\nParticleFollowState.FOLLOW_POSITION_INDEX = 0;\n/** @private */\nParticleFollowState.FOLLOW_ROTATION_INDEX = 1;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleFollowState.js","import * as tslib_1 from \"tslib\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleFollowState } from \"../states/ParticleFollowState\";\nimport { ParticleAnimationSet } from \"../ParticleAnimationSet\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to create a follow behaviour on a particle system.\n */\nvar ParticleFollowNode = (function (_super) {\n tslib_1.__extends(ParticleFollowNode, _super);\n /**\n * Creates a new ParticleFollowNode\n *\n * @param [optional] usesPosition Defines wehether the individual particle reacts to the position of the target.\n * @param [optional] usesRotation Defines wehether the individual particle reacts to the rotation of the target.\n * @param [optional] smooth Defines wehether the state calculate the interpolated value.\n */\n function ParticleFollowNode(usesPosition, usesRotation, smooth) {\n if (usesPosition === void 0) { usesPosition = true; }\n if (usesRotation === void 0) { usesRotation = true; }\n if (smooth === void 0) { smooth = false; }\n var _this = _super.call(this, \"ParticleFollow\", ParticlePropertiesMode.LOCAL_DYNAMIC, (usesPosition && usesRotation) ? 6 : 3, ParticleAnimationSet.POST_PRIORITY) || this;\n _this._pStateClass = ParticleFollowState;\n _this._iUsesPosition = usesPosition;\n _this._iUsesRotation = usesRotation;\n _this._iSmooth = smooth;\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleFollowNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n //TODO: use Quaternion to implement this function\n var code = \"\";\n if (this._iUsesRotation) {\n var rotationAttribute = registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleFollowState.FOLLOW_ROTATION_INDEX, rotationAttribute.index);\n var temp1 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp1, 1);\n var temp2 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp2, 1);\n var temp3 = registerCache.getFreeVertexVectorTemp();\n var temp4;\n if (animationSet.hasBillboard) {\n registerCache.addVertexTempUsages(temp3, 1);\n temp4 = registerCache.getFreeVertexVectorTemp();\n }\n registerCache.removeVertexTempUsage(temp1);\n registerCache.removeVertexTempUsage(temp2);\n if (animationSet.hasBillboard)\n registerCache.removeVertexTempUsage(temp3);\n var len = animationRegisterData.rotationRegisters.length;\n var i;\n //x axis\n code += \"mov \" + temp1 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp1 + \".x,\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"mov \" + temp3 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"sin \" + temp3 + \".y,\" + rotationAttribute + \".x\\n\";\n code += \"cos \" + temp3 + \".z,\" + rotationAttribute + \".x\\n\";\n code += \"mov \" + temp2 + \".x,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp2 + \".y,\" + temp3 + \".z\\n\";\n code += \"neg \" + temp2 + \".z,\" + temp3 + \".y\\n\";\n if (animationSet.hasBillboard)\n code += \"m33 \" + temp4 + \".xyz,\" + animationRegisterData.positionTarget + \".xyz,\" + temp1 + \"\\n\";\n else {\n code += \"m33 \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n for (i = 0; i < len; i++)\n code += \"m33 \" + animationRegisterData.rotationRegisters[i] + \".xyz,\" + animationRegisterData.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n }\n //y axis\n code += \"mov \" + temp1 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"cos \" + temp1 + \".x,\" + rotationAttribute + \".y\\n\";\n code += \"sin \" + temp1 + \".z,\" + rotationAttribute + \".y\\n\";\n code += \"mov \" + temp2 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp2 + \".y,\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"mov \" + temp3 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"neg \" + temp3 + \".x,\" + temp1 + \".z\\n\";\n code += \"mov \" + temp3 + \".z,\" + temp1 + \".x\\n\";\n if (animationSet.hasBillboard)\n code += \"m33 \" + temp4 + \".xyz,\" + temp4 + \".xyz,\" + temp1 + \"\\n\";\n else {\n code += \"m33 \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n for (i = 0; i < len; i++)\n code += \"m33 \" + animationRegisterData.rotationRegisters[i] + \".xyz,\" + animationRegisterData.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n }\n //z axis\n code += \"mov \" + temp2 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"sin \" + temp2 + \".x,\" + rotationAttribute + \".z\\n\";\n code += \"cos \" + temp2 + \".y,\" + rotationAttribute + \".z\\n\";\n code += \"mov \" + temp1 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp1 + \".x,\" + temp2 + \".y\\n\";\n code += \"neg \" + temp1 + \".y,\" + temp2 + \".x\\n\";\n code += \"mov \" + temp3 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp3 + \".z,\" + animationRegisterData.vertexOneConst + \"\\n\";\n if (animationSet.hasBillboard) {\n code += \"m33 \" + temp4 + \".xyz,\" + temp4 + \".xyz,\" + temp1 + \"\\n\";\n code += \"sub \" + temp4 + \".xyz,\" + temp4 + \".xyz,\" + animationRegisterData.positionTarget + \".xyz\\n\";\n code += \"add \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + temp4 + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz\\n\";\n }\n else {\n code += \"m33 \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n for (i = 0; i < len; i++)\n code += \"m33 \" + animationRegisterData.rotationRegisters[i] + \".xyz,\" + animationRegisterData.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n }\n }\n if (this._iUsesPosition) {\n var positionAttribute = registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleFollowState.FOLLOW_POSITION_INDEX, positionAttribute.index);\n code += \"add \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + positionAttribute + \",\" + animationRegisterData.scaleAndRotateTarget + \".xyz\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleFollowNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n return ParticleFollowNode;\n}(ParticleNodeBase));\nexport { ParticleFollowNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleFollowNode.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n*\n*/\nvar ParticleInitialColorState = (function (_super) {\n tslib_1.__extends(ParticleInitialColorState, _super);\n function ParticleInitialColorState(animator, particleInitialColorNode) {\n var _this = _super.call(this, animator, particleInitialColorNode) || this;\n _this._particleInitialColorNode = particleInitialColorNode;\n _this._usesMultiplier = particleInitialColorNode._iUsesMultiplier;\n _this._usesOffset = particleInitialColorNode._iUsesOffset;\n _this._initialColor = particleInitialColorNode._iInitialColor;\n _this.updateColorData();\n return _this;\n }\n Object.defineProperty(ParticleInitialColorState.prototype, \"initialColor\", {\n /**\n * Defines the initial color transform of the state, when in global mode.\n */\n get: function () {\n return this._initialColor;\n },\n set: function (value) {\n this._initialColor = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ParticleInitialColorState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (shader.usesFragmentAnimation) {\n var index;\n if (this._particleInitialColorNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {\n var dataOffset = this._particleInitialColorNode._iDataOffset;\n if (this._usesMultiplier) {\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleInitialColorState.MULTIPLIER_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n dataOffset += 4;\n }\n if (this._usesOffset)\n animationElements.activateVertexBuffer(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleInitialColorState.OFFSET_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n }\n else {\n if (this._usesMultiplier)\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleInitialColorState.MULTIPLIER_INDEX), this._multiplierData.x, this._multiplierData.y, this._multiplierData.z, this._multiplierData.w);\n if (this._usesOffset)\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleInitialColorState.OFFSET_INDEX), this._offsetData.x, this._offsetData.y, this._offsetData.z, this._offsetData.w);\n }\n }\n };\n ParticleInitialColorState.prototype.updateColorData = function () {\n if (this._particleInitialColorNode.mode == ParticlePropertiesMode.GLOBAL) {\n if (this._usesMultiplier)\n this._multiplierData = new Vector3D(this._initialColor.redMultiplier, this._initialColor.greenMultiplier, this._initialColor.blueMultiplier, this._initialColor.alphaMultiplier);\n if (this._usesOffset)\n this._offsetData = new Vector3D(this._initialColor.redOffset / 255, this._initialColor.greenOffset / 255, this._initialColor.blueOffset / 255, this._initialColor.alphaOffset / 255);\n }\n };\n return ParticleInitialColorState;\n}(ParticleStateBase));\nexport { ParticleInitialColorState };\n/** @private */\nParticleInitialColorState.MULTIPLIER_INDEX = 0;\n/** @private */\nParticleInitialColorState.OFFSET_INDEX = 1;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleInitialColorState.js","import * as tslib_1 from \"tslib\";\nimport { ColorTransform } from \"@awayjs/core\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleInitialColorState } from \"../states/ParticleInitialColorState\";\nimport { ParticleAnimationSet } from \"../ParticleAnimationSet\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n *\n */\nvar ParticleInitialColorNode = (function (_super) {\n tslib_1.__extends(ParticleInitialColorNode, _super);\n function ParticleInitialColorNode(mode, usesMultiplier, usesOffset, initialColor) {\n if (usesMultiplier === void 0) { usesMultiplier = true; }\n if (usesOffset === void 0) { usesOffset = false; }\n if (initialColor === void 0) { initialColor = null; }\n var _this = _super.call(this, \"ParticleInitialColor\", mode, (usesMultiplier && usesOffset) ? 8 : 4, ParticleAnimationSet.COLOR_PRIORITY) || this;\n _this._pStateClass = ParticleInitialColorState;\n _this._iUsesMultiplier = usesMultiplier;\n _this._iUsesOffset = usesOffset;\n _this._iInitialColor = initialColor || new ColorTransform();\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleInitialColorNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var code = \"\";\n if (shader.usesFragmentAnimation) {\n if (this._iUsesMultiplier) {\n var multiplierValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleInitialColorState.MULTIPLIER_INDEX, multiplierValue.index);\n code += \"mul \" + animationRegisterData.colorMulTarget + \",\" + multiplierValue + \",\" + animationRegisterData.colorMulTarget + \"\\n\";\n }\n if (this._iUsesOffset) {\n var offsetValue = (this._pMode == ParticlePropertiesMode.LOCAL_STATIC) ? registerCache.getFreeVertexAttribute() : registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleInitialColorState.OFFSET_INDEX, offsetValue.index);\n code += \"add \" + animationRegisterData.colorAddTarget + \",\" + offsetValue + \",\" + animationRegisterData.colorAddTarget + \"\\n\";\n }\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleInitialColorNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {\n if (this._iUsesMultiplier)\n particleAnimationSet.hasColorMulNode = true;\n if (this._iUsesOffset)\n particleAnimationSet.hasColorAddNode = true;\n };\n /**\n * @inheritDoc\n */\n ParticleInitialColorNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n var initialColor = param[ParticleInitialColorNode.COLOR_INITIAL_COLORTRANSFORM];\n if (!initialColor)\n throw (new Error(\"there is no \" + ParticleInitialColorNode.COLOR_INITIAL_COLORTRANSFORM + \" in param!\"));\n var i = 0;\n //multiplier\n if (this._iUsesMultiplier) {\n this._pOneData[i++] = initialColor.redMultiplier;\n this._pOneData[i++] = initialColor.greenMultiplier;\n this._pOneData[i++] = initialColor.blueMultiplier;\n this._pOneData[i++] = initialColor.alphaMultiplier;\n }\n //offset\n if (this._iUsesOffset) {\n this._pOneData[i++] = initialColor.redOffset / 255;\n this._pOneData[i++] = initialColor.greenOffset / 255;\n this._pOneData[i++] = initialColor.blueOffset / 255;\n this._pOneData[i++] = initialColor.alphaOffset / 255;\n }\n };\n return ParticleInitialColorNode;\n}(ParticleNodeBase));\nexport { ParticleInitialColorNode };\n/**\n * Reference for color node properties on a single particle (when in local property mode).\n * Expects a ColorTransform object representing the color transform applied to the particle.\n */\nParticleInitialColorNode.COLOR_INITIAL_COLORTRANSFORM = \"ColorInitialColorTransform\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleInitialColorNode.js","import * as tslib_1 from \"tslib\";\nimport { Matrix3D, Vector3D } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleOrbitState = (function (_super) {\n tslib_1.__extends(ParticleOrbitState, _super);\n function ParticleOrbitState(animator, particleOrbitNode) {\n var _this = _super.call(this, animator, particleOrbitNode) || this;\n _this._particleOrbitNode = particleOrbitNode;\n _this._usesEulers = _this._particleOrbitNode._iUsesEulers;\n _this._usesCycle = _this._particleOrbitNode._iUsesCycle;\n _this._usesPhase = _this._particleOrbitNode._iUsesPhase;\n _this._eulers = _this._particleOrbitNode._iEulers;\n _this._radius = _this._particleOrbitNode._iRadius;\n _this._cycleDuration = _this._particleOrbitNode._iCycleDuration;\n _this._cyclePhase = _this._particleOrbitNode._iCyclePhase;\n _this.updateOrbitData();\n return _this;\n }\n Object.defineProperty(ParticleOrbitState.prototype, \"radius\", {\n /**\n * Defines the radius of the orbit when in global mode. Defaults to 100.\n */\n get: function () {\n return this._radius;\n },\n set: function (value) {\n this._radius = value;\n this.updateOrbitData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleOrbitState.prototype, \"cycleDuration\", {\n /**\n * Defines the duration of the orbit in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.\n */\n get: function () {\n return this._cycleDuration;\n },\n set: function (value) {\n this._cycleDuration = value;\n this.updateOrbitData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleOrbitState.prototype, \"cyclePhase\", {\n /**\n * Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.\n */\n get: function () {\n return this._cyclePhase;\n },\n set: function (value) {\n this._cyclePhase = value;\n this.updateOrbitData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleOrbitState.prototype, \"eulers\", {\n /**\n * Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode.\n */\n get: function () {\n return this._eulers;\n },\n set: function (value) {\n this._eulers = value;\n this.updateOrbitData();\n },\n enumerable: true,\n configurable: true\n });\n ParticleOrbitState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleOrbitState.ORBIT_INDEX);\n if (this._particleOrbitNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {\n if (this._usesPhase)\n animationElements.activateVertexBuffer(index, this._particleOrbitNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n else\n animationElements.activateVertexBuffer(index, this._particleOrbitNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n }\n else\n shader.setVertexConst(index, this._orbitData.x, this._orbitData.y, this._orbitData.z, this._orbitData.w);\n if (this._usesEulers)\n shader.setVertexConstFromMatrix(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleOrbitState.EULERS_INDEX), this._eulersMatrix);\n };\n ParticleOrbitState.prototype.updateOrbitData = function () {\n if (this._usesEulers) {\n this._eulersMatrix = new Matrix3D();\n this._eulersMatrix.appendRotation(this._eulers.x, Vector3D.X_AXIS);\n this._eulersMatrix.appendRotation(this._eulers.y, Vector3D.Y_AXIS);\n this._eulersMatrix.appendRotation(this._eulers.z, Vector3D.Z_AXIS);\n }\n if (this._particleOrbitNode.mode == ParticlePropertiesMode.GLOBAL) {\n this._orbitData = new Vector3D(this._radius, 0, this._radius * Math.PI * 2, this._cyclePhase * Math.PI / 180);\n if (this._usesCycle) {\n if (this._cycleDuration <= 0)\n throw (new Error(\"the cycle duration must be greater than zero\"));\n this._orbitData.y = Math.PI * 2 / this._cycleDuration;\n }\n else\n this._orbitData.y = Math.PI * 2;\n }\n };\n return ParticleOrbitState;\n}(ParticleStateBase));\nexport { ParticleOrbitState };\n/** @private */\nParticleOrbitState.ORBIT_INDEX = 0;\n/** @private */\nParticleOrbitState.EULERS_INDEX = 1;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleOrbitState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ShaderRegisterElement } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleOrbitState } from \"../states/ParticleOrbitState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to control the position of a particle over time around a circular orbit.\n */\nvar ParticleOrbitNode = (function (_super) {\n tslib_1.__extends(ParticleOrbitNode, _super);\n /**\n * Creates a new ParticleOrbitNode object.\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] usesEulers Defines whether the node uses the eulers property in the shader to calculate a rotation on the orbit. Defaults to true.\n * @param [optional] usesCycle Defines whether the node uses the cycleDuration property in the shader to calculate the period of the orbit independent of particle duration. Defaults to false.\n * @param [optional] usesPhase Defines whether the node uses the cyclePhase property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false.\n * @param [optional] radius Defines the radius of the orbit when in global mode. Defaults to 100.\n * @param [optional] cycleDuration Defines the duration of the orbit in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.\n * @param [optional] cyclePhase Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.\n * @param [optional] eulers Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode.\n */\n function ParticleOrbitNode(mode, usesEulers, usesCycle, usesPhase, radius, cycleDuration, cyclePhase, eulers) {\n if (usesEulers === void 0) { usesEulers = true; }\n if (usesCycle === void 0) { usesCycle = false; }\n if (usesPhase === void 0) { usesPhase = false; }\n if (radius === void 0) { radius = 100; }\n if (cycleDuration === void 0) { cycleDuration = 1; }\n if (cyclePhase === void 0) { cyclePhase = 0; }\n if (eulers === void 0) { eulers = null; }\n var _this;\n var len = 3;\n if (usesPhase)\n len++;\n _this = _super.call(this, \"ParticleOrbit\", mode, len) || this;\n _this._pStateClass = ParticleOrbitState;\n _this._iUsesEulers = usesEulers;\n _this._iUsesCycle = usesCycle;\n _this._iUsesPhase = usesPhase;\n _this._iRadius = radius;\n _this._iCycleDuration = cycleDuration;\n _this._iCyclePhase = cyclePhase;\n _this._iEulers = eulers || new Vector3D();\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleOrbitNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var orbitRegister = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleOrbitState.ORBIT_INDEX, orbitRegister.index);\n var eulersMatrixRegister = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleOrbitState.EULERS_INDEX, eulersMatrixRegister.index);\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n var temp1 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp1, 1);\n var distance = new ShaderRegisterElement(temp1.regName, temp1.index);\n var temp2 = registerCache.getFreeVertexVectorTemp();\n var cos = new ShaderRegisterElement(temp2.regName, temp2.index, 0);\n var sin = new ShaderRegisterElement(temp2.regName, temp2.index, 1);\n var degree = new ShaderRegisterElement(temp2.regName, temp2.index, 2);\n registerCache.removeVertexTempUsage(temp1);\n var code = \"\";\n if (this._iUsesCycle) {\n code += \"mul \" + degree + \",\" + animationRegisterData.vertexTime + \",\" + orbitRegister + \".y\\n\";\n if (this._iUsesPhase)\n code += \"add \" + degree + \",\" + degree + \",\" + orbitRegister + \".w\\n\";\n }\n else\n code += \"mul \" + degree + \",\" + animationRegisterData.vertexLife + \",\" + orbitRegister + \".y\\n\";\n code += \"cos \" + cos + \",\" + degree + \"\\n\";\n code += \"sin \" + sin + \",\" + degree + \"\\n\";\n code += \"mul \" + distance + \".x,\" + cos + \",\" + orbitRegister + \".x\\n\";\n code += \"mul \" + distance + \".y,\" + sin + \",\" + orbitRegister + \".x\\n\";\n code += \"mov \" + distance + \".wz\" + animationRegisterData.vertexZeroConst + \"\\n\";\n if (this._iUsesEulers)\n code += \"m44 \" + distance + \",\" + distance + \",\" + eulersMatrixRegister + \"\\n\";\n code += \"add \" + animationRegisterData.positionTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterData.positionTarget + \".xyz\\n\";\n if (animationSet.needVelocity) {\n code += \"neg \" + distance + \".x,\" + sin + \"\\n\";\n code += \"mov \" + distance + \".y,\" + cos + \"\\n\";\n code += \"mov \" + distance + \".zw,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n if (this._iUsesEulers)\n code += \"m44 \" + distance + \",\" + distance + \",\" + eulersMatrixRegister + \"\\n\";\n code += \"mul \" + distance + \",\" + distance + \",\" + orbitRegister + \".z\\n\";\n code += \"div \" + distance + \",\" + distance + \",\" + orbitRegister + \".y\\n\";\n if (!this._iUsesCycle)\n code += \"div \" + distance + \",\" + distance + \",\" + animationRegisterData.vertexLife + \"\\n\";\n code += \"add \" + animationRegisterData.velocityTarget + \".xyz,\" + animationRegisterData.velocityTarget + \".xyz,\" + distance + \".xyz\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleOrbitNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleOrbitNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n //Vector3D.x is radius, Vector3D.y is cycle duration, Vector3D.z is phase\n var orbit = param[ParticleOrbitNode.ORBIT_VECTOR3D];\n if (!orbit)\n throw new Error(\"there is no \" + ParticleOrbitNode.ORBIT_VECTOR3D + \" in param!\");\n this._pOneData[0] = orbit.x;\n if (this._iUsesCycle && orbit.y <= 0)\n throw (new Error(\"the cycle duration must be greater than zero\"));\n this._pOneData[1] = Math.PI * 2 / (!this._iUsesCycle ? 1 : orbit.y);\n this._pOneData[2] = orbit.x * Math.PI * 2;\n if (this._iUsesPhase)\n this._pOneData[3] = orbit.z * Math.PI / 180;\n };\n return ParticleOrbitNode;\n}(ParticleNodeBase));\nexport { ParticleOrbitNode };\n/**\n * Reference for orbit node properties on a single particle (when in local property mode).\n * Expects a Vector3D object representing the radius (x), cycle speed (y) and cycle phase (z) of the motion on the particle.\n */\nParticleOrbitNode.ORBIT_VECTOR3D = \"OrbitVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleOrbitNode.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleOscillatorState = (function (_super) {\n tslib_1.__extends(ParticleOscillatorState, _super);\n function ParticleOscillatorState(animator, particleOscillatorNode) {\n var _this = _super.call(this, animator, particleOscillatorNode) || this;\n _this._particleOscillatorNode = particleOscillatorNode;\n _this._oscillator = _this._particleOscillatorNode._iOscillator;\n _this.updateOscillatorData();\n return _this;\n }\n Object.defineProperty(ParticleOscillatorState.prototype, \"oscillator\", {\n /**\n * Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the state, used when in global mode.\n */\n get: function () {\n return this._oscillator;\n },\n set: function (value) {\n this._oscillator = value;\n this.updateOscillatorData();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ParticleOscillatorState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleOscillatorState.OSCILLATOR_INDEX);\n if (this._particleOscillatorNode.mode == ParticlePropertiesMode.LOCAL_STATIC)\n animationElements.activateVertexBuffer(index, this._particleOscillatorNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n else\n shader.setVertexConst(index, this._oscillatorData.x, this._oscillatorData.y, this._oscillatorData.z, this._oscillatorData.w);\n };\n ParticleOscillatorState.prototype.updateOscillatorData = function () {\n if (this._particleOscillatorNode.mode == ParticlePropertiesMode.GLOBAL) {\n if (this._oscillator.w <= 0)\n throw (new Error(\"the cycle duration must greater than zero\"));\n if (this._oscillatorData == null)\n this._oscillatorData = new Vector3D();\n this._oscillatorData.x = this._oscillator.x;\n this._oscillatorData.y = this._oscillator.y;\n this._oscillatorData.z = this._oscillator.z;\n this._oscillatorData.w = Math.PI * 2 / this._oscillator.w;\n }\n };\n return ParticleOscillatorState;\n}(ParticleStateBase));\nexport { ParticleOscillatorState };\n/** @private */\nParticleOscillatorState.OSCILLATOR_INDEX = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleOscillatorState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ShaderRegisterElement } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleOscillatorState } from \"../states/ParticleOscillatorState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to control the position of a particle over time using simple harmonic motion.\n */\nvar ParticleOscillatorNode = (function (_super) {\n tslib_1.__extends(ParticleOscillatorNode, _super);\n /**\n * Creates a new ParticleOscillatorNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] oscillator Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the node, used when in global mode.\n */\n function ParticleOscillatorNode(mode, oscillator) {\n if (oscillator === void 0) { oscillator = null; }\n var _this = _super.call(this, \"ParticleOscillator\", mode, 4) || this;\n _this._pStateClass = ParticleOscillatorState;\n _this._iOscillator = oscillator || new Vector3D();\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleOscillatorNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var oscillatorRegister = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleOscillatorState.OSCILLATOR_INDEX, oscillatorRegister.index);\n var temp = registerCache.getFreeVertexVectorTemp();\n var dgree = new ShaderRegisterElement(temp.regName, temp.index, 0);\n var sin = new ShaderRegisterElement(temp.regName, temp.index, 1);\n var cos = new ShaderRegisterElement(temp.regName, temp.index, 2);\n registerCache.addVertexTempUsages(temp, 1);\n var temp2 = registerCache.getFreeVertexVectorTemp();\n var distance = new ShaderRegisterElement(temp2.regName, temp2.index);\n registerCache.removeVertexTempUsage(temp);\n var code = \"\";\n code += \"mul \" + dgree + \",\" + animationRegisterData.vertexTime + \",\" + oscillatorRegister + \".w\\n\";\n code += \"sin \" + sin + \",\" + dgree + \"\\n\";\n code += \"mul \" + distance + \".xyz,\" + sin + \",\" + oscillatorRegister + \".xyz\\n\";\n code += \"add \" + animationRegisterData.positionTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterData.positionTarget + \".xyz\\n\";\n if (animationSet.needVelocity) {\n code += \"cos \" + cos + \",\" + dgree + \"\\n\";\n code += \"mul \" + distance + \".xyz,\" + cos + \",\" + oscillatorRegister + \".xyz\\n\";\n code += \"add \" + animationRegisterData.velocityTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterData.velocityTarget + \".xyz\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleOscillatorNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleOscillatorNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n //(Vector3D.x,Vector3D.y,Vector3D.z) is oscillator axis, Vector3D.w is oscillator cycle duration\n var drift = param[ParticleOscillatorNode.OSCILLATOR_VECTOR3D];\n if (!drift)\n throw (new Error(\"there is no \" + ParticleOscillatorNode.OSCILLATOR_VECTOR3D + \" in param!\"));\n this._pOneData[0] = drift.x;\n this._pOneData[1] = drift.y;\n this._pOneData[2] = drift.z;\n if (drift.w <= 0)\n throw (new Error(\"the cycle duration must greater than zero\"));\n this._pOneData[3] = Math.PI * 2 / drift.w;\n };\n return ParticleOscillatorNode;\n}(ParticleNodeBase));\nexport { ParticleOscillatorNode };\n/**\n * Reference for ocsillator node properties on a single particle (when in local property mode).\n * Expects a Vector3D object representing the axis (x,y,z) and cycle speed (w) of the motion on the particle.\n */\nParticleOscillatorNode.OSCILLATOR_VECTOR3D = \"OscillatorVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleOscillatorNode.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n * @author ...\n */\nvar ParticlePositionState = (function (_super) {\n tslib_1.__extends(ParticlePositionState, _super);\n function ParticlePositionState(animator, particlePositionNode) {\n var _this = _super.call(this, animator, particlePositionNode) || this;\n _this._particlePositionNode = particlePositionNode;\n _this._position = _this._particlePositionNode._iPosition;\n return _this;\n }\n Object.defineProperty(ParticlePositionState.prototype, \"position\", {\n /**\n * Defines the position of the particle when in global mode. Defaults to 0,0,0.\n */\n get: function () {\n return this._position;\n },\n set: function (value) {\n this._position = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n */\n ParticlePositionState.prototype.getPositions = function () {\n return this._pDynamicProperties;\n };\n ParticlePositionState.prototype.setPositions = function (value) {\n this._pDynamicProperties = value;\n this._pDynamicPropertiesDirty = new Object();\n };\n /**\n * @inheritDoc\n */\n ParticlePositionState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (this._particlePositionNode.mode == ParticlePropertiesMode.LOCAL_DYNAMIC && !this._pDynamicPropertiesDirty[animationElements._iUniqueId])\n this._pUpdateDynamicProperties(animationElements);\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticlePositionState.POSITION_INDEX);\n if (this._particlePositionNode.mode == ParticlePropertiesMode.GLOBAL)\n shader.setVertexConst(index, this._position.x, this._position.y, this._position.z);\n else\n animationElements.activateVertexBuffer(index, this._particlePositionNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n };\n return ParticlePositionState;\n}(ParticleStateBase));\nexport { ParticlePositionState };\n/** @private */\nParticlePositionState.POSITION_INDEX = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticlePositionState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticlePositionState } from \"../states/ParticlePositionState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to set the starting position of a particle.\n */\nvar ParticlePositionNode = (function (_super) {\n tslib_1.__extends(ParticlePositionNode, _super);\n /**\n * Creates a new ParticlePositionNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] position Defines the default position of the particle when in global mode. Defaults to 0,0,0.\n */\n function ParticlePositionNode(mode, position) {\n if (position === void 0) { position = null; }\n var _this = _super.call(this, \"ParticlePosition\", mode, 3) || this;\n _this._pStateClass = ParticlePositionState;\n _this._iPosition = position || new Vector3D();\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticlePositionNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var positionAttribute = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticlePositionState.POSITION_INDEX, positionAttribute.index);\n return \"add \" + animationRegisterData.positionTarget + \".xyz,\" + positionAttribute + \".xyz,\" + animationRegisterData.positionTarget + \".xyz\\n\";\n };\n /**\n * @inheritDoc\n */\n ParticlePositionNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticlePositionNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n var offset = param[ParticlePositionNode.POSITION_VECTOR3D];\n if (!offset)\n throw (new Error(\"there is no \" + ParticlePositionNode.POSITION_VECTOR3D + \" in param!\"));\n this._pOneData[0] = offset.x;\n this._pOneData[1] = offset.y;\n this._pOneData[2] = offset.z;\n };\n return ParticlePositionNode;\n}(ParticleNodeBase));\nexport { ParticlePositionNode };\n/**\n * Reference for position node properties on a single particle (when in local property mode).\n * Expects a Vector3D object representing position of the particle.\n */\nParticlePositionNode.POSITION_VECTOR3D = \"PositionVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticlePositionNode.js","import * as tslib_1 from \"tslib\";\nimport { Matrix3D } from \"@awayjs/core\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleRotateToHeadingState = (function (_super) {\n tslib_1.__extends(ParticleRotateToHeadingState, _super);\n function ParticleRotateToHeadingState(animator, particleNode) {\n var _this = _super.call(this, animator, particleNode) || this;\n _this._matrix = new Matrix3D();\n return _this;\n }\n ParticleRotateToHeadingState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (this._pParticleAnimator.animationSet.hasBillboard) {\n this._matrix.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D);\n this._matrix.append(projection.transform.inverseConcatenatedMatrix3D);\n shader.setVertexConstFromMatrix(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleRotateToHeadingState.MATRIX_INDEX), this._matrix);\n }\n };\n return ParticleRotateToHeadingState;\n}(ParticleStateBase));\nexport { ParticleRotateToHeadingState };\n/** @private */\nParticleRotateToHeadingState.MATRIX_INDEX = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleRotateToHeadingState.js","import * as tslib_1 from \"tslib\";\nimport { ShaderRegisterElement } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleRotateToHeadingState } from \"../states/ParticleRotateToHeadingState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to control the rotation of a particle to match its heading vector.\n */\nvar ParticleRotateToHeadingNode = (function (_super) {\n tslib_1.__extends(ParticleRotateToHeadingNode, _super);\n /**\n * Creates a new ParticleBillboardNode\n */\n function ParticleRotateToHeadingNode() {\n var _this = _super.call(this, \"ParticleRotateToHeading\", ParticlePropertiesMode.GLOBAL, 0, 3) || this;\n _this._pStateClass = ParticleRotateToHeadingState;\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleRotateToHeadingNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var code = \"\";\n var len = animationRegisterData.rotationRegisters.length;\n var i;\n if (animationSet.hasBillboard) {\n var temp1 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp1, 1);\n var temp2 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp2, 1);\n var temp3 = registerCache.getFreeVertexVectorTemp();\n var rotationMatrixRegister = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleRotateToHeadingState.MATRIX_INDEX, rotationMatrixRegister.index);\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.removeVertexTempUsage(temp1);\n registerCache.removeVertexTempUsage(temp2);\n //process the velocity\n code += \"m33 \" + temp1 + \".xyz,\" + animationRegisterData.velocityTarget + \".xyz,\" + rotationMatrixRegister + \"\\n\";\n code += \"mov \" + temp3 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp3 + \".xy,\" + temp1 + \".xy\\n\";\n code += \"nrm \" + temp3 + \".xyz,\" + temp3 + \".xyz\\n\";\n //temp3.x=cos,temp3.y=sin\n //only process z axis\n code += \"mov \" + temp2 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp2 + \".x,\" + temp3 + \".y\\n\";\n code += \"mov \" + temp2 + \".y,\" + temp3 + \".x\\n\";\n code += \"mov \" + temp1 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp1 + \".x,\" + temp3 + \".x\\n\";\n code += \"neg \" + temp1 + \".y,\" + temp3 + \".y\\n\";\n code += \"mov \" + temp3 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp3 + \".z,\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"m33 \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n for (i = 0; i < len; i++)\n code += \"m33 \" + animationRegisterData.rotationRegisters[i] + \".xyz,\" + animationRegisterData.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n }\n else {\n var nrmVel = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(nrmVel, 1);\n var xAxis = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(xAxis, 1);\n var R = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(R, 1);\n var R_rev = registerCache.getFreeVertexVectorTemp();\n var cos = new ShaderRegisterElement(R.regName, R.index, 3);\n var sin = new ShaderRegisterElement(R_rev.regName, R_rev.index, 3);\n var cos2 = new ShaderRegisterElement(nrmVel.regName, nrmVel.index, 3);\n var tempSingle = sin;\n registerCache.removeVertexTempUsage(nrmVel);\n registerCache.removeVertexTempUsage(xAxis);\n registerCache.removeVertexTempUsage(R);\n code += \"mov \" + xAxis + \".x,\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"mov \" + xAxis + \".yz,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"nrm \" + nrmVel + \".xyz,\" + animationRegisterData.velocityTarget + \".xyz\\n\";\n code += \"dp3 \" + cos2 + \",\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"crs \" + nrmVel + \".xyz,\" + xAxis + \".xyz,\" + nrmVel + \".xyz\\n\";\n code += \"nrm \" + nrmVel + \".xyz,\" + nrmVel + \".xyz\\n\";\n //use R as temp to judge if nrm is (0,0,0).\n //if nrm is (0,0,0) ,change it to (0,0,1).\n code += \"dp3 \" + R + \".x,\" + nrmVel + \".xyz,\" + nrmVel + \".xyz\\n\";\n code += \"sge \" + R + \".x,\" + animationRegisterData.vertexZeroConst + \",\" + R + \".x\\n\";\n code += \"add \" + nrmVel + \".z,\" + R + \".x,\" + nrmVel + \".z\\n\";\n code += \"add \" + tempSingle + \",\" + cos2 + \",\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"div \" + tempSingle + \",\" + tempSingle + \",\" + animationRegisterData.vertexTwoConst + \"\\n\";\n code += \"sqt \" + cos + \",\" + tempSingle + \"\\n\";\n code += \"sub \" + tempSingle + \",\" + animationRegisterData.vertexOneConst + \",\" + cos2 + \"\\n\";\n code += \"div \" + tempSingle + \",\" + tempSingle + \",\" + animationRegisterData.vertexTwoConst + \"\\n\";\n code += \"sqt \" + sin + \",\" + tempSingle + \"\\n\";\n code += \"mul \" + R + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n //use cos as R.w\n code += \"mul \" + R_rev + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n code += \"neg \" + R_rev + \".xyz,\" + R_rev + \".xyz\\n\";\n //use cos as R_rev.w\n //nrmVel and xAxis are used as temp register\n code += \"crs \" + nrmVel + \".xyz,\" + R + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz\\n\";\n //use cos as R.w\n code += \"mul \" + xAxis + \".xyz,\" + cos + \",\" + animationRegisterData.scaleAndRotateTarget + \".xyz\\n\";\n code += \"add \" + nrmVel + \".xyz,\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"dp3 \" + xAxis + \".w,\" + R + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz\\n\";\n code += \"neg \" + nrmVel + \".w,\" + xAxis + \".w\\n\";\n code += \"crs \" + R + \".xyz,\" + nrmVel + \".xyz,\" + R_rev + \".xyz\\n\";\n //code += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" +R_rev + \".w\\n\";\n code += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" + cos + \"\\n\";\n code += \"add \" + R + \".xyz,\" + R + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"mul \" + xAxis + \".xyz,\" + nrmVel + \".w,\" + R_rev + \".xyz\\n\";\n code += \"add \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + R + \".xyz,\" + xAxis + \".xyz\\n\";\n for (i = 0; i < len; i++) {\n //just repeat the calculate above\n //because of the limited registers, no need to optimise\n code += \"mov \" + xAxis + \".x,\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"mov \" + xAxis + \".yz,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"nrm \" + nrmVel + \".xyz,\" + animationRegisterData.velocityTarget + \".xyz\\n\";\n code += \"dp3 \" + cos2 + \",\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"crs \" + nrmVel + \".xyz,\" + xAxis + \".xyz,\" + nrmVel + \".xyz\\n\";\n code += \"nrm \" + nrmVel + \".xyz,\" + nrmVel + \".xyz\\n\";\n code += \"dp3 \" + R + \".x,\" + nrmVel + \".xyz,\" + nrmVel + \".xyz\\n\";\n code += \"sge \" + R + \".x,\" + animationRegisterData.vertexZeroConst + \",\" + R + \".x\\n\";\n code += \"add \" + nrmVel + \".z,\" + R + \".x,\" + nrmVel + \".z\\n\";\n code += \"add \" + tempSingle + \",\" + cos2 + \",\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"div \" + tempSingle + \",\" + tempSingle + \",\" + animationRegisterData.vertexTwoConst + \"\\n\";\n code += \"sqt \" + cos + \",\" + tempSingle + \"\\n\";\n code += \"sub \" + tempSingle + \",\" + animationRegisterData.vertexOneConst + \",\" + cos2 + \"\\n\";\n code += \"div \" + tempSingle + \",\" + tempSingle + \",\" + animationRegisterData.vertexTwoConst + \"\\n\";\n code += \"sqt \" + sin + \",\" + tempSingle + \"\\n\";\n code += \"mul \" + R + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n code += \"mul \" + R_rev + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n code += \"neg \" + R_rev + \".xyz,\" + R_rev + \".xyz\\n\";\n code += \"crs \" + nrmVel + \".xyz,\" + R + \".xyz,\" + animationRegisterData.rotationRegisters[i] + \".xyz\\n\";\n code += \"mul \" + xAxis + \".xyz,\" + cos + \",\" + animationRegisterData.rotationRegisters[i] + \".xyz\\n\";\n code += \"add \" + nrmVel + \".xyz,\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"dp3 \" + xAxis + \".w,\" + R + \".xyz,\" + animationRegisterData.rotationRegisters[i] + \".xyz\\n\";\n code += \"neg \" + nrmVel + \".w,\" + xAxis + \".w\\n\";\n code += \"crs \" + R + \".xyz,\" + nrmVel + \".xyz,\" + R_rev + \".xyz\\n\";\n code += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" + cos + \"\\n\";\n code += \"add \" + R + \".xyz,\" + R + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"mul \" + xAxis + \".xyz,\" + nrmVel + \".w,\" + R_rev + \".xyz\\n\";\n code += \"add \" + animationRegisterData.rotationRegisters[i] + \".xyz,\" + R + \".xyz,\" + xAxis + \".xyz\\n\";\n }\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleRotateToHeadingNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleRotateToHeadingNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {\n particleAnimationSet.needVelocity = true;\n };\n return ParticleRotateToHeadingNode;\n}(ParticleNodeBase));\nexport { ParticleRotateToHeadingNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleRotateToHeadingNode.js","import * as tslib_1 from \"tslib\";\nimport { Matrix3D } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleRotateToPositionState = (function (_super) {\n tslib_1.__extends(ParticleRotateToPositionState, _super);\n function ParticleRotateToPositionState(animator, particleRotateToPositionNode) {\n var _this = _super.call(this, animator, particleRotateToPositionNode) || this;\n _this._matrix = new Matrix3D();\n _this._particleRotateToPositionNode = particleRotateToPositionNode;\n _this._position = _this._particleRotateToPositionNode._iPosition;\n return _this;\n }\n Object.defineProperty(ParticleRotateToPositionState.prototype, \"position\", {\n /**\n * Defines the position of the point the particle will rotate to face when in global mode. Defaults to 0,0,0.\n */\n get: function () {\n return this._position;\n },\n set: function (value) {\n this._position = value;\n },\n enumerable: true,\n configurable: true\n });\n ParticleRotateToPositionState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleRotateToPositionState.POSITION_INDEX);\n if (this._pParticleAnimator.animationSet.hasBillboard) {\n this._matrix.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D);\n this._matrix.append(projection.transform.inverseConcatenatedMatrix3D);\n shader.setVertexConstFromMatrix(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleRotateToPositionState.MATRIX_INDEX), this._matrix);\n }\n if (this._particleRotateToPositionNode.mode == ParticlePropertiesMode.GLOBAL) {\n this._offset = renderable.sourceEntity.transform.inverseConcatenatedMatrix3D.transformVector(this._position);\n shader.setVertexConst(index, this._offset.x, this._offset.y, this._offset.z);\n }\n else\n animationElements.activateVertexBuffer(index, this._particleRotateToPositionNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n };\n return ParticleRotateToPositionState;\n}(ParticleStateBase));\nexport { ParticleRotateToPositionState };\n/** @private */\nParticleRotateToPositionState.MATRIX_INDEX = 0;\n/** @private */\nParticleRotateToPositionState.POSITION_INDEX = 1;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleRotateToPositionState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ShaderRegisterElement } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleRotateToPositionState } from \"../states/ParticleRotateToPositionState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to control the rotation of a particle to face to a position\n */\nvar ParticleRotateToPositionNode = (function (_super) {\n tslib_1.__extends(ParticleRotateToPositionNode, _super);\n /**\n * Creates a new ParticleRotateToPositionNode\n */\n function ParticleRotateToPositionNode(mode, position) {\n if (position === void 0) { position = null; }\n var _this = _super.call(this, \"ParticleRotateToPosition\", mode, 3, 3) || this;\n _this._pStateClass = ParticleRotateToPositionState;\n _this._iPosition = position || new Vector3D();\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleRotateToPositionNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var positionAttribute = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleRotateToPositionState.POSITION_INDEX, positionAttribute.index);\n var code = \"\";\n var len = animationRegisterData.rotationRegisters.length;\n var i;\n if (animationSet.hasBillboard) {\n var temp1 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp1, 1);\n var temp2 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp2, 1);\n var temp3 = registerCache.getFreeVertexVectorTemp();\n var rotationMatrixRegister = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleRotateToPositionState.MATRIX_INDEX, rotationMatrixRegister.index);\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.removeVertexTempUsage(temp1);\n registerCache.removeVertexTempUsage(temp2);\n //process the position\n code += \"sub \" + temp1 + \".xyz,\" + positionAttribute + \".xyz,\" + animationRegisterData.positionTarget + \".xyz\\n\";\n code += \"m33 \" + temp1 + \".xyz,\" + temp1 + \".xyz,\" + rotationMatrixRegister + \"\\n\";\n code += \"mov \" + temp3 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp3 + \".xy,\" + temp1 + \".xy\\n\";\n code += \"nrm \" + temp3 + \".xyz,\" + temp3 + \".xyz\\n\";\n //temp3.x=cos,temp3.y=sin\n //only process z axis\n code += \"mov \" + temp2 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp2 + \".x,\" + temp3 + \".y\\n\";\n code += \"mov \" + temp2 + \".y,\" + temp3 + \".x\\n\";\n code += \"mov \" + temp1 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp1 + \".x,\" + temp3 + \".x\\n\";\n code += \"neg \" + temp1 + \".y,\" + temp3 + \".y\\n\";\n code += \"mov \" + temp3 + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mov \" + temp3 + \".z,\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"m33 \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n for (i = 0; i < len; i++)\n code += \"m33 \" + animationRegisterData.rotationRegisters[i] + \".xyz,\" + animationRegisterData.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n }\n else {\n var nrmDirection = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(nrmDirection, 1);\n var temp = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp, 1);\n var cos = new ShaderRegisterElement(temp.regName, temp.index, 0);\n var sin = new ShaderRegisterElement(temp.regName, temp.index, 1);\n var o_temp = new ShaderRegisterElement(temp.regName, temp.index, 2);\n var tempSingle = new ShaderRegisterElement(temp.regName, temp.index, 3);\n var R = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(R, 1);\n registerCache.removeVertexTempUsage(nrmDirection);\n registerCache.removeVertexTempUsage(temp);\n registerCache.removeVertexTempUsage(R);\n code += \"sub \" + nrmDirection + \".xyz,\" + positionAttribute + \".xyz,\" + animationRegisterData.positionTarget + \".xyz\\n\";\n code += \"nrm \" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n code += \"mov \" + sin + \",\" + nrmDirection + \".y\\n\";\n code += \"mul \" + cos + \",\" + sin + \",\" + sin + \"\\n\";\n code += \"sub \" + cos + \",\" + animationRegisterData.vertexOneConst + \",\" + cos + \"\\n\";\n code += \"sqt \" + cos + \",\" + cos + \"\\n\";\n code += \"mul \" + R + \".x,\" + cos + \",\" + animationRegisterData.scaleAndRotateTarget + \".y\\n\";\n code += \"mul \" + R + \".y,\" + sin + \",\" + animationRegisterData.scaleAndRotateTarget + \".z\\n\";\n code += \"mul \" + R + \".z,\" + sin + \",\" + animationRegisterData.scaleAndRotateTarget + \".y\\n\";\n code += \"mul \" + R + \".w,\" + cos + \",\" + animationRegisterData.scaleAndRotateTarget + \".z\\n\";\n code += \"sub \" + animationRegisterData.scaleAndRotateTarget + \".y,\" + R + \".x,\" + R + \".y\\n\";\n code += \"add \" + animationRegisterData.scaleAndRotateTarget + \".z,\" + R + \".z,\" + R + \".w\\n\";\n code += \"abs \" + R + \".y,\" + nrmDirection + \".y\\n\";\n code += \"sge \" + R + \".z,\" + R + \".y,\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"mul \" + R + \".x,\" + R + \".y,\" + nrmDirection + \".y\\n\";\n //judgu if nrmDirection=(0,1,0);\n code += \"mov \" + nrmDirection + \".y,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"dp3 \" + sin + \",\" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n code += \"sge \" + tempSingle + \",\" + animationRegisterData.vertexZeroConst + \",\" + sin + \"\\n\";\n code += \"mov \" + nrmDirection + \".y,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"nrm \" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n code += \"sub \" + sin + \",\" + animationRegisterData.vertexOneConst + \",\" + tempSingle + \"\\n\";\n code += \"mul \" + sin + \",\" + sin + \",\" + nrmDirection + \".x\\n\";\n code += \"mov \" + cos + \",\" + nrmDirection + \".z\\n\";\n code += \"neg \" + cos + \",\" + cos + \"\\n\";\n code += \"sub \" + o_temp + \",\" + animationRegisterData.vertexOneConst + \",\" + cos + \"\\n\";\n code += \"mul \" + o_temp + \",\" + R + \".x,\" + tempSingle + \"\\n\";\n code += \"add \" + cos + \",\" + cos + \",\" + o_temp + \"\\n\";\n code += \"mul \" + R + \".x,\" + cos + \",\" + animationRegisterData.scaleAndRotateTarget + \".x\\n\";\n code += \"mul \" + R + \".y,\" + sin + \",\" + animationRegisterData.scaleAndRotateTarget + \".z\\n\";\n code += \"mul \" + R + \".z,\" + sin + \",\" + animationRegisterData.scaleAndRotateTarget + \".x\\n\";\n code += \"mul \" + R + \".w,\" + cos + \",\" + animationRegisterData.scaleAndRotateTarget + \".z\\n\";\n code += \"sub \" + animationRegisterData.scaleAndRotateTarget + \".x,\" + R + \".x,\" + R + \".y\\n\";\n code += \"add \" + animationRegisterData.scaleAndRotateTarget + \".z,\" + R + \".z,\" + R + \".w\\n\";\n for (i = 0; i < len; i++) {\n //just repeat the calculate above\n //because of the limited registers, no need to optimise\n code += \"sub \" + nrmDirection + \".xyz,\" + positionAttribute + \".xyz,\" + animationRegisterData.positionTarget + \".xyz\\n\";\n code += \"nrm \" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n code += \"mov \" + sin + \",\" + nrmDirection + \".y\\n\";\n code += \"mul \" + cos + \",\" + sin + \",\" + sin + \"\\n\";\n code += \"sub \" + cos + \",\" + animationRegisterData.vertexOneConst + \",\" + cos + \"\\n\";\n code += \"sqt \" + cos + \",\" + cos + \"\\n\";\n code += \"mul \" + R + \".x,\" + cos + \",\" + animationRegisterData.rotationRegisters[i] + \".y\\n\";\n code += \"mul \" + R + \".y,\" + sin + \",\" + animationRegisterData.rotationRegisters[i] + \".z\\n\";\n code += \"mul \" + R + \".z,\" + sin + \",\" + animationRegisterData.rotationRegisters[i] + \".y\\n\";\n code += \"mul \" + R + \".w,\" + cos + \",\" + animationRegisterData.rotationRegisters[i] + \".z\\n\";\n code += \"sub \" + animationRegisterData.rotationRegisters[i] + \".y,\" + R + \".x,\" + R + \".y\\n\";\n code += \"add \" + animationRegisterData.rotationRegisters[i] + \".z,\" + R + \".z,\" + R + \".w\\n\";\n code += \"abs \" + R + \".y,\" + nrmDirection + \".y\\n\";\n code += \"sge \" + R + \".z,\" + R + \".y,\" + animationRegisterData.vertexOneConst + \"\\n\";\n code += \"mul \" + R + \".x,\" + R + \".y,\" + nrmDirection + \".y\\n\";\n code += \"mov \" + nrmDirection + \".y,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"dp3 \" + sin + \",\" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n code += \"sge \" + tempSingle + \",\" + animationRegisterData.vertexZeroConst + \",\" + sin + \"\\n\";\n code += \"mov \" + nrmDirection + \".y,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"nrm \" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n code += \"sub \" + sin + \",\" + animationRegisterData.vertexOneConst + \",\" + tempSingle + \"\\n\";\n code += \"mul \" + sin + \",\" + sin + \",\" + nrmDirection + \".x\\n\";\n code += \"mov \" + cos + \",\" + nrmDirection + \".z\\n\";\n code += \"neg \" + cos + \",\" + cos + \"\\n\";\n code += \"sub \" + o_temp + \",\" + animationRegisterData.vertexOneConst + \",\" + cos + \"\\n\";\n code += \"mul \" + o_temp + \",\" + R + \".x,\" + tempSingle + \"\\n\";\n code += \"add \" + cos + \",\" + cos + \",\" + o_temp + \"\\n\";\n code += \"mul \" + R + \".x,\" + cos + \",\" + animationRegisterData.rotationRegisters[i] + \".x\\n\";\n code += \"mul \" + R + \".y,\" + sin + \",\" + animationRegisterData.rotationRegisters[i] + \".z\\n\";\n code += \"mul \" + R + \".z,\" + sin + \",\" + animationRegisterData.rotationRegisters[i] + \".x\\n\";\n code += \"mul \" + R + \".w,\" + cos + \",\" + animationRegisterData.rotationRegisters[i] + \".z\\n\";\n code += \"sub \" + animationRegisterData.rotationRegisters[i] + \".x,\" + R + \".x,\" + R + \".y\\n\";\n code += \"add \" + animationRegisterData.rotationRegisters[i] + \".z,\" + R + \".z,\" + R + \".w\\n\";\n }\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleRotateToPositionNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleRotateToPositionNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n var offset = param[ParticleRotateToPositionNode.POSITION_VECTOR3D];\n if (!offset)\n throw (new Error(\"there is no \" + ParticleRotateToPositionNode.POSITION_VECTOR3D + \" in param!\"));\n this._pOneData[0] = offset.x;\n this._pOneData[1] = offset.y;\n this._pOneData[2] = offset.z;\n };\n return ParticleRotateToPositionNode;\n}(ParticleNodeBase));\nexport { ParticleRotateToPositionNode };\n/**\n * Reference for the position the particle will rotate to face for a single particle (when in local property mode).\n * Expects a Vector3D object representing the position that the particle must face.\n */\nParticleRotateToPositionNode.POSITION_VECTOR3D = \"RotateToPositionVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleRotateToPositionNode.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleRotationalVelocityState = (function (_super) {\n tslib_1.__extends(ParticleRotationalVelocityState, _super);\n function ParticleRotationalVelocityState(animator, particleRotationNode) {\n var _this = _super.call(this, animator, particleRotationNode) || this;\n _this._particleRotationalVelocityNode = particleRotationNode;\n _this._rotationalVelocity = _this._particleRotationalVelocityNode._iRotationalVelocity;\n _this.updateRotationalVelocityData();\n return _this;\n }\n Object.defineProperty(ParticleRotationalVelocityState.prototype, \"rotationalVelocity\", {\n /**\n * Defines the default rotationalVelocity of the state, used when in global mode.\n */\n get: function () {\n return this._rotationalVelocity;\n },\n set: function (value) {\n this._rotationalVelocity = value;\n this.updateRotationalVelocityData();\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n */\n ParticleRotationalVelocityState.prototype.getRotationalVelocities = function () {\n return this._pDynamicProperties;\n };\n ParticleRotationalVelocityState.prototype.setRotationalVelocities = function (value) {\n this._pDynamicProperties = value;\n this._pDynamicPropertiesDirty = new Object();\n };\n /**\n * @inheritDoc\n */\n ParticleRotationalVelocityState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (this._particleRotationalVelocityNode.mode == ParticlePropertiesMode.LOCAL_DYNAMIC && !this._pDynamicPropertiesDirty[animationElements._iUniqueId])\n this._pUpdateDynamicProperties(animationElements);\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleRotationalVelocityState.ROTATIONALVELOCITY_INDEX);\n if (this._particleRotationalVelocityNode.mode == ParticlePropertiesMode.GLOBAL)\n shader.setVertexConst(index, this._rotationalVelocityData.x, this._rotationalVelocityData.y, this._rotationalVelocityData.z, this._rotationalVelocityData.w);\n else\n animationElements.activateVertexBuffer(index, this._particleRotationalVelocityNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n };\n ParticleRotationalVelocityState.prototype.updateRotationalVelocityData = function () {\n if (this._particleRotationalVelocityNode.mode == ParticlePropertiesMode.GLOBAL) {\n if (this._rotationalVelocity.w <= 0)\n throw (new Error(\"the cycle duration must greater than zero\"));\n var rotation = this._rotationalVelocity.clone();\n if (rotation.length <= 0)\n rotation.z = 1; //set the default direction\n else\n rotation.normalize();\n // w is used as angle/2 in agal\n this._rotationalVelocityData = new Vector3D(rotation.x, rotation.y, rotation.z, Math.PI / rotation.w);\n }\n };\n return ParticleRotationalVelocityState;\n}(ParticleStateBase));\nexport { ParticleRotationalVelocityState };\n/** @private */\nParticleRotationalVelocityState.ROTATIONALVELOCITY_INDEX = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleRotationalVelocityState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ShaderRegisterElement } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleRotationalVelocityState } from \"../states/ParticleRotationalVelocityState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to set the starting rotational velocity of a particle.\n */\nvar ParticleRotationalVelocityNode = (function (_super) {\n tslib_1.__extends(ParticleRotationalVelocityNode, _super);\n /**\n * Creates a new ParticleRotationalVelocityNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n */\n function ParticleRotationalVelocityNode(mode, rotationalVelocity) {\n if (rotationalVelocity === void 0) { rotationalVelocity = null; }\n var _this = _super.call(this, \"ParticleRotationalVelocity\", mode, 4) || this;\n _this._pStateClass = ParticleRotationalVelocityState;\n _this._iRotationalVelocity = rotationalVelocity || new Vector3D();\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleRotationalVelocityNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var rotationRegister = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleRotationalVelocityState.ROTATIONALVELOCITY_INDEX, rotationRegister.index);\n var nrmVel = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(nrmVel, 1);\n var xAxis = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(xAxis, 1);\n var temp = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp, 1);\n var Rtemp = new ShaderRegisterElement(temp.regName, temp.index);\n var R_rev = registerCache.getFreeVertexVectorTemp();\n R_rev = new ShaderRegisterElement(R_rev.regName, R_rev.index);\n var cos = new ShaderRegisterElement(Rtemp.regName, Rtemp.index, 3);\n var sin = new ShaderRegisterElement(R_rev.regName, R_rev.index, 3);\n registerCache.removeVertexTempUsage(nrmVel);\n registerCache.removeVertexTempUsage(xAxis);\n registerCache.removeVertexTempUsage(temp);\n var code = \"\";\n code += \"mov \" + nrmVel + \".xyz,\" + rotationRegister + \".xyz\\n\";\n code += \"mov \" + nrmVel + \".w,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mul \" + cos + \",\" + animationRegisterData.vertexTime + \",\" + rotationRegister + \".w\\n\";\n code += \"sin \" + sin + \",\" + cos + \"\\n\";\n code += \"cos \" + cos + \",\" + cos + \"\\n\";\n code += \"mul \" + Rtemp + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n code += \"mul \" + R_rev + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n code += \"neg \" + R_rev + \".xyz,\" + R_rev + \".xyz\\n\";\n //nrmVel and xAxis are used as temp register\n code += \"crs \" + nrmVel + \".xyz,\" + Rtemp + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz\\n\";\n code += \"mul \" + xAxis + \".xyz,\" + cos + \",\" + animationRegisterData.scaleAndRotateTarget + \".xyz\\n\";\n code += \"add \" + nrmVel + \".xyz,\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"dp3 \" + xAxis + \".w,\" + Rtemp + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz\\n\";\n code += \"neg \" + nrmVel + \".w,\" + xAxis + \".w\\n\";\n code += \"crs \" + Rtemp + \".xyz,\" + nrmVel + \".xyz,\" + R_rev + \".xyz\\n\";\n //use cos as R_rev.w\n code += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" + cos + \"\\n\";\n code += \"add \" + Rtemp + \".xyz,\" + Rtemp + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"mul \" + xAxis + \".xyz,\" + nrmVel + \".w,\" + R_rev + \".xyz\\n\";\n code += \"add \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + Rtemp + \".xyz,\" + xAxis + \".xyz\\n\";\n var len = animationRegisterData.rotationRegisters.length;\n for (var i = 0; i < len; i++) {\n code += \"mov \" + nrmVel + \".xyz,\" + rotationRegister + \".xyz\\n\";\n code += \"mov \" + nrmVel + \".w,\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"mul \" + cos + \",\" + animationRegisterData.vertexTime + \",\" + rotationRegister + \".w\\n\";\n code += \"sin \" + sin + \",\" + cos + \"\\n\";\n code += \"cos \" + cos + \",\" + cos + \"\\n\";\n code += \"mul \" + Rtemp + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n code += \"mul \" + R_rev + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n code += \"neg \" + R_rev + \".xyz,\" + R_rev + \".xyz\\n\";\n code += \"crs \" + nrmVel + \".xyz,\" + Rtemp + \".xyz,\" + animationRegisterData.rotationRegisters[i] + \".xyz\\n\";\n code += \"mul \" + xAxis + \".xyz,\" + cos + \",\" + animationRegisterData.rotationRegisters[i] + \"\\n\";\n code += \"add \" + nrmVel + \".xyz,\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"dp3 \" + xAxis + \".w,\" + Rtemp + \".xyz,\" + animationRegisterData.rotationRegisters[i] + \"\\n\";\n code += \"neg \" + nrmVel + \".w,\" + xAxis + \".w\\n\";\n code += \"crs \" + Rtemp + \".xyz,\" + nrmVel + \".xyz,\" + R_rev + \".xyz\\n\";\n code += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" + cos + \"\\n\";\n code += \"add \" + Rtemp + \".xyz,\" + Rtemp + \".xyz,\" + xAxis + \".xyz\\n\";\n code += \"mul \" + xAxis + \".xyz,\" + nrmVel + \".w,\" + R_rev + \".xyz\\n\";\n code += \"add \" + animationRegisterData.rotationRegisters[i] + \",\" + Rtemp + \".xyz,\" + xAxis + \".xyz\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleRotationalVelocityNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleRotationalVelocityNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n //(Vector3d.x,Vector3d.y,Vector3d.z) is rotation axis,Vector3d.w is cycle duration\n var rotate = param[ParticleRotationalVelocityNode.ROTATIONALVELOCITY_VECTOR3D];\n if (!rotate)\n throw (new Error(\"there is no \" + ParticleRotationalVelocityNode.ROTATIONALVELOCITY_VECTOR3D + \" in param!\"));\n if (rotate.length <= 0)\n rotate.z = 1; //set the default direction\n else\n rotate.normalize();\n this._pOneData[0] = rotate.x;\n this._pOneData[1] = rotate.y;\n this._pOneData[2] = rotate.z;\n if (rotate.w <= 0)\n throw (new Error(\"the cycle duration must greater than zero\"));\n // it's used as angle/2 in agal\n this._pOneData[3] = Math.PI / rotate.w;\n };\n return ParticleRotationalVelocityNode;\n}(ParticleNodeBase));\nexport { ParticleRotationalVelocityNode };\n/**\n * Reference for rotational velocity node properties on a single particle (when in local property mode).\n * Expects a Vector3D object representing the rotational velocity around an axis of the particle.\n */\nParticleRotationalVelocityNode.ROTATIONALVELOCITY_VECTOR3D = \"RotationalVelocityVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleRotationalVelocityNode.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleScaleState = (function (_super) {\n tslib_1.__extends(ParticleScaleState, _super);\n function ParticleScaleState(animator, particleScaleNode) {\n var _this = _super.call(this, animator, particleScaleNode) || this;\n _this._particleScaleNode = particleScaleNode;\n _this._usesCycle = _this._particleScaleNode._iUsesCycle;\n _this._usesPhase = _this._particleScaleNode._iUsesPhase;\n _this._minScale = _this._particleScaleNode._iMinScale;\n _this._maxScale = _this._particleScaleNode._iMaxScale;\n _this._cycleDuration = _this._particleScaleNode._iCycleDuration;\n _this._cyclePhase = _this._particleScaleNode._iCyclePhase;\n _this.updateScaleData();\n return _this;\n }\n Object.defineProperty(ParticleScaleState.prototype, \"minScale\", {\n /**\n * Defines the end scale of the state, when in global mode. Defaults to 1.\n */\n get: function () {\n return this._minScale;\n },\n set: function (value) {\n this._minScale = value;\n this.updateScaleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleScaleState.prototype, \"maxScale\", {\n /**\n * Defines the end scale of the state, when in global mode. Defaults to 1.\n */\n get: function () {\n return this._maxScale;\n },\n set: function (value) {\n this._maxScale = value;\n this.updateScaleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleScaleState.prototype, \"cycleDuration\", {\n /**\n * Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.\n */\n get: function () {\n return this._cycleDuration;\n },\n set: function (value) {\n this._cycleDuration = value;\n this.updateScaleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleScaleState.prototype, \"cyclePhase\", {\n /**\n * Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.\n */\n get: function () {\n return this._cyclePhase;\n },\n set: function (value) {\n this._cyclePhase = value;\n this.updateScaleData();\n },\n enumerable: true,\n configurable: true\n });\n ParticleScaleState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleScaleState.SCALE_INDEX);\n if (this._particleScaleNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {\n if (this._usesCycle) {\n if (this._usesPhase)\n animationElements.activateVertexBuffer(index, this._particleScaleNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);\n else\n animationElements.activateVertexBuffer(index, this._particleScaleNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n }\n else\n animationElements.activateVertexBuffer(index, this._particleScaleNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_2);\n }\n else\n shader.setVertexConst(index, this._scaleData.x, this._scaleData.y, this._scaleData.z, this._scaleData.w);\n };\n ParticleScaleState.prototype.updateScaleData = function () {\n if (this._particleScaleNode.mode == ParticlePropertiesMode.GLOBAL) {\n if (this._usesCycle) {\n if (this._cycleDuration <= 0)\n throw (new Error(\"the cycle duration must be greater than zero\"));\n this._scaleData = new Vector3D((this._minScale + this._maxScale) / 2, Math.abs(this._minScale - this._maxScale) / 2, Math.PI * 2 / this._cycleDuration, this._cyclePhase * Math.PI / 180);\n }\n else\n this._scaleData = new Vector3D(this._minScale, this._maxScale - this._minScale, 0, 0);\n }\n };\n return ParticleScaleState;\n}(ParticleStateBase));\nexport { ParticleScaleState };\n/** @private */\nParticleScaleState.SCALE_INDEX = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleScaleState.js","import * as tslib_1 from \"tslib\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleScaleState } from \"../states/ParticleScaleState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to control the scale variation of a particle over time.\n */\nvar ParticleScaleNode = (function (_super) {\n tslib_1.__extends(ParticleScaleNode, _super);\n /**\n * Creates a new ParticleScaleNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] usesCycle Defines whether the node uses the cycleDuration property in the shader to calculate the period of animation independent of particle duration. Defaults to false.\n * @param [optional] usesPhase Defines whether the node uses the cyclePhase property in the shader to calculate a starting offset to the animation cycle. Defaults to false.\n * @param [optional] minScale Defines the default min scale transform of the node, when in global mode. Defaults to 1.\n * @param [optional] maxScale Defines the default max color transform of the node, when in global mode. Defaults to 1.\n * @param [optional] cycleDuration Defines the default duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.\n * @param [optional] cyclePhase Defines the default phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.\n */\n function ParticleScaleNode(mode, usesCycle, usesPhase, minScale, maxScale, cycleDuration, cyclePhase) {\n if (minScale === void 0) { minScale = 1; }\n if (maxScale === void 0) { maxScale = 1; }\n if (cycleDuration === void 0) { cycleDuration = 1; }\n if (cyclePhase === void 0) { cyclePhase = 0; }\n var _this = _super.call(this, \"ParticleScale\", mode, (usesCycle && usesPhase) ? 4 : ((usesCycle || usesPhase) ? 3 : 2), 3) || this;\n _this._pStateClass = ParticleScaleState;\n _this._iUsesCycle = usesCycle;\n _this._iUsesPhase = usesPhase;\n _this._iMinScale = minScale;\n _this._iMaxScale = maxScale;\n _this._iCycleDuration = cycleDuration;\n _this._iCyclePhase = cyclePhase;\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleScaleNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var code = \"\";\n var temp = registerCache.getFreeVertexSingleTemp();\n var scaleRegister = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleScaleState.SCALE_INDEX, scaleRegister.index);\n if (this._iUsesCycle) {\n code += \"mul \" + temp + \",\" + animationRegisterData.vertexTime + \",\" + scaleRegister + \".z\\n\";\n if (this._iUsesPhase)\n code += \"add \" + temp + \",\" + temp + \",\" + scaleRegister + \".w\\n\";\n code += \"sin \" + temp + \",\" + temp + \"\\n\";\n }\n code += \"mul \" + temp + \",\" + scaleRegister + \".y,\" + ((this._iUsesCycle) ? temp : animationRegisterData.vertexLife) + \"\\n\";\n code += \"add \" + temp + \",\" + scaleRegister + \".x,\" + temp + \"\\n\";\n code += \"mul \" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + animationRegisterData.scaleAndRotateTarget + \".xyz,\" + temp + \"\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleScaleNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleScaleNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n var scale = param[ParticleScaleNode.SCALE_VECTOR3D];\n if (!scale)\n throw (new Error(\"there is no \" + ParticleScaleNode.SCALE_VECTOR3D + \" in param!\"));\n if (this._iUsesCycle) {\n this._pOneData[0] = (scale.x + scale.y) / 2;\n this._pOneData[1] = Math.abs(scale.x - scale.y) / 2;\n if (scale.z <= 0)\n throw (new Error(\"the cycle duration must be greater than zero\"));\n this._pOneData[2] = Math.PI * 2 / scale.z;\n if (this._iUsesPhase)\n this._pOneData[3] = scale.w * Math.PI / 180;\n }\n else {\n this._pOneData[0] = scale.x;\n this._pOneData[1] = scale.y - scale.x;\n }\n };\n return ParticleScaleNode;\n}(ParticleNodeBase));\nexport { ParticleScaleNode };\n/**\n * Reference for scale node properties on a single particle (when in local property mode).\n * Expects a Vector3D representing the min scale (x), max scale(y), optional cycle speed (z) and phase offset (w) applied to the particle.\n */\nParticleScaleNode.SCALE_VECTOR3D = \"ScaleVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleScaleNode.js","import * as tslib_1 from \"tslib\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n *\n */\nvar ParticleSegmentedColorState = (function (_super) {\n tslib_1.__extends(ParticleSegmentedColorState, _super);\n function ParticleSegmentedColorState(animator, particleSegmentedColorNode) {\n var _this = _super.call(this, animator, particleSegmentedColorNode) || this;\n _this._usesMultiplier = particleSegmentedColorNode._iUsesMultiplier;\n _this._usesOffset = particleSegmentedColorNode._iUsesOffset;\n _this._startColor = particleSegmentedColorNode._iStartColor;\n _this._endColor = particleSegmentedColorNode._iEndColor;\n _this._segmentPoints = particleSegmentedColorNode._iSegmentPoints;\n _this._numSegmentPoint = particleSegmentedColorNode._iNumSegmentPoint;\n _this.updateColorData();\n return _this;\n }\n Object.defineProperty(ParticleSegmentedColorState.prototype, \"startColor\", {\n /**\n * Defines the start color transform of the state, when in global mode.\n */\n get: function () {\n return this._startColor;\n },\n set: function (value) {\n this._startColor = value;\n this.updateColorData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleSegmentedColorState.prototype, \"endColor\", {\n /**\n * Defines the end color transform of the state, when in global mode.\n */\n get: function () {\n return this._endColor;\n },\n set: function (value) {\n this._endColor = value;\n this.updateColorData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleSegmentedColorState.prototype, \"numSegmentPoint\", {\n /**\n * Defines the number of segments.\n */\n get: function () {\n return this._numSegmentPoint;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleSegmentedColorState.prototype, \"segmentPoints\", {\n /**\n * Defines the key points of color\n */\n get: function () {\n return this._segmentPoints;\n },\n set: function (value) {\n this._segmentPoints = value;\n this.updateColorData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleSegmentedColorState.prototype, \"usesMultiplier\", {\n get: function () {\n return this._usesMultiplier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleSegmentedColorState.prototype, \"usesOffset\", {\n get: function () {\n return this._usesOffset;\n },\n enumerable: true,\n configurable: true\n });\n ParticleSegmentedColorState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (shader.usesFragmentAnimation) {\n if (this._numSegmentPoint > 0)\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleSegmentedColorState.TIME_DATA_INDEX), this._timeLifeData[0], this._timeLifeData[1], this._timeLifeData[2], this._timeLifeData[3]);\n if (this._usesMultiplier)\n shader.setVertexConstFromArray(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleSegmentedColorState.START_MULTIPLIER_INDEX), this._multiplierData);\n if (this._usesOffset)\n shader.setVertexConstFromArray(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleSegmentedColorState.START_OFFSET_INDEX), this._offsetData);\n }\n };\n ParticleSegmentedColorState.prototype.updateColorData = function () {\n this._timeLifeData = new Float32Array(4);\n this._multiplierData = new Float32Array(4 * (this._numSegmentPoint + 1));\n this._offsetData = new Float32Array(4 * (this._numSegmentPoint + 1));\n //cut off the time data\n var i;\n var j = 0;\n var count = this._numSegmentPoint > 3 ? 3 : this._numSegmentPoint;\n for (i = 0; i < count; i++) {\n if (i == 0)\n this._timeLifeData[j++] = this._segmentPoints[i].life;\n else\n this._timeLifeData[j++] = this._segmentPoints[i].life - this._segmentPoints[i - 1].life;\n }\n i = count;\n if (this._numSegmentPoint == 0)\n this._timeLifeData[j++] = 1;\n else\n this._timeLifeData[j++] = 1 - this._segmentPoints[i - 1].life;\n if (this._usesMultiplier) {\n j = 0;\n this._multiplierData[j++] = this._startColor.redMultiplier;\n this._multiplierData[j++] = this._startColor.greenMultiplier;\n this._multiplierData[j++] = this._startColor.blueMultiplier;\n this._multiplierData[j++] = this._startColor.alphaMultiplier;\n for (i = 0; i < this._numSegmentPoint; i++) {\n if (i == 0) {\n this._multiplierData[j++] = (this._segmentPoints[i].color.redMultiplier - this._startColor.redMultiplier) / this._timeLifeData[i];\n this._multiplierData[j++] = (this._segmentPoints[i].color.greenMultiplier - this._startColor.greenMultiplier) / this._timeLifeData[i];\n this._multiplierData[j++] = (this._segmentPoints[i].color.blueMultiplier - this._startColor.blueMultiplier) / this._timeLifeData[i];\n this._multiplierData[j++] = (this._segmentPoints[i].color.alphaMultiplier - this._startColor.alphaMultiplier) / this._timeLifeData[i];\n }\n else {\n this._multiplierData[j++] = (this._segmentPoints[i].color.redMultiplier - this._segmentPoints[i - 1].color.redMultiplier) / this._timeLifeData[i];\n this._multiplierData[j++] = (this._segmentPoints[i].color.greenMultiplier - this._segmentPoints[i - 1].color.greenMultiplier) / this._timeLifeData[i];\n this._multiplierData[j++] = (this._segmentPoints[i].color.blueMultiplier - this._segmentPoints[i - 1].color.blueMultiplier) / this._timeLifeData[i];\n this._multiplierData[j++] = (this._segmentPoints[i].color.alphaMultiplier - this._segmentPoints[i - 1].color.alphaMultiplier) / this._timeLifeData[i];\n }\n }\n i = this._numSegmentPoint;\n if (this._numSegmentPoint == 0) {\n this._multiplierData[j++] = this._endColor.redMultiplier - this._startColor.redMultiplier;\n this._multiplierData[j++] = this._endColor.greenMultiplier - this._startColor.greenMultiplier;\n this._multiplierData[j++] = this._endColor.blueMultiplier - this._startColor.blueMultiplier;\n this._multiplierData[j++] = this._endColor.alphaMultiplier - this._startColor.alphaMultiplier;\n }\n else {\n this._multiplierData[j++] = (this._endColor.redMultiplier - this._segmentPoints[i - 1].color.redMultiplier) / this._timeLifeData[i];\n this._multiplierData[j++] = (this._endColor.greenMultiplier - this._segmentPoints[i - 1].color.greenMultiplier) / this._timeLifeData[i];\n this._multiplierData[j++] = (this._endColor.blueMultiplier - this._segmentPoints[i - 1].color.blueMultiplier) / this._timeLifeData[i];\n this._multiplierData[j++] = (this._endColor.alphaMultiplier - this._segmentPoints[i - 1].color.alphaMultiplier) / this._timeLifeData[i];\n }\n }\n if (this._usesOffset) {\n j = 0;\n this._offsetData[j++] = this._startColor.redOffset / 255;\n this._offsetData[j++] = this._startColor.greenOffset / 255;\n this._offsetData[j++] = this._startColor.blueOffset / 255;\n this._offsetData[j++] = this._startColor.alphaOffset / 255;\n for (i = 0; i < this._numSegmentPoint; i++) {\n if (i == 0) {\n this._offsetData[j++] = (this._segmentPoints[i].color.redOffset - this._startColor.redOffset) / this._timeLifeData[i] / 255;\n this._offsetData[j++] = (this._segmentPoints[i].color.greenOffset - this._startColor.greenOffset) / this._timeLifeData[i] / 255;\n this._offsetData[j++] = (this._segmentPoints[i].color.blueOffset - this._startColor.blueOffset) / this._timeLifeData[i] / 255;\n this._offsetData[j++] = (this._segmentPoints[i].color.alphaOffset - this._startColor.alphaOffset) / this._timeLifeData[i] / 255;\n }\n else {\n this._offsetData[j++] = (this._segmentPoints[i].color.redOffset - this._segmentPoints[i - 1].color.redOffset) / this._timeLifeData[i] / 255;\n this._offsetData[j++] = (this._segmentPoints[i].color.greenOffset - this._segmentPoints[i - 1].color.greenOffset) / this._timeLifeData[i] / 255;\n this._offsetData[j++] = (this._segmentPoints[i].color.blueOffset - this._segmentPoints[i - 1].color.blueOffset) / this._timeLifeData[i] / 255;\n this._offsetData[j++] = (this._segmentPoints[i].color.alphaOffset - this._segmentPoints[i - 1].color.alphaOffset) / this._timeLifeData[i] / 255;\n }\n }\n i = this._numSegmentPoint;\n if (this._numSegmentPoint == 0) {\n this._offsetData[j++] = (this._endColor.redOffset - this._startColor.redOffset) / 255;\n this._offsetData[j++] = (this._endColor.greenOffset - this._startColor.greenOffset) / 255;\n this._offsetData[j++] = (this._endColor.blueOffset - this._startColor.blueOffset) / 255;\n this._offsetData[j++] = (this._endColor.alphaOffset - this._startColor.alphaOffset) / 255;\n }\n else {\n this._offsetData[i] = (this._endColor.redOffset - this._segmentPoints[i - 1].color.redOffset) / this._timeLifeData[i] / 255;\n this._offsetData[j++] = (this._endColor.greenOffset - this._segmentPoints[i - 1].color.greenOffset) / this._timeLifeData[i] / 255;\n this._offsetData[j++] = (this._endColor.blueOffset - this._segmentPoints[i - 1].color.blueOffset) / this._timeLifeData[i] / 255;\n this._offsetData[j++] = (this._endColor.alphaOffset - this._segmentPoints[i - 1].color.alphaOffset) / this._timeLifeData[i] / 255;\n }\n }\n };\n return ParticleSegmentedColorState;\n}(ParticleStateBase));\nexport { ParticleSegmentedColorState };\n/** @private */\nParticleSegmentedColorState.START_MULTIPLIER_INDEX = 0;\n/** @private */\nParticleSegmentedColorState.START_OFFSET_INDEX = 1;\n/** @private */\nParticleSegmentedColorState.TIME_DATA_INDEX = 2;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleSegmentedColorState.js","import * as tslib_1 from \"tslib\";\nimport { ShaderRegisterElement } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleSegmentedColorState } from \"../states/ParticleSegmentedColorState\";\nimport { ParticleAnimationSet } from \"../ParticleAnimationSet\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n *\n */\nvar ParticleSegmentedColorNode = (function (_super) {\n tslib_1.__extends(ParticleSegmentedColorNode, _super);\n function ParticleSegmentedColorNode(usesMultiplier, usesOffset, numSegmentPoint, startColor, endColor, segmentPoints) {\n var _this = \n //because of the stage3d register limitation, it only support the global mode\n _super.call(this, \"ParticleSegmentedColor\", ParticlePropertiesMode.GLOBAL, 0, ParticleAnimationSet.COLOR_PRIORITY) || this;\n _this._pStateClass = ParticleSegmentedColorState;\n if (numSegmentPoint > 4)\n throw (new Error(\"the numSegmentPoint must be less or equal 4\"));\n _this._iUsesMultiplier = usesMultiplier;\n _this._iUsesOffset = usesOffset;\n _this._iNumSegmentPoint = numSegmentPoint;\n _this._iStartColor = startColor;\n _this._iEndColor = endColor;\n _this._iSegmentPoints = segmentPoints;\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleSegmentedColorNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {\n if (this._iUsesMultiplier)\n particleAnimationSet.hasColorMulNode = true;\n if (this._iUsesOffset)\n particleAnimationSet.hasColorAddNode = true;\n };\n /**\n * @inheritDoc\n */\n ParticleSegmentedColorNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var code = \"\";\n if (shader.usesFragmentAnimation) {\n var accMultiplierColor;\n //var accOffsetColor:ShaderRegisterElement;\n if (this._iUsesMultiplier) {\n accMultiplierColor = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(accMultiplierColor, 1);\n }\n var tempColor = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(tempColor, 1);\n var temp = registerCache.getFreeVertexVectorTemp();\n var accTime = new ShaderRegisterElement(temp.regName, temp.index, 0);\n var tempTime = new ShaderRegisterElement(temp.regName, temp.index, 1);\n if (this._iUsesMultiplier)\n registerCache.removeVertexTempUsage(accMultiplierColor);\n registerCache.removeVertexTempUsage(tempColor);\n //for saving all the life values (at most 4)\n var lifeTimeRegister = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleSegmentedColorState.TIME_DATA_INDEX, lifeTimeRegister.index);\n var i;\n var startMulValue;\n var deltaMulValues;\n if (this._iUsesMultiplier) {\n startMulValue = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleSegmentedColorState.START_MULTIPLIER_INDEX, startMulValue.index);\n deltaMulValues = new Array();\n for (i = 0; i < this._iNumSegmentPoint + 1; i++)\n deltaMulValues.push(registerCache.getFreeVertexConstant());\n }\n var startOffsetValue;\n var deltaOffsetValues;\n if (this._iUsesOffset) {\n startOffsetValue = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleSegmentedColorState.START_OFFSET_INDEX, startOffsetValue.index);\n deltaOffsetValues = new Array();\n for (i = 0; i < this._iNumSegmentPoint + 1; i++)\n deltaOffsetValues.push(registerCache.getFreeVertexConstant());\n }\n if (this._iUsesMultiplier)\n code += \"mov \" + accMultiplierColor + \",\" + startMulValue + \"\\n\";\n if (this._iUsesOffset)\n code += \"add \" + animationRegisterData.colorAddTarget + \",\" + animationRegisterData.colorAddTarget + \",\" + startOffsetValue + \"\\n\";\n for (i = 0; i < this._iNumSegmentPoint; i++) {\n switch (i) {\n case 0:\n code += \"min \" + tempTime + \",\" + animationRegisterData.vertexLife + \",\" + lifeTimeRegister + \".x\\n\";\n break;\n case 1:\n code += \"sub \" + accTime + \",\" + animationRegisterData.vertexLife + \",\" + lifeTimeRegister + \".x\\n\";\n code += \"max \" + tempTime + \",\" + accTime + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"min \" + tempTime + \",\" + tempTime + \",\" + lifeTimeRegister + \".y\\n\";\n break;\n case 2:\n code += \"sub \" + accTime + \",\" + accTime + \",\" + lifeTimeRegister + \".y\\n\";\n code += \"max \" + tempTime + \",\" + accTime + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"min \" + tempTime + \",\" + tempTime + \",\" + lifeTimeRegister + \".z\\n\";\n break;\n case 3:\n code += \"sub \" + accTime + \",\" + accTime + \",\" + lifeTimeRegister + \".z\\n\";\n code += \"max \" + tempTime + \",\" + accTime + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n code += \"min \" + tempTime + \",\" + tempTime + \",\" + lifeTimeRegister + \".w\\n\";\n break;\n }\n if (this._iUsesMultiplier) {\n code += \"mul \" + tempColor + \",\" + tempTime + \",\" + deltaMulValues[i] + \"\\n\";\n code += \"add \" + accMultiplierColor + \",\" + accMultiplierColor + \",\" + tempColor + \"\\n\";\n }\n if (this._iUsesOffset) {\n code += \"mul \" + tempColor + \",\" + tempTime + \",\" + deltaOffsetValues[i] + \"\\n\";\n code += \"add \" + animationRegisterData.colorAddTarget + \",\" + animationRegisterData.colorAddTarget + \",\" + tempColor + \"\\n\";\n }\n }\n //for the last segment:\n if (this._iNumSegmentPoint == 0)\n tempTime = animationRegisterData.vertexLife;\n else {\n switch (this._iNumSegmentPoint) {\n case 1:\n code += \"sub \" + accTime + \",\" + animationRegisterData.vertexLife + \",\" + lifeTimeRegister + \".x\\n\";\n break;\n case 2:\n code += \"sub \" + accTime + \",\" + accTime + \",\" + lifeTimeRegister + \".y\\n\";\n break;\n case 3:\n code += \"sub \" + accTime + \",\" + accTime + \",\" + lifeTimeRegister + \".z\\n\";\n break;\n case 4:\n code += \"sub \" + accTime + \",\" + accTime + \",\" + lifeTimeRegister + \".w\\n\";\n break;\n }\n code += \"max \" + tempTime + \",\" + accTime + \",\" + animationRegisterData.vertexZeroConst + \"\\n\";\n }\n if (this._iUsesMultiplier) {\n code += \"mul \" + tempColor + \",\" + tempTime + \",\" + deltaMulValues[this._iNumSegmentPoint] + \"\\n\";\n code += \"add \" + accMultiplierColor + \",\" + accMultiplierColor + \",\" + tempColor + \"\\n\";\n code += \"mul \" + animationRegisterData.colorMulTarget + \",\" + animationRegisterData.colorMulTarget + \",\" + accMultiplierColor + \"\\n\";\n }\n if (this._iUsesOffset) {\n code += \"mul \" + tempColor + \",\" + tempTime + \",\" + deltaOffsetValues[this._iNumSegmentPoint] + \"\\n\";\n code += \"add \" + animationRegisterData.colorAddTarget + \",\" + animationRegisterData.colorAddTarget + \",\" + tempColor + \"\\n\";\n }\n }\n return code;\n };\n return ParticleSegmentedColorNode;\n}(ParticleNodeBase));\nexport { ParticleSegmentedColorNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleSegmentedColorNode.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleSpriteSheetState = (function (_super) {\n tslib_1.__extends(ParticleSpriteSheetState, _super);\n function ParticleSpriteSheetState(animator, particleSpriteSheetNode) {\n var _this = _super.call(this, animator, particleSpriteSheetNode) || this;\n _this._particleSpriteSheetNode = particleSpriteSheetNode;\n _this._usesCycle = _this._particleSpriteSheetNode._iUsesCycle;\n _this._usesPhase = _this._particleSpriteSheetNode._iUsesCycle;\n _this._totalFrames = _this._particleSpriteSheetNode._iTotalFrames;\n _this._numColumns = _this._particleSpriteSheetNode._iNumColumns;\n _this._numRows = _this._particleSpriteSheetNode._iNumRows;\n _this._cycleDuration = _this._particleSpriteSheetNode._iCycleDuration;\n _this._cyclePhase = _this._particleSpriteSheetNode._iCyclePhase;\n _this.updateSpriteSheetData();\n return _this;\n }\n Object.defineProperty(ParticleSpriteSheetState.prototype, \"cyclePhase\", {\n /**\n * Defines the cycle phase, when in global mode. Defaults to zero.\n */\n get: function () {\n return this._cyclePhase;\n },\n set: function (value) {\n this._cyclePhase = value;\n this.updateSpriteSheetData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleSpriteSheetState.prototype, \"cycleDuration\", {\n /**\n * Defines the cycle duration in seconds, when in global mode. Defaults to 1.\n */\n get: function () {\n return this._cycleDuration;\n },\n set: function (value) {\n this._cycleDuration = value;\n this.updateSpriteSheetData();\n },\n enumerable: true,\n configurable: true\n });\n ParticleSpriteSheetState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (!shader.usesUVTransform) {\n shader.setVertexConst(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleSpriteSheetState.UV_INDEX_0), this._spriteSheetData[0], this._spriteSheetData[1], this._spriteSheetData[2], this._spriteSheetData[3]);\n if (this._usesCycle) {\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleSpriteSheetState.UV_INDEX_1);\n if (this._particleSpriteSheetNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {\n if (this._usesPhase)\n animationElements.activateVertexBuffer(index, this._particleSpriteSheetNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n else\n animationElements.activateVertexBuffer(index, this._particleSpriteSheetNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_2);\n }\n else\n shader.setVertexConst(index, this._spriteSheetData[4], this._spriteSheetData[5]);\n }\n }\n };\n ParticleSpriteSheetState.prototype.updateSpriteSheetData = function () {\n this._spriteSheetData = new Array(8);\n var uTotal = this._totalFrames / this._numColumns;\n this._spriteSheetData[0] = uTotal;\n this._spriteSheetData[1] = 1 / this._numColumns;\n this._spriteSheetData[2] = 1 / this._numRows;\n if (this._usesCycle) {\n if (this._cycleDuration <= 0)\n throw (new Error(\"the cycle duration must be greater than zero\"));\n this._spriteSheetData[4] = uTotal / this._cycleDuration;\n this._spriteSheetData[5] = this._cycleDuration;\n if (this._usesPhase)\n this._spriteSheetData[6] = this._cyclePhase;\n }\n };\n return ParticleSpriteSheetState;\n}(ParticleStateBase));\nexport { ParticleSpriteSheetState };\n/** @private */\nParticleSpriteSheetState.UV_INDEX_0 = 0;\n/** @private */\nParticleSpriteSheetState.UV_INDEX_1 = 1;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleSpriteSheetState.js","import * as tslib_1 from \"tslib\";\nimport { ShaderRegisterElement } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleSpriteSheetState } from \"../states/ParticleSpriteSheetState\";\nimport { ParticleAnimationSet } from \"../ParticleAnimationSet\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used when a spritesheet texture is required to animate the particle.\n * NB: to enable use of this node, the repeat property on the material has to be set to true.\n */\nvar ParticleSpriteSheetNode = (function (_super) {\n tslib_1.__extends(ParticleSpriteSheetNode, _super);\n /**\n * Creates a new ParticleSpriteSheetNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] numColumns Defines the number of columns in the spritesheet, when in global mode. Defaults to 1.\n * @param [optional] numRows Defines the number of rows in the spritesheet, when in global mode. Defaults to 1.\n * @param [optional] cycleDuration Defines the default cycle duration in seconds, when in global mode. Defaults to 1.\n * @param [optional] cyclePhase Defines the default cycle phase, when in global mode. Defaults to 0.\n * @param [optional] totalFrames Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows.\n * @param [optional] looping Defines whether the spritesheet animation is set to loop indefinitely. Defaults to true.\n */\n function ParticleSpriteSheetNode(mode, usesCycle, usesPhase, numColumns, numRows, cycleDuration, cyclePhase, totalFrames) {\n if (numColumns === void 0) { numColumns = 1; }\n if (numRows === void 0) { numRows = 1; }\n if (cycleDuration === void 0) { cycleDuration = 1; }\n if (cyclePhase === void 0) { cyclePhase = 0; }\n if (totalFrames === void 0) { totalFrames = Number.MAX_VALUE; }\n var _this = _super.call(this, \"ParticleSpriteSheet\", mode, usesCycle ? (usesPhase ? 3 : 2) : 1, ParticleAnimationSet.POST_PRIORITY + 1) || this;\n _this._pStateClass = ParticleSpriteSheetState;\n _this._iUsesCycle = usesCycle;\n _this._iUsesPhase = usesPhase;\n _this._iNumColumns = numColumns;\n _this._iNumRows = numRows;\n _this._iCyclePhase = cyclePhase;\n _this._iCycleDuration = cycleDuration;\n _this._iTotalFrames = Math.min(totalFrames, numColumns * numRows);\n return _this;\n }\n Object.defineProperty(ParticleSpriteSheetNode.prototype, \"numColumns\", {\n /**\n * Defines the number of columns in the spritesheet, when in global mode. Defaults to 1. Read only.\n */\n get: function () {\n return this._iNumColumns;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleSpriteSheetNode.prototype, \"numRows\", {\n /**\n * Defines the number of rows in the spritesheet, when in global mode. Defaults to 1. Read only.\n */\n get: function () {\n return this._iNumRows;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleSpriteSheetNode.prototype, \"totalFrames\", {\n /**\n * Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows. Read only.\n */\n get: function () {\n return this._iTotalFrames;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ParticleSpriteSheetNode.prototype.getAGALUVCode = function (shader, animationSet, registerCache, animationRegisterData) {\n //get 2 vc\n var uvParamConst1 = registerCache.getFreeVertexConstant();\n var uvParamConst2 = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleSpriteSheetState.UV_INDEX_0, uvParamConst1.index);\n animationRegisterData.setRegisterIndex(this, ParticleSpriteSheetState.UV_INDEX_1, uvParamConst2.index);\n var uTotal = new ShaderRegisterElement(uvParamConst1.regName, uvParamConst1.index, 0);\n var uStep = new ShaderRegisterElement(uvParamConst1.regName, uvParamConst1.index, 1);\n var vStep = new ShaderRegisterElement(uvParamConst1.regName, uvParamConst1.index, 2);\n var uSpeed = new ShaderRegisterElement(uvParamConst2.regName, uvParamConst2.index, 0);\n var cycle = new ShaderRegisterElement(uvParamConst2.regName, uvParamConst2.index, 1);\n var phaseTime = new ShaderRegisterElement(uvParamConst2.regName, uvParamConst2.index, 2);\n var temp = registerCache.getFreeVertexVectorTemp();\n var time = new ShaderRegisterElement(temp.regName, temp.index, 0);\n var vOffset = new ShaderRegisterElement(temp.regName, temp.index, 1);\n temp = new ShaderRegisterElement(temp.regName, temp.index, 2);\n var temp2 = new ShaderRegisterElement(temp.regName, temp.index, 3);\n var u = new ShaderRegisterElement(animationRegisterData.uvTarget.regName, animationRegisterData.uvTarget.index, 0);\n var v = new ShaderRegisterElement(animationRegisterData.uvTarget.regName, animationRegisterData.uvTarget.index, 1);\n var code = \"\";\n //scale uv\n code += \"mul \" + u + \",\" + u + \",\" + uStep + \"\\n\";\n if (this._iNumRows > 1)\n code += \"mul \" + v + \",\" + v + \",\" + vStep + \"\\n\";\n if (this._iUsesCycle) {\n if (this._iUsesPhase)\n code += \"add \" + time + \",\" + animationRegisterData.vertexTime + \",\" + phaseTime + \"\\n\";\n else\n code += \"mov \" + time + \",\" + animationRegisterData.vertexTime + \"\\n\";\n code += \"div \" + time + \",\" + time + \",\" + cycle + \"\\n\";\n code += \"frc \" + time + \",\" + time + \"\\n\";\n code += \"mul \" + time + \",\" + time + \",\" + cycle + \"\\n\";\n code += \"mul \" + temp + \",\" + time + \",\" + uSpeed + \"\\n\";\n }\n else\n code += \"mul \" + temp.toString() + \",\" + animationRegisterData.vertexLife + \",\" + uTotal + \"\\n\";\n if (this._iNumRows > 1) {\n code += \"frc \" + temp2 + \",\" + temp + \"\\n\";\n code += \"sub \" + vOffset + \",\" + temp + \",\" + temp2 + \"\\n\";\n code += \"mul \" + vOffset + \",\" + vOffset + \",\" + vStep + \"\\n\";\n code += \"add \" + v + \",\" + v + \",\" + vOffset + \"\\n\";\n }\n code += \"div \" + temp2 + \",\" + temp + \",\" + uStep + \"\\n\";\n code += \"frc \" + temp + \",\" + temp2 + \"\\n\";\n code += \"sub \" + temp2 + \",\" + temp2 + \",\" + temp + \"\\n\";\n code += \"mul \" + temp + \",\" + temp2 + \",\" + uStep + \"\\n\";\n if (this._iNumRows > 1)\n code += \"frc \" + temp + \",\" + temp + \"\\n\";\n code += \"add \" + u + \",\" + u + \",\" + temp + \"\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleSpriteSheetNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleSpriteSheetNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {\n particleAnimationSet.hasUVNode = true;\n };\n /**\n * @inheritDoc\n */\n ParticleSpriteSheetNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n if (this._iUsesCycle) {\n var uvCycle = param[ParticleSpriteSheetNode.UV_VECTOR3D];\n if (!uvCycle)\n throw (new Error(\"there is no \" + ParticleSpriteSheetNode.UV_VECTOR3D + \" in param!\"));\n if (uvCycle.x <= 0)\n throw (new Error(\"the cycle duration must be greater than zero\"));\n var uTotal = this._iTotalFrames / this._iNumColumns;\n this._pOneData[0] = uTotal / uvCycle.x;\n this._pOneData[1] = uvCycle.x;\n if (this._iUsesPhase)\n this._pOneData[2] = uvCycle.y;\n }\n };\n return ParticleSpriteSheetNode;\n}(ParticleNodeBase));\nexport { ParticleSpriteSheetNode };\n/**\n * Reference for spritesheet node properties on a single particle (when in local property mode).\n * Expects a Vector3D representing the cycleDuration (x), optional phaseTime (y).\n */\nParticleSpriteSheetNode.UV_VECTOR3D = \"UVVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleSpriteSheetNode.js","import * as tslib_1 from \"tslib\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleUVState = (function (_super) {\n tslib_1.__extends(ParticleUVState, _super);\n function ParticleUVState(animator, particleUVNode) {\n var _this = _super.call(this, animator, particleUVNode) || this;\n _this._particleUVNode = particleUVNode;\n return _this;\n }\n ParticleUVState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (!shader.usesUVTransform) {\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleUVState.UV_INDEX);\n var data = this._particleUVNode._iUvData;\n shader.setVertexConst(index, data.x, data.y);\n }\n };\n return ParticleUVState;\n}(ParticleStateBase));\nexport { ParticleUVState };\n/** @private */\nParticleUVState.UV_INDEX = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleUVState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ShaderRegisterElement } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleUVState } from \"../states/ParticleUVState\";\nimport { ParticleAnimationSet } from \"../ParticleAnimationSet\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to control the UV offset and scale of a particle over time.\n */\nvar ParticleUVNode = (function (_super) {\n tslib_1.__extends(ParticleUVNode, _super);\n /**\n * Creates a new ParticleTimeNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] cycle Defines whether the time track is in loop mode. Defaults to false.\n * @param [optional] scale Defines whether the time track is in loop mode. Defaults to false.\n * @param [optional] axis Defines whether the time track is in loop mode. Defaults to false.\n */\n function ParticleUVNode(mode, cycle, scale, axis) {\n if (cycle === void 0) { cycle = 1; }\n if (scale === void 0) { scale = 1; }\n if (axis === void 0) { axis = \"x\"; }\n var _this = \n //because of the stage3d register limitation, it only support the global mode\n _super.call(this, \"ParticleUV\", ParticlePropertiesMode.GLOBAL, 4, ParticleAnimationSet.POST_PRIORITY + 1) || this;\n _this._pStateClass = ParticleUVState;\n _this._cycle = cycle;\n _this._scale = scale;\n _this._axis = axis;\n _this.updateUVData();\n return _this;\n }\n Object.defineProperty(ParticleUVNode.prototype, \"cycle\", {\n /**\n *\n */\n get: function () {\n return this._cycle;\n },\n set: function (value) {\n this._cycle = value;\n this.updateUVData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleUVNode.prototype, \"scale\", {\n /**\n *\n */\n get: function () {\n return this._scale;\n },\n set: function (value) {\n this._scale = value;\n this.updateUVData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleUVNode.prototype, \"axis\", {\n /**\n *\n */\n get: function () {\n return this._axis;\n },\n set: function (value) {\n this._axis = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ParticleUVNode.prototype.getAGALUVCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var code = \"\";\n var uvConst = registerCache.getFreeVertexConstant();\n animationRegisterData.setRegisterIndex(this, ParticleUVState.UV_INDEX, uvConst.index);\n var axisIndex = this._axis == \"x\" ? 0 : (this._axis == \"y\" ? 1 : 2);\n var target = new ShaderRegisterElement(animationRegisterData.uvTarget.regName, animationRegisterData.uvTarget.index, axisIndex);\n var sin = registerCache.getFreeVertexSingleTemp();\n if (this._scale != 1)\n code += \"mul \" + target + \",\" + target + \",\" + uvConst + \".y\\n\";\n code += \"mul \" + sin + \",\" + animationRegisterData.vertexTime + \",\" + uvConst + \".x\\n\";\n code += \"sin \" + sin + \",\" + sin + \"\\n\";\n code += \"add \" + target + \",\" + target + \",\" + sin + \"\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleUVNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n ParticleUVNode.prototype.updateUVData = function () {\n this._iUvData = new Vector3D(Math.PI * 2 / this._cycle, this._scale, 0, 0);\n };\n /**\n * @inheritDoc\n */\n ParticleUVNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {\n particleAnimationSet.hasUVNode = true;\n };\n return ParticleUVNode;\n}(ParticleNodeBase));\nexport { ParticleUVNode };\n/**\n *\n */\nParticleUVNode.U_AXIS = \"x\";\n/**\n *\n */\nParticleUVNode.V_AXIS = \"y\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleUVNode.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleStateBase } from \"./ParticleStateBase\";\n/**\n * ...\n */\nvar ParticleVelocityState = (function (_super) {\n tslib_1.__extends(ParticleVelocityState, _super);\n function ParticleVelocityState(animator, particleVelocityNode) {\n var _this = _super.call(this, animator, particleVelocityNode) || this;\n _this._particleVelocityNode = particleVelocityNode;\n _this._velocity = _this._particleVelocityNode._iVelocity;\n return _this;\n }\n Object.defineProperty(ParticleVelocityState.prototype, \"velocity\", {\n /**\n * Defines the default velocity vector of the state, used when in global mode.\n */\n get: function () {\n return this._velocity;\n },\n set: function (value) {\n this._velocity = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n */\n ParticleVelocityState.prototype.getVelocities = function () {\n return this._pDynamicProperties;\n };\n ParticleVelocityState.prototype.setVelocities = function (value) {\n this._pDynamicProperties = value;\n this._pDynamicPropertiesDirty = new Object();\n };\n ParticleVelocityState.prototype.setRenderState = function (shader, renderable, animationElements, animationRegisterData, projection, stage) {\n if (this._particleVelocityNode.mode == ParticlePropertiesMode.LOCAL_DYNAMIC && !this._pDynamicPropertiesDirty[animationElements._iUniqueId])\n this._pUpdateDynamicProperties(animationElements);\n var index = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleVelocityState.VELOCITY_INDEX);\n if (this._particleVelocityNode.mode == ParticlePropertiesMode.GLOBAL)\n shader.setVertexConst(index, this._velocity.x, this._velocity.y, this._velocity.z);\n else\n animationElements.activateVertexBuffer(index, this._particleVelocityNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);\n };\n return ParticleVelocityState;\n}(ParticleStateBase));\nexport { ParticleVelocityState };\n/** @private */\nParticleVelocityState.VELOCITY_INDEX = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/ParticleVelocityState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { ParticlePropertiesMode } from \"../data/ParticlePropertiesMode\";\nimport { ParticleVelocityState } from \"../states/ParticleVelocityState\";\nimport { ParticleNodeBase } from \"./ParticleNodeBase\";\n/**\n * A particle animation node used to set the starting velocity of a particle.\n */\nvar ParticleVelocityNode = (function (_super) {\n tslib_1.__extends(ParticleVelocityNode, _super);\n /**\n * Creates a new ParticleVelocityNode\n *\n * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n * @param [optional] velocity Defines the default velocity vector of the node, used when in global mode.\n */\n function ParticleVelocityNode(mode, velocity) {\n if (velocity === void 0) { velocity = null; }\n var _this = _super.call(this, \"ParticleVelocity\", mode, 3) || this;\n _this._pStateClass = ParticleVelocityState;\n _this._iVelocity = velocity || new Vector3D();\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleVelocityNode.prototype.getAGALVertexCode = function (shader, animationSet, registerCache, animationRegisterData) {\n var velocityValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? registerCache.getFreeVertexConstant() : registerCache.getFreeVertexAttribute();\n animationRegisterData.setRegisterIndex(this, ParticleVelocityState.VELOCITY_INDEX, velocityValue.index);\n var distance = registerCache.getFreeVertexVectorTemp();\n var code = \"\";\n code += \"mul \" + distance + \",\" + animationRegisterData.vertexTime + \",\" + velocityValue + \"\\n\";\n code += \"add \" + animationRegisterData.positionTarget + \".xyz,\" + distance + \",\" + animationRegisterData.positionTarget + \".xyz\\n\";\n if (animationSet.needVelocity)\n code += \"add \" + animationRegisterData.velocityTarget + \".xyz,\" + velocityValue + \".xyz,\" + animationRegisterData.velocityTarget + \".xyz\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n ParticleVelocityNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n ParticleVelocityNode.prototype._iGeneratePropertyOfOneParticle = function (param) {\n var _tempVelocity = param[ParticleVelocityNode.VELOCITY_VECTOR3D];\n if (!_tempVelocity)\n throw new Error(\"there is no \" + ParticleVelocityNode.VELOCITY_VECTOR3D + \" in param!\");\n this._pOneData[0] = _tempVelocity.x;\n this._pOneData[1] = _tempVelocity.y;\n this._pOneData[2] = _tempVelocity.z;\n };\n return ParticleVelocityNode;\n}(ParticleNodeBase));\nexport { ParticleVelocityNode };\n/**\n * Reference for velocity node properties on a single particle (when in local property mode).\n * Expects a Vector3D object representing the direction of movement on the particle.\n */\nParticleVelocityNode.VELOCITY_VECTOR3D = \"VelocityVector3D\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/ParticleVelocityNode.js","import * as tslib_1 from \"tslib\";\nimport { JointPose } from \"../data/JointPose\";\nimport { SkeletonPose } from \"../data/SkeletonPose\";\nimport { AnimationStateBase } from \"./AnimationStateBase\";\n/**\n *\n */\nvar SkeletonBinaryLERPState = (function (_super) {\n tslib_1.__extends(SkeletonBinaryLERPState, _super);\n function SkeletonBinaryLERPState(animator, skeletonAnimationNode) {\n var _this = _super.call(this, animator, skeletonAnimationNode) || this;\n _this._blendWeight = 0;\n _this._skeletonPose = new SkeletonPose();\n _this._skeletonPoseDirty = true;\n _this._skeletonAnimationNode = skeletonAnimationNode;\n _this._inputA = animator.getAnimationState(_this._skeletonAnimationNode.inputA);\n _this._inputB = animator.getAnimationState(_this._skeletonAnimationNode.inputB);\n return _this;\n }\n Object.defineProperty(SkeletonBinaryLERPState.prototype, \"blendWeight\", {\n /**\n * Defines a fractional value between 0 and 1 representing the blending ratio between inputA (0) and inputB (1),\n * used to produce the skeleton pose output.\n *\n * @see inputA\n * @see inputB\n */\n get: function () {\n return this._blendWeight;\n },\n set: function (value) {\n this._blendWeight = value;\n this._pPositionDeltaDirty = true;\n this._skeletonPoseDirty = true;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n SkeletonBinaryLERPState.prototype.phase = function (value) {\n this._skeletonPoseDirty = true;\n this._pPositionDeltaDirty = true;\n this._inputA.phase(value);\n this._inputB.phase(value);\n };\n /**\n * @inheritDoc\n */\n SkeletonBinaryLERPState.prototype._pUpdateTime = function (time) {\n this._skeletonPoseDirty = true;\n this._inputA.update(time);\n this._inputB.update(time);\n _super.prototype._pUpdateTime.call(this, time);\n };\n /**\n * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.\n */\n SkeletonBinaryLERPState.prototype.getSkeletonPose = function (skeleton) {\n if (this._skeletonPoseDirty)\n this.updateSkeletonPose(skeleton);\n return this._skeletonPose;\n };\n /**\n * @inheritDoc\n */\n SkeletonBinaryLERPState.prototype._pUpdatePositionDelta = function () {\n this._pPositionDeltaDirty = false;\n var deltA = this._inputA.positionDelta;\n var deltB = this._inputB.positionDelta;\n this._pRootDelta.x = deltA.x + this._blendWeight * (deltB.x - deltA.x);\n this._pRootDelta.y = deltA.y + this._blendWeight * (deltB.y - deltA.y);\n this._pRootDelta.z = deltA.z + this._blendWeight * (deltB.z - deltA.z);\n };\n /**\n * Updates the output skeleton pose of the node based on the blendWeight value between input nodes.\n *\n * @param skeleton The skeleton used by the animator requesting the ouput pose.\n */\n SkeletonBinaryLERPState.prototype.updateSkeletonPose = function (skeleton) {\n this._skeletonPoseDirty = false;\n var endPose;\n var endPoses = this._skeletonPose.jointPoses;\n var poses1 = this._inputA.getSkeletonPose(skeleton).jointPoses;\n var poses2 = this._inputB.getSkeletonPose(skeleton).jointPoses;\n var pose1, pose2;\n var p1, p2;\n var tr;\n var numJoints = skeleton.numJoints;\n // :s\n if (endPoses.length != numJoints)\n endPoses.length = numJoints;\n for (var i = 0; i < numJoints; ++i) {\n endPose = endPoses[i];\n if (endPose == null)\n endPose = endPoses[i] = new JointPose();\n pose1 = poses1[i];\n pose2 = poses2[i];\n p1 = pose1.translation;\n p2 = pose2.translation;\n endPose.orientation.lerp(pose1.orientation, pose2.orientation, this._blendWeight);\n tr = endPose.translation;\n tr.x = p1.x + this._blendWeight * (p2.x - p1.x);\n tr.y = p1.y + this._blendWeight * (p2.y - p1.y);\n tr.z = p1.z + this._blendWeight * (p2.z - p1.z);\n }\n };\n return SkeletonBinaryLERPState;\n}(AnimationStateBase));\nexport { SkeletonBinaryLERPState };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/SkeletonBinaryLERPState.js","import * as tslib_1 from \"tslib\";\nimport { AnimationNodeBase } from \"@awayjs/graphics\";\nimport { SkeletonBinaryLERPState } from \"../states/SkeletonBinaryLERPState\";\n/**\n * A skeleton animation node that uses two animation node inputs to blend a lineraly interpolated output of a skeleton pose.\n */\nvar SkeletonBinaryLERPNode = (function (_super) {\n tslib_1.__extends(SkeletonBinaryLERPNode, _super);\n /**\n * Creates a new SkeletonBinaryLERPNode object.\n */\n function SkeletonBinaryLERPNode() {\n var _this = _super.call(this) || this;\n _this._pStateClass = SkeletonBinaryLERPState;\n return _this;\n }\n /**\n * @inheritDoc\n */\n SkeletonBinaryLERPNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n return SkeletonBinaryLERPNode;\n}(AnimationNodeBase));\nexport { SkeletonBinaryLERPNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/SkeletonBinaryLERPNode.js","import * as tslib_1 from \"tslib\";\nimport { EventBase } from \"@awayjs/core\";\n/**\n * Dispatched to notify changes in an animation state's state.\n */\nvar AnimationStateEvent = (function (_super) {\n tslib_1.__extends(AnimationStateEvent, _super);\n /**\n * Create a new AnimatonStateEvent\n *\n * @param type The event type.\n * @param animator The animation state object that is the subject of this event.\n * @param animationNode The animation node inside the animation state from which the event originated.\n */\n function AnimationStateEvent(type, animator, animationState, animationNode) {\n var _this = _super.call(this, type) || this;\n _this._animator = animator;\n _this._animationState = animationState;\n _this._animationNode = animationNode;\n return _this;\n }\n Object.defineProperty(AnimationStateEvent.prototype, \"animator\", {\n /**\n * The animator object that is the subject of this event.\n */\n get: function () {\n return this._animator;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationStateEvent.prototype, \"animationState\", {\n /**\n * The animation state object that is the subject of this event.\n */\n get: function () {\n return this._animationState;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationStateEvent.prototype, \"animationNode\", {\n /**\n * The animation node inside the animation state from which the event originated.\n */\n get: function () {\n return this._animationNode;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Clones the event.\n *\n * @return An exact duplicate of the current object.\n */\n AnimationStateEvent.prototype.clone = function () {\n return new AnimationStateEvent(this.type, this._animator, this._animationState, this._animationNode);\n };\n return AnimationStateEvent;\n}(EventBase));\nexport { AnimationStateEvent };\n/**\n * Dispatched when a non-looping clip node inside an animation state reaches the end of its timeline.\n */\nAnimationStateEvent.PLAYBACK_COMPLETE = \"playbackComplete\";\nAnimationStateEvent.TRANSITION_COMPLETE = \"transitionComplete\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/AnimationStateEvent.js","import * as tslib_1 from \"tslib\";\nimport { AnimationStateEvent } from \"../../events/AnimationStateEvent\";\nimport { AnimationStateBase } from \"./AnimationStateBase\";\n/**\n *\n */\nvar AnimationClipState = (function (_super) {\n tslib_1.__extends(AnimationClipState, _super);\n function AnimationClipState(animator, animationClipNode) {\n var _this = _super.call(this, animator, animationClipNode) || this;\n _this._pFramesDirty = true;\n _this._animationClipNode = animationClipNode;\n return _this;\n }\n Object.defineProperty(AnimationClipState.prototype, \"blendWeight\", {\n /**\n * Returns a fractional value between 0 and 1 representing the blending ratio of the current playhead position\n * between the current frame (0) and next frame (1) of the animation.\n *\n * @see #currentFrame\n * @see #nextFrame\n */\n get: function () {\n if (this._pFramesDirty)\n this._pUpdateFrames();\n return this._pBlendWeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationClipState.prototype, \"currentFrame\", {\n /**\n * Returns the current frame of animation in the clip based on the internal playhead position.\n */\n get: function () {\n if (this._pFramesDirty)\n this._pUpdateFrames();\n return this._pCurrentFrame;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationClipState.prototype, \"nextFrame\", {\n /**\n * Returns the next frame of animation in the clip based on the internal playhead position.\n */\n get: function () {\n if (this._pFramesDirty)\n this._pUpdateFrames();\n return this._pNextFrame;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n AnimationClipState.prototype.update = function (time) {\n if (!this._animationClipNode.looping) {\n if (time > this._pStartTime + this._animationClipNode.totalDuration)\n time = this._pStartTime + this._animationClipNode.totalDuration;\n else if (time < this._pStartTime)\n time = this._pStartTime;\n }\n if (this._pTime == time - this._pStartTime)\n return;\n this._pUpdateTime(time);\n };\n /**\n * @inheritDoc\n */\n AnimationClipState.prototype.phase = function (value) {\n var time = value * this._animationClipNode.totalDuration + this._pStartTime;\n if (this._pTime == time - this._pStartTime)\n return;\n this._pUpdateTime(time);\n };\n /**\n * @inheritDoc\n */\n AnimationClipState.prototype._pUpdateTime = function (time) {\n this._pFramesDirty = true;\n this._pTimeDir = (time - this._pStartTime > this._pTime) ? 1 : -1;\n _super.prototype._pUpdateTime.call(this, time);\n };\n /**\n * Updates the nodes internal playhead to determine the current and next animation frame, and the blendWeight between the two.\n *\n * @see #currentFrame\n * @see #nextFrame\n * @see #blendWeight\n */\n AnimationClipState.prototype._pUpdateFrames = function () {\n this._pFramesDirty = false;\n var looping = this._animationClipNode.looping;\n var totalDuration = this._animationClipNode.totalDuration;\n var lastFrame = this._animationClipNode.lastFrame;\n var time = this._pTime;\n //trace(\"time\", time, totalDuration)\n if (looping && (time >= totalDuration || time < 0)) {\n time %= totalDuration;\n if (time < 0)\n time += totalDuration;\n }\n if (!looping && time >= totalDuration) {\n this.notifyPlaybackComplete();\n this._pCurrentFrame = lastFrame;\n this._pNextFrame = lastFrame;\n this._pBlendWeight = 0;\n }\n else if (!looping && time <= 0) {\n this._pCurrentFrame = 0;\n this._pNextFrame = 0;\n this._pBlendWeight = 0;\n }\n else if (this._animationClipNode.fixedFrameRate) {\n var t = time / totalDuration * lastFrame;\n this._pCurrentFrame = Math.floor(t);\n this._pBlendWeight = t - this._pCurrentFrame;\n this._pNextFrame = this._pCurrentFrame + 1;\n }\n else {\n this._pCurrentFrame = 0;\n this._pNextFrame = 0;\n var dur = 0, frameTime;\n var durations = this._animationClipNode.durations;\n do {\n frameTime = dur;\n dur += durations[this._pNextFrame];\n this._pCurrentFrame = this._pNextFrame++;\n } while (time > dur);\n if (this._pCurrentFrame == lastFrame) {\n this._pCurrentFrame = 0;\n this._pNextFrame = 1;\n }\n this._pBlendWeight = (time - frameTime) / durations[this._pCurrentFrame];\n }\n };\n AnimationClipState.prototype.notifyPlaybackComplete = function () {\n if (this._animationStatePlaybackComplete == null)\n this._animationStatePlaybackComplete = new AnimationStateEvent(AnimationStateEvent.PLAYBACK_COMPLETE, this._pAnimator, this, this._animationClipNode);\n this._animationClipNode.dispatchEvent(this._animationStatePlaybackComplete);\n };\n return AnimationClipState;\n}(AnimationStateBase));\nexport { AnimationClipState };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/AnimationClipState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { JointPose } from \"../data/JointPose\";\nimport { SkeletonPose } from \"../data/SkeletonPose\";\nimport { AnimationClipState } from \"./AnimationClipState\";\n/**\n *\n */\nvar SkeletonClipState = (function (_super) {\n tslib_1.__extends(SkeletonClipState, _super);\n function SkeletonClipState(animator, skeletonClipNode) {\n var _this = _super.call(this, animator, skeletonClipNode) || this;\n _this._rootPos = new Vector3D();\n _this._skeletonPose = new SkeletonPose();\n _this._skeletonPoseDirty = true;\n _this._skeletonClipNode = skeletonClipNode;\n _this._frames = _this._skeletonClipNode.frames;\n return _this;\n }\n Object.defineProperty(SkeletonClipState.prototype, \"currentPose\", {\n /**\n * Returns the current skeleton pose frame of animation in the clip based on the internal playhead position.\n */\n get: function () {\n if (this._pFramesDirty)\n this._pUpdateFrames();\n return this._currentPose;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SkeletonClipState.prototype, \"nextPose\", {\n /**\n * Returns the next skeleton pose frame of animation in the clip based on the internal playhead position.\n */\n get: function () {\n if (this._pFramesDirty)\n this._pUpdateFrames();\n return this._nextPose;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.\n */\n SkeletonClipState.prototype.getSkeletonPose = function (skeleton) {\n if (this._skeletonPoseDirty)\n this.updateSkeletonPose(skeleton);\n return this._skeletonPose;\n };\n /**\n * @inheritDoc\n */\n SkeletonClipState.prototype._pUpdateTime = function (time) {\n this._skeletonPoseDirty = true;\n _super.prototype._pUpdateTime.call(this, time);\n };\n /**\n * @inheritDoc\n */\n SkeletonClipState.prototype._pUpdateFrames = function () {\n _super.prototype._pUpdateFrames.call(this);\n this._currentPose = this._frames[this._pCurrentFrame];\n if (this._skeletonClipNode.looping && this._pNextFrame >= this._skeletonClipNode.lastFrame) {\n this._nextPose = this._frames[0];\n this._pAnimator.dispatchCycleEvent();\n }\n else\n this._nextPose = this._frames[this._pNextFrame];\n };\n /**\n * Updates the output skeleton pose of the node based on the internal playhead position.\n *\n * @param skeleton The skeleton used by the animator requesting the ouput pose.\n */\n SkeletonClipState.prototype.updateSkeletonPose = function (skeleton) {\n this._skeletonPoseDirty = false;\n if (!this._skeletonClipNode.totalDuration)\n return;\n if (this._pFramesDirty)\n this._pUpdateFrames();\n var currentPose = this._currentPose.jointPoses;\n var nextPose = this._nextPose.jointPoses;\n var numJoints = skeleton.numJoints;\n var p1, p2;\n var pose1, pose2;\n var endPoses = this._skeletonPose.jointPoses;\n var endPose;\n var tr;\n // :s\n if (endPoses.length != numJoints)\n endPoses.length = numJoints;\n if ((numJoints != currentPose.length) || (numJoints != nextPose.length))\n throw new Error(\"joint counts don't match!\");\n for (var i = 0; i < numJoints; ++i) {\n endPose = endPoses[i];\n if (endPose == null)\n endPose = endPoses[i] = new JointPose();\n pose1 = currentPose[i];\n pose2 = nextPose[i];\n p1 = pose1.translation;\n p2 = pose2.translation;\n if (this._skeletonClipNode.highQuality)\n endPose.orientation.slerp(pose1.orientation, pose2.orientation, this._pBlendWeight);\n else\n endPose.orientation.lerp(pose1.orientation, pose2.orientation, this._pBlendWeight);\n if (i > 0) {\n tr = endPose.translation;\n tr.x = p1.x + this._pBlendWeight * (p2.x - p1.x);\n tr.y = p1.y + this._pBlendWeight * (p2.y - p1.y);\n tr.z = p1.z + this._pBlendWeight * (p2.z - p1.z);\n }\n }\n };\n /**\n * @inheritDoc\n */\n SkeletonClipState.prototype._pUpdatePositionDelta = function () {\n this._pPositionDeltaDirty = false;\n if (this._pFramesDirty)\n this._pUpdateFrames();\n var p1, p2, p3;\n var totalDelta = this._skeletonClipNode.totalDelta;\n // jumping back, need to reset position\n if ((this._pTimeDir > 0 && this._pNextFrame < this._pOldFrame) || (this._pTimeDir < 0 && this._pNextFrame > this._pOldFrame)) {\n this._rootPos.x -= totalDelta.x * this._pTimeDir;\n this._rootPos.y -= totalDelta.y * this._pTimeDir;\n this._rootPos.z -= totalDelta.z * this._pTimeDir;\n }\n var dx = this._rootPos.x;\n var dy = this._rootPos.y;\n var dz = this._rootPos.z;\n if (this._skeletonClipNode.stitchFinalFrame && this._pNextFrame == this._skeletonClipNode.lastFrame) {\n p1 = this._frames[0].jointPoses[0].translation;\n p2 = this._frames[1].jointPoses[0].translation;\n p3 = this._currentPose.jointPoses[0].translation;\n this._rootPos.x = p3.x + p1.x + this._pBlendWeight * (p2.x - p1.x);\n this._rootPos.y = p3.y + p1.y + this._pBlendWeight * (p2.y - p1.y);\n this._rootPos.z = p3.z + p1.z + this._pBlendWeight * (p2.z - p1.z);\n }\n else {\n p1 = this._currentPose.jointPoses[0].translation;\n p2 = this._frames[this._pNextFrame].jointPoses[0].translation; //cover the instances where we wrap the pose but still want the final frame translation values\n this._rootPos.x = p1.x + this._pBlendWeight * (p2.x - p1.x);\n this._rootPos.y = p1.y + this._pBlendWeight * (p2.y - p1.y);\n this._rootPos.z = p1.z + this._pBlendWeight * (p2.z - p1.z);\n }\n this._pRootDelta.x = this._rootPos.x - dx;\n this._pRootDelta.y = this._rootPos.y - dy;\n this._pRootDelta.z = this._rootPos.z - dz;\n this._pOldFrame = this._pNextFrame;\n };\n return SkeletonClipState;\n}(AnimationClipState));\nexport { SkeletonClipState };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/SkeletonClipState.js","import * as tslib_1 from \"tslib\";\nimport { SkeletonClipState } from \"../states/SkeletonClipState\";\nimport { AnimationClipNodeBase } from \"./AnimationClipNodeBase\";\n/**\n * A skeleton animation node containing time-based animation data as individual skeleton poses.\n */\nvar SkeletonClipNode = (function (_super) {\n tslib_1.__extends(SkeletonClipNode, _super);\n /**\n * Creates a new SkeletonClipNode object.\n */\n function SkeletonClipNode() {\n var _this = _super.call(this) || this;\n _this._frames = new Array();\n /**\n * Determines whether to use SLERP equations (true) or LERP equations (false) in the calculation\n * of the output skeleton pose. Defaults to false.\n */\n _this.highQuality = false;\n _this._pStateClass = SkeletonClipState;\n return _this;\n }\n Object.defineProperty(SkeletonClipNode.prototype, \"frames\", {\n /**\n * Returns a vector of skeleton poses representing the pose of each animation frame in the clip.\n */\n get: function () {\n return this._frames;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Adds a skeleton pose frame to the internal timeline of the animation node.\n *\n * @param skeletonPose The skeleton pose object to add to the timeline of the node.\n * @param duration The specified duration of the frame in milliseconds.\n */\n SkeletonClipNode.prototype.addFrame = function (skeletonPose, duration) {\n this._frames.push(skeletonPose);\n this._pDurations.push(duration);\n this._pNumFrames = this._pDurations.length;\n this._pStitchDirty = true;\n };\n /**\n * @inheritDoc\n */\n SkeletonClipNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n /**\n * @inheritDoc\n */\n SkeletonClipNode.prototype._pUpdateStitch = function () {\n _super.prototype._pUpdateStitch.call(this);\n var i = this._pNumFrames - 1;\n var p1, p2, delta;\n while (i--) {\n this._pTotalDuration += this._pDurations[i];\n p1 = this._frames[i].jointPoses[0].translation;\n p2 = this._frames[i + 1].jointPoses[0].translation;\n delta = p2.subtract(p1);\n this._pTotalDelta.x += delta.x;\n this._pTotalDelta.y += delta.y;\n this._pTotalDelta.z += delta.z;\n }\n if (this._pStitchFinalFrame || !this._pLooping) {\n this._pTotalDuration += this._pDurations[this._pNumFrames - 1];\n p1 = this._frames[0].jointPoses[0].translation;\n p2 = this._frames[1].jointPoses[0].translation;\n delta = p2.subtract(p1);\n this._pTotalDelta.x += delta.x;\n this._pTotalDelta.y += delta.y;\n this._pTotalDelta.z += delta.z;\n }\n };\n return SkeletonClipNode;\n}(AnimationClipNodeBase));\nexport { SkeletonClipNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/SkeletonClipNode.js","import * as tslib_1 from \"tslib\";\nimport { Quaternion } from \"@awayjs/core\";\nimport { JointPose } from \"../data/JointPose\";\nimport { SkeletonPose } from \"../data/SkeletonPose\";\nimport { AnimationStateBase } from \"./AnimationStateBase\";\n/**\n *\n */\nvar SkeletonDifferenceState = (function (_super) {\n tslib_1.__extends(SkeletonDifferenceState, _super);\n function SkeletonDifferenceState(animator, skeletonAnimationNode) {\n var _this = _super.call(this, animator, skeletonAnimationNode) || this;\n _this._blendWeight = 0;\n _this._skeletonPose = new SkeletonPose();\n _this._skeletonPoseDirty = true;\n _this._skeletonAnimationNode = skeletonAnimationNode;\n _this._baseInput = animator.getAnimationState(_this._skeletonAnimationNode.baseInput);\n _this._differenceInput = animator.getAnimationState(_this._skeletonAnimationNode.differenceInput);\n return _this;\n }\n Object.defineProperty(SkeletonDifferenceState.prototype, \"blendWeight\", {\n /**\n * Defines a fractional value between 0 and 1 representing the blending ratio between the base input (0) and difference input (1),\n * used to produce the skeleton pose output.\n *\n * @see #baseInput\n * @see #differenceInput\n */\n get: function () {\n return this._blendWeight;\n },\n set: function (value) {\n this._blendWeight = value;\n this._pPositionDeltaDirty = true;\n this._skeletonPoseDirty = true;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n SkeletonDifferenceState.prototype.phase = function (value) {\n this._skeletonPoseDirty = true;\n this._pPositionDeltaDirty = true;\n this._baseInput.phase(value);\n this._baseInput.phase(value);\n };\n /**\n * @inheritDoc\n */\n SkeletonDifferenceState.prototype._pUpdateTime = function (time) {\n this._skeletonPoseDirty = true;\n this._baseInput.update(time);\n this._differenceInput.update(time);\n _super.prototype._pUpdateTime.call(this, time);\n };\n /**\n * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.\n */\n SkeletonDifferenceState.prototype.getSkeletonPose = function (skeleton) {\n if (this._skeletonPoseDirty)\n this.updateSkeletonPose(skeleton);\n return this._skeletonPose;\n };\n /**\n * @inheritDoc\n */\n SkeletonDifferenceState.prototype._pUpdatePositionDelta = function () {\n this._pPositionDeltaDirty = false;\n var deltA = this._baseInput.positionDelta;\n var deltB = this._differenceInput.positionDelta;\n this.positionDelta.x = deltA.x + this._blendWeight * deltB.x;\n this.positionDelta.y = deltA.y + this._blendWeight * deltB.y;\n this.positionDelta.z = deltA.z + this._blendWeight * deltB.z;\n };\n /**\n * Updates the output skeleton pose of the node based on the blendWeight value between base input and difference input nodes.\n *\n * @param skeleton The skeleton used by the animator requesting the ouput pose.\n */\n SkeletonDifferenceState.prototype.updateSkeletonPose = function (skeleton) {\n this._skeletonPoseDirty = false;\n var endPose;\n var endPoses = this._skeletonPose.jointPoses;\n var basePoses = this._baseInput.getSkeletonPose(skeleton).jointPoses;\n var diffPoses = this._differenceInput.getSkeletonPose(skeleton).jointPoses;\n var base, diff;\n var basePos, diffPos;\n var tr;\n var numJoints = skeleton.numJoints;\n // :s\n if (endPoses.length != numJoints)\n endPoses.length = numJoints;\n for (var i = 0; i < numJoints; ++i) {\n endPose = endPoses[i];\n if (endPose == null)\n endPose = endPoses[i] = new JointPose();\n base = basePoses[i];\n diff = diffPoses[i];\n basePos = base.translation;\n diffPos = diff.translation;\n SkeletonDifferenceState._tempQuat.multiply(diff.orientation, base.orientation);\n endPose.orientation.lerp(base.orientation, SkeletonDifferenceState._tempQuat, this._blendWeight);\n tr = endPose.translation;\n tr.x = basePos.x + this._blendWeight * diffPos.x;\n tr.y = basePos.y + this._blendWeight * diffPos.y;\n tr.z = basePos.z + this._blendWeight * diffPos.z;\n }\n };\n return SkeletonDifferenceState;\n}(AnimationStateBase));\nexport { SkeletonDifferenceState };\nSkeletonDifferenceState._tempQuat = new Quaternion();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/SkeletonDifferenceState.js","import * as tslib_1 from \"tslib\";\nimport { AnimationNodeBase } from \"@awayjs/graphics\";\nimport { SkeletonDifferenceState } from \"../states/SkeletonDifferenceState\";\n/**\n * A skeleton animation node that uses a difference input pose with a base input pose to blend a linearly interpolated output of a skeleton pose.\n */\nvar SkeletonDifferenceNode = (function (_super) {\n tslib_1.__extends(SkeletonDifferenceNode, _super);\n /**\n * Creates a new SkeletonAdditiveNode object.\n */\n function SkeletonDifferenceNode() {\n var _this = _super.call(this) || this;\n _this._pStateClass = SkeletonDifferenceState;\n return _this;\n }\n /**\n * @inheritDoc\n */\n SkeletonDifferenceNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n return SkeletonDifferenceNode;\n}(AnimationNodeBase));\nexport { SkeletonDifferenceNode };\nexport default SkeletonDifferenceNode;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/SkeletonDifferenceNode.js","import * as tslib_1 from \"tslib\";\nimport { JointPose } from \"../data/JointPose\";\nimport { SkeletonPose } from \"../data/SkeletonPose\";\nimport { AnimationStateBase } from \"./AnimationStateBase\";\n/**\n *\n */\nvar SkeletonDirectionalState = (function (_super) {\n tslib_1.__extends(SkeletonDirectionalState, _super);\n function SkeletonDirectionalState(animator, skeletonAnimationNode) {\n var _this = _super.call(this, animator, skeletonAnimationNode) || this;\n _this._skeletonPose = new SkeletonPose();\n _this._skeletonPoseDirty = true;\n _this._blendWeight = 0;\n _this._direction = 0;\n _this._blendDirty = true;\n _this._skeletonAnimationNode = skeletonAnimationNode;\n _this._forward = animator.getAnimationState(_this._skeletonAnimationNode.forward);\n _this._backward = animator.getAnimationState(_this._skeletonAnimationNode.backward);\n _this._left = animator.getAnimationState(_this._skeletonAnimationNode.left);\n _this._right = animator.getAnimationState(_this._skeletonAnimationNode.right);\n return _this;\n }\n Object.defineProperty(SkeletonDirectionalState.prototype, \"direction\", {\n get: function () {\n return this._direction;\n },\n /**\n * Defines the direction in degrees of the aniamtion between the forwards (0), right(90) backwards (180) and left(270) input nodes,\n * used to produce the skeleton pose output.\n */\n set: function (value) {\n if (this._direction == value)\n return;\n this._direction = value;\n this._blendDirty = true;\n this._skeletonPoseDirty = true;\n this._pPositionDeltaDirty = true;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n SkeletonDirectionalState.prototype.phase = function (value) {\n if (this._blendDirty)\n this.updateBlend();\n this._skeletonPoseDirty = true;\n this._pPositionDeltaDirty = true;\n this._inputA.phase(value);\n this._inputB.phase(value);\n };\n /**\n * @inheritDoc\n */\n SkeletonDirectionalState.prototype._pUdateTime = function (time) {\n if (this._blendDirty)\n this.updateBlend();\n this._skeletonPoseDirty = true;\n this._inputA.update(time);\n this._inputB.update(time);\n _super.prototype._pUpdateTime.call(this, time);\n };\n /**\n * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.\n */\n SkeletonDirectionalState.prototype.getSkeletonPose = function (skeleton) {\n if (this._skeletonPoseDirty)\n this.updateSkeletonPose(skeleton);\n return this._skeletonPose;\n };\n /**\n * @inheritDoc\n */\n SkeletonDirectionalState.prototype._pUpdatePositionDelta = function () {\n this._pPositionDeltaDirty = false;\n if (this._blendDirty)\n this.updateBlend();\n var deltA = this._inputA.positionDelta;\n var deltB = this._inputB.positionDelta;\n this.positionDelta.x = deltA.x + this._blendWeight * (deltB.x - deltA.x);\n this.positionDelta.y = deltA.y + this._blendWeight * (deltB.y - deltA.y);\n this.positionDelta.z = deltA.z + this._blendWeight * (deltB.z - deltA.z);\n };\n /**\n * Updates the output skeleton pose of the node based on the direction value between forward, backwards, left and right input nodes.\n *\n * @param skeleton The skeleton used by the animator requesting the ouput pose.\n */\n SkeletonDirectionalState.prototype.updateSkeletonPose = function (skeleton) {\n this._skeletonPoseDirty = false;\n if (this._blendDirty)\n this.updateBlend();\n var endPose;\n var endPoses = this._skeletonPose.jointPoses;\n var poses1 = this._inputA.getSkeletonPose(skeleton).jointPoses;\n var poses2 = this._inputB.getSkeletonPose(skeleton).jointPoses;\n var pose1, pose2;\n var p1, p2;\n var tr;\n var numJoints = skeleton.numJoints;\n // :s\n if (endPoses.length != numJoints)\n endPoses.length = numJoints;\n for (var i = 0; i < numJoints; ++i) {\n endPose = endPoses[i];\n if (endPose == null)\n endPose = endPoses[i] = new JointPose();\n pose1 = poses1[i];\n pose2 = poses2[i];\n p1 = pose1.translation;\n p2 = pose2.translation;\n endPose.orientation.lerp(pose1.orientation, pose2.orientation, this._blendWeight);\n tr = endPose.translation;\n tr.x = p1.x + this._blendWeight * (p2.x - p1.x);\n tr.y = p1.y + this._blendWeight * (p2.y - p1.y);\n tr.z = p1.z + this._blendWeight * (p2.z - p1.z);\n }\n };\n /**\n * Updates the blend value for the animation output based on the direction value between forward, backwards, left and right input nodes.\n *\n * @private\n */\n SkeletonDirectionalState.prototype.updateBlend = function () {\n this._blendDirty = false;\n if (this._direction < 0 || this._direction > 360) {\n this._direction %= 360;\n if (this._direction < 0)\n this._direction += 360;\n }\n if (this._direction < 90) {\n this._inputA = this._forward;\n this._inputB = this._right;\n this._blendWeight = this._direction / 90;\n }\n else if (this._direction < 180) {\n this._inputA = this._right;\n this._inputB = this._backward;\n this._blendWeight = (this._direction - 90) / 90;\n }\n else if (this._direction < 270) {\n this._inputA = this._backward;\n this._inputB = this._left;\n this._blendWeight = (this._direction - 180) / 90;\n }\n else {\n this._inputA = this._left;\n this._inputB = this._forward;\n this._blendWeight = (this._direction - 270) / 90;\n }\n };\n return SkeletonDirectionalState;\n}(AnimationStateBase));\nexport { SkeletonDirectionalState };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/SkeletonDirectionalState.js","import * as tslib_1 from \"tslib\";\nimport { AnimationNodeBase } from \"@awayjs/graphics\";\nimport { SkeletonDirectionalState } from \"../states/SkeletonDirectionalState\";\n/**\n * A skeleton animation node that uses four directional input poses with an input direction to blend a linearly interpolated output of a skeleton pose.\n */\nvar SkeletonDirectionalNode = (function (_super) {\n tslib_1.__extends(SkeletonDirectionalNode, _super);\n function SkeletonDirectionalNode() {\n var _this = _super.call(this) || this;\n _this._pStateClass = SkeletonDirectionalState;\n return _this;\n }\n /**\n * @inheritDoc\n */\n SkeletonDirectionalNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n return SkeletonDirectionalNode;\n}(AnimationNodeBase));\nexport { SkeletonDirectionalNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/SkeletonDirectionalNode.js","import * as tslib_1 from \"tslib\";\nimport { JointPose } from \"../data/JointPose\";\nimport { SkeletonPose } from \"../data/SkeletonPose\";\nimport { AnimationStateBase } from \"./AnimationStateBase\";\n/**\n *\n */\nvar SkeletonNaryLERPState = (function (_super) {\n tslib_1.__extends(SkeletonNaryLERPState, _super);\n function SkeletonNaryLERPState(animator, skeletonAnimationNode) {\n var _this = _super.call(this, animator, skeletonAnimationNode) || this;\n _this._skeletonPose = new SkeletonPose();\n _this._skeletonPoseDirty = true;\n _this._blendWeights = new Array();\n _this._inputs = new Array();\n _this._skeletonAnimationNode = skeletonAnimationNode;\n var i = _this._skeletonAnimationNode.numInputs;\n while (i--)\n _this._inputs[i] = animator.getAnimationState(_this._skeletonAnimationNode._iInputs[i]);\n return _this;\n }\n /**\n * @inheritDoc\n */\n SkeletonNaryLERPState.prototype.phase = function (value) {\n this._skeletonPoseDirty = true;\n this._pPositionDeltaDirty = true;\n for (var j = 0; j < this._skeletonAnimationNode.numInputs; ++j) {\n if (this._blendWeights[j])\n this._inputs[j].update(value);\n }\n };\n /**\n * @inheritDoc\n */\n SkeletonNaryLERPState.prototype._pUdateTime = function (time) {\n for (var j = 0; j < this._skeletonAnimationNode.numInputs; ++j) {\n if (this._blendWeights[j])\n this._inputs[j].update(time);\n }\n _super.prototype._pUpdateTime.call(this, time);\n };\n /**\n * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.\n */\n SkeletonNaryLERPState.prototype.getSkeletonPose = function (skeleton) {\n if (this._skeletonPoseDirty)\n this.updateSkeletonPose(skeleton);\n return this._skeletonPose;\n };\n /**\n * Returns the blend weight of the skeleton aniamtion node that resides at the given input index.\n *\n * @param index The input index for which the skeleton animation node blend weight is requested.\n */\n SkeletonNaryLERPState.prototype.getBlendWeightAt = function (index) {\n return this._blendWeights[index];\n };\n /**\n * Sets the blend weight of the skeleton aniamtion node that resides at the given input index.\n *\n * @param index The input index on which the skeleton animation node blend weight is to be set.\n * @param blendWeight The blend weight value to use for the given skeleton animation node index.\n */\n SkeletonNaryLERPState.prototype.setBlendWeightAt = function (index, blendWeight) {\n this._blendWeights[index] = blendWeight;\n this._pPositionDeltaDirty = true;\n this._skeletonPoseDirty = true;\n };\n /**\n * @inheritDoc\n */\n SkeletonNaryLERPState.prototype._pUpdatePositionDelta = function () {\n this._pPositionDeltaDirty = false;\n var delta;\n var weight;\n this.positionDelta.x = 0;\n this.positionDelta.y = 0;\n this.positionDelta.z = 0;\n for (var j = 0; j < this._skeletonAnimationNode.numInputs; ++j) {\n weight = this._blendWeights[j];\n if (weight) {\n delta = this._inputs[j].positionDelta;\n this.positionDelta.x += weight * delta.x;\n this.positionDelta.y += weight * delta.y;\n this.positionDelta.z += weight * delta.z;\n }\n }\n };\n /**\n * Updates the output skeleton pose of the node based on the blend weight values given to the input nodes.\n *\n * @param skeleton The skeleton used by the animator requesting the ouput pose.\n */\n SkeletonNaryLERPState.prototype.updateSkeletonPose = function (skeleton) {\n this._skeletonPoseDirty = false;\n var weight;\n var endPoses = this._skeletonPose.jointPoses;\n var poses;\n var endPose, pose;\n var endTr, tr;\n var endQuat, q;\n var firstPose;\n var i;\n var w0, x0, y0, z0;\n var w1, x1, y1, z1;\n var numJoints = skeleton.numJoints;\n // :s\n if (endPoses.length != numJoints)\n endPoses.length = numJoints;\n for (var j = 0; j < this._skeletonAnimationNode.numInputs; ++j) {\n weight = this._blendWeights[j];\n if (!weight)\n continue;\n poses = this._inputs[j].getSkeletonPose(skeleton).jointPoses;\n if (!firstPose) {\n firstPose = poses;\n for (i = 0; i < numJoints; ++i) {\n endPose = endPoses[i];\n if (endPose == null)\n endPose = endPoses[i] = new JointPose();\n pose = poses[i];\n q = pose.orientation;\n tr = pose.translation;\n endQuat = endPose.orientation;\n endQuat.x = weight * q.x;\n endQuat.y = weight * q.y;\n endQuat.z = weight * q.z;\n endQuat.w = weight * q.w;\n endTr = endPose.translation;\n endTr.x = weight * tr.x;\n endTr.y = weight * tr.y;\n endTr.z = weight * tr.z;\n }\n }\n else {\n for (i = 0; i < skeleton.numJoints; ++i) {\n endPose = endPoses[i];\n pose = poses[i];\n q = firstPose[i].orientation;\n x0 = q.x;\n y0 = q.y;\n z0 = q.z;\n w0 = q.w;\n q = pose.orientation;\n tr = pose.translation;\n x1 = q.x;\n y1 = q.y;\n z1 = q.z;\n w1 = q.w;\n // find shortest direction\n if (x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1 < 0) {\n x1 = -x1;\n y1 = -y1;\n z1 = -z1;\n w1 = -w1;\n }\n endQuat = endPose.orientation;\n endQuat.x += weight * x1;\n endQuat.y += weight * y1;\n endQuat.z += weight * z1;\n endQuat.w += weight * w1;\n endTr = endPose.translation;\n endTr.x += weight * tr.x;\n endTr.y += weight * tr.y;\n endTr.z += weight * tr.z;\n }\n }\n }\n for (i = 0; i < skeleton.numJoints; ++i)\n endPoses[i].orientation.normalize();\n };\n return SkeletonNaryLERPState;\n}(AnimationStateBase));\nexport { SkeletonNaryLERPState };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/SkeletonNaryLERPState.js","import * as tslib_1 from \"tslib\";\nimport { AnimationNodeBase } from \"@awayjs/graphics\";\nimport { SkeletonNaryLERPState } from \"../states/SkeletonNaryLERPState\";\n/**\n * A skeleton animation node that uses an n-dimensional array of animation node inputs to blend a lineraly interpolated output of a skeleton pose.\n */\nvar SkeletonNaryLERPNode = (function (_super) {\n tslib_1.__extends(SkeletonNaryLERPNode, _super);\n /**\n * Creates a new SkeletonNaryLERPNode object.\n */\n function SkeletonNaryLERPNode() {\n var _this = _super.call(this) || this;\n _this._iInputs = new Array();\n _this._pStateClass = SkeletonNaryLERPState;\n return _this;\n }\n Object.defineProperty(SkeletonNaryLERPNode.prototype, \"numInputs\", {\n get: function () {\n return this._numInputs;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns an integer representing the input index of the given skeleton animation node.\n *\n * @param input The skeleton animation node for with the input index is requested.\n */\n SkeletonNaryLERPNode.prototype.getInputIndex = function (input) {\n return this._iInputs.indexOf(input);\n };\n /**\n * Returns the skeleton animation node object that resides at the given input index.\n *\n * @param index The input index for which the skeleton animation node is requested.\n */\n SkeletonNaryLERPNode.prototype.getInputAt = function (index) {\n return this._iInputs[index];\n };\n /**\n * Adds a new skeleton animation node input to the animation node.\n */\n SkeletonNaryLERPNode.prototype.addInput = function (input) {\n this._iInputs[this._numInputs++] = input;\n };\n /**\n * @inheritDoc\n */\n SkeletonNaryLERPNode.prototype.getAnimationState = function (animator) {\n return animator.getAnimationState(this);\n };\n return SkeletonNaryLERPNode;\n}(AnimationNodeBase));\nexport { SkeletonNaryLERPNode };\nexport default SkeletonNaryLERPNode;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/SkeletonNaryLERPNode.js","import * as tslib_1 from \"tslib\";\nimport { AnimationClipState } from \"./AnimationClipState\";\n/**\n *\n */\nvar VertexClipState = (function (_super) {\n tslib_1.__extends(VertexClipState, _super);\n function VertexClipState(animator, vertexClipNode) {\n var _this = _super.call(this, animator, vertexClipNode) || this;\n _this._vertexClipNode = vertexClipNode;\n _this._frames = _this._vertexClipNode.frames;\n return _this;\n }\n Object.defineProperty(VertexClipState.prototype, \"currentGraphics\", {\n /**\n * @inheritDoc\n */\n get: function () {\n if (this._pFramesDirty)\n this._pUpdateFrames();\n return this._currentGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexClipState.prototype, \"nextGraphics\", {\n /**\n * @inheritDoc\n */\n get: function () {\n if (this._pFramesDirty)\n this._pUpdateFrames();\n return this._nextGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n VertexClipState.prototype._pUpdateFrames = function () {\n _super.prototype._pUpdateFrames.call(this);\n this._currentGraphics = this._frames[this._pCurrentFrame];\n if (this._vertexClipNode.looping && this._pNextFrame >= this._vertexClipNode.lastFrame) {\n this._nextGraphics = this._frames[0];\n this._pAnimator.dispatchCycleEvent();\n }\n else\n this._nextGraphics = this._frames[this._pNextFrame];\n };\n /**\n * @inheritDoc\n */\n VertexClipState.prototype._pUpdatePositionDelta = function () {\n //TODO:implement positiondelta functionality for vertex animations\n };\n return VertexClipState;\n}(AnimationClipState));\nexport { VertexClipState };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/states/VertexClipState.js","import * as tslib_1 from \"tslib\";\nimport { Vector3D } from \"@awayjs/core\";\nimport { VertexClipState } from \"../states/VertexClipState\";\nimport { AnimationClipNodeBase } from \"./AnimationClipNodeBase\";\n/**\n * A vertex animation node containing time-based animation data as individual geometry obejcts.\n */\nvar VertexClipNode = (function (_super) {\n tslib_1.__extends(VertexClipNode, _super);\n /**\n * Creates a new VertexClipNode object.\n */\n function VertexClipNode() {\n var _this = _super.call(this) || this;\n _this._frames = new Array();\n _this._translations = new Array();\n _this._pStateClass = VertexClipState;\n return _this;\n }\n Object.defineProperty(VertexClipNode.prototype, \"frames\", {\n /**\n * Returns a vector of geometry frames representing the vertex values of each animation frame in the clip.\n */\n get: function () {\n return this._frames;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Adds a geometry object to the internal timeline of the animation node.\n *\n * @param geometry The geometry object to add to the timeline of the node.\n * @param duration The specified duration of the frame in milliseconds.\n * @param translation The absolute translation of the frame, used in root delta calculations for sprite movement.\n */\n VertexClipNode.prototype.addFrame = function (geometry, duration, translation) {\n if (translation === void 0) { translation = null; }\n this._frames.push(geometry);\n this._pDurations.push(duration);\n this._translations.push(translation || new Vector3D());\n this._pNumFrames = this._pDurations.length;\n this._pStitchDirty = true;\n };\n /**\n * @inheritDoc\n */\n VertexClipNode.prototype._pUpdateStitch = function () {\n _super.prototype._pUpdateStitch.call(this);\n var i = this._pNumFrames - 1;\n var p1, p2, delta;\n while (i--) {\n this._pTotalDuration += this._pDurations[i];\n p1 = this._translations[i];\n p2 = this._translations[i + 1];\n delta = p2.subtract(p1);\n this._pTotalDelta.x += delta.x;\n this._pTotalDelta.y += delta.y;\n this._pTotalDelta.z += delta.z;\n }\n if (this._pNumFrames > 1 && (this._pStitchFinalFrame || !this._pLooping)) {\n this._pTotalDuration += this._pDurations[this._pNumFrames - 1];\n p1 = this._translations[0];\n p2 = this._translations[1];\n delta = p2.subtract(p1);\n this._pTotalDelta.x += delta.x;\n this._pTotalDelta.y += delta.y;\n this._pTotalDelta.z += delta.z;\n }\n };\n return VertexClipNode;\n}(AnimationClipNodeBase));\nexport { VertexClipNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/nodes/VertexClipNode.js","import * as tslib_1 from \"tslib\";\nimport { AnimationStateEvent } from \"../../events/AnimationStateEvent\";\nimport { SkeletonBinaryLERPState } from \"../states/SkeletonBinaryLERPState\";\n/**\n *\n */\nvar CrossfadeTransitionState = (function (_super) {\n tslib_1.__extends(CrossfadeTransitionState, _super);\n function CrossfadeTransitionState(animator, skeletonAnimationNode) {\n var _this = _super.call(this, animator, skeletonAnimationNode) || this;\n _this._crossfadeTransitionNode = skeletonAnimationNode;\n return _this;\n }\n /**\n * @inheritDoc\n */\n CrossfadeTransitionState.prototype._pUpdateTime = function (time) {\n this.blendWeight = Math.abs(time - this._crossfadeTransitionNode.startBlend) / (1000 * this._crossfadeTransitionNode.blendSpeed);\n if (this.blendWeight >= 1) {\n this.blendWeight = 1;\n if (this._animationStateTransitionComplete == null)\n this._animationStateTransitionComplete = new AnimationStateEvent(AnimationStateEvent.TRANSITION_COMPLETE, this._pAnimator, this, this._crossfadeTransitionNode);\n this._crossfadeTransitionNode.dispatchEvent(this._animationStateTransitionComplete);\n }\n _super.prototype._pUpdateTime.call(this, time);\n };\n return CrossfadeTransitionState;\n}(SkeletonBinaryLERPState));\nexport { CrossfadeTransitionState };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/transitions/CrossfadeTransitionState.js","import * as tslib_1 from \"tslib\";\nimport { SkeletonBinaryLERPNode } from \"../nodes/SkeletonBinaryLERPNode\";\nimport { CrossfadeTransitionState } from \"./CrossfadeTransitionState\";\n/**\n * A skeleton animation node that uses two animation node inputs to blend a lineraly interpolated output of a skeleton pose.\n */\nvar CrossfadeTransitionNode = (function (_super) {\n tslib_1.__extends(CrossfadeTransitionNode, _super);\n /**\n * Creates a new CrossfadeTransitionNode object.\n */\n function CrossfadeTransitionNode() {\n var _this = _super.call(this) || this;\n _this._pStateClass = CrossfadeTransitionState;\n return _this;\n }\n return CrossfadeTransitionNode;\n}(SkeletonBinaryLERPNode));\nexport { CrossfadeTransitionNode };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/transitions/CrossfadeTransitionNode.js","import { CrossfadeTransitionNode } from \"../transitions/CrossfadeTransitionNode\";\n/**\n *\n */\nvar CrossfadeTransition = (function () {\n function CrossfadeTransition(blendSpeed) {\n this.blendSpeed = 0.5;\n this.blendSpeed = blendSpeed;\n }\n CrossfadeTransition.prototype.getAnimationNode = function (animator, startNode, endNode, startBlend) {\n var crossFadeTransitionNode = new CrossfadeTransitionNode();\n crossFadeTransitionNode.inputA = startNode;\n crossFadeTransitionNode.inputB = endNode;\n crossFadeTransitionNode.blendSpeed = this.blendSpeed;\n crossFadeTransitionNode.startBlend = startBlend;\n return crossFadeTransitionNode;\n };\n return CrossfadeTransition;\n}());\nexport { CrossfadeTransition };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/transitions/CrossfadeTransition.js","import * as tslib_1 from \"tslib\";\nimport { AnimatorBase } from \"@awayjs/stage\";\nimport { AnimationElements } from \"./data/AnimationElements\";\nimport { ParticlePropertiesMode } from \"./data/ParticlePropertiesMode\";\n/**\n * Provides an interface for assigning paricle-based animation data sets to sprite-based entity objects\n * and controlling the various available states of animation through an interative playhead that can be\n * automatically updated or manually triggered.\n *\n * Requires that the containing geometry of the parent sprite is particle geometry\n *\n * @see away.base.ParticleGraphics\n */\nvar ParticleAnimator = (function (_super) {\n tslib_1.__extends(ParticleAnimator, _super);\n /**\n * Creates a new ParticleAnimator object.\n *\n * @param particleAnimationSet The animation data set containing the particle animations used by the animator.\n */\n function ParticleAnimator(particleAnimationSet) {\n var _this = _super.call(this, particleAnimationSet) || this;\n _this._animationParticleStates = new Array();\n _this._animatorParticleStates = new Array();\n _this._timeParticleStates = new Array();\n _this._totalLenOfOneVertex = 0;\n _this._animatorSubGeometries = new Object();\n _this._particleAnimationSet = particleAnimationSet;\n var state;\n var node;\n for (var i = 0; i < _this._particleAnimationSet.particleNodes.length; i++) {\n node = _this._particleAnimationSet.particleNodes[i];\n state = _this.getAnimationState(node);\n if (node.mode == ParticlePropertiesMode.LOCAL_DYNAMIC) {\n _this._animatorParticleStates.push(state);\n node._iDataOffset = _this._totalLenOfOneVertex;\n _this._totalLenOfOneVertex += node.dataLength;\n }\n else {\n _this._animationParticleStates.push(state);\n }\n if (state.needUpdateTime)\n _this._timeParticleStates.push(state);\n }\n return _this;\n }\n /**\n * @inheritDoc\n */\n ParticleAnimator.prototype.clone = function () {\n return new ParticleAnimator(this._particleAnimationSet);\n };\n /**\n * @inheritDoc\n */\n ParticleAnimator.prototype.setRenderState = function (shader, renderable, stage, projection) {\n var animationRegisterData = this._particleAnimationSet._iAnimationRegisterData;\n var graphics = renderable.sourceEntity.graphics;\n var shape = renderable.shape;\n if (!shape)\n throw (new Error(\"Must be shape\"));\n //process animation sub geometries\n var animationElements = this._particleAnimationSet.getAnimationElements(graphics, shape);\n var i;\n for (i = 0; i < this._animationParticleStates.length; i++)\n this._animationParticleStates[i].setRenderState(shader, renderable, animationElements, animationRegisterData, projection, stage);\n //process animator subgeometries\n var animatorElements = this.getAnimatorElements(graphics, shape);\n for (i = 0; i < this._animatorParticleStates.length; i++)\n this._animatorParticleStates[i].setRenderState(shader, renderable, animatorElements, animationRegisterData, projection, stage);\n };\n /**\n * @inheritDoc\n */\n ParticleAnimator.prototype.testGPUCompatibility = function (shader) {\n };\n /**\n * @inheritDoc\n */\n ParticleAnimator.prototype.start = function () {\n _super.prototype.start.call(this);\n for (var i = 0; i < this._timeParticleStates.length; i++)\n this._timeParticleStates[i].offset(this._pAbsoluteTime);\n };\n /**\n * @inheritDoc\n */\n ParticleAnimator.prototype._pUpdateDeltaTime = function (dt) {\n this._pAbsoluteTime += dt;\n for (var i = 0; i < this._timeParticleStates.length; i++)\n this._timeParticleStates[i].update(this._pAbsoluteTime);\n };\n /**\n * @inheritDoc\n */\n ParticleAnimator.prototype.resetTime = function (offset) {\n if (offset === void 0) { offset = 0; }\n for (var i = 0; i < this._timeParticleStates.length; i++)\n this._timeParticleStates[i].offset(this._pAbsoluteTime + offset);\n this.update(this.time);\n };\n ParticleAnimator.prototype.dispose = function () {\n for (var key in this._animatorSubGeometries)\n this._animatorSubGeometries[key].dispose();\n };\n ParticleAnimator.prototype.getAnimatorElements = function (graphics, shape) {\n if (!this._animatorParticleStates.length)\n return;\n var elements = shape.elements;\n var animatorElements = this._animatorSubGeometries[elements.id] = new AnimationElements();\n //create the vertexData vector that will be used for local state data\n animatorElements.createVertexData(elements.numVertices, this._totalLenOfOneVertex);\n //pass the particles data to the animator elements\n animatorElements.animationParticles = this._particleAnimationSet.getAnimationElements(graphics, shape).animationParticles;\n };\n return ParticleAnimator;\n}(AnimatorBase));\nexport { ParticleAnimator };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/ParticleAnimator.js","import * as tslib_1 from \"tslib\";\nimport { AnimationSetBase } from \"@awayjs/stage\";\n/**\n * The animation data set used by skeleton-based animators, containing skeleton animation data.\n *\n * @see away.animators.SkeletonAnimator\n */\nvar SkeletonAnimationSet = (function (_super) {\n tslib_1.__extends(SkeletonAnimationSet, _super);\n /**\n * Creates a new SkeletonAnimationSet object.\n *\n * @param jointsPerVertex Sets the amount of skeleton joints that can be linked to a single vertex via skinned weight values. For GPU-base animation, the maximum allowed value is 4. Defaults to 4.\n */\n function SkeletonAnimationSet(jointsPerVertex) {\n if (jointsPerVertex === void 0) { jointsPerVertex = 4; }\n var _this = _super.call(this) || this;\n _this._jointsPerVertex = jointsPerVertex;\n return _this;\n }\n Object.defineProperty(SkeletonAnimationSet.prototype, \"jointsPerVertex\", {\n /**\n * Returns the amount of skeleton joints that can be linked to a single vertex via skinned weight values. For GPU-base animation, the\n * maximum allowed value is 4.\n */\n get: function () {\n return this._jointsPerVertex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SkeletonAnimationSet.prototype, \"matricesIndex\", {\n get: function () {\n return this._matricesIndex;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n SkeletonAnimationSet.prototype.getAGALVertexCode = function (shader, registerCache, sharedRegisters) {\n this._matricesIndex = registerCache.numUsedVertexConstants;\n var indexOffset0 = this._matricesIndex;\n var indexOffset1 = this._matricesIndex + 1;\n var indexOffset2 = this._matricesIndex + 2;\n var indexStream = registerCache.getFreeVertexAttribute();\n shader.jointIndexIndex = indexStream.index;\n var weightStream = registerCache.getFreeVertexAttribute();\n shader.jointWeightIndex = weightStream.index;\n var indices = [indexStream + \".x\", indexStream + \".y\", indexStream + \".z\", indexStream + \".w\"];\n var weights = [weightStream + \".x\", weightStream + \".y\", weightStream + \".z\", weightStream + \".w\"];\n var temp1 = registerCache.getFreeVertexVectorTemp();\n var dot = \"dp4\";\n var code = \"\";\n var len = sharedRegisters.animatableAttributes.length;\n for (var i = 0; i < len; ++i) {\n var source = sharedRegisters.animatableAttributes[i];\n var target = sharedRegisters.animationTargetRegisters[i];\n for (var j = 0; j < this._jointsPerVertex; ++j) {\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n code += dot + \" \" + temp1 + \".x, \" + source + \", vc[\" + indices[j] + \"+\" + indexOffset0 + \"]\\n\" +\n dot + \" \" + temp1 + \".y, \" + source + \", vc[\" + indices[j] + \"+\" + indexOffset1 + \"]\\n\" +\n dot + \" \" + temp1 + \".z, \" + source + \", vc[\" + indices[j] + \"+\" + indexOffset2 + \"]\\n\" +\n \"mov \" + temp1 + \".w, \" + source + \".w\\n\" +\n \"mul \" + temp1 + \", \" + temp1 + \", \" + weights[j] + \"\\n\"; // apply weight\n // add or mov to target. Need to write to a temp reg first, because an output can be a target\n if (j == 0)\n code += \"mov \" + target + \", \" + temp1 + \"\\n\";\n else\n code += \"add \" + target + \", \" + target + \", \" + temp1 + \"\\n\";\n }\n // switch to dp3 once positions have been transformed, from now on, it should only be vectors instead of points\n dot = \"dp3\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n SkeletonAnimationSet.prototype.getAGALFragmentCode = function (shader, registerCache, shadedTarget) {\n return \"\";\n };\n /**\n * @inheritDoc\n */\n SkeletonAnimationSet.prototype.getAGALUVCode = function (shader, registerCache, sharedRegisters) {\n return \"mov \" + sharedRegisters.uvTarget + \",\" + sharedRegisters.uvSource + \"\\n\";\n };\n /**\n * @inheritDoc\n */\n SkeletonAnimationSet.prototype.doneAGALCode = function (shader) {\n };\n return SkeletonAnimationSet;\n}(AnimationSetBase));\nexport { SkeletonAnimationSet };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/SkeletonAnimationSet.js","import * as tslib_1 from \"tslib\";\nimport { ElementsEvent } from \"@awayjs/graphics\";\nimport { AnimatorBase } from \"@awayjs/stage\";\nimport { AnimationStateEvent } from \"../events/AnimationStateEvent\";\nimport { JointPose } from \"./data/JointPose\";\nimport { SkeletonPose } from \"./data/SkeletonPose\";\n/**\n * Provides an interface for assigning skeleton-based animation data sets to sprite-based entity objects\n * and controlling the various available states of animation through an interative playhead that can be\n * automatically updated or manually triggered.\n */\nvar SkeletonAnimator = (function (_super) {\n tslib_1.__extends(SkeletonAnimator, _super);\n /**\n * Creates a new SkeletonAnimator object.\n *\n * @param skeletonAnimationSet The animation data set containing the skeleton animations used by the animator.\n * @param skeleton The skeleton object used for calculating the resulting global matrices for transforming skinned sprite data.\n * @param forceCPU Optional value that only allows the animator to perform calculation on the CPU. Defaults to false.\n */\n function SkeletonAnimator(animationSet, skeleton, forceCPU) {\n if (forceCPU === void 0) { forceCPU = false; }\n var _this = _super.call(this, animationSet) || this;\n _this._globalPose = new SkeletonPose();\n _this._morphedElements = new Object();\n _this._morphedElementsDirty = new Object();\n _this._skeletonAnimationSet = animationSet;\n _this._skeleton = skeleton;\n _this._forceCPU = forceCPU;\n _this._jointsPerVertex = animationSet.jointsPerVertex;\n _this._numJoints = _this._skeleton.numJoints;\n _this._globalMatrices = new Float32Array(_this._numJoints * 12);\n var j = 0;\n for (var i = 0; i < _this._numJoints; ++i) {\n _this._globalMatrices[j++] = 1;\n _this._globalMatrices[j++] = 0;\n _this._globalMatrices[j++] = 0;\n _this._globalMatrices[j++] = 0;\n _this._globalMatrices[j++] = 0;\n _this._globalMatrices[j++] = 1;\n _this._globalMatrices[j++] = 0;\n _this._globalMatrices[j++] = 0;\n _this._globalMatrices[j++] = 0;\n _this._globalMatrices[j++] = 0;\n _this._globalMatrices[j++] = 1;\n _this._globalMatrices[j++] = 0;\n }\n _this._onTransitionCompleteDelegate = function (event) { return _this.onTransitionComplete(event); };\n _this._onIndicesUpdateDelegate = function (event) { return _this.onIndicesUpdate(event); };\n _this._onVerticesUpdateDelegate = function (event) { return _this.onVerticesUpdate(event); };\n return _this;\n }\n Object.defineProperty(SkeletonAnimator.prototype, \"globalMatrices\", {\n /**\n * returns the calculated global matrices of the current skeleton pose.\n *\n * @see #globalPose\n */\n get: function () {\n if (this._globalPropertiesDirty)\n this.updateGlobalProperties();\n return this._globalMatrices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SkeletonAnimator.prototype, \"globalPose\", {\n /**\n * returns the current skeleton pose output from the animator.\n *\n * @see away.animators.data.SkeletonPose\n */\n get: function () {\n if (this._globalPropertiesDirty)\n this.updateGlobalProperties();\n return this._globalPose;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SkeletonAnimator.prototype, \"skeleton\", {\n /**\n * Returns the skeleton object in use by the animator - this defines the number and heirarchy of joints used by the\n * skinned geoemtry to which skeleon animator is applied.\n */\n get: function () {\n return this._skeleton;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SkeletonAnimator.prototype, \"forceCPU\", {\n /**\n * Indicates whether the skeleton animator is disabled by default for GPU rendering, something that allows the animator to perform calculation on the GPU.\n * Defaults to false.\n */\n get: function () {\n return this._forceCPU;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SkeletonAnimator.prototype, \"useCondensedIndices\", {\n /**\n * Offers the option of enabling GPU accelerated animation on skeletons larger than 32 joints\n * by condensing the number of joint index values required per sprite. Only applicable to\n * skeleton animations that utilise more than one sprite object. Defaults to false.\n */\n get: function () {\n return this._useCondensedIndices;\n },\n set: function (value) {\n this._useCondensedIndices = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n SkeletonAnimator.prototype.clone = function () {\n return new SkeletonAnimator(this._skeletonAnimationSet, this._skeleton, this._forceCPU);\n };\n /**\n * Plays an animation state registered with the given name in the animation data set.\n *\n * @param name The data set name of the animation state to be played.\n * @param transition An optional transition object that determines how the animator will transition from the currently active animation state.\n * @param offset An option offset time (in milliseconds) that resets the state's internal clock to the absolute time of the animator plus the offset value. Required for non-looping animation states.\n */\n SkeletonAnimator.prototype.play = function (name, transition, offset) {\n if (transition === void 0) { transition = null; }\n if (offset === void 0) { offset = NaN; }\n if (this._pActiveAnimationName == name)\n return;\n this._pActiveAnimationName = name;\n if (!this._pAnimationSet.hasAnimation(name))\n throw new Error(\"Animation root node \" + name + \" not found!\");\n if (transition && this._pActiveNode) {\n //setup the transition\n this._pActiveNode = transition.getAnimationNode(this, this._pActiveNode, this._pAnimationSet.getAnimation(name), this._pAbsoluteTime);\n this._pActiveNode.addEventListener(AnimationStateEvent.TRANSITION_COMPLETE, this._onTransitionCompleteDelegate);\n }\n else\n this._pActiveNode = this._pAnimationSet.getAnimation(name);\n this._pActiveState = this.getAnimationState(this._pActiveNode);\n if (this.updatePosition) {\n //update straight away to reset position deltas\n this._pActiveState.update(this._pAbsoluteTime);\n this._pActiveState.positionDelta;\n }\n this._activeSkeletonState = this._pActiveState;\n this.start();\n //apply a time offset if specified\n if (!isNaN(offset))\n this.reset(name, offset);\n };\n /**\n * @inheritDoc\n */\n SkeletonAnimator.prototype.setRenderState = function (shader, renderable, stage, projection) {\n // do on request of globalProperties\n if (this._globalPropertiesDirty)\n this.updateGlobalProperties();\n var elements = renderable.shape.elements;\n elements.useCondensedIndices = this._useCondensedIndices;\n if (this._useCondensedIndices) {\n // using a condensed data set\n this.updateCondensedMatrices(elements.condensedIndexLookUp);\n shader.setVertexConstFromArray(this._skeletonAnimationSet.matricesIndex, this._condensedMatrices);\n }\n else {\n if (this._pAnimationSet.usesCPU) {\n if (this._morphedElementsDirty[elements.id])\n this.morphElements(renderable, elements);\n return;\n }\n shader.setVertexConstFromArray(this._skeletonAnimationSet.matricesIndex, this._globalMatrices);\n }\n };\n /**\n * @inheritDoc\n */\n SkeletonAnimator.prototype.testGPUCompatibility = function (shader) {\n if (!this._useCondensedIndices && (this._forceCPU || this._jointsPerVertex > 4 || shader.numUsedVertexConstants + this._numJoints * 3 > 128))\n this._pAnimationSet.cancelGPUCompatibility();\n };\n /**\n * Applies the calculated time delta to the active animation state node or state transition object.\n */\n SkeletonAnimator.prototype._pUpdateDeltaTime = function (dt) {\n _super.prototype._pUpdateDeltaTime.call(this, dt);\n //invalidate pose matrices\n this._globalPropertiesDirty = true;\n //trigger geometry invalidation if using CPU animation\n if (this._pAnimationSet.usesCPU)\n this.invalidateElements();\n };\n SkeletonAnimator.prototype.updateCondensedMatrices = function (condensedIndexLookUp) {\n var j = 0, k = 0;\n var len = condensedIndexLookUp.length;\n var srcIndex;\n this._condensedMatrices = new Float32Array(len * 12);\n for (var i = 0; i < len; i++) {\n srcIndex = condensedIndexLookUp[i] * 12; //12 required for the three 4-component vectors that store the matrix\n k = 12;\n // copy into condensed\n while (k--)\n this._condensedMatrices[j++] = this._globalMatrices[srcIndex++];\n }\n };\n SkeletonAnimator.prototype.updateGlobalProperties = function () {\n this._globalPropertiesDirty = false;\n //get global pose\n this.localToGlobalPose(this._activeSkeletonState.getSkeletonPose(this._skeleton), this._globalPose, this._skeleton);\n // convert pose to matrix\n var mtxOffset = 0;\n var globalPoses = this._globalPose.jointPoses;\n var raw;\n var ox, oy, oz, ow;\n var xy2, xz2, xw2;\n var yz2, yw2, zw2;\n var n11, n12, n13;\n var n21, n22, n23;\n var n31, n32, n33;\n var m11, m12, m13, m14;\n var m21, m22, m23, m24;\n var m31, m32, m33, m34;\n var joints = this._skeleton.joints;\n var pose;\n var quat;\n var vec;\n var t;\n for (var i = 0; i < this._numJoints; ++i) {\n pose = globalPoses[i];\n quat = pose.orientation;\n vec = pose.translation;\n ox = quat.x;\n oy = quat.y;\n oz = quat.z;\n ow = quat.w;\n xy2 = (t = 2.0 * ox) * oy;\n xz2 = t * oz;\n xw2 = t * ow;\n yz2 = (t = 2.0 * oy) * oz;\n yw2 = t * ow;\n zw2 = 2.0 * oz * ow;\n yz2 = 2.0 * oy * oz;\n yw2 = 2.0 * oy * ow;\n zw2 = 2.0 * oz * ow;\n ox *= ox;\n oy *= oy;\n oz *= oz;\n ow *= ow;\n n11 = (t = ox - oy) - oz + ow;\n n12 = xy2 - zw2;\n n13 = xz2 + yw2;\n n21 = xy2 + zw2;\n n22 = -t - oz + ow;\n n23 = yz2 - xw2;\n n31 = xz2 - yw2;\n n32 = yz2 + xw2;\n n33 = -ox - oy + oz + ow;\n // prepend inverse bind pose\n raw = joints[i].inverseBindPose;\n m11 = raw[0];\n m12 = raw[4];\n m13 = raw[8];\n m14 = raw[12];\n m21 = raw[1];\n m22 = raw[5];\n m23 = raw[9];\n m24 = raw[13];\n m31 = raw[2];\n m32 = raw[6];\n m33 = raw[10];\n m34 = raw[14];\n this._globalMatrices[mtxOffset] = n11 * m11 + n12 * m21 + n13 * m31;\n this._globalMatrices[mtxOffset + 1] = n11 * m12 + n12 * m22 + n13 * m32;\n this._globalMatrices[mtxOffset + 2] = n11 * m13 + n12 * m23 + n13 * m33;\n this._globalMatrices[mtxOffset + 3] = n11 * m14 + n12 * m24 + n13 * m34 + vec.x;\n this._globalMatrices[mtxOffset + 4] = n21 * m11 + n22 * m21 + n23 * m31;\n this._globalMatrices[mtxOffset + 5] = n21 * m12 + n22 * m22 + n23 * m32;\n this._globalMatrices[mtxOffset + 6] = n21 * m13 + n22 * m23 + n23 * m33;\n this._globalMatrices[mtxOffset + 7] = n21 * m14 + n22 * m24 + n23 * m34 + vec.y;\n this._globalMatrices[mtxOffset + 8] = n31 * m11 + n32 * m21 + n33 * m31;\n this._globalMatrices[mtxOffset + 9] = n31 * m12 + n32 * m22 + n33 * m32;\n this._globalMatrices[mtxOffset + 10] = n31 * m13 + n32 * m23 + n33 * m33;\n this._globalMatrices[mtxOffset + 11] = n31 * m14 + n32 * m24 + n33 * m34 + vec.z;\n mtxOffset = mtxOffset + 12;\n }\n };\n SkeletonAnimator.prototype.getRenderableElements = function (renderable, sourceElements) {\n this._morphedElementsDirty[sourceElements.id] = true;\n //early out for GPU animations\n if (!this._pAnimationSet.usesCPU)\n return sourceElements;\n var targetElements;\n if (!(targetElements = this._morphedElements[sourceElements.id])) {\n //not yet stored\n sourceElements.normals;\n sourceElements.tangents;\n targetElements = this._morphedElements[sourceElements.id] = sourceElements.clone();\n //turn off auto calculations on the morphed geometry\n targetElements.autoDeriveNormals = false;\n targetElements.autoDeriveTangents = false;\n //add event listeners for any changes in UV values on the source geometry\n sourceElements.addEventListener(ElementsEvent.INVALIDATE_INDICES, this._onIndicesUpdateDelegate);\n sourceElements.addEventListener(ElementsEvent.INVALIDATE_VERTICES, this._onVerticesUpdateDelegate);\n }\n return targetElements;\n };\n /**\n * If the animation can't be performed on GPU, transform vertices manually\n * @param subGeom The subgeometry containing the weights and joint index data per vertex.\n * @param pass The material pass for which we need to transform the vertices\n */\n SkeletonAnimator.prototype.morphElements = function (renderable, sourceElements) {\n this._morphedElementsDirty[sourceElements.id] = false;\n var numVertices = sourceElements.numVertices;\n var sourcePositions = sourceElements.positions.get(numVertices);\n var sourceNormals = sourceElements.normals.get(numVertices);\n var sourceTangents = sourceElements.tangents.get(numVertices);\n var posDim = sourceElements.positions.dimensions;\n var posStride = sourceElements.positions.stride;\n var normalStride = sourceElements.normals.stride;\n var tangentStride = sourceElements.tangents.stride;\n var jointIndices = sourceElements.jointIndices.get(numVertices);\n var jointWeights = sourceElements.jointWeights.get(numVertices);\n var jointStride = sourceElements.jointIndices.stride;\n var targetElements = this._morphedElements[sourceElements.id];\n var targetPositions = targetElements.positions.get(numVertices);\n var targetNormals = targetElements.normals.get(numVertices);\n var targetTangents = targetElements.tangents.get(numVertices);\n targetElements.positions.attributesBuffer.invalidate();\n targetElements.normals.attributesBuffer.invalidate();\n targetElements.tangents.attributesBuffer.invalidate();\n var index = 0;\n var i0 = 0;\n var i1 = 0;\n var i2 = 0;\n var i3 = 0;\n var k;\n var vx, vy, vz;\n var nx, ny, nz;\n var tx, ty, tz;\n var weight;\n var vertX, vertY, vertZ;\n var normX, normY, normZ;\n var tangX, tangY, tangZ;\n var m11, m12, m13, m14;\n var m21, m22, m23, m24;\n var m31, m32, m33, m34;\n while (index < numVertices) {\n i0 = index * posStride;\n vertX = sourcePositions[i0];\n vertY = sourcePositions[i0 + 1];\n vertZ = (posDim == 3) ? sourcePositions[i0 + 2] : 0;\n i1 = index * normalStride;\n normX = sourceNormals[i1];\n normY = sourceNormals[i1 + 1];\n normZ = sourceNormals[i1 + 2];\n i2 = index * tangentStride;\n tangX = sourceTangents[i2];\n tangY = sourceTangents[i2 + 1];\n tangZ = sourceTangents[i2 + 2];\n vx = 0;\n vy = 0;\n vz = 0;\n nx = 0;\n ny = 0;\n nz = 0;\n tx = 0;\n ty = 0;\n tz = 0;\n k = 0;\n i3 = index * jointStride;\n while (k < this._jointsPerVertex) {\n weight = jointWeights[i3 + k];\n if (weight > 0) {\n // implicit /3*12 (/3 because indices are multiplied by 3 for gpu matrix access, *12 because it's the matrix size)\n var mtxOffset = jointIndices[i3 + k] << 2;\n m11 = this._globalMatrices[mtxOffset];\n m12 = this._globalMatrices[mtxOffset + 1];\n m13 = this._globalMatrices[mtxOffset + 2];\n m14 = this._globalMatrices[mtxOffset + 3];\n m21 = this._globalMatrices[mtxOffset + 4];\n m22 = this._globalMatrices[mtxOffset + 5];\n m23 = this._globalMatrices[mtxOffset + 6];\n m24 = this._globalMatrices[mtxOffset + 7];\n m31 = this._globalMatrices[mtxOffset + 8];\n m32 = this._globalMatrices[mtxOffset + 9];\n m33 = this._globalMatrices[mtxOffset + 10];\n m34 = this._globalMatrices[mtxOffset + 11];\n vx += weight * (m11 * vertX + m12 * vertY + m13 * vertZ + m14);\n vy += weight * (m21 * vertX + m22 * vertY + m23 * vertZ + m24);\n vz += weight * (m31 * vertX + m32 * vertY + m33 * vertZ + m34);\n nx += weight * (m11 * normX + m12 * normY + m13 * normZ);\n ny += weight * (m21 * normX + m22 * normY + m23 * normZ);\n nz += weight * (m31 * normX + m32 * normY + m33 * normZ);\n tx += weight * (m11 * tangX + m12 * tangY + m13 * tangZ);\n ty += weight * (m21 * tangX + m22 * tangY + m23 * tangZ);\n tz += weight * (m31 * tangX + m32 * tangY + m33 * tangZ);\n k++;\n }\n else {\n //if zero weight encountered, skip to the next vertex\n k = this._jointsPerVertex;\n }\n }\n targetPositions[i0] = vx;\n targetPositions[i0 + 1] = vy;\n if (posDim == 3)\n targetPositions[i0 + 2] = vz;\n targetNormals[i1] = nx;\n targetNormals[i1 + 1] = ny;\n targetNormals[i1 + 2] = nz;\n targetTangents[i2] = tx;\n targetTangents[i2 + 1] = ty;\n targetTangents[i2 + 2] = tz;\n index++;\n }\n };\n /**\n * Converts a local hierarchical skeleton pose to a global pose\n * @param targetPose The SkeletonPose object that will contain the global pose.\n * @param skeleton The skeleton containing the joints, and as such, the hierarchical data to transform to global poses.\n */\n SkeletonAnimator.prototype.localToGlobalPose = function (sourcePose, targetPose, skeleton) {\n var globalPoses = targetPose.jointPoses;\n var globalJointPose;\n var joints = skeleton.joints;\n var len = sourcePose.numJointPoses;\n var jointPoses = sourcePose.jointPoses;\n var parentIndex;\n var joint;\n var parentPose;\n var pose;\n var or;\n var tr;\n var t;\n var q;\n var x1, y1, z1, w1;\n var x2, y2, z2, w2;\n var x3, y3, z3;\n // :s\n if (globalPoses.length != len)\n globalPoses.length = len;\n for (var i = 0; i < len; ++i) {\n globalJointPose = globalPoses[i];\n if (globalJointPose == null)\n globalJointPose = globalPoses[i] = new JointPose();\n joint = joints[i];\n parentIndex = joint.parentIndex;\n pose = jointPoses[i];\n q = globalJointPose.orientation;\n t = globalJointPose.translation;\n if (parentIndex < 0) {\n tr = pose.translation;\n or = pose.orientation;\n q.x = or.x;\n q.y = or.y;\n q.z = or.z;\n q.w = or.w;\n t.x = tr.x;\n t.y = tr.y;\n t.z = tr.z;\n }\n else {\n // append parent pose\n parentPose = globalPoses[parentIndex];\n // rotate point\n or = parentPose.orientation;\n tr = pose.translation;\n x2 = or.x;\n y2 = or.y;\n z2 = or.z;\n w2 = or.w;\n x3 = tr.x;\n y3 = tr.y;\n z3 = tr.z;\n w1 = -x2 * x3 - y2 * y3 - z2 * z3;\n x1 = w2 * x3 + y2 * z3 - z2 * y3;\n y1 = w2 * y3 - x2 * z3 + z2 * x3;\n z1 = w2 * z3 + x2 * y3 - y2 * x3;\n // append parent translation\n tr = parentPose.translation;\n t.x = -w1 * x2 + x1 * w2 - y1 * z2 + z1 * y2 + tr.x;\n t.y = -w1 * y2 + x1 * z2 + y1 * w2 - z1 * x2 + tr.y;\n t.z = -w1 * z2 - x1 * y2 + y1 * x2 + z1 * w2 + tr.z;\n // append parent orientation\n x1 = or.x;\n y1 = or.y;\n z1 = or.z;\n w1 = or.w;\n or = pose.orientation;\n x2 = or.x;\n y2 = or.y;\n z2 = or.z;\n w2 = or.w;\n q.w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2;\n q.x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2;\n q.y = w1 * y2 - x1 * z2 + y1 * w2 + z1 * x2;\n q.z = w1 * z2 + x1 * y2 - y1 * x2 + z1 * w2;\n }\n }\n };\n SkeletonAnimator.prototype.onTransitionComplete = function (event) {\n if (event.type == AnimationStateEvent.TRANSITION_COMPLETE) {\n event.animationNode.removeEventListener(AnimationStateEvent.TRANSITION_COMPLETE, this._onTransitionCompleteDelegate);\n //if this is the current active state transition, revert control to the active node\n if (this._pActiveState == event.animationState) {\n this._pActiveNode = this._pAnimationSet.getAnimation(this._pActiveAnimationName);\n this._pActiveState = this.getAnimationState(this._pActiveNode);\n this._activeSkeletonState = this._pActiveState;\n }\n }\n };\n SkeletonAnimator.prototype.onIndicesUpdate = function (event) {\n var elements = event.target;\n this._morphedElements[elements.id].setIndices(elements.indices);\n };\n SkeletonAnimator.prototype.onVerticesUpdate = function (event) {\n //only update uvs\n if (event.attributesView != elements.uvs && event.attributesView != elements.getCustomAtributes(\"secondaryUVs\"))\n return;\n var elements = event.target;\n var morphGraphics = this._morphedElements[elements.id];\n var morphUVs = morphGraphics.uvs.get(elements.numVertices);\n morphGraphics.invalidateVertices(morphGraphics.uvs);\n var uvStride = morphGraphics.uvs.stride;\n var uvs = event.attributesView.get(elements.numVertices);\n var len = elements.numVertices * uvStride;\n for (var i = 0; i < len; i += uvStride) {\n morphUVs[i] = uvs[i];\n morphUVs[i + 1] = uvs[i + 1];\n }\n };\n return SkeletonAnimator;\n}(AnimatorBase));\nexport { SkeletonAnimator };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/SkeletonAnimator.js","import * as tslib_1 from \"tslib\";\nimport { AnimationRegisterData, AnimationSetBase } from \"@awayjs/stage\";\nimport { VertexAnimationMode } from \"./data/VertexAnimationMode\";\n/**\n * The animation data set used by vertex-based animators, containing vertex animation state data.\n *\n * @see VertexAnimator\n */\nvar VertexAnimationSet = (function (_super) {\n tslib_1.__extends(VertexAnimationSet, _super);\n /**\n * Returns whether or not normal data is used in last set GPU pass of the vertex shader.\n */\n //\t\tpublic get useNormals():boolean\n //\t\t{\n //\t\t\treturn this._uploadNormals;\n //\t\t}\n /**\n * Creates a new VertexAnimationSet object.\n *\n * @param numPoses The number of poses made available at once to the GPU animation code.\n * @param blendMode Optional value for setting the animation mode of the vertex animator object.\n *\n * @see away3d.animators.data.VertexAnimationMode\n */\n function VertexAnimationSet(numPoses, blendMode) {\n if (numPoses === void 0) { numPoses = 2; }\n if (blendMode === void 0) { blendMode = \"absolute\"; }\n var _this = _super.call(this) || this;\n _this._numPoses = numPoses;\n _this._blendMode = blendMode;\n return _this;\n }\n Object.defineProperty(VertexAnimationSet.prototype, \"numPoses\", {\n /**\n * Returns the number of poses made available at once to the GPU animation code.\n */\n get: function () {\n return this._numPoses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VertexAnimationSet.prototype, \"blendMode\", {\n /**\n * Returns the active blend mode of the vertex animator object.\n */\n get: function () {\n return this._blendMode;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n VertexAnimationSet.prototype.getAGALVertexCode = function (shader, registerCache, sharedRegisters) {\n //grab animationRegisterData from the materialpassbase or create a new one if the first time\n this._iAnimationRegisterData = shader.animationRegisterData;\n if (this._iAnimationRegisterData == null)\n this._iAnimationRegisterData = shader.animationRegisterData = new AnimationRegisterData();\n if (this._blendMode == VertexAnimationMode.ABSOLUTE)\n return this.getAbsoluteAGALCode(shader, registerCache, sharedRegisters);\n else\n return this.getAdditiveAGALCode(shader, registerCache, sharedRegisters);\n };\n /**\n * @inheritDoc\n */\n VertexAnimationSet.prototype.getAGALFragmentCode = function (shader, registerCache, shadedTarget) {\n return \"\";\n };\n /**\n * @inheritDoc\n */\n VertexAnimationSet.prototype.getAGALUVCode = function (shader, registerCache, sharedRegisters) {\n return \"mov \" + sharedRegisters.uvTarget + \",\" + sharedRegisters.uvSource + \"\\n\";\n };\n /**\n * @inheritDoc\n */\n VertexAnimationSet.prototype.doneAGALCode = function (shader) {\n };\n /**\n * Generates the vertex AGAL code for absolute blending.\n */\n VertexAnimationSet.prototype.getAbsoluteAGALCode = function (shader, registerCache, sharedRegisters) {\n var code = \"\";\n var temp1 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(temp1, 1);\n var temp2 = registerCache.getFreeVertexVectorTemp();\n var regs = new Array(\".x\", \".y\", \".z\", \".w\");\n var len = sharedRegisters.animatableAttributes.length;\n var constantReg = registerCache.getFreeVertexConstant();\n this._iAnimationRegisterData.weightsIndex = constantReg.index;\n this._iAnimationRegisterData.poseIndices = new Array(this._numPoses);\n var poseInput;\n var k = 0;\n if (len > 2)\n len = 2;\n for (var i = 0; i < len; ++i) {\n code += \"mul \" + temp1 + \", \" + sharedRegisters.animatableAttributes[i] + \", \" + constantReg + regs[0] + \"\\n\";\n for (var j = 1; j < this._numPoses; ++j) {\n poseInput = registerCache.getFreeVertexAttribute();\n this._iAnimationRegisterData.poseIndices[k++] = poseInput.index;\n code += \"mul \" + temp2 + \", \" + poseInput + \", \" + constantReg + regs[j] + \"\\n\";\n if (j < this._numPoses - 1)\n code += \"add \" + temp1 + \", \" + temp1 + \", \" + temp2 + \"\\n\";\n }\n code += \"add \" + sharedRegisters.animationTargetRegisters[i] + \", \" + temp1 + \", \" + temp2 + \"\\n\";\n }\n // add code for bitangents if tangents are used\n if (shader.tangentDependencies > 0 || shader.outputsNormals) {\n code += \"dp3 \" + temp1 + \".x, \" + sharedRegisters.animatableAttributes[2] + \", \" + sharedRegisters.animationTargetRegisters[1] + \"\\n\" +\n \"mul \" + temp1 + \", \" + sharedRegisters.animationTargetRegisters[1] + \", \" + temp1 + \".x\\n\" +\n \"sub \" + sharedRegisters.animationTargetRegisters[2] + \", \" + sharedRegisters.animationTargetRegisters[2] + \", \" + temp1 + \"\\n\";\n }\n //\n // // simply write attributes to targets, do not animate them\n // // projection will pick up on targets[0] to do the projection\n // var len:number = sharedRegisters.animatableAttributes.length;\n // for (var i:number = 0; i < len; ++i)\n // \tcode += \"mov \" + sharedRegisters.animationTargetRegisters[i] + \", \" + sharedRegisters.animatableAttributes[i] + \"\\n\";\n return code;\n };\n /**\n * Generates the vertex AGAL code for additive blending.\n */\n VertexAnimationSet.prototype.getAdditiveAGALCode = function (shader, registerCache, sharedRegisters) {\n var code = \"\";\n var len = sharedRegisters.animatableAttributes.length;\n var regs = [\".x\", \".y\", \".z\", \".w\"];\n var temp1 = registerCache.getFreeVertexVectorTemp();\n var constantReg = registerCache.getFreeVertexConstant();\n this._iAnimationRegisterData.weightsIndex = constantReg.index;\n this._iAnimationRegisterData.poseIndices = new Array(this._numPoses);\n var poseInput;\n var k = 0;\n if (len > 2)\n len = 2;\n code += \"mov \" + sharedRegisters.animationTargetRegisters[0] + \", \" + sharedRegisters.animatableAttributes[0] + \"\\n\";\n if (shader.normalDependencies > 0)\n code += \"mov \" + sharedRegisters.animationTargetRegisters[1] + \", \" + sharedRegisters.animatableAttributes[1] + \"\\n\";\n for (var i = 0; i < len; ++i) {\n for (var j = 0; j < this._numPoses; ++j) {\n poseInput = registerCache.getFreeVertexAttribute();\n this._iAnimationRegisterData.poseIndices[k++] = poseInput.index;\n code += \"mul \" + temp1 + \", \" + poseInput + \", \" + constantReg + regs[j] + \"\\n\" +\n \"add \" + sharedRegisters.animationTargetRegisters[i] + \", \" + sharedRegisters.animationTargetRegisters[i] + \", \" + temp1 + \"\\n\";\n }\n }\n if (shader.tangentDependencies > 0 || shader.outputsNormals) {\n code += \"dp3 \" + temp1 + \".x, \" + sharedRegisters.animatableAttributes[2] + \", \" + sharedRegisters.animationTargetRegisters[1] + \"\\n\" +\n \"mul \" + temp1 + \", \" + sharedRegisters.animationTargetRegisters[1] + \", \" + temp1 + \".x\\n\" +\n \"sub \" + sharedRegisters.animationTargetRegisters[2] + \", \" + sharedRegisters.animatableAttributes[2] + \", \" + temp1 + \"\\n\";\n }\n return code;\n };\n return VertexAnimationSet;\n}(AnimationSetBase));\nexport { VertexAnimationSet };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/VertexAnimationSet.js","import * as tslib_1 from \"tslib\";\nimport { TriangleElements } from \"@awayjs/graphics\";\nimport { AnimatorBase } from \"@awayjs/stage\";\nimport { VertexAnimationMode } from \"./data/VertexAnimationMode\";\n/**\n * Provides an interface for assigning vertex-based animation data sets to sprite-based entity objects\n * and controlling the various available states of animation through an interative playhead that can be\n * automatically updated or manually triggered.\n */\nvar VertexAnimator = (function (_super) {\n tslib_1.__extends(VertexAnimator, _super);\n /**\n * Creates a new VertexAnimator object.\n *\n * @param vertexAnimationSet The animation data set containing the vertex animations used by the animator.\n */\n function VertexAnimator(vertexAnimationSet) {\n var _this = _super.call(this, vertexAnimationSet) || this;\n _this._poses = new Array();\n _this._weights = new Float32Array([1, 0, 0, 0]);\n _this._vertexAnimationSet = vertexAnimationSet;\n return _this;\n }\n /**\n * @inheritDoc\n */\n VertexAnimator.prototype.clone = function () {\n return new VertexAnimator(this._vertexAnimationSet);\n };\n /**\n * Plays a sequence with a given name. If the sequence is not found, it may not be loaded yet, and it will retry every frame.\n * @param sequenceName The name of the clip to be played.\n */\n VertexAnimator.prototype.play = function (name, transition, offset) {\n if (transition === void 0) { transition = null; }\n if (offset === void 0) { offset = NaN; }\n if (this._pActiveAnimationName == name)\n return;\n this._pActiveAnimationName = name;\n //TODO: implement transitions in vertex animator\n if (!this._pAnimationSet.hasAnimation(name))\n throw new Error(\"Animation root node \" + name + \" not found!\");\n this._pActiveNode = this._pAnimationSet.getAnimation(name);\n this._pActiveState = this.getAnimationState(this._pActiveNode);\n if (this.updatePosition) {\n //update straight away to reset position deltas\n this._pActiveState.update(this._pAbsoluteTime);\n this._pActiveState.positionDelta;\n }\n this._activeVertexState = this._pActiveState;\n this.start();\n //apply a time offset if specified\n if (!isNaN(offset))\n this.reset(name, offset);\n };\n /**\n * @inheritDoc\n */\n VertexAnimator.prototype._pUpdateDeltaTime = function (dt) {\n _super.prototype._pUpdateDeltaTime.call(this, dt);\n var geometryFlag = false;\n if (this._poses[0] != this._activeVertexState.currentGraphics) {\n this._poses[0] = this._activeVertexState.currentGraphics;\n geometryFlag = true;\n }\n if (this._poses[1] != this._activeVertexState.nextGraphics)\n this._poses[1] = this._activeVertexState.nextGraphics;\n this._weights[0] = 1 - (this._weights[1] = this._activeVertexState.blendWeight);\n if (geometryFlag)\n this.invalidateElements();\n };\n /**\n * @inheritDoc\n */\n VertexAnimator.prototype.setRenderState = function (shader, renderable, stage, projection) {\n // todo: add code for when running on cpu\n // this type of animation can only be Shape\n var shape = renderable.shape;\n var sprite = renderable.sourceEntity;\n var elements = shape.elements;\n // if no poses defined, set temp data\n if (!this._poses.length) {\n this.setNullPose(shader, elements, stage);\n return;\n }\n var animationRegisterData = shader.animationRegisterData;\n var i;\n var len = this._vertexAnimationSet.numPoses;\n shader.setVertexConstFromArray(animationRegisterData.weightsIndex, this._weights);\n if (this._vertexAnimationSet.blendMode == VertexAnimationMode.ABSOLUTE)\n i = 1;\n else\n i = 0;\n var elementsGL;\n var k = 0;\n var shapeIndex = sprite.graphics.getShapeIndex(shape);\n for (; i < len; ++i) {\n elements = this._poses[i].getShapeAt(shapeIndex).elements || shape.elements;\n elementsGL = stage.getAbstraction(elements);\n elementsGL._indexMappings = stage.getAbstraction(shape.elements).getIndexMappings();\n if (elements.isAsset(TriangleElements)) {\n elementsGL.activateVertexBufferVO(animationRegisterData.poseIndices[k++], elements.positions);\n if (shader.normalDependencies > 0)\n elementsGL.activateVertexBufferVO(animationRegisterData.poseIndices[k++], elements.normals);\n }\n }\n };\n VertexAnimator.prototype.setNullPose = function (shader, elements, stage) {\n var animationRegisterData = shader.animationRegisterData;\n shader.setVertexConstFromArray(animationRegisterData.weightsIndex, this._weights);\n var elementsGL = stage.getAbstraction(elements);\n var k = 0;\n if (this._vertexAnimationSet.blendMode == VertexAnimationMode.ABSOLUTE) {\n var len = this._vertexAnimationSet.numPoses;\n for (var i = 1; i < len; ++i) {\n if (elements.isAsset(TriangleElements)) {\n elementsGL.activateVertexBufferVO(animationRegisterData.poseIndices[k++], elements.positions);\n if (shader.normalDependencies > 0)\n elementsGL.activateVertexBufferVO(animationRegisterData.poseIndices[k++], elements.normals);\n }\n }\n }\n // todo: set temp data for additive?\n };\n /**\n * Verifies if the animation will be used on cpu. Needs to be true for all passes for a material to be able to use it on gpu.\n * Needs to be called if gpu code is potentially required.\n */\n VertexAnimator.prototype.testGPUCompatibility = function (shader) {\n };\n VertexAnimator.prototype.getRenderableElements = function (renderable, sourceElements) {\n if (this._vertexAnimationSet.blendMode == VertexAnimationMode.ABSOLUTE && this._poses.length)\n return this._poses[0].getShapeAt(renderable.sourceEntity.graphics.getShapeIndex(renderable.shape)).elements || sourceElements;\n //nothing to do here\n return sourceElements;\n };\n return VertexAnimator;\n}(AnimatorBase));\nexport { VertexAnimator };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/animators/VertexAnimator.js","import * as tslib_1 from \"tslib\";\nimport { EventBase } from \"@awayjs/core\";\nvar RTTEvent = (function (_super) {\n tslib_1.__extends(RTTEvent, _super);\n function RTTEvent(type, rttManager) {\n var _this = _super.call(this, type) || this;\n _this._rttManager = rttManager;\n return _this;\n }\n Object.defineProperty(RTTEvent.prototype, \"rttManager\", {\n /**\n *\n */\n get: function () {\n return this._rttManager;\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n */\n RTTEvent.prototype.clone = function () {\n return new RTTEvent(this.type, this._rttManager);\n };\n return RTTEvent;\n}(EventBase));\nexport { RTTEvent };\n/**\n *\n */\nRTTEvent.RESIZE = \"rttManagerResize\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/RTTEvent.js","import * as tslib_1 from \"tslib\";\nimport { Rectangle, EventDispatcher } from \"@awayjs/core\";\nimport { ImageUtils } from \"@awayjs/graphics\";\nimport { RTTEvent } from \"../events/RTTEvent\";\nvar RTTBufferManager = (function (_super) {\n tslib_1.__extends(RTTBufferManager, _super);\n function RTTBufferManager(stage) {\n var _this = _super.call(this) || this;\n _this._viewWidth = -1;\n _this._viewHeight = -1;\n _this._textureWidth = -1;\n _this._textureHeight = -1;\n _this._buffersInvalid = true;\n _this._renderToTextureRect = new Rectangle();\n _this._stage = stage;\n return _this;\n }\n RTTBufferManager.getInstance = function (stage) {\n if (!stage)\n throw new Error(\"stage key cannot be null!\");\n if (RTTBufferManager._instances == null)\n RTTBufferManager._instances = new Array();\n var rttBufferManager = RTTBufferManager.getRTTBufferManagerFromStage(stage);\n if (rttBufferManager == null) {\n rttBufferManager = new RTTBufferManager(stage);\n var vo = new RTTBufferManagerVO();\n vo.stage3d = stage;\n vo.rttbfm = rttBufferManager;\n RTTBufferManager._instances.push(vo);\n }\n return rttBufferManager;\n };\n RTTBufferManager.getRTTBufferManagerFromStage = function (stage) {\n var l = RTTBufferManager._instances.length;\n var r;\n for (var c = 0; c < l; c++) {\n r = RTTBufferManager._instances[c];\n if (r.stage3d === stage)\n return r.rttbfm;\n }\n return null;\n };\n RTTBufferManager.deleteRTTBufferManager = function (stage) {\n var l = RTTBufferManager._instances.length;\n var r;\n for (var c = 0; c < l; c++) {\n r = RTTBufferManager._instances[c];\n if (r.stage3d === stage) {\n RTTBufferManager._instances.splice(c, 1);\n return;\n }\n }\n };\n Object.defineProperty(RTTBufferManager.prototype, \"textureRatioX\", {\n get: function () {\n if (this._buffersInvalid)\n this.updateRTTBuffers();\n return this._textureRatioX;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RTTBufferManager.prototype, \"textureRatioY\", {\n get: function () {\n if (this._buffersInvalid)\n this.updateRTTBuffers();\n return this._textureRatioY;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RTTBufferManager.prototype, \"viewWidth\", {\n get: function () {\n return this._viewWidth;\n },\n set: function (value) {\n if (value == this._viewWidth)\n return;\n this._viewWidth = value;\n this._buffersInvalid = true;\n this._textureWidth = ImageUtils.getBestPowerOf2(this._viewWidth);\n if (this._textureWidth > this._viewWidth) {\n this._renderToTextureRect.x = Math.floor((this._textureWidth - this._viewWidth) * .5);\n this._renderToTextureRect.width = this._viewWidth;\n }\n else {\n this._renderToTextureRect.x = 0;\n this._renderToTextureRect.width = this._textureWidth;\n }\n this.dispatchEvent(new RTTEvent(RTTEvent.RESIZE, this));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RTTBufferManager.prototype, \"viewHeight\", {\n get: function () {\n return this._viewHeight;\n },\n set: function (value) {\n if (value == this._viewHeight)\n return;\n this._viewHeight = value;\n this._buffersInvalid = true;\n this._textureHeight = ImageUtils.getBestPowerOf2(this._viewHeight);\n if (this._textureHeight > this._viewHeight) {\n this._renderToTextureRect.y = Math.floor((this._textureHeight - this._viewHeight) * .5);\n this._renderToTextureRect.height = this._viewHeight;\n }\n else {\n this._renderToTextureRect.y = 0;\n this._renderToTextureRect.height = this._textureHeight;\n }\n this.dispatchEvent(new RTTEvent(RTTEvent.RESIZE, this));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RTTBufferManager.prototype, \"renderToTextureVertexBuffer\", {\n get: function () {\n if (this._buffersInvalid)\n this.updateRTTBuffers();\n return this._renderToTextureVertexBuffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RTTBufferManager.prototype, \"renderToScreenVertexBuffer\", {\n get: function () {\n if (this._buffersInvalid)\n this.updateRTTBuffers();\n return this._renderToScreenVertexBuffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RTTBufferManager.prototype, \"indexBuffer\", {\n get: function () {\n return this._indexBuffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RTTBufferManager.prototype, \"renderToTextureRect\", {\n get: function () {\n if (this._buffersInvalid)\n this.updateRTTBuffers();\n return this._renderToTextureRect;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RTTBufferManager.prototype, \"textureWidth\", {\n get: function () {\n return this._textureWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RTTBufferManager.prototype, \"textureHeight\", {\n get: function () {\n return this._textureHeight;\n },\n enumerable: true,\n configurable: true\n });\n RTTBufferManager.prototype.dispose = function () {\n RTTBufferManager.deleteRTTBufferManager(this._stage);\n if (this._indexBuffer) {\n this._indexBuffer.dispose();\n this._renderToScreenVertexBuffer.dispose();\n this._renderToTextureVertexBuffer.dispose();\n this._renderToScreenVertexBuffer = null;\n this._renderToTextureVertexBuffer = null;\n this._indexBuffer = null;\n }\n };\n // todo: place all this in a separate model, since it's used all over the place\n // maybe it even has a place in the core (together with screenRect etc)?\n // needs to be stored per view of course\n RTTBufferManager.prototype.updateRTTBuffers = function () {\n var context = this._stage.context;\n var textureVerts;\n var screenVerts;\n var x;\n var y;\n if (this._renderToTextureVertexBuffer == null)\n this._renderToTextureVertexBuffer = context.createVertexBuffer(4, 20);\n if (this._renderToScreenVertexBuffer == null)\n this._renderToScreenVertexBuffer = context.createVertexBuffer(4, 20);\n if (!this._indexBuffer) {\n this._indexBuffer = context.createIndexBuffer(6);\n this._indexBuffer.uploadFromArray([2, 1, 0, 3, 2, 0], 0, 6);\n }\n this._textureRatioX = x = Math.min(this._viewWidth / this._textureWidth, 1);\n this._textureRatioY = y = Math.min(this._viewHeight / this._textureHeight, 1);\n var u1 = (1 - x) * .5;\n var u2 = (x + 1) * .5;\n var v1 = (1 - y) * .5;\n var v2 = (y + 1) * .5;\n // last element contains indices for data per vertex that can be passed to the vertex shader if necessary (ie: frustum corners for deferred rendering)\n textureVerts = [-x, -y, u1, v1, 0, x, -y, u2, v1, 1, x, y, u2, v2, 2, -x, y, u1, v2, 3];\n screenVerts = [-1, -1, u1, v1, 0, 1, -1, u2, v1, 1, 1, 1, u2, v2, 2, -1, 1, u1, v2, 3];\n this._renderToTextureVertexBuffer.uploadFromArray(textureVerts, 0, 4);\n this._renderToScreenVertexBuffer.uploadFromArray(screenVerts, 0, 4);\n this._buffersInvalid = false;\n };\n return RTTBufferManager;\n}(EventDispatcher));\nexport { RTTBufferManager };\nvar RTTBufferManagerVO = (function () {\n function RTTBufferManagerVO() {\n }\n return RTTBufferManagerVO;\n}());\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/RTTBufferManager.js","import * as tslib_1 from \"tslib\";\nimport { ShaderBase, GL_MaterialPassBase } from \"@awayjs/stage\";\n/**\n * GL_DepthMaterial forms an abstract base class for the default shaded materials provided by Stage,\n * using material methods to define their appearance.\n */\nvar GL_DepthMaterial = (function (_super) {\n tslib_1.__extends(GL_DepthMaterial, _super);\n /**\n *\n * @param pool\n * @param surface\n * @param elementsClass\n * @param stage\n */\n function GL_DepthMaterial(material, materialPool) {\n var _this = _super.call(this, material, materialPool) || this;\n _this._shader = new ShaderBase(materialPool.elementsClass, _this, _this._stage);\n _this._pAddPass(_this);\n return _this;\n }\n GL_DepthMaterial.prototype.invalidate = function () {\n _super.prototype.invalidate.call(this);\n this._textureVO = this._material.getTextureAt(0) ? this._shader.getAbstraction(this._material.getTextureAt(0)) : null;\n };\n GL_DepthMaterial.prototype._includeDependencies = function (shader) {\n _super.prototype._includeDependencies.call(this, shader);\n shader.projectionDependencies++;\n if (shader.alphaThreshold > 0)\n shader.uvDependencies++;\n };\n GL_DepthMaterial.prototype._initConstantData = function (shader) {\n _super.prototype._initConstantData.call(this, shader);\n var index = this._fragmentConstantsIndex;\n var data = shader.fragmentConstantData;\n data[index] = 1.0;\n data[index + 1] = 255.0;\n data[index + 2] = 65025.0;\n data[index + 3] = 16581375.0;\n data[index + 4] = 1.0 / 255.0;\n data[index + 5] = 1.0 / 255.0;\n data[index + 6] = 1.0 / 255.0;\n data[index + 7] = 0.0;\n };\n /**\n * @inheritDoc\n */\n GL_DepthMaterial.prototype._getFragmentCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n var targetReg = sharedRegisters.shadedTarget;\n var dataReg1 = registerCache.getFreeFragmentConstant();\n var dataReg2 = registerCache.getFreeFragmentConstant();\n this._fragmentConstantsIndex = dataReg1.index * 4;\n var temp1 = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp1, 1);\n var temp2 = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp2, 1);\n code += \"div \" + temp1 + \", \" + sharedRegisters.projectionFragment + \", \" + sharedRegisters.projectionFragment + \".w\\n\" +\n \"mul \" + temp1 + \", \" + dataReg1 + \", \" + temp1 + \".z\\n\" +\n \"frc \" + temp1 + \", \" + temp1 + \"\\n\" +\n \"mul \" + temp2 + \", \" + temp1 + \".yzww, \" + dataReg2 + \"\\n\";\n //codeF += \"mov ft1.w, fc1.w\t\\n\" +\n // \"mov ft0.w, fc0.x\t\\n\";\n if (this._textureVO && this._shader.alphaThreshold > 0) {\n var albedo = registerCache.getFreeFragmentVectorTemp();\n code += this._textureVO._getFragmentCode(albedo, registerCache, sharedRegisters, sharedRegisters.uvVarying);\n var cutOffReg = registerCache.getFreeFragmentConstant();\n code += \"sub \" + albedo + \".w, \" + albedo + \".w, \" + cutOffReg + \".x\\n\" +\n \"kil \" + albedo + \".w\\n\";\n }\n code += \"sub \" + targetReg + \", \" + temp1 + \", \" + temp2 + \"\\n\";\n registerCache.removeFragmentTempUsage(temp1);\n registerCache.removeFragmentTempUsage(temp2);\n return code;\n };\n /**\n * @inheritDoc\n */\n GL_DepthMaterial.prototype._activate = function (projection) {\n _super.prototype._activate.call(this, projection);\n if (this._textureVO && this._shader.alphaThreshold > 0) {\n this._textureVO.activate();\n this._shader.fragmentConstantData[this._fragmentConstantsIndex + 8] = this._shader.alphaThreshold;\n }\n };\n return GL_DepthMaterial;\n}(GL_MaterialPassBase));\nexport { GL_DepthMaterial };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/GL_DepthMaterial.js","import * as tslib_1 from \"tslib\";\nimport { ShaderBase, GL_MaterialPassBase } from \"@awayjs/stage\";\n/**\n * DistanceRender is a pass that writes distance values to a depth map as a 32-bit value exploded over the 4 texture channels.\n * This is used to render omnidirectional shadow maps.\n */\nvar GL_DistanceMaterial = (function (_super) {\n tslib_1.__extends(GL_DistanceMaterial, _super);\n /**\n * Creates a new DistanceRender object.\n *\n * @param material The material to which this pass belongs.\n */\n function GL_DistanceMaterial(material, materialPool) {\n var _this = _super.call(this, material, materialPool) || this;\n _this._shader = new ShaderBase(materialPool.elementsClass, _this, _this._stage);\n _this._pAddPass(_this);\n return _this;\n }\n GL_DistanceMaterial.prototype.invalidate = function () {\n _super.prototype.invalidate.call(this);\n this._textureVO = this._material.getTextureAt(0) ? this._shader.getAbstraction(this._material.getTextureAt(0)) : null;\n };\n /**\n * Initializes the unchanging constant data for this material.\n */\n GL_DistanceMaterial.prototype._initConstantData = function (shader) {\n _super.prototype._initConstantData.call(this, shader);\n var index = this._fragmentConstantsIndex;\n var data = shader.fragmentConstantData;\n data[index + 4] = 1.0 / 255.0;\n data[index + 5] = 1.0 / 255.0;\n data[index + 6] = 1.0 / 255.0;\n data[index + 7] = 0.0;\n };\n GL_DistanceMaterial.prototype._includeDependencies = function (shader) {\n _super.prototype._includeDependencies.call(this, shader);\n shader.projectionDependencies++;\n shader.viewDirDependencies++;\n if (shader.alphaThreshold > 0)\n shader.uvDependencies++;\n if (shader.viewDirDependencies > 0)\n shader.globalPosDependencies++;\n };\n /**\n * @inheritDoc\n */\n GL_DistanceMaterial.prototype._getFragmentCode = function (registerCache, sharedRegisters) {\n var code;\n var targetReg = sharedRegisters.shadedTarget;\n var dataReg1 = registerCache.getFreeFragmentConstant();\n var dataReg2 = registerCache.getFreeFragmentConstant();\n this._fragmentConstantsIndex = dataReg1.index * 4;\n var temp1 = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp1, 1);\n var temp2 = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp2, 1);\n // squared distance to view\n code = \"dp3 \" + temp1 + \".z, \" + sharedRegisters.viewDirVarying + \".xyz, \" + sharedRegisters.viewDirVarying + \".xyz\\n\" +\n \"mul \" + temp1 + \", \" + dataReg1 + \", \" + temp1 + \".z\\n\" +\n \"frc \" + temp1 + \", \" + temp1 + \"\\n\" +\n \"mul \" + temp2 + \", \" + temp1 + \".yzww, \" + dataReg2 + \"\\n\";\n if (this._textureVO && this._shader.alphaThreshold > 0) {\n var albedo = registerCache.getFreeFragmentVectorTemp();\n code += this._textureVO._getFragmentCode(albedo, registerCache, sharedRegisters, sharedRegisters.uvVarying);\n var cutOffReg = registerCache.getFreeFragmentConstant();\n code += \"sub \" + albedo + \".w, \" + albedo + \".w, \" + cutOffReg + \".x\\n\" +\n \"kil \" + albedo + \".w\\n\";\n }\n code += \"sub \" + targetReg + \", \" + temp1 + \", \" + temp2 + \"\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n GL_DistanceMaterial.prototype._activate = function (projection) {\n _super.prototype._activate.call(this, projection);\n var f = projection.far;\n f = 1 / (2 * f * f);\n // sqrt(f*f+f*f) is largest possible distance for any frustum, so we need to divide by it. Rarely a tight fit, but with 32 bits precision, it's enough.\n var index = this._fragmentConstantsIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = 1.0 * f;\n data[index + 1] = 255.0 * f;\n data[index + 2] = 65025.0 * f;\n data[index + 3] = 16581375.0 * f;\n if (this._textureVO && this._shader.alphaThreshold > 0) {\n this._textureVO.activate();\n data[index + 8] = this._shader.alphaThreshold;\n }\n };\n return GL_DistanceMaterial;\n}(GL_MaterialPassBase));\nexport { GL_DistanceMaterial };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/GL_DistanceMaterial.js","import * as tslib_1 from \"tslib\";\nimport { EventBase } from \"@awayjs/core\";\nvar RendererEvent = (function (_super) {\n tslib_1.__extends(RendererEvent, _super);\n function RendererEvent(type) {\n return _super.call(this, type) || this;\n }\n return RendererEvent;\n}(EventBase));\nexport { RendererEvent };\nRendererEvent.VIEWPORT_UPDATED = \"viewportUpdated\";\nRendererEvent.SCISSOR_UPDATED = \"scissorUpdated\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/RendererEvent.js","/**\n * @class away.sort.RenderableMergeSort\n */\nvar RenderableMergeSort = (function () {\n function RenderableMergeSort() {\n }\n RenderableMergeSort.prototype.sortBlendedRenderables = function (head) {\n var headB;\n var fast;\n var slow;\n if (!head || !head.next) {\n return head;\n }\n // split in two sublists\n slow = head;\n fast = head.next;\n while (fast) {\n fast = fast.next;\n if (fast) {\n slow = slow.next;\n fast = fast.next;\n }\n }\n headB = slow.next;\n slow.next = null;\n // recurse\n head = this.sortBlendedRenderables(head);\n headB = this.sortBlendedRenderables(headB);\n // merge sublists while respecting order\n var result;\n var curr;\n var l;\n if (!head)\n return headB;\n if (!headB)\n return head;\n while (head && headB) {\n if (head.zIndex < headB.zIndex) {\n l = head;\n head = head.next;\n }\n else {\n l = headB;\n headB = headB.next;\n }\n if (!result)\n result = l;\n else\n curr.next = l;\n curr = l;\n }\n if (head)\n curr.next = head;\n else if (headB)\n curr.next = headB;\n return result;\n };\n RenderableMergeSort.prototype.sortOpaqueRenderables = function (head) {\n var headB;\n var fast, slow;\n if (!head || !head.next) {\n return head;\n }\n // split in two sublists\n slow = head;\n fast = head.next;\n while (fast) {\n fast = fast.next;\n if (fast) {\n slow = slow.next;\n fast = fast.next;\n }\n }\n headB = slow.next;\n slow.next = null;\n // recurse\n head = this.sortOpaqueRenderables(head);\n headB = this.sortOpaqueRenderables(headB);\n // merge sublists while respecting order\n var result;\n var curr;\n var l;\n var cmp = 0;\n if (!head)\n return headB;\n if (!headB)\n return head;\n while (head && headB && head != null && headB != null) {\n // first sort per render order id (reduces program3D switches),\n // then on render object id (reduces setting props),\n // then on zIndex (reduces overdraw)\n var aid = head.renderOrderId;\n var bid = headB.renderOrderId;\n if (aid == bid) {\n var ma = head.materialID;\n var mb = headB.materialID;\n if (ma == mb) {\n if (head.zIndex < headB.zIndex)\n cmp = 1;\n else\n cmp = -1;\n }\n else if (ma > mb) {\n cmp = 1;\n }\n else {\n cmp = -1;\n }\n }\n else if (aid > bid) {\n cmp = 1;\n }\n else {\n cmp = -1;\n }\n if (cmp < 0) {\n l = head;\n head = head.next;\n }\n else {\n l = headB;\n headB = headB.next;\n }\n if (!result) {\n result = l;\n curr = l;\n }\n else {\n curr.next = l;\n curr = l;\n }\n }\n if (head)\n curr.next = head;\n else if (headB)\n curr.next = headB;\n return result;\n };\n return RenderableMergeSort;\n}());\nexport { RenderableMergeSort };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/sort/RenderableMergeSort.js","import * as tslib_1 from \"tslib\";\nimport { Rectangle, Vector3D } from \"@awayjs/core\";\nimport { TraverserBase } from \"@awayjs/graphics\";\nimport { ContextGLProfile, ContextMode, AGALMiniAssembler, ContextGLBlendFactor, ContextGLCompareMode, ContextGLStencilAction, ContextGLTriangleFace, StageEvent, StageManager } from \"@awayjs/stage\";\nimport { RendererEvent } from \"./events/RendererEvent\";\nimport { RenderableMergeSort } from \"./sort/RenderableMergeSort\";\n/**\n * RendererBase forms an abstract base class for classes that are used in the rendering pipeline to render the\n * contents of a partition\n *\n * @class away.render.RendererBase\n */\nvar RendererBase = (function (_super) {\n tslib_1.__extends(RendererBase, _super);\n /**\n * Creates a new RendererBase object.\n */\n function RendererBase(stage, forceSoftware, profile, mode) {\n if (stage === void 0) { stage = null; }\n if (forceSoftware === void 0) { forceSoftware = false; }\n if (profile === void 0) { profile = ContextGLProfile.BASELINE; }\n if (mode === void 0) { mode = ContextMode.AUTO; }\n var _this = _super.call(this) || this;\n _this._activeMasksConfig = new Array();\n _this._registeredMasks = new Array();\n _this._numUsedStreams = 0;\n _this._numUsedTextures = 0;\n _this._cameraForward = new Vector3D();\n _this._pBackBufferInvalid = true;\n _this._pDepthTextureInvalid = true;\n _this._depthPrepass = false;\n _this._backgroundR = 0;\n _this._backgroundG = 0;\n _this._backgroundB = 0;\n _this._backgroundAlpha = 1;\n // only used by renderers that need to render geometry to textures\n _this._width = 0;\n _this._height = 0;\n _this.textureRatioX = 1;\n _this.textureRatioY = 1;\n _this._x = 0;\n _this._y = 0;\n _this._pScissorRect = new Rectangle();\n _this._pNumElements = 0;\n _this._disableColor = false;\n _this._disableClear = false;\n _this._renderBlended = true;\n _this._numCullPlanes = 0;\n _this._onViewportUpdatedDelegate = function (event) { return _this.onViewportUpdated(event); };\n _this._onContextUpdateDelegate = function (event) { return _this.onContextUpdate(event); };\n //default sorting algorithm\n _this.renderableSorter = new RenderableMergeSort();\n //set stage\n _this._pStage = stage || StageManager.getInstance().getFreeStage(forceSoftware, profile, mode);\n _this._pStage.addEventListener(StageEvent.CONTEXT_CREATED, _this._onContextUpdateDelegate);\n _this._pStage.addEventListener(StageEvent.CONTEXT_RECREATED, _this._onContextUpdateDelegate);\n _this._pStage.addEventListener(StageEvent.VIEWPORT_UPDATED, _this._onViewportUpdatedDelegate);\n /*\n if (_backgroundImageRenderer)\n _backgroundImageRenderer.stage = value;\n */\n if (_this._pStage.context)\n _this._pContext = _this._pStage.context;\n return _this;\n }\n Object.defineProperty(RendererBase.prototype, \"cullPlanes\", {\n /**\n *\n */\n get: function () {\n return this._customCullPlanes;\n },\n set: function (value) {\n this._customCullPlanes = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"renderBlended\", {\n get: function () {\n return this._renderBlended;\n },\n set: function (value) {\n this._renderBlended = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"disableColor\", {\n get: function () {\n return this._disableColor;\n },\n set: function (value) {\n this._disableColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"disableClear\", {\n get: function () {\n return this._disableClear;\n },\n set: function (value) {\n this._disableClear = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"numElements\", {\n /**\n *\n */\n get: function () {\n return this._pNumElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"viewPort\", {\n /**\n * A viewPort rectangle equivalent of the Stage size and position.\n */\n get: function () {\n return this._pStage.viewPort;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"scissorRect\", {\n /**\n * A scissor rectangle equivalent of the view size and position.\n */\n get: function () {\n if (this._scissorDirty) {\n this._scissorDirty = false;\n if (this.shareContext) {\n this._pScissorRect.x = this._x - this._pStage.viewPort.x;\n this._pScissorRect.y = this._y - this._pStage.viewPort.y;\n }\n else {\n this._pScissorRect.x = 0;\n this._pScissorRect.y = 0;\n }\n }\n return this._pScissorRect;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"x\", {\n /**\n *\n */\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x == value)\n return;\n this._x = value;\n if (!this.shareContext)\n this._pStage.x = value;\n this.notifyScissorUpdate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"y\", {\n /**\n *\n */\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y == value)\n return;\n this._y = value;\n if (!this.shareContext)\n this._pStage.y = value;\n this.notifyScissorUpdate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"width\", {\n /**\n *\n */\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width == value)\n return;\n this._width = value;\n this._pScissorRect.width = value;\n if (this._pRttBufferManager)\n this._pRttBufferManager.viewWidth = value;\n if (!this.shareContext) {\n this._pBackBufferInvalid = true;\n this._pDepthTextureInvalid = true;\n }\n this.notifyScissorUpdate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"height\", {\n /**\n *\n */\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height == value)\n return;\n this._height = value;\n this._pScissorRect.height = value;\n if (this._pRttBufferManager)\n this._pRttBufferManager.viewHeight = value;\n if (!this.shareContext) {\n this._pBackBufferInvalid = true;\n this._pDepthTextureInvalid = true;\n }\n this.notifyScissorUpdate();\n },\n enumerable: true,\n configurable: true\n });\n RendererBase.prototype.activatePass = function (pass, projection) {\n //clear unused vertex streams\n var i;\n for (i = pass.shader.numUsedStreams; i < this._numUsedStreams; i++)\n this._pContext.setVertexBufferAt(i, null);\n //clear unused texture streams\n for (i = pass.shader.numUsedTextures; i < this._numUsedTextures; i++)\n this._pContext.setTextureAt(i, null);\n //check program data is uploaded\n var programData = pass.shader.programData;\n if (!programData.program) {\n programData.program = this._pContext.createProgram();\n var vertexByteCode = (new AGALMiniAssembler().assemble(\"part vertex 1\\n\" + programData.vertexString + \"endpart\"))['vertex'].data;\n var fragmentByteCode = (new AGALMiniAssembler().assemble(\"part fragment 1\\n\" + programData.fragmentString + \"endpart\"))['fragment'].data;\n programData.program.upload(vertexByteCode, fragmentByteCode);\n }\n //set program data\n this._pContext.setProgram(programData.program);\n //activate shader object through pass\n pass._activate(projection);\n };\n RendererBase.prototype.deactivatePass = function (pass) {\n //deactivate shader object through pass\n pass._deactivate();\n this._numUsedStreams = pass.shader.numUsedStreams;\n this._numUsedTextures = pass.shader.numUsedTextures;\n };\n Object.defineProperty(RendererBase.prototype, \"_iBackgroundR\", {\n /**\n * The background color's red component, used when clearing.\n *\n * @private\n */\n get: function () {\n return this._backgroundR;\n },\n set: function (value) {\n if (this._backgroundR == value)\n return;\n this._backgroundR = value;\n this._pBackBufferInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"_iBackgroundG\", {\n /**\n * The background color's green component, used when clearing.\n *\n * @private\n */\n get: function () {\n return this._backgroundG;\n },\n set: function (value) {\n if (this._backgroundG == value)\n return;\n this._backgroundG = value;\n this._pBackBufferInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"_iBackgroundB\", {\n /**\n * The background color's blue component, used when clearing.\n *\n * @private\n */\n get: function () {\n return this._backgroundB;\n },\n set: function (value) {\n if (this._backgroundB == value)\n return;\n this._backgroundB = value;\n this._pBackBufferInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"context\", {\n get: function () {\n return this._pContext;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RendererBase.prototype, \"stage\", {\n /**\n * The Stage that will provide the ContextGL used for rendering.\n */\n get: function () {\n return this._pStage;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Disposes the resources used by the RendererBase.\n */\n RendererBase.prototype.dispose = function () {\n this._pStage.removeEventListener(StageEvent.CONTEXT_CREATED, this._onContextUpdateDelegate);\n this._pStage.removeEventListener(StageEvent.CONTEXT_RECREATED, this._onContextUpdateDelegate);\n this._pStage.removeEventListener(StageEvent.VIEWPORT_UPDATED, this._onViewportUpdatedDelegate);\n this._pStage = null;\n this._pContext = null;\n /*\n if (_backgroundImageRenderer) {\n _backgroundImageRenderer.dispose();\n _backgroundImageRenderer = null;\n }\n */\n };\n RendererBase.prototype.render = function (view) {\n };\n /**\n * Renders the potentially visible geometry to the back buffer or texture.\n * @param target An option target texture to render to.\n * @param surfaceSelector The index of a CubeTexture's face to render to.\n * @param additionalClearMask Additional clear mask information, in case extra clear channels are to be omitted.\n */\n RendererBase.prototype._iRender = function (projection, view, target, scissorRect, surfaceSelector) {\n if (target === void 0) { target = null; }\n if (scissorRect === void 0) { scissorRect = null; }\n if (surfaceSelector === void 0) { surfaceSelector = 0; }\n //TODO refactor setTarget so that rendertextures are created before this check\n if (!this._pStage || !this._pContext)\n return;\n //reset head values\n this._pBlendedRenderableHead = null;\n this._pOpaqueRenderableHead = null;\n this._pNumElements = 0;\n this._cameraTransform = projection.transform.concatenatedMatrix3D;\n this._cameraForward = projection.transform.forwardVector;\n this._cullPlanes = this._customCullPlanes ? this._customCullPlanes : projection.frustumPlanes;\n this._numCullPlanes = this._cullPlanes ? this._cullPlanes.length : 0;\n RendererBase._iCollectionMark++;\n view.traversePartitions(this);\n //sort the resulting renderables\n if (this.renderableSorter) {\n this._pOpaqueRenderableHead = this.renderableSorter.sortOpaqueRenderables(this._pOpaqueRenderableHead);\n this._pBlendedRenderableHead = this.renderableSorter.sortBlendedRenderables(this._pBlendedRenderableHead);\n }\n // this._pRttViewProjectionMatrix.copyFrom(projection.viewMatrix3D);\n // this._pRttViewProjectionMatrix.appendScale(this.textureRatioX, this.textureRatioY, 1);\n this.pExecuteRender(projection, view, target, scissorRect, surfaceSelector);\n // invalidate mipmaps (if target exists) to regenerate if required\n if (target)\n target.invalidateMipmaps();\n // clear buffers\n for (var i = 0; i < 8; ++i) {\n this._pContext.setVertexBufferAt(i, null);\n this._pContext.setTextureAt(i, null);\n }\n };\n RendererBase.prototype._iRenderCascades = function (projection, view, target, numCascades, scissorRects, projections) {\n this._pStage.setRenderTarget(target, true, 0);\n this._pContext.clear(1, 1, 1, 1, 1, 0);\n this._pContext.setBlendFactors(ContextGLBlendFactor.ONE, ContextGLBlendFactor.ZERO);\n this._pContext.setDepthTest(true, ContextGLCompareMode.LESS);\n var head = this._pOpaqueRenderableHead;\n var first = true;\n //TODO cascades must have separate collectors, rather than separate draw commands\n for (var i = numCascades - 1; i >= 0; --i) {\n this._pStage.scissorRect = scissorRects[i];\n //this.drawCascadeRenderables(head, cameras[i], first? null : cameras[i].frustumPlanes);\n first = false;\n }\n //line required for correct rendering when using away3d with starling. DO NOT REMOVE UNLESS STARLING INTEGRATION IS RETESTED!\n this._pContext.setDepthTest(false, ContextGLCompareMode.LESS_EQUAL);\n this._pStage.scissorRect = null;\n };\n /**\n * Renders the potentially visible geometry to the back buffer or texture. Only executed if everything is set up.\n *\n * @param target An option target texture to render to.\n * @param surfaceSelector The index of a CubeTexture's face to render to.\n * @param additionalClearMask Additional clear mask information, in case extra clear channels are to be omitted.\n */\n RendererBase.prototype.pExecuteRender = function (projection, view, target, scissorRect, surfaceSelector) {\n if (target === void 0) { target = null; }\n if (scissorRect === void 0) { scissorRect = null; }\n if (surfaceSelector === void 0) { surfaceSelector = 0; }\n this._pStage.setRenderTarget(target, true, surfaceSelector);\n if ((target || !this.shareContext) && !this._depthPrepass && !this._disableClear)\n this._pContext.clear(this._backgroundR, this._backgroundG, this._backgroundB, this._backgroundAlpha, 1, 0);\n this._pStage.scissorRect = scissorRect;\n /*\n if (_backgroundImageRenderer)\n _backgroundImageRenderer.render();\n */\n this._pContext.setBlendFactors(ContextGLBlendFactor.ONE, ContextGLBlendFactor.ZERO);\n this.pDraw(projection);\n //line required for correct rendering when using away3d with starling. DO NOT REMOVE UNLESS STARLING INTEGRATION IS RETESTED!\n //this._pContext.setDepthTest(false, ContextGLCompareMode.LESS_EQUAL); //oopsie\n if (target || !this.shareContext) {\n if (this._snapshotRequired && this._snapshotBitmapImage2D) {\n this._pContext.drawToBitmapImage2D(this._snapshotBitmapImage2D);\n this._snapshotRequired = false;\n }\n }\n this._pStage.scissorRect = null;\n };\n /*\n * Will draw the renderer's output on next render to the provided bitmap data.\n * */\n RendererBase.prototype.queueSnapshot = function (bmd) {\n this._snapshotRequired = true;\n this._snapshotBitmapImage2D = bmd;\n };\n /**\n * Performs the actual drawing of geometry to the target.\n */\n RendererBase.prototype.pDraw = function (projection) {\n this._pContext.setDepthTest(true, ContextGLCompareMode.LESS_EQUAL);\n if (this._disableColor)\n this._pContext.setColorMask(false, false, false, false);\n this.drawRenderables(projection, this._pOpaqueRenderableHead);\n if (this._renderBlended)\n this.drawRenderables(projection, this._pBlendedRenderableHead);\n if (this._disableColor)\n this._pContext.setColorMask(true, true, true, true);\n };\n //private drawCascadeRenderables(renderableGL:GL_RenderableBase, camera:Camera, cullPlanes:Array)\n //{\n //\tvar renderableGL2:GL_RenderableBase;\n //\tvar render:GL_MaterialBase;\n //\tvar pass:IPass;\n //\n //\twhile (renderableGL) {\n //\t\trenderableGL2 = renderableGL;\n //\t\trender = renderableGL.render;\n //\t\tpass = render.passes[0] //assuming only one pass per material\n //\n //\t\tthis.activatePass(renderableGL, pass, camera);\n //\n //\t\tdo {\n //\t\t\t// if completely in front, it will fall in a different cascade\n //\t\t\t// do not use near and far planes\n //\t\t\tif (!cullPlanes || renderableGL2.sourceEntity.worldBounds.isInFrustum(cullPlanes, 4)) {\n //\t\t\t\trenderableGL2._iRender(pass, camera, this._pRttViewProjectionMatrix);\n //\t\t\t} else {\n //\t\t\t\trenderableGL2.cascaded = true;\n //\t\t\t}\n //\n //\t\t\trenderableGL2 = renderableGL2.next;\n //\n //\t\t} while (renderableGL2 && renderableGL2.render == render && !renderableGL2.cascaded);\n //\n //\t\tthis.deactivatePass(renderableGL, pass);\n //\n //\t\trenderableGL = renderableGL2;\n //\t}\n //}\n /**\n * Draw a list of renderables.\n *\n * @param renderables The renderables to draw.\n */\n RendererBase.prototype.drawRenderables = function (projection, renderableGL) {\n var i;\n var len;\n var renderableGL2;\n var materialGL;\n var passes;\n var pass;\n this._pContext.setStencilActions(ContextGLTriangleFace.FRONT_AND_BACK, ContextGLCompareMode.ALWAYS, ContextGLStencilAction.KEEP, ContextGLStencilAction.KEEP, ContextGLStencilAction.KEEP);\n this._registeredMasks.length = 0;\n //var gl = this._pContext[\"_gl\"];\n //if(gl) {\n //gl.disable(gl.STENCIL_TEST);\n //}\n this._pContext.disableStencil();\n this._maskConfig = 0;\n while (renderableGL) {\n materialGL = renderableGL.materialGL;\n passes = materialGL.passes;\n // otherwise this would result in depth rendered anyway because fragment shader kil is ignored\n if (this._disableColor && materialGL._material.alphaThreshold != 0) {\n renderableGL2 = renderableGL;\n // fast forward\n do {\n renderableGL2 = renderableGL2.next;\n } while (renderableGL2 && renderableGL2.materialGL == materialGL);\n }\n else {\n if (this._activeMasksDirty || this._checkMasksConfig(renderableGL.masksConfig)) {\n this._activeMasksConfig = renderableGL.masksConfig;\n if (!this._activeMasksConfig.length) {\n // disable stencil\n //if(gl) {\n //gl.disable(gl.STENCIL_TEST);\n this._pContext.disableStencil();\n //gl.stencilFunc(gl.ALWAYS, 0, 0xff);\n //gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n this._pContext.setStencilActions(ContextGLTriangleFace.FRONT_AND_BACK, ContextGLCompareMode.ALWAYS, ContextGLStencilAction.KEEP, ContextGLStencilAction.KEEP, ContextGLStencilAction.KEEP);\n this._pContext.setStencilReferenceValue(0);\n }\n else {\n this._renderMasks(projection, renderableGL.sourceEntity._iAssignedMasks());\n }\n this._activeMasksDirty = false;\n }\n //iterate through each shader object\n len = passes.length;\n for (i = 0; i < len; i++) {\n renderableGL2 = renderableGL;\n pass = passes[i];\n this.activatePass(pass, projection);\n do {\n if (renderableGL2.maskId !== -1) {\n if (i == 0)\n this._registerMask(renderableGL2);\n }\n else {\n renderableGL2._iRender(pass, projection);\n }\n renderableGL2 = renderableGL2.next;\n } while (renderableGL2 && renderableGL2.materialGL == materialGL && !(this._activeMasksDirty = this._checkMasksConfig(renderableGL2.masksConfig)));\n this.deactivatePass(pass);\n }\n }\n renderableGL = renderableGL2;\n }\n };\n /**\n * Assign the context once retrieved\n */\n RendererBase.prototype.onContextUpdate = function (event) {\n this._pContext = this._pStage.context;\n };\n Object.defineProperty(RendererBase.prototype, \"_iBackgroundAlpha\", {\n get: function () {\n return this._backgroundAlpha;\n },\n set: function (value) {\n if (this._backgroundAlpha == value)\n return;\n this._backgroundAlpha = value;\n this._pBackBufferInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n /*\n public get iBackground():Texture2DBase\n {\n return this._background;\n }\n */\n /*\n public set iBackground(value:Texture2DBase)\n {\n if (this._backgroundImageRenderer && !value) {\n this._backgroundImageRenderer.dispose();\n this._backgroundImageRenderer = null;\n }\n\n if (!this._backgroundImageRenderer && value)\n {\n\n this._backgroundImageRenderer = new BackgroundImageRenderer(this._pStage);\n\n }\n\n\n this._background = value;\n\n if (this._backgroundImageRenderer)\n this._backgroundImageRenderer.texture = value;\n }\n */\n /*\n public get backgroundImageRenderer():BackgroundImageRenderer\n {\n return _backgroundImageRenderer;\n }\n */\n /**\n * @private\n */\n RendererBase.prototype.notifyScissorUpdate = function () {\n if (this._scissorDirty)\n return;\n this._scissorDirty = true;\n if (!this._scissorUpdated)\n this._scissorUpdated = new RendererEvent(RendererEvent.SCISSOR_UPDATED);\n this.dispatchEvent(this._scissorUpdated);\n };\n /**\n * @private\n */\n RendererBase.prototype.notifyViewportUpdate = function () {\n if (!this._viewPortUpdated)\n this._viewPortUpdated = new RendererEvent(RendererEvent.VIEWPORT_UPDATED);\n this.dispatchEvent(this._viewPortUpdated);\n };\n /**\n *\n */\n RendererBase.prototype.onViewportUpdated = function (event) {\n if (this.shareContext)\n this.notifyScissorUpdate();\n this.notifyViewportUpdate();\n };\n /**\n *\n * @param node\n * @returns {boolean}\n */\n RendererBase.prototype.enterNode = function (node) {\n var enter = node._iCollectionMark != RendererBase._iCollectionMark && node.isRenderable() && node.isInFrustum(this._cullPlanes, this._numCullPlanes);\n node._iCollectionMark = RendererBase._iCollectionMark;\n return enter;\n };\n RendererBase.prototype.applyEntity = function (entity) {\n this._sourceEntity = entity;\n this._renderablePool = this._materialGroup.getRenderablePool(entity);\n // project onto camera's z-axis\n this._zIndex = entity.zOffset + this._cameraTransform.position.subtract(entity.scenePosition).dotProduct(this._cameraForward);\n //save sceneTransform\n this._renderSceneTransform = entity.getRenderSceneTransform(this._cameraTransform);\n //collect renderables\n entity._acceptTraverser(this);\n };\n RendererBase.prototype.applyRenderable = function (renderable) {\n var renderableGL = this._renderablePool.getAbstraction(renderable);\n //set local vars for faster referencing\n renderableGL.cascaded = false;\n renderableGL.zIndex = this._zIndex;\n renderableGL.maskId = this._sourceEntity._iAssignedMaskId();\n renderableGL.masksConfig = this._sourceEntity._iMasksConfig();\n var materialGL = renderableGL.materialGL;\n renderableGL.materialID = materialGL.materialID;\n renderableGL.renderOrderId = materialGL.renderOrderId;\n //store reference to scene transform\n renderableGL.renderSceneTransform = this._renderSceneTransform;\n if (materialGL.requiresBlending) {\n renderableGL.next = this._pBlendedRenderableHead;\n this._pBlendedRenderableHead = renderableGL;\n }\n else {\n renderableGL.next = this._pOpaqueRenderableHead;\n this._pOpaqueRenderableHead = renderableGL;\n }\n this._pNumElements += renderableGL.elementsGL.elements.numElements;\n };\n /**\n *\n * @param entity\n */\n RendererBase.prototype.applyDirectionalLight = function (entity) {\n //don't do anything here\n };\n /**\n *\n * @param entity\n */\n RendererBase.prototype.applyLightProbe = function (entity) {\n //don't do anything here\n };\n /**\n *\n * @param entity\n */\n RendererBase.prototype.applyPointLight = function (entity) {\n //don't do anything here\n };\n RendererBase.prototype._registerMask = function (obj) {\n //console.log(\"registerMask\");\n this._registeredMasks.push(obj);\n };\n RendererBase.prototype._renderMasks = function (projection, masks) {\n //var gl = this._pContext[\"_gl\"];\n //f (!gl)\n //\treturn;\n //var oldRenderTarget = this._stage.renderTarget;\n //this._stage.setRenderTarget(this._image);\n //this._stage.clear();\n this._pContext.setColorMask(false, false, false, false);\n // TODO: Could we create masks within masks by providing a previous configID, and supply \"clear/keep\" on stencil fail\n //context.setStencilActions(\"frontAndBack\", \"always\", \"set\", \"set\", \"set\");\n //gl.enable(gl.STENCIL_TEST);\n this._pContext.enableStencil();\n this._maskConfig++;\n //gl.stencilFunc(gl.ALWAYS, this._maskConfig, 0xff);\n //gl.stencilOp(gl.REPLACE, gl.REPLACE, gl.REPLACE);\n this._pContext.setStencilActions(ContextGLTriangleFace.FRONT_AND_BACK, ContextGLCompareMode.ALWAYS, ContextGLStencilAction.SET, ContextGLStencilAction.SET, ContextGLStencilAction.SET);\n this._pContext.setStencilReferenceValue(this._maskConfig);\n var numLayers = masks.length;\n var numRenderables = this._registeredMasks.length;\n var renderableGL;\n var children;\n var numChildren;\n var mask;\n for (var i = 0; i < numLayers; ++i) {\n if (i != 0) {\n //gl.stencilFunc(gl.EQUAL, this._maskConfig, 0xff);\n //gl.stencilOp(gl.KEEP, gl.INCR, gl.INCR);\n this._pContext.setStencilActions(ContextGLTriangleFace.FRONT_AND_BACK, ContextGLCompareMode.EQUAL, ContextGLStencilAction.INCREMENT_SATURATE, ContextGLStencilAction.INCREMENT_SATURATE, ContextGLStencilAction.KEEP);\n this._pContext.setStencilReferenceValue(this._maskConfig);\n this._maskConfig++;\n }\n children = masks[i];\n numChildren = children.length;\n for (var j = 0; j < numChildren; ++j) {\n mask = children[j];\n for (var k = 0; k < numRenderables; ++k) {\n renderableGL = this._registeredMasks[k];\n //console.log(\"testing for \" + mask[\"hierarchicalMaskID\"] + \", \" + mask.name);\n if (renderableGL.maskId == mask.id) {\n //console.log(\"Rendering hierarchicalMaskID \" + mask[\"hierarchicalMaskID\"]);\n this._drawMask(projection, renderableGL);\n }\n }\n }\n }\n //gl.stencilFunc(gl.EQUAL, this._maskConfig, 0xff);\n //gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n this._pContext.setStencilActions(ContextGLTriangleFace.FRONT_AND_BACK, ContextGLCompareMode.EQUAL, ContextGLStencilAction.KEEP, ContextGLStencilAction.KEEP, ContextGLStencilAction.KEEP);\n this._pContext.setStencilReferenceValue(this._maskConfig);\n this._pContext.setColorMask(true, true, true, true);\n this._pContext.setDepthTest(true, ContextGLCompareMode.LESS_EQUAL);\n //this._stage.setRenderTarget(oldRenderTarget);\n };\n RendererBase.prototype._drawMask = function (projection, renderableGL) {\n var materialGL = renderableGL.materialGL;\n var passes = materialGL.passes;\n var len = passes.length;\n var pass = passes[len - 1];\n this.activatePass(pass, projection);\n this._pContext.setDepthTest(false, ContextGLCompareMode.LESS_EQUAL); //TODO: setup so as not to override activate\n // only render last pass for now\n renderableGL._iRender(pass, projection);\n this.deactivatePass(pass);\n };\n RendererBase.prototype._checkMasksConfig = function (masksConfig) {\n if (this._activeMasksConfig.length != masksConfig.length)\n return true;\n var numLayers = masksConfig.length;\n var numChildren;\n var childConfig;\n var activeNumChildren;\n var activeChildConfig;\n for (var i = 0; i < numLayers; i++) {\n childConfig = masksConfig[i];\n numChildren = childConfig.length;\n activeChildConfig = this._activeMasksConfig[i];\n activeNumChildren = activeChildConfig.length;\n if (activeNumChildren != numChildren)\n return true;\n for (var j = 0; j < numChildren; j++) {\n if (activeChildConfig[j] != childConfig[j])\n return true;\n }\n }\n return false;\n };\n return RendererBase;\n}(TraverserBase));\nexport { RendererBase };\nRendererBase._iCollectionMark = 0;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/RendererBase.js","import * as tslib_1 from \"tslib\";\nimport { MaterialGroupBase } from \"@awayjs/stage\";\nimport { RendererBase } from \"./RendererBase\";\n/**\n * The DepthRenderer class renders 32-bit depth information encoded as RGBA\n *\n * @class away.render.DepthRenderer\n */\nvar DepthRenderer = (function (_super) {\n tslib_1.__extends(DepthRenderer, _super);\n /**\n * Creates a new DepthRenderer object.\n * @param renderBlended Indicates whether semi-transparent objects should be rendered.\n * @param distanceBased Indicates whether the written depth value is distance-based or projected depth-based\n */\n function DepthRenderer(stage) {\n if (stage === void 0) { stage = null; }\n var _this = _super.call(this, stage) || this;\n _this._materialGroup = new MaterialGroupBase(_this._pStage, DepthRenderer._abstractionClassPool);\n _this._iBackgroundR = 1;\n _this._iBackgroundG = 1;\n _this._iBackgroundB = 1;\n return _this;\n }\n /**\n *\n */\n DepthRenderer.prototype.enterNode = function (node) {\n var enter = node._iCollectionMark != RendererBase._iCollectionMark && node.isCastingShadow();\n if (!enter) {\n node._iCollectionMark = RendererBase._iCollectionMark;\n return false;\n }\n return _super.prototype.enterNode.call(this, node);\n };\n return DepthRenderer;\n}(RendererBase));\nexport { DepthRenderer };\nDepthRenderer._abstractionClassPool = Object();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/DepthRenderer.js","import * as tslib_1 from \"tslib\";\nimport { MaterialGroupBase } from \"@awayjs/stage\";\nimport { RendererBase } from \"./RendererBase\";\n/**\n * The DistanceRenderer class renders 32-bit depth information encoded as RGBA\n *\n * @class away.render.DistanceRenderer\n */\nvar DistanceRenderer = (function (_super) {\n tslib_1.__extends(DistanceRenderer, _super);\n /**\n * Creates a new DistanceRenderer object.\n * @param renderBlended Indicates whether semi-transparent objects should be rendered.\n * @param distanceBased Indicates whether the written depth value is distance-based or projected depth-based\n */\n function DistanceRenderer(stage) {\n if (stage === void 0) { stage = null; }\n var _this = _super.call(this, stage) || this;\n _this._materialGroup = new MaterialGroupBase(_this._pStage, DistanceRenderer._abstractionClassPool);\n _this._iBackgroundR = 1;\n _this._iBackgroundG = 1;\n _this._iBackgroundB = 1;\n return _this;\n }\n /**\n *\n */\n DistanceRenderer.prototype.enterNode = function (node) {\n var enter = node._iCollectionMark != RendererBase._iCollectionMark && node.isCastingShadow();\n if (!enter) {\n node._iCollectionMark = RendererBase._iCollectionMark;\n return false;\n }\n return _super.prototype.enterNode.call(this, node);\n };\n return DistanceRenderer;\n}(RendererBase));\nexport { DistanceRenderer };\nDistanceRenderer._abstractionClassPool = Object();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/DistanceRenderer.js","import * as tslib_1 from \"tslib\";\nimport { MaterialGroupBase } from \"@awayjs/stage\";\nimport { GL_DepthMaterial } from \"./GL_DepthMaterial\";\nimport { GL_DistanceMaterial } from \"./GL_DistanceMaterial\";\nimport { DepthRenderer } from \"../DepthRenderer\";\nimport { DistanceRenderer } from \"../DistanceRenderer\";\n/**\n * @class away.pool.DefaultMaterialGroup\n */\nvar DefaultMaterialGroup = (function (_super) {\n tslib_1.__extends(DefaultMaterialGroup, _super);\n function DefaultMaterialGroup(stage) {\n return _super.call(this, stage, DefaultMaterialGroup._abstractionClassPool) || this;\n }\n /**\n *\n * @param imageObjectClass\n */\n DefaultMaterialGroup.registerAbstraction = function (materialClassGL, assetClass) {\n DefaultMaterialGroup._abstractionClassPool[assetClass.assetType] = materialClassGL;\n DepthRenderer._abstractionClassPool[assetClass.assetType] = GL_DepthMaterial;\n DistanceRenderer._abstractionClassPool[assetClass.assetType] = GL_DistanceMaterial;\n };\n return DefaultMaterialGroup;\n}(MaterialGroupBase));\nexport { DefaultMaterialGroup };\nDefaultMaterialGroup._abstractionClassPool = new Object();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/DefaultMaterialGroup.js","import { Rectangle } from \"@awayjs/core\";\nimport { Sampler2D } from \"@awayjs/graphics\";\nimport { ContextGLDrawMode, ContextGLBlendFactor, ContextGLVertexBufferFormat } from \"@awayjs/stage\";\nimport { RTTEvent } from \"./events/RTTEvent\";\nimport { RTTBufferManager } from \"./managers/RTTBufferManager\";\n/**\n * @class away.render.Filter3DRenderer\n */\nvar Filter3DRenderer = (function () {\n function Filter3DRenderer(stage) {\n var _this = this;\n this._filterSizesInvalid = true;\n this._onRTTResizeDelegate = function (event) { return _this.onRTTResize(event); };\n this._stage = stage;\n this._rttManager = RTTBufferManager.getInstance(stage);\n this._rttManager.addEventListener(RTTEvent.RESIZE, this._onRTTResizeDelegate);\n this._sampler = new Sampler2D(false, false, false);\n this._renderToTextureRect = new Rectangle();\n }\n Filter3DRenderer.prototype.onRTTResize = function (event) {\n this._filterSizesInvalid = true;\n };\n Object.defineProperty(Filter3DRenderer.prototype, \"requireDepthRender\", {\n get: function () {\n return this._requireDepthRender;\n },\n enumerable: true,\n configurable: true\n });\n Filter3DRenderer.prototype.getMainInputTexture = function (stage) {\n if (this._filterTasksInvalid)\n this.updateFilterTasks(stage);\n return this._mainInputTexture;\n };\n Object.defineProperty(Filter3DRenderer.prototype, \"filters\", {\n get: function () {\n return this._filters;\n },\n set: function (value) {\n this._filters = value;\n this._filterTasksInvalid = true;\n this._requireDepthRender = false;\n if (!this._filters)\n return;\n for (var i = 0; i < this._filters.length; ++i)\n if (this._filters[i].requireDepthRender)\n this._requireDepthRender = true;\n this._filterSizesInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DRenderer.prototype, \"sampler\", {\n get: function () {\n return this._sampler;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DRenderer.prototype, \"renderToTextureRect\", {\n get: function () {\n if (this._filterSizesInvalid)\n this.updateFilterSizes();\n return this._renderToTextureRect;\n },\n enumerable: true,\n configurable: true\n });\n Filter3DRenderer.prototype.updateFilterTasks = function (stage) {\n var len;\n if (this._filterSizesInvalid)\n this.updateFilterSizes();\n if (!this._filters) {\n this._tasks = null;\n return;\n }\n this._tasks = new Array();\n len = this._filters.length - 1;\n var filter;\n for (var i = 0; i <= len; ++i) {\n // make sure all internal tasks are linked together\n filter = this._filters[i];\n filter.setRenderTargets(i == len ? null : this._filters[i + 1].getMainInputTexture(stage), stage);\n this._tasks = this._tasks.concat(filter.tasks);\n }\n this._mainInputTexture = this._filters[0].getMainInputTexture(stage);\n };\n Filter3DRenderer.prototype.render = function (stage, camera, depthTexture) {\n var len;\n var i;\n var task;\n var context = stage.context;\n var indexBuffer = this._rttManager.indexBuffer;\n var vertexBuffer = this._rttManager.renderToTextureVertexBuffer;\n if (!this._filters)\n return;\n if (this._filterSizesInvalid)\n this.updateFilterSizes();\n if (this._filterTasksInvalid)\n this.updateFilterTasks(stage);\n len = this._filters.length;\n for (i = 0; i < len; ++i)\n this._filters[i].update(stage, camera);\n len = this._tasks.length;\n if (len > 1) {\n context.setProgram(this._tasks[0].getProgram(stage));\n context.setVertexBufferAt(this._tasks[0]._positionIndex, vertexBuffer, 0, ContextGLVertexBufferFormat.FLOAT_2);\n context.setVertexBufferAt(this._tasks[0]._uvIndex, vertexBuffer, 8, ContextGLVertexBufferFormat.FLOAT_2);\n }\n for (i = 0; i < len; ++i) {\n task = this._tasks[i];\n stage.setRenderTarget(task.target);\n context.setProgram(task.getProgram(stage));\n stage.getAbstraction(this._sampler).activate(task._inputTextureIndex);\n stage.getAbstraction(task.getMainInputTexture(stage)).activate(task._inputTextureIndex, this._sampler.mipmap);\n if (!task.target) {\n stage.scissorRect = null;\n vertexBuffer = this._rttManager.renderToScreenVertexBuffer;\n context.setVertexBufferAt(task._positionIndex, vertexBuffer, 0, ContextGLVertexBufferFormat.FLOAT_2);\n context.setVertexBufferAt(task._uvIndex, vertexBuffer, 8, ContextGLVertexBufferFormat.FLOAT_2);\n }\n context.clear(0.0, 0.0, 0.0, 0.0);\n task.activate(stage, camera, depthTexture);\n context.setBlendFactors(ContextGLBlendFactor.ONE, ContextGLBlendFactor.ZERO);\n context.drawIndices(ContextGLDrawMode.TRIANGLES, indexBuffer, 0, 6);\n task.deactivate(stage);\n }\n context.setTextureAt(0, null);\n context.setVertexBufferAt(0, null);\n context.setVertexBufferAt(1, null);\n };\n Filter3DRenderer.prototype.updateFilterSizes = function () {\n for (var i = 0; i < this._filters.length; ++i) {\n this._filters[i].textureWidth = this._rttManager.textureWidth;\n this._filters[i].textureHeight = this._rttManager.textureHeight;\n this._filters[i].rttManager = this._rttManager;\n }\n var scale = this._filters[0].textureScale;\n this._renderToTextureRect.x = this._rttManager.renderToTextureRect.x / scale;\n this._renderToTextureRect.y = this._rttManager.renderToTextureRect.y / scale;\n this._renderToTextureRect.width = this._rttManager.renderToTextureRect.width / scale;\n this._renderToTextureRect.height = this._rttManager.renderToTextureRect.height / scale;\n this._filterSizesInvalid = false;\n };\n Filter3DRenderer.prototype.dispose = function () {\n this._rttManager.removeEventListener(RTTEvent.RESIZE, this._onRTTResizeDelegate);\n this._rttManager = null;\n this._stage = null;\n };\n return Filter3DRenderer;\n}());\nexport { Filter3DRenderer };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/Filter3DRenderer.js","import * as tslib_1 from \"tslib\";\nimport { BitmapImage2D } from \"@awayjs/graphics\";\nimport { ContextGLProfile, ContextMode, ContextGLClearMask } from \"@awayjs/stage\";\nimport { RTTBufferManager } from \"./managers/RTTBufferManager\";\nimport { DefaultMaterialGroup } from \"./materials/DefaultMaterialGroup\";\nimport { DepthRenderer } from \"./DepthRenderer\";\nimport { DistanceRenderer } from \"./DistanceRenderer\";\nimport { Filter3DRenderer } from \"./Filter3DRenderer\";\nimport { RendererBase } from \"./RendererBase\";\n/**\n * The DefaultRenderer class provides the default rendering method. It renders the scene graph objects using the\n * materials assigned to them.\n *\n * @class away.render.DefaultRenderer\n */\nvar DefaultRenderer = (function (_super) {\n tslib_1.__extends(DefaultRenderer, _super);\n /**\n * Creates a new DefaultRenderer object.\n *\n * @param antiAlias The amount of anti-aliasing to use.\n * @param renderMode The render mode to use.\n */\n function DefaultRenderer(stage, forceSoftware, profile, mode) {\n if (stage === void 0) { stage = null; }\n if (forceSoftware === void 0) { forceSoftware = false; }\n if (profile === void 0) { profile = ContextGLProfile.BASELINE; }\n if (mode === void 0) { mode = ContextMode.AUTO; }\n var _this = _super.call(this, stage, forceSoftware, profile, mode) || this;\n _this._antiAlias = 0;\n _this._directionalLights = new Array();\n _this._pointLights = new Array();\n _this._lightProbes = new Array();\n if (stage)\n _this.shareContext = true;\n _this._materialGroup = new DefaultMaterialGroup(_this._pStage);\n _this._pRttBufferManager = RTTBufferManager.getInstance(_this._pStage);\n _this._depthRenderer = new DepthRenderer(_this._pStage);\n _this._distanceRenderer = new DistanceRenderer(_this._pStage);\n if (_this._width == 0)\n _this.width = window.innerWidth;\n else\n _this._pRttBufferManager.viewWidth = _this._width;\n if (_this._height == 0)\n _this.height = window.innerHeight;\n else\n _this._pRttBufferManager.viewHeight = _this._height;\n return _this;\n }\n Object.defineProperty(DefaultRenderer.prototype, \"distanceRenderer\", {\n get: function () {\n return this._distanceRenderer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DefaultRenderer.prototype, \"depthRenderer\", {\n get: function () {\n return this._depthRenderer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DefaultRenderer.prototype, \"antiAlias\", {\n get: function () {\n return this._antiAlias;\n },\n set: function (value) {\n if (this._antiAlias == value)\n return;\n this._antiAlias = value;\n this._pBackBufferInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DefaultRenderer.prototype, \"depthPrepass\", {\n /**\n *\n */\n get: function () {\n return this._depthPrepass;\n },\n set: function (value) {\n this._depthPrepass = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DefaultRenderer.prototype, \"filters3d\", {\n /**\n *\n * @returns {*}\n */\n get: function () {\n return this._pFilter3DRenderer ? this._pFilter3DRenderer.filters : null;\n },\n set: function (value) {\n if (value && value.length == 0)\n value = null;\n if (this._pFilter3DRenderer && !value) {\n this._pFilter3DRenderer.dispose();\n this._pFilter3DRenderer = null;\n }\n else if (!this._pFilter3DRenderer && value) {\n this._pFilter3DRenderer = new Filter3DRenderer(this._pStage);\n this._pFilter3DRenderer.filters = value;\n }\n if (this._pFilter3DRenderer) {\n this._pFilter3DRenderer.filters = value;\n this._pRequireDepthRender = this._pFilter3DRenderer.requireDepthRender;\n }\n else {\n this._pRequireDepthRender = false;\n if (this._pDepthRender) {\n this._pDepthRender.dispose();\n this._pDepthRender = null;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n */\n DefaultRenderer.prototype.enterNode = function (node) {\n var enter = _super.prototype.enterNode.call(this, node);\n if (enter && node.debugVisible)\n node.renderBounds(this);\n return enter;\n };\n DefaultRenderer.prototype.render = function (view) {\n _super.prototype.render.call(this, view);\n if (!this._pStage.recoverFromDisposal()) {\n this._pBackBufferInvalid = true;\n return;\n }\n if (this._pBackBufferInvalid)\n this.pUpdateBackBuffer();\n if (this.shareContext && this._pContext)\n this._pContext.clear(0, 0, 0, 1, 1, 0, ContextGLClearMask.DEPTH);\n if (this._pFilter3DRenderer) {\n this.textureRatioX = this._pRttBufferManager.textureRatioX;\n this.textureRatioY = this._pRttBufferManager.textureRatioY;\n }\n else {\n this.textureRatioX = 1;\n this.textureRatioY = 1;\n }\n if (this._pRequireDepthRender)\n this.pRenderSceneDepthToTexture(view);\n if (this._depthPrepass)\n this.pRenderDepthPrepass(view);\n //reset lights\n this._directionalLights.length = 0;\n this._pointLights.length = 0;\n this._lightProbes.length = 0;\n if (this._pFilter3DRenderer && this._pContext) {\n this._iRender(view.camera.projection, view, this._pFilter3DRenderer.getMainInputTexture(this._pStage), this._pFilter3DRenderer.renderToTextureRect);\n this._pFilter3DRenderer.render(this._pStage, view.camera, this._pDepthRender);\n }\n else {\n if (this.shareContext)\n this._iRender(view.camera.projection, view, null, this._pScissorRect);\n else\n this._iRender(view.camera.projection, view);\n }\n if (!this.shareContext && this._pContext)\n this._pContext.present();\n // register that a view has been rendered\n this._pStage.bufferClear = false;\n };\n DefaultRenderer.prototype.pExecuteRender = function (projection, view, target, scissorRect, surfaceSelector) {\n if (target === void 0) { target = null; }\n if (scissorRect === void 0) { scissorRect = null; }\n if (surfaceSelector === void 0) { surfaceSelector = 0; }\n this.updateLights(projection, view);\n _super.prototype.pExecuteRender.call(this, projection, view, target, scissorRect, surfaceSelector);\n };\n DefaultRenderer.prototype.updateLights = function (projection, view) {\n var len, i;\n var light;\n var shadowMapper;\n len = this._directionalLights.length;\n for (i = 0; i < len; ++i) {\n light = this._directionalLights[i];\n shadowMapper = light.shadowMapper;\n if (light.shadowsEnabled && (shadowMapper.autoUpdateShadows || shadowMapper._iShadowsInvalid))\n shadowMapper.iRenderDepthMap(view, this._depthRenderer);\n }\n len = this._pointLights.length;\n for (i = 0; i < len; ++i) {\n light = this._pointLights[i];\n shadowMapper = light.shadowMapper;\n if (light.shadowsEnabled && (shadowMapper.autoUpdateShadows || shadowMapper._iShadowsInvalid))\n shadowMapper.iRenderDepthMap(view, this._distanceRenderer);\n }\n };\n /**\n *\n * @param entity\n */\n DefaultRenderer.prototype.applyDirectionalLight = function (entity) {\n this._directionalLights.push(entity);\n };\n /**\n *\n * @param entity\n */\n DefaultRenderer.prototype.applyLightProbe = function (entity) {\n this._lightProbes.push(entity);\n };\n /**\n *\n * @param entity\n */\n DefaultRenderer.prototype.applyPointLight = function (entity) {\n this._pointLights.push(entity);\n };\n DefaultRenderer.prototype.dispose = function () {\n if (!this.shareContext)\n this._pStage.dispose();\n this._pRttBufferManager.dispose();\n this._pRttBufferManager = null;\n this._depthRenderer.dispose();\n this._distanceRenderer.dispose();\n this._depthRenderer = null;\n this._distanceRenderer = null;\n this._pDepthRender = null;\n _super.prototype.dispose.call(this);\n };\n /**\n *\n */\n DefaultRenderer.prototype.pRenderDepthPrepass = function (view) {\n this._depthRenderer.disableColor = true;\n if (this._pFilter3DRenderer) {\n this._depthRenderer.textureRatioX = this._pRttBufferManager.textureRatioX;\n this._depthRenderer.textureRatioY = this._pRttBufferManager.textureRatioY;\n this._depthRenderer._iRender(view.camera.projection, view, this._pFilter3DRenderer.getMainInputTexture(this._pStage), this._pRttBufferManager.renderToTextureRect);\n }\n else {\n this._depthRenderer.textureRatioX = 1;\n this._depthRenderer.textureRatioY = 1;\n this._depthRenderer._iRender(view.camera.projection, view);\n }\n this._depthRenderer.disableColor = false;\n };\n /**\n *\n */\n DefaultRenderer.prototype.pRenderSceneDepthToTexture = function (view) {\n if (this._pDepthTextureInvalid || !this._pDepthRender)\n this.initDepthTexture(this._pStage.context);\n this._depthRenderer.textureRatioX = this._pRttBufferManager.textureRatioX;\n this._depthRenderer.textureRatioY = this._pRttBufferManager.textureRatioY;\n this._depthRenderer._iRender(view.camera.projection, view, this._pDepthRender);\n };\n /**\n * Updates the backbuffer dimensions.\n */\n DefaultRenderer.prototype.pUpdateBackBuffer = function () {\n // No reason trying to configure back buffer if there is no context available.\n // Doing this anyway (and relying on _stage to cache width/height for\n // context does get available) means usesSoftwareRendering won't be reliable.\n if (this._pStage.context && !this.shareContext) {\n if (this._width && this._height) {\n this._pStage.configureBackBuffer(this._width, this._height, this._antiAlias, true);\n this._pBackBufferInvalid = false;\n }\n }\n };\n /**\n *\n */\n DefaultRenderer.prototype.initDepthTexture = function (context) {\n this._pDepthTextureInvalid = false;\n if (this._pDepthRender)\n this._pDepthRender.dispose();\n this._pDepthRender = new BitmapImage2D(this._pRttBufferManager.textureWidth, this._pRttBufferManager.textureHeight);\n };\n return DefaultRenderer;\n}(RendererBase));\nexport { DefaultRenderer };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/DefaultRenderer.js","import * as tslib_1 from \"tslib\";\nimport { Matrix3D } from \"@awayjs/core\";\nimport { ContextGLDrawMode, ContextGLProgramType, GL_ElementsBase } from \"@awayjs/stage\";\n/**\n *\n * @class away.pool.GL_LineElements\n */\nvar GL_LineElements = (function (_super) {\n tslib_1.__extends(GL_LineElements, _super);\n function GL_LineElements(lineElements, stage) {\n var _this = _super.call(this, lineElements, stage) || this;\n _this._calcMatrix = new Matrix3D();\n _this._thickness = 1.25;\n _this._lineElements = lineElements;\n return _this;\n }\n Object.defineProperty(GL_LineElements.prototype, \"elementsType\", {\n get: function () {\n return GL_LineElements.elementsType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_LineElements.prototype, \"elementsClass\", {\n get: function () {\n return GL_LineElements;\n },\n enumerable: true,\n configurable: true\n });\n GL_LineElements._includeDependencies = function (shader) {\n shader.colorDependencies++;\n };\n GL_LineElements._getVertexCode = function (shader, registerCache, sharedRegisters) {\n //get the projection coordinates\n var position0 = (shader.globalPosDependencies > 0) ? sharedRegisters.globalPositionVertex : sharedRegisters.animatedPosition;\n var position1 = registerCache.getFreeVertexAttribute();\n var thickness = registerCache.getFreeVertexAttribute();\n //reserving vertex constants for projection matrix\n var viewMatrixReg = registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n shader.viewMatrixIndex = viewMatrixReg.index * 4;\n registerCache.getFreeVertexConstant(); // not used\n var constOne = registerCache.getFreeVertexConstant();\n var constNegOne = registerCache.getFreeVertexConstant();\n var misc = registerCache.getFreeVertexConstant();\n var sceneMatrixReg = registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n shader.sceneMatrixIndex = sceneMatrixReg.index * 4;\n var q0 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(q0, 1);\n var q1 = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(q1, 1);\n var l = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(l, 1);\n var behind = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(behind, 1);\n var qclipped = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(qclipped, 1);\n var offset = registerCache.getFreeVertexVectorTemp();\n registerCache.addVertexTempUsages(offset, 1);\n return \"m44 \" + q0 + \", \" + position0 + \", \" + sceneMatrixReg + \"\t\t\t\\n\" +\n \"m44 \" + q1 + \", \" + position1 + \", \" + sceneMatrixReg + \"\t\t\t\\n\" +\n \"sub \" + l + \", \" + q1 + \", \" + q0 + \" \t\t\t\\n\" +\n // test if behind camera near plane\n // if 0 - Q0.z < Camera.near then the point needs to be clipped\n \"slt \" + behind + \".x, \" + q0 + \".z, \" + misc + \".z\t\t\t\\n\" +\n \"sub \" + behind + \".y, \" + constOne + \".x, \" + behind + \".x\t\t\t\\n\" +\n // p = point on the plane (0,0,-near)\n // n = plane normal (0,0,-1)\n // D = Q1 - Q0\n // t = ( dot( n, ( p - Q0 ) ) / ( dot( n, d )\n // solve for t where line crosses Camera.near\n \"add \" + offset + \".x, \" + q0 + \".z, \" + misc + \".z\t\t\t\\n\" +\n \"sub \" + offset + \".y, \" + q0 + \".z, \" + q1 + \".z\t\t\t\\n\" +\n // fix divide by zero for horizontal lines\n \"seq \" + offset + \".z, \" + offset + \".y \" + constNegOne + \".x\t\t\t\\n\" +\n \"add \" + offset + \".y, \" + offset + \".y, \" + offset + \".z\t\t\t\\n\" +\n \"div \" + offset + \".z, \" + offset + \".x, \" + offset + \".y\t\t\t\\n\" +\n \"mul \" + offset + \".xyz, \" + offset + \".zzz, \" + l + \".xyz\t\\n\" +\n \"add \" + qclipped + \".xyz, \" + q0 + \".xyz, \" + offset + \".xyz\t\\n\" +\n \"mov \" + qclipped + \".w, \" + constOne + \".x\t\t\t\\n\" +\n // If necessary, replace Q0 with new Qclipped\n \"mul \" + q0 + \", \" + q0 + \", \" + behind + \".yyyy\t\t\t\\n\" +\n \"mul \" + qclipped + \", \" + qclipped + \", \" + behind + \".xxxx\t\t\t\\n\" +\n \"add \" + q0 + \", \" + q0 + \", \" + qclipped + \"\t\t\t\t\\n\" +\n // calculate side vector for line\n \"nrm \" + l + \".xyz, \" + l + \".xyz\t\t\t\\n\" +\n \"nrm \" + behind + \".xyz, \" + q0 + \".xyz\t\t\t\\n\" +\n \"mov \" + behind + \".w, \" + constOne + \".x\t\t\t\t\\n\" +\n \"crs \" + qclipped + \".xyz, \" + l + \", \" + behind + \"\t\t\t\\n\" +\n \"nrm \" + qclipped + \".xyz, \" + qclipped + \".xyz\t\t\t\\n\" +\n // face the side vector properly for the given point\n \"mul \" + qclipped + \".xyz, \" + qclipped + \".xyz, \" + thickness + \".xxx\t\\n\" +\n \"mov \" + qclipped + \".w, \" + constOne + \".x\t\t\t\\n\" +\n // calculate the amount required to move at the point's distance to correspond to the line's pixel width\n // scale the side vector by that amount\n \"dp3 \" + offset + \".x, \" + q0 + \", \" + constNegOne + \"\t\t\t\\n\" +\n \"mul \" + offset + \".x, \" + offset + \".x, \" + misc + \".x\t\t\t\\n\" +\n \"mul \" + qclipped + \".xyz, \" + qclipped + \".xyz, \" + offset + \".xxx\t\\n\" +\n // add scaled side vector to Q0 and transform to clip space\n \"add \" + q0 + \".xyz, \" + q0 + \".xyz, \" + qclipped + \".xyz\t\\n\" +\n \"m44 op, \" + q0 + \", \" + viewMatrixReg + \"\t\t\t\\n\"; // transform Q0 to clip space\n };\n GL_LineElements._getFragmentCode = function (shader, registerCache, sharedRegisters) {\n return \"\";\n };\n GL_LineElements.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._lineElements = null;\n };\n GL_LineElements.prototype._setRenderState = function (renderable, shader, projection) {\n _super.prototype._setRenderState.call(this, renderable, shader, projection);\n if (shader.colorBufferIndex >= 0)\n this.activateVertexBufferVO(shader.colorBufferIndex, this._lineElements.colors);\n this.activateVertexBufferVO(0, this._lineElements.positions, 3);\n this.activateVertexBufferVO(2, this._lineElements.positions, 3, 12);\n this.activateVertexBufferVO(3, this._lineElements.thickness);\n shader.vertexConstantData[4 + 16] = 1;\n shader.vertexConstantData[5 + 16] = 1;\n shader.vertexConstantData[6 + 16] = 1;\n shader.vertexConstantData[7 + 16] = 1;\n shader.vertexConstantData[10 + 16] = -1;\n shader.vertexConstantData[12 + 16] = this._thickness / ((this._stage.scissorRect) ? Math.min(this._stage.scissorRect.width, this._stage.scissorRect.height) : Math.min(this._stage.width, this._stage.height));\n shader.vertexConstantData[13 + 16] = 1 / 255;\n shader.vertexConstantData[14 + 16] = projection.near;\n var context = this._stage.context;\n };\n GL_LineElements.prototype.draw = function (renderable, shader, projection, count, offset) {\n var context = this._stage.context;\n // projection matrix\n shader.viewMatrix.copyFrom(projection.frustumMatrix3D, true);\n var matrix3D = Matrix3D.CALCULATION_MATRIX;\n matrix3D.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D);\n matrix3D.append(projection.transform.inverseConcatenatedMatrix3D);\n shader.sceneMatrix.copyFrom(matrix3D, true);\n context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, shader.vertexConstantData);\n if (this._indices)\n this.getIndexBufferGL().draw(ContextGLDrawMode.TRIANGLES, offset * 3, count * 3 || this.numIndices);\n else\n this._stage.context.drawVertices(ContextGLDrawMode.TRIANGLES, offset, count || this.numVertices);\n };\n /**\n * //TODO\n *\n * @param pool\n * @param renderable\n * @param level\n * @param indexOffset\n * @returns {away.pool.LineSubSpriteRenderable}\n * @protected\n */\n GL_LineElements.prototype._pGetOverflowElements = function () {\n return new GL_LineElements(this._lineElements, this._stage);\n };\n return GL_LineElements;\n}(GL_ElementsBase));\nexport { GL_LineElements };\nGL_LineElements.elementsType = \"[elements Line]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/elements/GL_LineElements.js","import * as tslib_1 from \"tslib\";\nimport { Matrix3D, Vector3D } from \"@awayjs/core\";\nimport { ContextGLDrawMode, ContextGLProgramType, GL_TriangleElements } from \"@awayjs/stage\";\n/**\n *\n * @class away.pool.GL_SkyboxElements\n */\nvar GL_SkyboxElements = (function (_super) {\n tslib_1.__extends(GL_SkyboxElements, _super);\n function GL_SkyboxElements() {\n var _this = _super.apply(this, arguments) || this;\n _this._skyboxProjection = new Matrix3D();\n return _this;\n }\n Object.defineProperty(GL_SkyboxElements.prototype, \"elementsType\", {\n get: function () {\n return GL_SkyboxElements.elementsType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_SkyboxElements.prototype, \"elementsClass\", {\n get: function () {\n return GL_SkyboxElements;\n },\n enumerable: true,\n configurable: true\n });\n GL_SkyboxElements._includeDependencies = function (shader) {\n };\n /**\n * @inheritDoc\n */\n GL_SkyboxElements._getVertexCode = function (shader, registerCache, sharedRegisters) {\n var code = \"\";\n //get the projection coordinates\n var position = (shader.globalPosDependencies > 0) ? sharedRegisters.globalPositionVertex : sharedRegisters.animatedPosition;\n //reserving vertex constants for projection matrix\n var viewMatrixReg = registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n shader.viewMatrixIndex = viewMatrixReg.index * 4;\n var scenePosition = registerCache.getFreeVertexConstant();\n shader.scenePositionIndex = scenePosition.index * 4;\n var skyboxScale = registerCache.getFreeVertexConstant();\n var temp = registerCache.getFreeVertexVectorTemp();\n code += \"mul \" + temp + \", \" + position + \", \" + skyboxScale + \"\\n\" +\n \"add \" + temp + \", \" + temp + \", \" + scenePosition + \"\\n\";\n if (shader.projectionDependencies > 0) {\n sharedRegisters.projectionFragment = registerCache.getFreeVarying();\n code += \"m44 \" + temp + \", \" + temp + \", \" + viewMatrixReg + \"\\n\" +\n \"mov \" + sharedRegisters.projectionFragment + \", \" + temp + \"\\n\" +\n \"mov op, \" + temp + \"\\n\";\n }\n else {\n code += \"m44 op, \" + temp + \", \" + viewMatrixReg + \"\\n\";\n }\n return code;\n };\n GL_SkyboxElements._getFragmentCode = function (shader, registerCache, sharedRegisters) {\n return \"\";\n };\n GL_SkyboxElements.prototype.draw = function (renderable, shader, projection, count, offset) {\n var index = shader.scenePositionIndex;\n var camPos = projection.transform.concatenatedMatrix3D.position;\n shader.vertexConstantData[index++] = 2 * camPos.x;\n shader.vertexConstantData[index++] = 2 * camPos.y;\n shader.vertexConstantData[index++] = 2 * camPos.z;\n shader.vertexConstantData[index++] = 1;\n shader.vertexConstantData[index++] = shader.vertexConstantData[index++] = shader.vertexConstantData[index++] = projection.far / Math.sqrt(3);\n shader.vertexConstantData[index] = 1;\n var near = new Vector3D();\n this._skyboxProjection.copyFrom(projection.viewMatrix3D);\n this._skyboxProjection.copyRowTo(2, near);\n var cx = near.x;\n var cy = near.y;\n var cz = near.z;\n var cw = -(near.x * camPos.x + near.y * camPos.y + near.z * camPos.z + Math.sqrt(cx * cx + cy * cy + cz * cz));\n var signX = cx >= 0 ? 1 : -1;\n var signY = cy >= 0 ? 1 : -1;\n var p = new Vector3D(signX, signY, 1, 1);\n var inverse = this._skyboxProjection.clone();\n inverse.invert();\n var q = inverse.transformVector(p);\n this._skyboxProjection.copyRowTo(3, p);\n var a = (q.x * p.x + q.y * p.y + q.z * p.z + q.w * p.w) / (cx * q.x + cy * q.y + cz * q.z + cw * q.w);\n this._skyboxProjection.copyRowFrom(2, new Vector3D(cx * a, cy * a, cz * a, cw * a));\n //set constants\n if (shader.sceneMatrixIndex >= 0)\n shader.sceneMatrix.copyFrom(renderable.renderSceneTransform, true);\n shader.viewMatrix.copyFrom(this._skyboxProjection, true);\n var context = this._stage.context;\n context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, shader.vertexConstantData);\n context.setProgramConstantsFromArray(ContextGLProgramType.FRAGMENT, shader.fragmentConstantData);\n if (this._indices)\n this.getIndexBufferGL().draw(ContextGLDrawMode.TRIANGLES, 0, this.numIndices);\n else\n this._stage.context.drawVertices(ContextGLDrawMode.TRIANGLES, offset, count || this.numVertices);\n };\n return GL_SkyboxElements;\n}(GL_TriangleElements));\nexport { GL_SkyboxElements };\nGL_SkyboxElements.elementsType = \"[elements Skybox]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/elements/GL_SkyboxElements.js","import * as tslib_1 from \"tslib\";\nimport { EventBase } from \"@awayjs/core\";\nvar ShadingMethodEvent = (function (_super) {\n tslib_1.__extends(ShadingMethodEvent, _super);\n function ShadingMethodEvent(type) {\n return _super.call(this, type) || this;\n }\n return ShadingMethodEvent;\n}(EventBase));\nexport { ShadingMethodEvent };\nShadingMethodEvent.SHADER_INVALIDATED = \"shaderInvalidated\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/events/ShadingMethodEvent.js","import { AbstractMethodError } from \"@awayjs/core\";\nimport { Image2D } from \"@awayjs/graphics\";\nimport { AGALMiniAssembler, ContextGLProfile, ShaderRegisterCache } from \"@awayjs/stage\";\nvar Filter3DTaskBase = (function () {\n function Filter3DTaskBase(requireDepthRender) {\n if (requireDepthRender === void 0) { requireDepthRender = false; }\n this._scaledTextureWidth = -1;\n this._scaledTextureHeight = -1;\n this._textureWidth = -1;\n this._textureHeight = -1;\n this._textureDimensionsInvalid = true;\n this._program3DInvalid = true;\n this._textureScale = 1;\n this._requireDepthRender = requireDepthRender;\n this._registerCache = new ShaderRegisterCache(ContextGLProfile.BASELINE);\n }\n Object.defineProperty(Filter3DTaskBase.prototype, \"textureScale\", {\n /**\n * The texture scale for the input of this texture. This will define the output of the previous entry in the chain\n */\n get: function () {\n return this._textureScale;\n },\n set: function (value) {\n if (this._textureScale == value)\n return;\n this._textureScale = value;\n this._scaledTextureWidth = this._textureWidth / this._textureScale;\n this._scaledTextureHeight = this._textureHeight / this._textureScale;\n this._textureDimensionsInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DTaskBase.prototype, \"target\", {\n get: function () {\n return this._target;\n },\n set: function (value) {\n this._target = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DTaskBase.prototype, \"rttManager\", {\n get: function () {\n return this._rttManager;\n },\n set: function (value) {\n if (this._rttManager == value)\n return;\n this._rttManager = value;\n this._textureDimensionsInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DTaskBase.prototype, \"textureWidth\", {\n get: function () {\n return this._textureWidth;\n },\n set: function (value) {\n if (this._textureWidth == value)\n return;\n this._textureWidth = value;\n this._scaledTextureWidth = this._textureWidth / this._textureScale;\n this._textureDimensionsInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DTaskBase.prototype, \"textureHeight\", {\n get: function () {\n return this._textureHeight;\n },\n set: function (value) {\n if (this._textureHeight == value)\n return;\n this._textureHeight = value;\n this._scaledTextureHeight = this._textureHeight / this._textureScale;\n this._textureDimensionsInvalid = true;\n },\n enumerable: true,\n configurable: true\n });\n Filter3DTaskBase.prototype.getMainInputTexture = function (stage) {\n if (this._textureDimensionsInvalid)\n this.updateTextures(stage);\n return this._mainInputTexture;\n };\n Filter3DTaskBase.prototype.dispose = function () {\n if (this._mainInputTexture)\n this._mainInputTexture.dispose();\n if (this._program3D)\n this._program3D.dispose();\n };\n Filter3DTaskBase.prototype.invalidateProgram = function () {\n this._program3DInvalid = true;\n };\n Filter3DTaskBase.prototype.updateProgram = function (stage) {\n if (this._program3D)\n this._program3D.dispose();\n this._program3D = stage.context.createProgram();\n this._registerCache.reset();\n var vertexByteCode = (new AGALMiniAssembler().assemble(\"part vertex 1\\n\" + this.getVertexCode() + \"endpart\"))['vertex'].data;\n var fragmentByteCode = (new AGALMiniAssembler().assemble(\"part fragment 1\\n\" + this.getFragmentCode() + \"endpart\"))['fragment'].data;\n this._program3D.upload(vertexByteCode, fragmentByteCode);\n this._program3DInvalid = false;\n };\n Filter3DTaskBase.prototype.getVertexCode = function () {\n var position = this._registerCache.getFreeVertexAttribute();\n this._positionIndex = position.index;\n var uv = this._registerCache.getFreeVertexAttribute();\n this._uvIndex = uv.index;\n this._uvVarying = this._registerCache.getFreeVarying();\n var code;\n code = \"mov op, \" + position + \"\\n\" +\n \"mov \" + this._uvVarying + \", \" + uv + \"\\n\";\n return code;\n };\n Filter3DTaskBase.prototype.getFragmentCode = function () {\n throw new AbstractMethodError();\n };\n Filter3DTaskBase.prototype.updateTextures = function (stage) {\n if (this._mainInputTexture)\n this._mainInputTexture.dispose();\n this._mainInputTexture = new Image2D(this._scaledTextureWidth, this._scaledTextureHeight);\n this._textureDimensionsInvalid = false;\n };\n Filter3DTaskBase.prototype.getProgram = function (stage) {\n if (this._program3DInvalid)\n this.updateProgram(stage);\n return this._program3D;\n };\n Filter3DTaskBase.prototype.activate = function (stage, camera, depthTexture) {\n };\n Filter3DTaskBase.prototype.deactivate = function (stage) {\n };\n Object.defineProperty(Filter3DTaskBase.prototype, \"requireDepthRender\", {\n get: function () {\n return this._requireDepthRender;\n },\n enumerable: true,\n configurable: true\n });\n return Filter3DTaskBase;\n}());\nexport { Filter3DTaskBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/filters/tasks/Filter3DTaskBase.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLProgramType } from \"@awayjs/stage\";\nimport { Filter3DTaskBase } from \"./Filter3DTaskBase\";\nvar Filter3DCompositeTask = (function (_super) {\n tslib_1.__extends(Filter3DCompositeTask, _super);\n function Filter3DCompositeTask(blendMode, exposure) {\n if (exposure === void 0) { exposure = 1; }\n var _this = _super.call(this) || this;\n _this._data = new Float32Array([exposure, 0.5, 2.0, -1, 0.0, 0.0, 0.0, 0.0]);\n _this._blendMode = blendMode;\n return _this;\n }\n Object.defineProperty(Filter3DCompositeTask.prototype, \"overlayTexture\", {\n get: function () {\n return this._overlayTexture;\n },\n set: function (value) {\n this._overlayTexture = value;\n this._overlayWidth = this._overlayTexture.width;\n this._overlayHeight = this._overlayTexture.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DCompositeTask.prototype, \"exposure\", {\n get: function () {\n return this._data[0];\n },\n set: function (value) {\n this._data[0] = value;\n },\n enumerable: true,\n configurable: true\n });\n Filter3DCompositeTask.prototype.getFragmentCode = function () {\n var temp1 = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(temp1, 1);\n var temp2 = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(temp2, 1);\n var temp3 = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(temp3, 1);\n var temp4 = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(temp4, 1);\n var inputTexture = this._registerCache.getFreeTextureReg();\n this._inputTextureIndex = inputTexture.index;\n var overlayTexture = this._registerCache.getFreeTextureReg();\n this._overlayTextureIndex = overlayTexture.index;\n var exposure = this._registerCache.getFreeFragmentConstant();\n this._exposureIndex = exposure.index * 4;\n var scaling = this._registerCache.getFreeFragmentConstant();\n this._scalingIndex = scaling.index * 4;\n var code;\n code = \"tex \" + temp1 + \", \" + this._uvVarying + \", \" + inputTexture + \" <2d,linear,clamp>\\n\" +\n \"mul \" + temp2 + \", \" + this._uvVarying + \", \" + scaling + \".zw\\n\" +\n \"add \" + temp2 + \", \" + temp2 + \", \" + scaling + \".xy\\n\" +\n \"tex \" + temp2 + \", \" + temp2 + \", \" + overlayTexture + \" <2d,linear,clamp>\\n\" +\n \"mul \" + temp2 + \", \" + temp2 + \", \" + exposure + \".xxx\\n\" +\n \"add \" + temp2 + \", \" + temp2 + \", \" + exposure + \".xxx\\n\";\n switch (this._blendMode) {\n case \"multiply\":\n code += \"mul oc, \" + temp1 + \", \" + temp2 + \"\\n\";\n break;\n case \"add\":\n code += \"add oc, \" + temp1 + \", \" + temp2 + \"\\n\";\n break;\n case \"subtract\":\n code += \"sub oc, \" + temp1 + \", \" + temp2 + \"\\n\";\n break;\n case \"overlay\":\n code += \"sge \" + temp3 + \", \" + temp1 + \", \" + exposure + \".yyy\\n\"; // t2 = (blend >= 0.5)? 1 : 0\n code += \"sub \" + temp1 + \", \" + temp3 + \", \" + temp1 + \"\\n\"; // base = (1 : 0 - base)\n code += \"sub \" + temp2 + \", \" + temp2 + \", \" + temp3 + \"\\n\"; // blend = (blend - 1 : 0)\n code += \"mul \" + temp2 + \", \" + temp2 + \", \" + temp1 + \"\\n\"; // blend = blend * base\n code += \"sub \" + temp4 + \", \" + temp3 + \", \" + exposure + \".yyy\\n\"; // t3 = (blend >= 0.5)? 0.5 : -0.5\n code += \"div \" + temp2 + \", \" + temp2 + \", \" + temp4 + \"\\n\"; // blend = blend / ( 0.5 : -0.5)\n code += \"add oc, \" + temp2 + \", \" + temp3 + \"\\n\";\n break;\n case \"normal\":\n // for debugging purposes\n code += \"mov oc, \" + temp1 + \"\\n\";\n break;\n default:\n throw new Error(\"Unknown blend mode\");\n }\n return code;\n };\n Filter3DCompositeTask.prototype.activate = function (stage, camera3D, depthTexture) {\n this._data[4] = -0.5 * (this._textureWidth - this._overlayWidth) / this._overlayWidth;\n this._data[5] = -0.5 * (this._textureHeight - this._overlayHeight) / this._overlayHeight;\n this._data[6] = this._textureWidth / this._overlayWidth;\n this._data[7] = this._textureHeight / this._overlayHeight;\n var context = stage.context;\n context.setProgramConstantsFromArray(ContextGLProgramType.FRAGMENT, this._data);\n stage.getAbstraction(this._overlayTexture).activate(this._overlayTextureIndex, false);\n };\n Filter3DCompositeTask.prototype.deactivate = function (stage) {\n stage.context.setTextureAt(1, null);\n };\n return Filter3DCompositeTask;\n}(Filter3DTaskBase));\nexport { Filter3DCompositeTask };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/filters/tasks/Filter3DCompositeTask.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLProgramType } from \"@awayjs/stage\";\nimport { Filter3DTaskBase } from \"./Filter3DTaskBase\";\nvar Filter3DFXAATask = (function (_super) {\n tslib_1.__extends(Filter3DFXAATask, _super);\n /**\n *\n * @param amount\n * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality.\n */\n function Filter3DFXAATask(amount, stepSize) {\n if (amount === void 0) { amount = 1; }\n if (stepSize === void 0) { stepSize = -1; }\n var _this = _super.call(this) || this;\n _this._stepSize = 1;\n _this._data = new Float32Array(20);\n //luma\n _this._data.set([0.299, 0.587, 0.114, 0], 0); //0.212, 0.716, 0.072\n //helpers\n _this._data.set([0.25, 0.5, 0.75, 1], 4);\n //settings (screen x, screen y, ...)\n _this._data.set([1 / 1024, 1 / 1024, -1, 1], 8);\n //deltas\n _this._data.set([1 / 128, 1 / 8, 8, 0], 12);\n //deltas\n _this._data.set([1.0 / 3.0 - 0.5, 2.0 / 3.0 - 0.5, 0.0 / 3.0 - 0.5, 3.0 / 3.0 - 0.5], 16);\n _this.amount = amount;\n _this.stepSize = stepSize;\n return _this;\n }\n Object.defineProperty(Filter3DFXAATask.prototype, \"amount\", {\n get: function () {\n return this._amount;\n },\n set: function (value) {\n if (this._amount == value)\n return;\n this._amount = value;\n this.invalidateProgram();\n this.updateBlurData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DFXAATask.prototype, \"stepSize\", {\n get: function () {\n return this._stepSize;\n },\n set: function (value) {\n if (this._stepSize == value)\n return;\n this._stepSize = value;\n this.calculateStepSize();\n this.invalidateProgram();\n this.updateBlurData();\n },\n enumerable: true,\n configurable: true\n });\n Filter3DFXAATask.prototype.getFragmentCode = function () {\n var lum = \"fc0\"; //\t0.299, 0.587, 0.114\n var _0 = \"fc0.w\";\n var _025 = \"fc1.x\";\n var _05 = \"fc1.y\";\n var _075 = \"fc1.z\";\n var _1 = \"fc1.w\";\n var pix = \"fc2.xy\";\n var dx = \"fc2.x\"; // 1/1024\n var dy = \"fc2.y\"; // 1/1024\n var mOne = \"fc2.z\"; // -1.0\n var mul = \"fc2.w\"; // 1.0 -- one for now\n var fxaaReduceMin = \"fc3.x\"; //1/128\n var fxaaReduceMul = \"fc3.y\"; //1/8\n var fxaaSpanMax = \"fc3.z\"; //8\n var delta1 = \"fc4.x\"; //1.0/3.0 - 0.5\n var delta2 = \"fc4.y\"; //2.0/3.0 - 0.5\n var delta3 = \"fc4.z\"; //0.0/3.0 - 0.5\n var delta4 = \"fc4.w\"; //3.0/3.0 - 0.5\n var uv_in = \"v0\";\n var uv = \"ft0.xy\";\n var uvx = \"ft0.x\";\n var uvy = \"ft0.y\";\n var TL = \"ft2.x\";\n var TR = \"ft2.y\";\n var BL = \"ft2.z\";\n var BR = \"ft2.w\";\n var M = \"ft3.x\";\n var tempf1 = \"ft3.y\";\n var tempf2 = \"ft3.z\";\n var tempf3 = \"ft3.w\";\n var tex = \"ft1\";\n var dir = \"ft4\";\n var dirx = \"ft4.x\";\n var diry = \"ft4.y\";\n var dirxy = \"ft4.xy\";\n var dirReduce = \"ft5.x\";\n var inverseDirAdjustment = \"ft5.y\";\n var result1 = \"ft6\";\n var result2 = \"ft7\";\n var lumaMin = \"ft5.x\";\n var lumaMax = \"ft5.y\";\n var sample = \"fs0\";\n var temp = tex;\n var tempxy = temp + \".xy\";\n var code = new Array();\n //lumas\n code.push(\"tex\", tex, uv_in, sample, \"<2d wrap linear>\", \"\\n\");\n code.push(\"dp3\", M, tex, lum, \"\\n\");\n code.push(\"mov\", uv, uv_in, \"\\n\");\n code.push(\"sub\", uv, uv, pix, \"\\n\");\n code.push(\"tex\", tex, uv, sample, \"<2d wrap linear>\", \"\\n\");\n code.push(\"dp3\", TL, tex, lum, \"\\n\");\n code.push(\"mov\", uv, uv_in, \"\\n\");\n code.push(\"add\", uv, uv, pix, \"\\n\");\n code.push(\"tex\", tex, uv, sample, \"<2d wrap linear>\", \"\\n\");\n code.push(\"dp3\", BR, tex, lum, \"\\n\");\n code.push(\"mov\", uv, uv_in, \"\\n\");\n code.push(\"sub\", uvy, uvy, dy, \"\\n\");\n code.push(\"add\", uvx, uvx, dx, \"\\n\");\n code.push(\"tex\", tex, uv, sample, \"<2d wrap linear>\", \"\\n\");\n code.push(\"dp3\", TR, tex, lum, \"\\n\");\n code.push(\"mov\", uv, uv_in, \"\\n\");\n code.push(\"add\", uvy, uvy, dy, \"\\n\");\n code.push(\"sub\", uvx, uvx, dx, \"\\n\");\n code.push(\"tex\", tex, uv, sample, \"<2d wrap linear>\", \"\\n\");\n code.push(\"dp3\", BL, tex, lum, \"\\n\");\n //dir\n code.push(\"add\", tempf1, TL, TR, \"\\n\");\n code.push(\"add\", tempf2, BL, BR, \"\\n\");\n code.push(\"sub\", dirx, tempf1, tempf2, \"\\n\");\n code.push(\"neg\", dirx, dirx, \"\\n\");\n code.push(\"add\", tempf1, TL, BL, \"\\n\");\n code.push(\"add\", tempf2, TR, BR, \"\\n\");\n code.push(\"sub\", diry, tempf1, tempf2, \"\\n\");\n code.push(\"add\", tempf1, tempf1, tempf2, \"\\n\");\n code.push(\"mul\", tempf1, tempf1, fxaaReduceMul, \"\\n\");\n code.push(\"mul\", tempf1, tempf1, _025, \"\\n\");\n code.push(\"max\", dirReduce, tempf1, fxaaReduceMin, \"\\n\");\n code.push(\"abs\", tempf1, dirx, \"\\n\");\n code.push(\"abs\", tempf2, diry, \"\\n\");\n code.push(\"min\", tempf1, tempf1, tempf2, \"\\n\");\n code.push(\"add\", tempf1, tempf1, dirReduce, \"\\n\");\n code.push(\"rcp\", inverseDirAdjustment, tempf1, \"\\n\");\n code.push(\"mul\", tempf1, dirx, inverseDirAdjustment, \"\\n\");\n code.push(\"mov\", tempf2, fxaaSpanMax, \"\\n\");\n code.push(\"neg\", tempf2, tempf2, \"\\n\");\n code.push(\"max\", tempf1, tempf1, tempf2, \"\\n\");\n code.push(\"min\", tempf1, fxaaSpanMax, tempf1, \"\\n\");\n code.push(\"mul\", dirx, tempf1, dx, \"\\n\");\n code.push(\"mul\", tempf1, diry, inverseDirAdjustment, \"\\n\");\n code.push(\"mov\", tempf2, fxaaSpanMax, \"\\n\");\n code.push(\"neg\", tempf2, tempf2, \"\\n\");\n code.push(\"max\", tempf1, tempf1, tempf2, \"\\n\");\n code.push(\"min\", tempf1, fxaaSpanMax, tempf1, \"\\n\");\n code.push(\"mul\", diry, tempf1, dy, \"\\n\");\n code.push(\"mul\", tempxy, dirxy, delta1, \"\\n\");\n code.push(\"add\", uv, uv_in, tempxy, \"\\n\");\n code.push(\"tex\", result1, uv, sample, \"<2d wrap linear>\", \"\\n\");\n code.push(\"mul\", tempxy, dirxy, delta2, \"\\n\");\n code.push(\"add\", uv, uv_in, tempxy, \"\\n\");\n code.push(\"tex\", tex, uv, sample, \"<2d wrap linear>\", \"\\n\");\n code.push(\"add\", result1, result1, tex, \"\\n\");\n code.push(\"mul\", result1, result1, _05, \"\\n\");\n code.push(\"mul\", tempxy, dirxy, delta3, \"\\n\");\n code.push(\"add\", uv, uv_in, tempxy, \"\\n\");\n code.push(\"tex\", result2, uv, sample, \"<2d wrap linear>\", \"\\n\");\n code.push(\"mul\", tempxy, dirxy, delta4, \"\\n\");\n code.push(\"add\", uv, uv_in, tempxy, \"\\n\");\n code.push(\"tex\", tex, uv, sample, \"<2d wrap linear>\", \"\\n\");\n code.push(\"add\", result2, result2, tex, \"\\n\");\n code.push(\"mul\", result2, result2, _025, \"\\n\");\n code.push(\"mul\", tex, result1, _05, \"\\n\");\n code.push(\"add\", result2, result2, tex, \"\\n\");\n code.push(\"min\", tempf1, BL, BR, \"\\n\");\n code.push(\"min\", tempf2, TL, TR, \"\\n\");\n code.push(\"min\", tempf1, tempf1, tempf2, \"\\n\");\n code.push(\"min\", lumaMin, tempf1, M, \"\\n\");\n code.push(\"max\", tempf1, BL, BR, \"\\n\");\n code.push(\"max\", tempf2, TL, TR, \"\\n\");\n code.push(\"max\", tempf1, tempf1, tempf2, \"\\n\");\n code.push(\"max\", lumaMax, tempf1, M, \"\\n\");\n code.push(\"dp3\", tempf1, lum, result2, \"\\n\");\n code.push(\"slt\", tempf2, tempf1, lumaMin, \"\\n\");\n code.push(\"sge\", tempf3, tempf1, lumaMax, \"\\n\");\n code.push(\"mul\", tempf2, tempf2, tempf3, \"\\n\");\n code.push(\"mul\", result1, result1, tempf2, \"\\n\");\n code.push(\"sub\", tempf2, _1, tempf2, \"\\n\");\n code.push(\"mul\", result2, result2, tempf2, \"\\n\");\n code.push(\"add\", \"oc\", result1, result2, \"\\n\");\n //this._data[2] = 1/numSamples;\n return code.join(\" \");\n };\n Filter3DFXAATask.prototype.activate = function (stage, camera3D, depthTexture) {\n stage.context.setProgramConstantsFromArray(ContextGLProgramType.FRAGMENT, this._data);\n };\n Filter3DFXAATask.prototype.updateTextures = function (stage) {\n _super.prototype.updateTextures.call(this, stage);\n this.updateBlurData();\n };\n Filter3DFXAATask.prototype.updateBlurData = function () {\n // todo: must be normalized using view size ratio instead of texture\n if (this._rttManager) {\n this._data[8] = 1 / this._textureWidth;\n this._data[9] = 1 / this._textureHeight;\n }\n };\n Filter3DFXAATask.prototype.calculateStepSize = function () {\n this._realStepSize = 1; //this._stepSize > 0? this._stepSize : this._amount > Filter3DVBlurTask.MAX_AUTO_SAMPLES? this._amount/Filter3DVBlurTask.MAX_AUTO_SAMPLES : 1;\n };\n return Filter3DFXAATask;\n}(Filter3DTaskBase));\nexport { Filter3DFXAATask };\n//TODO - remove blur variables and create setters/getters for FXAA\nFilter3DFXAATask.MAX_AUTO_SAMPLES = 15;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/filters/tasks/Filter3DFXAATask.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLProgramType } from \"@awayjs/stage\";\nimport { Filter3DTaskBase } from \"./Filter3DTaskBase\";\nvar Filter3DHBlurTask = (function (_super) {\n tslib_1.__extends(Filter3DHBlurTask, _super);\n /**\n * Creates a new Filter3DHDepthOfFFieldTask\n * @param amount The maximum amount of blur to apply in pixels at the most out-of-focus areas\n * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality.\n */\n function Filter3DHBlurTask(amount, stepSize) {\n if (stepSize === void 0) { stepSize = -1; }\n var _this = _super.call(this) || this;\n _this._stepSize = 1;\n _this._amount = amount;\n _this._data = new Float32Array([0, 0, 0, 1]);\n _this.stepSize = stepSize;\n return _this;\n }\n Object.defineProperty(Filter3DHBlurTask.prototype, \"amount\", {\n get: function () {\n return this._amount;\n },\n set: function (value) {\n if (this._amount == value)\n return;\n this._amount = value;\n this.invalidateProgram();\n this.updateBlurData();\n this.calculateStepSize();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DHBlurTask.prototype, \"stepSize\", {\n get: function () {\n return this._stepSize;\n },\n set: function (value) {\n if (this._stepSize == value)\n return;\n this._stepSize = value;\n this.calculateStepSize();\n this.invalidateProgram();\n this.updateBlurData();\n },\n enumerable: true,\n configurable: true\n });\n Filter3DHBlurTask.prototype.getFragmentCode = function () {\n var code;\n var numSamples = 1;\n code = \"mov ft0, v0\t\\n\" +\n \"sub ft0.x, v0.x, fc0.x\\n\";\n code += \"tex ft1, ft0, fs0 <2d,linear,clamp>\\n\";\n for (var x = this._realStepSize; x <= this._amount; x += this._realStepSize) {\n code += \"add ft0.x, ft0.x, fc0.y\\n\" +\n \"tex ft2, ft0, fs0 <2d,linear,clamp>\\n\" +\n \"add ft1, ft1, ft2\\n\";\n ++numSamples;\n }\n code += \"mul oc, ft1, fc0.z\\n\";\n this._data[2] = 1 / numSamples;\n return code;\n };\n Filter3DHBlurTask.prototype.activate = function (stage, camera3D, depthTexture) {\n stage.context.setProgramConstantsFromArray(ContextGLProgramType.FRAGMENT, this._data);\n };\n Filter3DHBlurTask.prototype.updateTextures = function (stage) {\n _super.prototype.updateTextures.call(this, stage);\n this.updateBlurData();\n };\n Filter3DHBlurTask.prototype.updateBlurData = function () {\n // todo: must be normalized using view size ratio instead of texture\n var invW = 1 / this._textureWidth;\n this._data[0] = this._amount * .5 * invW;\n this._data[1] = this._realStepSize * invW;\n };\n Filter3DHBlurTask.prototype.calculateStepSize = function () {\n this._realStepSize = this._stepSize > 0 ? this._stepSize : this._amount > Filter3DHBlurTask.MAX_AUTO_SAMPLES ? this._amount / Filter3DHBlurTask.MAX_AUTO_SAMPLES : 1;\n };\n return Filter3DHBlurTask;\n}(Filter3DTaskBase));\nexport { Filter3DHBlurTask };\nFilter3DHBlurTask.MAX_AUTO_SAMPLES = 15;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/filters/tasks/Filter3DHBlurTask.js","import * as tslib_1 from \"tslib\";\nimport { ContextGLProgramType } from \"@awayjs/stage\";\nimport { Filter3DTaskBase } from \"./Filter3DTaskBase\";\nvar Filter3DVBlurTask = (function (_super) {\n tslib_1.__extends(Filter3DVBlurTask, _super);\n /**\n *\n * @param amount\n * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality.\n */\n function Filter3DVBlurTask(amount, stepSize) {\n if (stepSize === void 0) { stepSize = -1; }\n var _this = _super.call(this) || this;\n _this._stepSize = 1;\n _this._amount = amount;\n _this._data = new Float32Array([0, 0, 0, 1]);\n _this.stepSize = stepSize;\n return _this;\n }\n Object.defineProperty(Filter3DVBlurTask.prototype, \"amount\", {\n get: function () {\n return this._amount;\n },\n set: function (value) {\n if (this._amount == value)\n return;\n this._amount = value;\n this.invalidateProgram();\n this.updateBlurData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DVBlurTask.prototype, \"stepSize\", {\n get: function () {\n return this._stepSize;\n },\n set: function (value) {\n if (this._stepSize == value)\n return;\n this._stepSize = value;\n this.calculateStepSize();\n this.invalidateProgram();\n this.updateBlurData();\n },\n enumerable: true,\n configurable: true\n });\n Filter3DVBlurTask.prototype.getFragmentCode = function () {\n var code;\n var numSamples = 1;\n code = \"mov ft0, v0\t\\n\" +\n \"sub ft0.y, v0.y, fc0.x\\n\";\n code += \"tex ft1, ft0, fs0 <2d,linear,clamp>\\n\";\n for (var x = this._realStepSize; x <= this._amount; x += this._realStepSize) {\n code += \"add ft0.y, ft0.y, fc0.y\\n\";\n code += \"tex ft2, ft0, fs0 <2d,linear,clamp>\\n\" +\n \"add ft1, ft1, ft2\\n\";\n ++numSamples;\n }\n code += \"mul oc, ft1, fc0.z\\n\";\n this._data[2] = 1 / numSamples;\n return code;\n };\n Filter3DVBlurTask.prototype.activate = function (stage, camera3D, depthTexture) {\n stage.context.setProgramConstantsFromArray(ContextGLProgramType.FRAGMENT, this._data);\n };\n Filter3DVBlurTask.prototype.updateTextures = function (stage) {\n _super.prototype.updateTextures.call(this, stage);\n this.updateBlurData();\n };\n Filter3DVBlurTask.prototype.updateBlurData = function () {\n // todo: must be normalized using view size ratio instead of texture\n var invH = 1 / this._textureHeight;\n this._data[0] = this._amount * .5 * invH;\n this._data[1] = this._realStepSize * invH;\n };\n Filter3DVBlurTask.prototype.calculateStepSize = function () {\n this._realStepSize = this._stepSize > 0 ? this._stepSize : this._amount > Filter3DVBlurTask.MAX_AUTO_SAMPLES ? this._amount / Filter3DVBlurTask.MAX_AUTO_SAMPLES : 1;\n };\n return Filter3DVBlurTask;\n}(Filter3DTaskBase));\nexport { Filter3DVBlurTask };\nFilter3DVBlurTask.MAX_AUTO_SAMPLES = 15;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/filters/tasks/Filter3DVBlurTask.js","var Filter3DBase = (function () {\n function Filter3DBase() {\n this._textureScale = 1;\n this._tasks = new Array();\n }\n Object.defineProperty(Filter3DBase.prototype, \"requireDepthRender\", {\n get: function () {\n return this._requireDepthRender;\n },\n enumerable: true,\n configurable: true\n });\n Filter3DBase.prototype.addTask = function (filter) {\n this._tasks.push(filter);\n if (this._requireDepthRender == null)\n this._requireDepthRender = filter.requireDepthRender;\n };\n Object.defineProperty(Filter3DBase.prototype, \"tasks\", {\n get: function () {\n return this._tasks;\n },\n enumerable: true,\n configurable: true\n });\n Filter3DBase.prototype.getMainInputTexture = function (stage) {\n return this._tasks[0].getMainInputTexture(stage);\n };\n Object.defineProperty(Filter3DBase.prototype, \"textureWidth\", {\n get: function () {\n return this._textureWidth;\n },\n set: function (value) {\n this._textureWidth = value;\n for (var i = 0; i < this._tasks.length; ++i)\n this._tasks[i].textureWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DBase.prototype, \"rttManager\", {\n get: function () {\n return this._rttManager;\n },\n set: function (value) {\n this._rttManager = value;\n for (var i = 0; i < this._tasks.length; ++i)\n this._tasks[i].rttManager = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DBase.prototype, \"textureHeight\", {\n get: function () {\n return this._textureHeight;\n },\n set: function (value) {\n this._textureHeight = value;\n for (var i = 0; i < this._tasks.length; ++i)\n this._tasks[i].textureHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter3DBase.prototype, \"textureScale\", {\n get: function () {\n return this._textureScale;\n },\n set: function (value) {\n this._textureScale = value;\n for (var i = 0; i < this._tasks.length; ++i)\n this._tasks[i].textureScale = value;\n },\n enumerable: true,\n configurable: true\n });\n // link up the filters correctly with the next filter\n Filter3DBase.prototype.setRenderTargets = function (mainTarget, stage) {\n this._tasks[this._tasks.length - 1].target = mainTarget;\n };\n Filter3DBase.prototype.dispose = function () {\n for (var i = 0; i < this._tasks.length; ++i)\n this._tasks[i].dispose();\n };\n Filter3DBase.prototype.update = function (stage, camera) {\n };\n return Filter3DBase;\n}());\nexport { Filter3DBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/filters/Filter3DBase.js","import * as tslib_1 from \"tslib\";\nimport { Filter3DHBlurTask } from \"./tasks/Filter3DHBlurTask\";\nimport { Filter3DVBlurTask } from \"./tasks/Filter3DVBlurTask\";\nimport { Filter3DBase } from \"./Filter3DBase\";\nvar BlurFilter3D = (function (_super) {\n tslib_1.__extends(BlurFilter3D, _super);\n /**\n * Creates a new BlurFilter3D object\n * @param blurX The amount of horizontal blur to apply\n * @param blurY The amount of vertical blur to apply\n * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality.\n */\n function BlurFilter3D(blurX, blurY, stepSize) {\n if (blurX === void 0) { blurX = 3; }\n if (blurY === void 0) { blurY = 3; }\n if (stepSize === void 0) { stepSize = -1; }\n var _this = _super.call(this) || this;\n _this._hBlurTask = new Filter3DHBlurTask(blurX, stepSize);\n _this._vBlurTask = new Filter3DVBlurTask(blurY, stepSize);\n _this.addTask(_this._hBlurTask);\n _this.addTask(_this._vBlurTask);\n return _this;\n }\n Object.defineProperty(BlurFilter3D.prototype, \"blurX\", {\n get: function () {\n return this._hBlurTask.amount;\n },\n set: function (value) {\n this._hBlurTask.amount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BlurFilter3D.prototype, \"blurY\", {\n get: function () {\n return this._vBlurTask.amount;\n },\n set: function (value) {\n this._vBlurTask.amount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BlurFilter3D.prototype, \"stepSize\", {\n /**\n * The distance between two blur samples. Set to -1 to autodetect with acceptable quality (default value).\n * Higher values provide better performance at the cost of reduces quality.\n */\n get: function () {\n return this._hBlurTask.stepSize;\n },\n set: function (value) {\n this._hBlurTask.stepSize = value;\n this._vBlurTask.stepSize = value;\n },\n enumerable: true,\n configurable: true\n });\n BlurFilter3D.prototype.setRenderTargets = function (mainTarget, stage) {\n this._hBlurTask.target = this._vBlurTask.getMainInputTexture(stage);\n _super.prototype.setRenderTargets.call(this, mainTarget, stage);\n };\n return BlurFilter3D;\n}(Filter3DBase));\nexport { BlurFilter3D };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/filters/BlurFilter3D.js","import * as tslib_1 from \"tslib\";\nimport { Filter3DCompositeTask } from \"./tasks/Filter3DCompositeTask\";\nimport { Filter3DBase } from \"./Filter3DBase\";\nvar CompositeFilter3D = (function (_super) {\n tslib_1.__extends(CompositeFilter3D, _super);\n /**\n * Creates a new CompositeFilter3D object\n * @param blurX The amount of horizontal blur to apply\n * @param blurY The amount of vertical blur to apply\n * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality.\n */\n function CompositeFilter3D(blendMode, exposure) {\n if (exposure === void 0) { exposure = 1; }\n var _this = _super.call(this) || this;\n _this._compositeTask = new Filter3DCompositeTask(blendMode, exposure);\n _this.addTask(_this._compositeTask);\n return _this;\n }\n Object.defineProperty(CompositeFilter3D.prototype, \"exposure\", {\n get: function () {\n return this._compositeTask.exposure;\n },\n set: function (value) {\n this._compositeTask.exposure = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompositeFilter3D.prototype, \"overlayTexture\", {\n get: function () {\n return this._compositeTask.overlayTexture;\n },\n set: function (value) {\n this._compositeTask.overlayTexture = value;\n },\n enumerable: true,\n configurable: true\n });\n return CompositeFilter3D;\n}(Filter3DBase));\nexport { CompositeFilter3D };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/filters/CompositeFilter3D.js","import * as tslib_1 from \"tslib\";\nimport { Filter3DFXAATask } from \"./tasks/Filter3DFXAATask\";\nimport { Filter3DBase } from \"./Filter3DBase\";\nvar FXAAFilter3D = (function (_super) {\n tslib_1.__extends(FXAAFilter3D, _super);\n /**\n * Creates a new FXAAFilter3D object\n * @param amount\n * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality.\n */\n function FXAAFilter3D(amount, stepSize) {\n if (stepSize === void 0) { stepSize = -1; }\n var _this = _super.call(this) || this;\n _this._fxaaTask = new Filter3DFXAATask(amount, stepSize);\n _this.addTask(_this._fxaaTask);\n return _this;\n }\n Object.defineProperty(FXAAFilter3D.prototype, \"amount\", {\n get: function () {\n return this._fxaaTask.amount;\n },\n set: function (value) {\n this._fxaaTask.amount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FXAAFilter3D.prototype, \"stepSize\", {\n get: function () {\n return this._fxaaTask.stepSize;\n },\n set: function (value) {\n this._fxaaTask.stepSize = value;\n },\n enumerable: true,\n configurable: true\n });\n return FXAAFilter3D;\n}(Filter3DBase));\nexport { FXAAFilter3D };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/filters/FXAAFilter3D.js","import * as tslib_1 from \"tslib\";\nimport { AttributesBuffer } from \"@awayjs/core\";\nimport { TriangleElements, DefaultMaterialManager } from \"@awayjs/graphics\";\nimport { GL_RenderableBase } from \"@awayjs/stage\";\n/**\n * @class away.pool.RenderableListItem\n */\nvar GL_BillboardRenderable = (function (_super) {\n tslib_1.__extends(GL_BillboardRenderable, _super);\n /**\n * //TODO\n *\n * @param pool\n * @param billboard\n */\n function GL_BillboardRenderable(billboard, renderablePool) {\n var _this = _super.call(this, billboard, renderablePool) || this;\n _this._billboard = billboard;\n return _this;\n }\n GL_BillboardRenderable.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._billboard = null;\n };\n /**\n * //TODO\n *\n * @returns {away.base.TriangleElements}\n */\n GL_BillboardRenderable.prototype._getElements = function () {\n var texture = this._billboard.material.getTextureAt(0);\n var width = this._billboard.billboardWidth;\n var height = this._billboard.billboardHeight;\n var billboardRect = this._billboard.billboardRect;\n var id = width.toString() + height.toString() + billboardRect.toString();\n this._id = id;\n var elements = GL_BillboardRenderable._samplerElements[id];\n if (!elements) {\n elements = GL_BillboardRenderable._samplerElements[id] = new TriangleElements(new AttributesBuffer(11, 4));\n elements.autoDeriveNormals = false;\n elements.autoDeriveTangents = false;\n elements.setIndices(Array(0, 1, 2, 0, 2, 3));\n elements.setPositions(Array(-billboardRect.x, height - billboardRect.y, 0, width - billboardRect.x, height - billboardRect.y, 0, width - billboardRect.x, -billboardRect.y, 0, -billboardRect.x, -billboardRect.y, 0));\n elements.setNormals(Array(1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0));\n elements.setTangents(Array(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1));\n elements.setUVs(Array(0, 1, 1, 1, 1, 0, 0, 0));\n }\n else {\n elements.setPositions(Array(-billboardRect.x, height - billboardRect.y, 0, width - billboardRect.x, height - billboardRect.y, 0, width - billboardRect.x, -billboardRect.y, 0, -billboardRect.x, -billboardRect.y, 0));\n }\n return this._stage.getAbstraction(elements);\n };\n GL_BillboardRenderable.prototype._getMaterial = function () {\n return this._materialGroup.getMaterialPool(this.elementsGL).getAbstraction(this._billboard.material || DefaultMaterialManager.getDefaultMaterial(this.renderable));\n };\n return GL_BillboardRenderable;\n}(GL_RenderableBase));\nexport { GL_BillboardRenderable };\nGL_BillboardRenderable._samplerElements = new Object();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/renderables/GL_BillboardRenderable.js","import * as tslib_1 from \"tslib\";\nimport { LineElements, DefaultMaterialManager } from \"@awayjs/graphics\";\nimport { GL_RenderableBase } from \"@awayjs/stage\";\n/**\n * @class away.pool.GL_LineSegmentRenderable\n */\nvar GL_LineSegmentRenderable = (function (_super) {\n tslib_1.__extends(GL_LineSegmentRenderable, _super);\n /**\n * //TODO\n *\n * @param pool\n * @param graphic\n * @param level\n * @param dataOffset\n */\n function GL_LineSegmentRenderable(lineSegment, renderablePool) {\n var _this = _super.call(this, lineSegment, renderablePool) || this;\n _this._lineSegment = lineSegment;\n return _this;\n }\n GL_LineSegmentRenderable.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._lineSegment = null;\n };\n /**\n * //TODO\n *\n * @returns {base.LineElements}\n * @protected\n */\n GL_LineSegmentRenderable.prototype._getElements = function () {\n var elements = GL_LineSegmentRenderable._lineGraphics[this._lineSegment.id] || (GL_LineSegmentRenderable._lineGraphics[this._lineSegment.id] = new LineElements());\n var start = this._lineSegment.startPostion;\n var end = this._lineSegment.endPosition;\n var positions = new Float32Array(6);\n var thickness = new Float32Array(1);\n positions[0] = start.x;\n positions[1] = start.y;\n positions[2] = start.z;\n positions[3] = end.x;\n positions[4] = end.y;\n positions[5] = end.z;\n thickness[0] = this._lineSegment.thickness;\n elements.setPositions(positions);\n elements.setThickness(thickness);\n return this._stage.getAbstraction(elements);\n };\n GL_LineSegmentRenderable.prototype._getMaterial = function () {\n return this._materialGroup.getMaterialPool(this.elementsGL).getAbstraction(this._lineSegment.material || DefaultMaterialManager.getDefaultMaterial(this.renderable));\n };\n return GL_LineSegmentRenderable;\n}(GL_RenderableBase));\nexport { GL_LineSegmentRenderable };\nGL_LineSegmentRenderable._lineGraphics = new Object();\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/renderables/GL_LineSegmentRenderable.js","import * as tslib_1 from \"tslib\";\nimport { AttributesBuffer } from \"@awayjs/core\";\nimport { TriangleElements } from \"@awayjs/graphics\";\nimport { GL_RenderableBase } from \"@awayjs/stage\";\nimport { GL_SkyboxElements } from \"../elements/GL_SkyboxElements\";\n/**\n * @class away.pool.GL_SkyboxRenderable\n */\nvar GL_SkyboxRenderable = (function (_super) {\n tslib_1.__extends(GL_SkyboxRenderable, _super);\n /**\n * //TODO\n *\n * @param pool\n * @param skybox\n */\n function GL_SkyboxRenderable(skybox, renderablePool) {\n var _this = _super.call(this, skybox, renderablePool) || this;\n _this._skybox = skybox;\n return _this;\n }\n /**\n * //TODO\n *\n * @returns {away.base.TriangleElements}\n * @private\n */\n GL_SkyboxRenderable.prototype._getElements = function () {\n var elementsGL = GL_SkyboxRenderable._elementsGL;\n if (!elementsGL) {\n var elements = new TriangleElements(new AttributesBuffer(11, 4));\n elements.autoDeriveNormals = false;\n elements.autoDeriveTangents = false;\n elements.setIndices(Array(0, 1, 2, 2, 3, 0, 6, 5, 4, 4, 7, 6, 2, 6, 7, 7, 3, 2, 4, 5, 1, 1, 0, 4, 4, 0, 3, 3, 7, 4, 2, 1, 5, 5, 6, 2));\n elements.setPositions(Array(-1, 1, -1, 1, 1, -1, 1, 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1));\n elementsGL = GL_SkyboxRenderable._elementsGL = new GL_SkyboxElements(elements, this._stage);\n }\n return elementsGL;\n };\n GL_SkyboxRenderable.prototype._getMaterial = function () {\n return this._materialGroup.getMaterialPool(this.elementsGL).getAbstraction(this._skybox);\n };\n GL_SkyboxRenderable._includeDependencies = function (shader) {\n };\n return GL_SkyboxRenderable;\n}(GL_RenderableBase));\nexport { GL_SkyboxRenderable };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/renderables/GL_SkyboxRenderable.js","import * as tslib_1 from \"tslib\";\nimport { CompilerBase } from \"@awayjs/stage\";\n/**\n * CompilerBase is an abstract base class for shader compilers that use modular shader methods to assemble a\n * material. Concrete subclasses are used by the default materials.\n *\n * @see away.materials.ShadingMethodBase\n */\nvar LightingCompiler = (function (_super) {\n tslib_1.__extends(LightingCompiler, _super);\n /**\n * Creates a new CompilerBase object.\n * @param profile The compatibility profile of the renderer.\n */\n function LightingCompiler(elementsClass, lightingPass, shaderLightingObject) {\n var _this = _super.call(this, elementsClass, lightingPass, shaderLightingObject) || this;\n _this._shaderLightingObject = shaderLightingObject;\n return _this;\n }\n /**\n * Compile the code for the methods.\n */\n LightingCompiler.prototype.pCompileDependencies = function () {\n _super.prototype.pCompileDependencies.call(this);\n //collect code from pass\n this._vertexCode += this._renderPass._getPreLightingVertexCode(this._registerCache, this._sharedRegisters);\n this._postAnimationFragmentCode += this._renderPass._getPreLightingFragmentCode(this._registerCache, this._sharedRegisters);\n //compile the lighting code\n if (this._shaderLightingObject.usesShadows)\n this.pCompileShadowCode();\n if (this._shaderLightingObject.usesLights) {\n this.initLightRegisters();\n this.compileLightCode();\n }\n if (this._shaderLightingObject.usesProbes)\n this.compileLightProbeCode();\n };\n /**\n * Provides the code to provide shadow mapping.\n */\n LightingCompiler.prototype.pCompileShadowCode = function () {\n if (this._shaderLightingObject.normalDependencies > 0) {\n this._sharedRegisters.shadowTarget = this._sharedRegisters.normalFragment;\n }\n else {\n this._sharedRegisters.shadowTarget = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(this._sharedRegisters.shadowTarget, 1);\n }\n };\n /**\n * Initializes constant registers to contain light data.\n */\n LightingCompiler.prototype.initLightRegisters = function () {\n // init these first so we're sure they're in sequence\n var i, len;\n if (this._dirLightVertexConstants) {\n len = this._dirLightVertexConstants.length;\n for (i = 0; i < len; ++i) {\n this._dirLightVertexConstants[i] = this._registerCache.getFreeVertexConstant();\n if (this._shaderLightingObject.lightVertexConstantIndex == -1)\n this._shaderLightingObject.lightVertexConstantIndex = this._dirLightVertexConstants[i].index * 4;\n }\n }\n if (this._pointLightVertexConstants) {\n len = this._pointLightVertexConstants.length;\n for (i = 0; i < len; ++i) {\n this._pointLightVertexConstants[i] = this._registerCache.getFreeVertexConstant();\n if (this._shaderLightingObject.lightVertexConstantIndex == -1)\n this._shaderLightingObject.lightVertexConstantIndex = this._pointLightVertexConstants[i].index * 4;\n }\n }\n len = this._dirLightFragmentConstants.length;\n for (i = 0; i < len; ++i) {\n this._dirLightFragmentConstants[i] = this._registerCache.getFreeFragmentConstant();\n if (this._shaderLightingObject.lightFragmentConstantIndex == -1)\n this._shaderLightingObject.lightFragmentConstantIndex = this._dirLightFragmentConstants[i].index * 4;\n }\n len = this._pointLightFragmentConstants.length;\n for (i = 0; i < len; ++i) {\n this._pointLightFragmentConstants[i] = this._registerCache.getFreeFragmentConstant();\n if (this._shaderLightingObject.lightFragmentConstantIndex == -1)\n this._shaderLightingObject.lightFragmentConstantIndex = this._pointLightFragmentConstants[i].index * 4;\n }\n };\n /**\n * Compiles the shading code for directional and point lights.\n */\n LightingCompiler.prototype.compileLightCode = function () {\n var diffuseColorReg;\n var specularColorReg;\n var lightPosReg;\n var lightDirReg;\n var vertexRegIndex = 0;\n var fragmentRegIndex = 0;\n var addSpec = this._shaderLightingObject.usesLightsForSpecular;\n var addDiff = this._shaderLightingObject.usesLightsForDiffuse;\n //compile the shading code for directional lights.\n for (var i = 0; i < this._shaderLightingObject.numDirectionalLights; ++i) {\n if (this._shaderLightingObject.usesTangentSpace) {\n lightDirReg = this._dirLightVertexConstants[vertexRegIndex++];\n var lightVarying = this._registerCache.getFreeVarying();\n this._vertexCode += \"m33 \" + lightVarying + \".xyz, \" + lightDirReg + \", \" + this._sharedRegisters.animatedTangent + \"\\n\" +\n \"mov \" + lightVarying + \".w, \" + lightDirReg + \".w\\n\";\n lightDirReg = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addVertexTempUsages(lightDirReg, 1);\n this._postAnimationFragmentCode += \"nrm \" + lightDirReg + \".xyz, \" + lightVarying + \"\\n\" +\n \"mov \" + lightDirReg + \".w, \" + lightVarying + \".w\\n\";\n }\n else {\n lightDirReg = this._dirLightFragmentConstants[fragmentRegIndex++];\n }\n diffuseColorReg = this._dirLightFragmentConstants[fragmentRegIndex++];\n specularColorReg = this._dirLightFragmentConstants[fragmentRegIndex++];\n if (addDiff)\n this._postAnimationFragmentCode += this._renderPass._getPerLightDiffuseFragmentCode(lightDirReg, diffuseColorReg, this._registerCache, this._sharedRegisters);\n if (addSpec)\n this._postAnimationFragmentCode += this._renderPass._getPerLightSpecularFragmentCode(lightDirReg, specularColorReg, this._registerCache, this._sharedRegisters);\n if (this._shaderLightingObject.usesTangentSpace)\n this._registerCache.removeVertexTempUsage(lightDirReg);\n }\n vertexRegIndex = 0;\n fragmentRegIndex = 0;\n //compile the shading code for point lights\n for (var i = 0; i < this._shaderLightingObject.numPointLights; ++i) {\n if (this._shaderLightingObject.usesTangentSpace || !this._shaderLightingObject.usesGlobalPosFragment)\n lightPosReg = this._pointLightVertexConstants[vertexRegIndex++];\n else\n lightPosReg = this._pointLightFragmentConstants[fragmentRegIndex++];\n diffuseColorReg = this._pointLightFragmentConstants[fragmentRegIndex++];\n specularColorReg = this._pointLightFragmentConstants[fragmentRegIndex++];\n lightDirReg = this._registerCache.getFreeFragmentVectorTemp();\n this._registerCache.addFragmentTempUsages(lightDirReg, 1);\n var lightVarying;\n if (this._shaderLightingObject.usesTangentSpace) {\n lightVarying = this._registerCache.getFreeVarying();\n var temp = this._registerCache.getFreeVertexVectorTemp();\n this._vertexCode += \"sub \" + temp + \", \" + lightPosReg + \", \" + this._sharedRegisters.animatedPosition + \"\\n\" +\n \"m33 \" + lightVarying + \".xyz, \" + temp + \", \" + this._sharedRegisters.animatedTangent + \"\\n\" +\n \"mov \" + lightVarying + \".w, \" + this._sharedRegisters.animatedPosition + \".w\\n\";\n }\n else if (!this._shaderLightingObject.usesGlobalPosFragment) {\n lightVarying = this._registerCache.getFreeVarying();\n this._vertexCode += \"sub \" + lightVarying + \", \" + lightPosReg + \", \" + this._sharedRegisters.globalPositionVertex + \"\\n\";\n }\n else {\n lightVarying = lightDirReg;\n this._postAnimationFragmentCode += \"sub \" + lightDirReg + \", \" + lightPosReg + \", \" + this._sharedRegisters.globalPositionVarying + \"\\n\";\n }\n if (this._shaderLightingObject.usesLightFallOff) {\n // calculate attenuation\n this._postAnimationFragmentCode +=\n \"dp3 \" + lightDirReg + \".w, \" + lightVarying + \", \" + lightVarying + \"\\n\" +\n \"sub \" + lightDirReg + \".w, \" + lightDirReg + \".w, \" + diffuseColorReg + \".w\\n\" +\n \"mul \" + lightDirReg + \".w, \" + lightDirReg + \".w, \" + specularColorReg + \".w\\n\" +\n \"sat \" + lightDirReg + \".w, \" + lightDirReg + \".w\\n\" +\n \"sub \" + lightDirReg + \".w, \" + this._sharedRegisters.commons + \".w, \" + lightDirReg + \".w\\n\" +\n \"nrm \" + lightDirReg + \".xyz, \" + lightVarying + \"\\n\";\n }\n else {\n this._postAnimationFragmentCode += \"nrm \" + lightDirReg + \".xyz, \" + lightVarying + \"\\n\" +\n \"mov \" + lightDirReg + \".w, \" + lightVarying + \".w\\n\";\n }\n if (this._shaderLightingObject.lightFragmentConstantIndex == -1)\n this._shaderLightingObject.lightFragmentConstantIndex = lightPosReg.index * 4;\n if (addDiff)\n this._postAnimationFragmentCode += this._renderPass._getPerLightDiffuseFragmentCode(lightDirReg, diffuseColorReg, this._registerCache, this._sharedRegisters);\n if (addSpec)\n this._postAnimationFragmentCode += this._renderPass._getPerLightSpecularFragmentCode(lightDirReg, specularColorReg, this._registerCache, this._sharedRegisters);\n this._registerCache.removeFragmentTempUsage(lightDirReg);\n }\n };\n /**\n * Compiles shading code for light probes.\n */\n LightingCompiler.prototype.compileLightProbeCode = function () {\n var weightReg;\n var weightComponents = [\".x\", \".y\", \".z\", \".w\"];\n var weightRegisters = new Array();\n var i;\n var texReg;\n var addSpec = this._shaderLightingObject.usesProbesForSpecular;\n var addDiff = this._shaderLightingObject.usesProbesForDiffuse;\n if (addDiff)\n this._shaderLightingObject.lightProbeDiffuseIndices = new Array();\n if (addSpec)\n this._shaderLightingObject.lightProbeSpecularIndices = new Array();\n for (i = 0; i < this._pNumProbeRegisters; ++i) {\n weightRegisters[i] = this._registerCache.getFreeFragmentConstant();\n if (i == 0)\n this._shaderLightingObject.probeWeightsIndex = weightRegisters[i].index * 4;\n }\n for (i = 0; i < this._shaderLightingObject.numLightProbes; ++i) {\n weightReg = weightRegisters[Math.floor(i / 4)].toString() + weightComponents[i % 4];\n if (addDiff) {\n texReg = this._registerCache.getFreeTextureReg();\n this._shaderLightingObject.lightProbeDiffuseIndices[i] = texReg.index;\n this._postAnimationFragmentCode += this._renderPass._getPerProbeDiffuseFragmentCode(texReg, weightReg, this._registerCache, this._sharedRegisters);\n }\n if (addSpec) {\n texReg = this._registerCache.getFreeTextureReg();\n this._shaderLightingObject.lightProbeSpecularIndices[i] = texReg.index;\n this._postAnimationFragmentCode += this._renderPass._getPerProbeSpecularFragmentCode(texReg, weightReg, this._registerCache, this._sharedRegisters);\n }\n }\n };\n /**\n * Reset all the indices to \"unused\".\n */\n LightingCompiler.prototype.pInitRegisterIndices = function () {\n _super.prototype.pInitRegisterIndices.call(this);\n this._shaderLightingObject.lightVertexConstantIndex = -1;\n this._shaderLightingObject.lightFragmentConstantIndex = -1;\n this._shaderLightingObject.probeWeightsIndex = -1;\n this._pNumProbeRegisters = Math.ceil(this._shaderLightingObject.numLightProbes / 4);\n //init light data\n if (this._shaderLightingObject.usesTangentSpace || !this._shaderLightingObject.usesGlobalPosFragment) {\n this._pointLightVertexConstants = new Array(this._shaderLightingObject.numPointLights);\n this._pointLightFragmentConstants = new Array(this._shaderLightingObject.numPointLights * 2);\n }\n else {\n this._pointLightFragmentConstants = new Array(this._shaderLightingObject.numPointLights * 3);\n }\n if (this._shaderLightingObject.usesTangentSpace) {\n this._dirLightVertexConstants = new Array(this._shaderLightingObject.numDirectionalLights);\n this._dirLightFragmentConstants = new Array(this._shaderLightingObject.numDirectionalLights * 2);\n }\n else {\n this._dirLightFragmentConstants = new Array(this._shaderLightingObject.numDirectionalLights * 3);\n }\n };\n return LightingCompiler;\n}(CompilerBase));\nexport { LightingCompiler };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shaders/compilers/LightingCompiler.js","import * as tslib_1 from \"tslib\";\nimport { LightSources } from \"@awayjs/scene\";\nimport { ContextGLProfile, ShaderBase } from \"@awayjs/stage\";\nimport { LightingCompiler } from \"./compilers/LightingCompiler\";\n/**\n * ShaderBase keeps track of the number of dependencies for \"named registers\" used across a pass.\n * Named registers are that are not necessarily limited to a single method. They are created by the compiler and\n * passed on to methods. The compiler uses the results to reserve usages through RegisterPool, which can be removed\n * each time a method has been compiled into the shader.\n *\n * @see RegisterPool.addUsage\n */\nvar LightingShader = (function (_super) {\n tslib_1.__extends(LightingShader, _super);\n /**\n * Creates a new MethodCompilerVO object.\n */\n function LightingShader(elementsClass, lightingPass, stage) {\n var _this = _super.call(this, elementsClass, lightingPass, stage) || this;\n _this._includeCasters = true;\n _this._lightingPass = lightingPass;\n return _this;\n }\n LightingShader.prototype._includeDependencies = function () {\n this.numPointLights = this._lightingPass.numPointLights;\n this.numDirectionalLights = this._lightingPass.numDirectionalLights;\n this.numLightProbes = this._lightingPass.numLightProbes;\n var numAllLights = this._lightingPass.numPointLights + this._lightingPass.numDirectionalLights;\n var numLightProbes = this._lightingPass.numLightProbes;\n var diffuseLightSources = this._lightingPass._iUsesDiffuse(this) ? this._lightingPass.diffuseLightSources : 0x00;\n var specularLightSources = this._lightingPass._iUsesSpecular(this) ? this._lightingPass.specularLightSources : 0x00;\n var combinedLightSources = diffuseLightSources | specularLightSources;\n this.usesLightFallOff = this._lightingPass.enableLightFallOff && this.profile != ContextGLProfile.BASELINE_CONSTRAINED;\n this.usesCommonData = this.usesLightFallOff || this.usesCommonData;\n this.numLights = numAllLights + numLightProbes;\n this.usesLights = numAllLights > 0 && (combinedLightSources & LightSources.LIGHTS) != 0;\n this.usesProbes = numLightProbes > 0 && (combinedLightSources & LightSources.PROBES) != 0;\n this.usesLightsForSpecular = numAllLights > 0 && (specularLightSources & LightSources.LIGHTS) != 0;\n this.usesProbesForSpecular = numLightProbes > 0 && (specularLightSources & LightSources.PROBES) != 0;\n this.usesLightsForDiffuse = numAllLights > 0 && (diffuseLightSources & LightSources.LIGHTS) != 0;\n this.usesProbesForDiffuse = numLightProbes > 0 && (diffuseLightSources & LightSources.PROBES) != 0;\n this.usesShadows = this._lightingPass._iUsesShadows(this);\n //IMPORTANT this must occur after shader lighting initialisation above\n _super.prototype._includeDependencies.call(this);\n };\n /**\n * Factory method to create a concrete compiler object for this object\n *\n * @param materialPassVO\n * @returns {away.materials.LightingCompiler}\n */\n LightingShader.prototype.createCompiler = function (elementsClass, pass) {\n return new LightingCompiler(elementsClass, pass, this);\n };\n /**\n *\n *\n * @param renderable\n * @param stage\n * @param camera\n */\n LightingShader.prototype._setRenderState = function (renderable, projection) {\n _super.prototype._setRenderState.call(this, renderable, projection);\n if (this._lightingPass.lightPicker)\n this._lightingPass.lightPicker.collectLights(renderable.sourceEntity);\n if (this.usesLights)\n this.updateLights();\n if (this.usesProbes)\n this.updateProbes();\n };\n /**\n * Updates constant data render state used by the lights. This method is optional for subclasses to implement.\n */\n LightingShader.prototype.updateLights = function () {\n var dirLight;\n var pointLight;\n var i = 0;\n var k = 0;\n var len;\n var dirPos;\n var total = 0;\n var numLightTypes = this.usesShadows ? 2 : 1;\n var l;\n var offset;\n this.ambientR = this.ambientG = this.ambientB = 0;\n l = this.lightVertexConstantIndex;\n k = this.lightFragmentConstantIndex;\n var cast = 0;\n var dirLights = this._lightingPass.lightPicker.directionalLights;\n offset = this._lightingPass.directionalLightsOffset;\n len = this._lightingPass.lightPicker.directionalLights.length;\n if (offset > len) {\n cast = 1;\n offset -= len;\n }\n for (; cast < numLightTypes; ++cast) {\n if (cast)\n dirLights = this._lightingPass.lightPicker.castingDirectionalLights;\n len = dirLights.length;\n if (len > this.numDirectionalLights)\n len = this.numDirectionalLights;\n for (i = 0; i < len; ++i) {\n dirLight = dirLights[offset + i];\n dirPos = dirLight.sceneDirection;\n this.ambientR += dirLight._iAmbientR;\n this.ambientG += dirLight._iAmbientG;\n this.ambientB += dirLight._iAmbientB;\n if (this.usesTangentSpace) {\n var x = -dirPos.x;\n var y = -dirPos.y;\n var z = -dirPos.z;\n this.vertexConstantData[l++] = this._pInverseSceneMatrix[0] * x + this._pInverseSceneMatrix[4] * y + this._pInverseSceneMatrix[8] * z;\n this.vertexConstantData[l++] = this._pInverseSceneMatrix[1] * x + this._pInverseSceneMatrix[5] * y + this._pInverseSceneMatrix[9] * z;\n this.vertexConstantData[l++] = this._pInverseSceneMatrix[2] * x + this._pInverseSceneMatrix[6] * y + this._pInverseSceneMatrix[10] * z;\n this.vertexConstantData[l++] = 1;\n }\n else {\n this.fragmentConstantData[k++] = -dirPos.x;\n this.fragmentConstantData[k++] = -dirPos.y;\n this.fragmentConstantData[k++] = -dirPos.z;\n this.fragmentConstantData[k++] = 1;\n }\n this.fragmentConstantData[k++] = dirLight._iDiffuseR;\n this.fragmentConstantData[k++] = dirLight._iDiffuseG;\n this.fragmentConstantData[k++] = dirLight._iDiffuseB;\n this.fragmentConstantData[k++] = 1;\n this.fragmentConstantData[k++] = dirLight._iSpecularR;\n this.fragmentConstantData[k++] = dirLight._iSpecularG;\n this.fragmentConstantData[k++] = dirLight._iSpecularB;\n this.fragmentConstantData[k++] = 1;\n if (++total == this.numDirectionalLights) {\n // break loop\n i = len;\n cast = numLightTypes;\n }\n }\n }\n // more directional supported than currently picked, need to clamp all to 0\n if (this.numDirectionalLights > total) {\n i = k + (this.numDirectionalLights - total) * 12;\n while (k < i)\n this.fragmentConstantData[k++] = 0;\n }\n total = 0;\n var pointLights = this._lightingPass.lightPicker.pointLights;\n offset = this._lightingPass.pointLightsOffset;\n len = this._lightingPass.lightPicker.pointLights.length;\n if (offset > len) {\n cast = 1;\n offset -= len;\n }\n else {\n cast = 0;\n }\n for (; cast < numLightTypes; ++cast) {\n if (cast)\n pointLights = this._lightingPass.lightPicker.castingPointLights;\n len = pointLights.length;\n for (i = 0; i < len; ++i) {\n pointLight = pointLights[offset + i];\n dirPos = pointLight.scenePosition;\n this.ambientR += pointLight._iAmbientR;\n this.ambientG += pointLight._iAmbientG;\n this.ambientB += pointLight._iAmbientB;\n if (this.usesTangentSpace) {\n x = dirPos.x;\n y = dirPos.y;\n z = dirPos.z;\n this.vertexConstantData[l++] = this._pInverseSceneMatrix[0] * x + this._pInverseSceneMatrix[4] * y + this._pInverseSceneMatrix[8] * z + this._pInverseSceneMatrix[12];\n this.vertexConstantData[l++] = this._pInverseSceneMatrix[1] * x + this._pInverseSceneMatrix[5] * y + this._pInverseSceneMatrix[9] * z + this._pInverseSceneMatrix[13];\n this.vertexConstantData[l++] = this._pInverseSceneMatrix[2] * x + this._pInverseSceneMatrix[6] * y + this._pInverseSceneMatrix[10] * z + this._pInverseSceneMatrix[14];\n this.vertexConstantData[l++] = 1;\n }\n else if (!this.usesGlobalPosFragment) {\n this.vertexConstantData[l++] = dirPos.x;\n this.vertexConstantData[l++] = dirPos.y;\n this.vertexConstantData[l++] = dirPos.z;\n this.vertexConstantData[l++] = 1;\n }\n else {\n this.fragmentConstantData[k++] = dirPos.x;\n this.fragmentConstantData[k++] = dirPos.y;\n this.fragmentConstantData[k++] = dirPos.z;\n this.fragmentConstantData[k++] = 1;\n }\n this.fragmentConstantData[k++] = pointLight._iDiffuseR;\n this.fragmentConstantData[k++] = pointLight._iDiffuseG;\n this.fragmentConstantData[k++] = pointLight._iDiffuseB;\n var radius = pointLight._pRadius;\n this.fragmentConstantData[k++] = radius * radius;\n this.fragmentConstantData[k++] = pointLight._iSpecularR;\n this.fragmentConstantData[k++] = pointLight._iSpecularG;\n this.fragmentConstantData[k++] = pointLight._iSpecularB;\n this.fragmentConstantData[k++] = pointLight._pFallOffFactor;\n if (++total == this.numPointLights) {\n // break loop\n i = len;\n cast = numLightTypes;\n }\n }\n }\n // more directional supported than currently picked, need to clamp all to 0\n if (this.numPointLights > total) {\n i = k + (total - this.numPointLights) * 12;\n for (; k < i; ++k)\n this.fragmentConstantData[k] = 0;\n }\n };\n /**\n * Updates constant data render state used by the light probes. This method is optional for subclasses to implement.\n */\n LightingShader.prototype.updateProbes = function () {\n var probe;\n var lightProbes = this._lightingPass.lightPicker.lightProbes;\n var weights = this._lightingPass.lightPicker.lightProbeWeights;\n var len = lightProbes.length - this._lightingPass.lightProbesOffset;\n var addDiff = this.usesProbesForDiffuse;\n var addSpec = this.usesProbesForSpecular;\n if (!(addDiff || addSpec))\n return;\n if (len > this.numLightProbes)\n len = this.numLightProbes;\n for (var i = 0; i < len; ++i) {\n probe = lightProbes[this._lightingPass.lightProbesOffset + i];\n if (addDiff)\n this._stage.getAbstraction(probe.diffuseMap).activate(this.lightProbeDiffuseIndices[i], probe.diffuseSampler.mipmap);\n if (addSpec)\n this._stage.getAbstraction(probe.specularMap).activate(this.lightProbeSpecularIndices[i], probe.diffuseSampler.mipmap);\n }\n for (i = 0; i < len; ++i)\n this.fragmentConstantData[this.probeWeightsIndex + i] = weights[this._lightingPass.lightProbesOffset + i];\n };\n return LightingShader;\n}(ShaderBase));\nexport { LightingShader };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/shaders/LightingShader.js","/**\n * @class away.sort.NullSort\n */\nvar RenderableNullSort = (function () {\n function RenderableNullSort() {\n }\n RenderableNullSort.prototype.sortBlendedRenderables = function (head) {\n return head;\n };\n RenderableNullSort.prototype.sortOpaqueRenderables = function (head) {\n return head;\n };\n return RenderableNullSort;\n}());\nexport { RenderableNullSort };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/sort/RenderableNullSort.js","import * as tslib_1 from \"tslib\";\nimport { AssetEvent } from \"@awayjs/core\";\nimport { BlendMode } from \"@awayjs/graphics\";\nimport { ContextGLCompareMode, ShaderBase, GL_MaterialPassBase } from \"@awayjs/stage\";\n/**\n * GL_SkyboxMaterial forms an abstract base class for the default shaded materials provided by Stage,\n * using material methods to define their appearance.\n */\nvar GL_SkyboxMaterial = (function (_super) {\n tslib_1.__extends(GL_SkyboxMaterial, _super);\n function GL_SkyboxMaterial(skybox, materialPool) {\n var _this = _super.call(this, skybox, materialPool) || this;\n _this._skybox = skybox;\n _this._shader = new ShaderBase(materialPool.elementsClass, _this, _this._stage);\n _this._texture = _this._shader.getAbstraction(_this._skybox.texture);\n _this._pAddPass(_this);\n return _this;\n }\n GL_SkyboxMaterial.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._texture.onClear(new AssetEvent(AssetEvent.CLEAR, this._skybox.texture));\n this._texture = null;\n this._skybox = null;\n };\n /**\n * @inheritDoc\n */\n GL_SkyboxMaterial.prototype._pUpdateRender = function () {\n _super.prototype._pUpdateRender.call(this);\n this._pRequiresBlending = (this._material.blendMode != BlendMode.NORMAL);\n this.shader.setBlendMode((this._material.blendMode == BlendMode.NORMAL && this._pRequiresBlending) ? BlendMode.LAYER : this._material.blendMode);\n };\n GL_SkyboxMaterial.prototype._includeDependencies = function (shader) {\n _super.prototype._includeDependencies.call(this, shader);\n shader.usesPositionFragment = true;\n };\n /**\n * @inheritDoc\n */\n GL_SkyboxMaterial.prototype._getFragmentCode = function (registerCache, sharedRegisters) {\n return this._texture._getFragmentCode(sharedRegisters.shadedTarget, registerCache, sharedRegisters, sharedRegisters.positionVarying);\n };\n GL_SkyboxMaterial.prototype._setRenderState = function (renderable, projection) {\n _super.prototype._setRenderState.call(this, renderable, projection);\n this._texture._setRenderState(renderable);\n };\n /**\n * @inheritDoc\n */\n GL_SkyboxMaterial.prototype._activate = function (projection) {\n _super.prototype._activate.call(this, projection);\n this._stage.context.setDepthTest(false, ContextGLCompareMode.LESS);\n this._texture.activate();\n };\n return GL_SkyboxMaterial;\n}(GL_MaterialPassBase));\nexport { GL_SkyboxMaterial };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/materials/GL_SkyboxMaterial.js","import { AttributesBuffer, Point, Vector3D } from \"@awayjs/core\";\nimport { Shape, TriangleElements, ParticleData } from \"@awayjs/graphics\";\n/**\n * ...\n */\nvar ParticleGraphicsHelper = (function () {\n function ParticleGraphicsHelper() {\n }\n ParticleGraphicsHelper.generateGraphics = function (output, graphicsArray, transforms) {\n if (transforms === void 0) { transforms = null; }\n var indicesVector = new Array();\n var positionsVector = new Array();\n var normalsVector = new Array();\n var tangentsVector = new Array();\n var uvsVector = new Array();\n var vertexCounters = new Array();\n var particles = new Array();\n var elementsArray = new Array();\n var numParticles = graphicsArray.length;\n var sourceGraphics;\n var sourceElements;\n var numGraphics;\n var indices;\n var positions;\n var normals;\n var tangents;\n var uvs;\n var vertexCounter;\n var elements;\n var i;\n var j;\n var sub2SubMap = new Array();\n var tempVertex = new Vector3D;\n var tempNormal = new Vector3D;\n var tempTangents = new Vector3D;\n var tempUV = new Point;\n for (i = 0; i < numParticles; i++) {\n sourceGraphics = graphicsArray[i];\n numGraphics = sourceGraphics.count;\n for (var srcIndex = 0; srcIndex < numGraphics; srcIndex++) {\n //create a different particle subgeometry group for each source subgeometry in a particle.\n if (sub2SubMap.length <= srcIndex) {\n sub2SubMap.push(elementsArray.length);\n indicesVector.push(new Array());\n positionsVector.push(new Array());\n normalsVector.push(new Array());\n tangentsVector.push(new Array());\n uvsVector.push(new Array());\n elementsArray.push(new TriangleElements(new AttributesBuffer()));\n vertexCounters.push(0);\n }\n sourceElements = sourceGraphics.getShapeAt(srcIndex).elements;\n //add a new particle subgeometry if this source subgeometry will take us over the maxvertex limit\n if (sourceElements.numVertices + vertexCounters[sub2SubMap[srcIndex]] > ParticleGraphicsHelper.MAX_VERTEX) {\n //update submap and add new subgeom vectors\n sub2SubMap[srcIndex] = elementsArray.length;\n indicesVector.push(new Array());\n positionsVector.push(new Array());\n normalsVector.push(new Array());\n tangentsVector.push(new Array());\n uvsVector.push(new Array());\n elementsArray.push(new TriangleElements(new AttributesBuffer()));\n vertexCounters.push(0);\n }\n j = sub2SubMap[srcIndex];\n //select the correct vector\n indices = indicesVector[j];\n positions = positionsVector[j];\n normals = normalsVector[j];\n tangents = tangentsVector[j];\n uvs = uvsVector[j];\n vertexCounter = vertexCounters[j];\n elements = elementsArray[j];\n var particleData = new ParticleData();\n particleData.numVertices = sourceElements.numVertices;\n particleData.startVertexIndex = vertexCounter;\n particleData.particleIndex = i;\n particleData.elements = elements;\n particles.push(particleData);\n vertexCounters[j] += sourceElements.numVertices;\n var k;\n var index;\n var posIndex;\n var normalIndex;\n var tangentIndex;\n var uvIndex;\n var tempLen;\n var compact = sourceElements;\n var sourcePositions;\n var posStride;\n var sourceNormals;\n var normalStride;\n var sourceTangents;\n var tangentStride;\n var sourceUVs;\n var uvStride;\n if (compact) {\n tempLen = compact.numVertices;\n sourcePositions = compact.positions.get(tempLen);\n posStride = compact.positions.stride;\n sourceNormals = compact.normals.get(tempLen);\n normalStride = compact.normals.stride;\n sourceTangents = compact.tangents.get(tempLen);\n tangentStride = compact.tangents.stride;\n sourceUVs = compact.uvs.get(tempLen);\n uvStride = compact.uvs.stride;\n if (transforms) {\n var particleGraphicsTransform = transforms[i];\n var vertexTransform = particleGraphicsTransform.vertexTransform;\n var invVertexTransform = particleGraphicsTransform.invVertexTransform;\n var UVTransform = particleGraphicsTransform.UVTransform;\n for (k = 0; k < tempLen; k++) {\n /*\n * 0 - 2: vertex position X, Y, Z\n * 3 - 5: normal X, Y, Z\n * 6 - 8: tangent X, Y, Z\n * 9 - 10: U V\n * 11 - 12: Secondary U V*/\n posIndex = k * posStride;\n tempVertex.x = sourcePositions[posIndex];\n tempVertex.y = sourcePositions[posIndex + 1];\n tempVertex.z = sourcePositions[posIndex + 2];\n normalIndex = k * normalStride;\n tempNormal.x = sourceNormals[normalIndex];\n tempNormal.y = sourceNormals[normalIndex + 1];\n tempNormal.z = sourceNormals[normalIndex + 2];\n tangentIndex = k * tangentStride;\n tempTangents.x = sourceTangents[tangentIndex];\n tempTangents.y = sourceTangents[tangentIndex + 1];\n tempTangents.z = sourceTangents[tangentIndex + 2];\n uvIndex = k * uvStride;\n tempUV.x = sourceUVs[uvIndex];\n tempUV.y = sourceUVs[uvIndex + 1];\n if (vertexTransform) {\n tempVertex = vertexTransform.transformVector(tempVertex);\n tempNormal = invVertexTransform.deltaTransformVector(tempNormal);\n tempTangents = invVertexTransform.deltaTransformVector(tempNormal);\n }\n if (UVTransform)\n tempUV = UVTransform.transformPoint(tempUV);\n //this is faster than that only push one data\n positions.push(tempVertex.x, tempVertex.y, tempVertex.z);\n normals.push(tempNormal.x, tempNormal.y, tempNormal.z);\n tangents.push(tempTangents.x, tempTangents.y, tempTangents.z);\n uvs.push(tempUV.x, tempUV.y);\n }\n }\n else {\n for (k = 0; k < tempLen; k++) {\n posIndex = k * posStride;\n normalIndex = k * normalStride;\n tangentIndex = k * tangentStride;\n uvIndex = k * uvStride;\n //this is faster than that only push one data\n positions.push(sourcePositions[posIndex], sourcePositions[posIndex + 1], sourcePositions[posIndex + 2]);\n normals.push(sourceNormals[normalIndex], sourceNormals[normalIndex + 1], sourceNormals[normalIndex + 2]);\n tangents.push(sourceTangents[tangentIndex], sourceTangents[tangentIndex + 1], sourceTangents[tangentIndex + 2]);\n uvs.push(sourceUVs[uvIndex], sourceUVs[uvIndex + 1]);\n }\n }\n }\n else {\n }\n tempLen = sourceElements.numElements;\n var sourceIndices = sourceElements.indices.get(tempLen);\n for (k = 0; k < tempLen; k++) {\n index = k * 3;\n indices.push(sourceIndices[index] + vertexCounter, sourceIndices[index + 1] + vertexCounter, sourceIndices[index + 2] + vertexCounter);\n }\n }\n }\n output.particles = particles;\n output.numParticles = numParticles;\n numParticles = elementsArray.length;\n for (i = 0; i < numParticles; i++) {\n elements = elementsArray[i];\n elements.autoDeriveNormals = false;\n elements.autoDeriveTangents = false;\n elements.setIndices(indicesVector[i]);\n elements.setPositions(positionsVector[i]);\n elements.setNormals(normalsVector[i]);\n elements.setTangents(tangentsVector[i]);\n elements.setUVs(uvsVector[i]);\n output.addShape(Shape.getShape(elements));\n }\n };\n return ParticleGraphicsHelper;\n}());\nexport { ParticleGraphicsHelper };\nParticleGraphicsHelper.MAX_VERTEX = 65535;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/ParticleGraphicsHelper.js","/**\n * ...\n */\nvar ParticleGraphicsTransform = (function () {\n function ParticleGraphicsTransform() {\n }\n Object.defineProperty(ParticleGraphicsTransform.prototype, \"vertexTransform\", {\n get: function () {\n return this._defaultVertexTransform;\n },\n set: function (value) {\n this._defaultVertexTransform = value;\n this._defaultInvVertexTransform = value.clone();\n this._defaultInvVertexTransform.invert();\n this._defaultInvVertexTransform.transpose();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleGraphicsTransform.prototype, \"UVTransform\", {\n get: function () {\n return this._defaultUVTransform;\n },\n set: function (value) {\n this._defaultUVTransform = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ParticleGraphicsTransform.prototype, \"invVertexTransform\", {\n get: function () {\n return this._defaultInvVertexTransform;\n },\n enumerable: true,\n configurable: true\n });\n return ParticleGraphicsTransform;\n}());\nexport { ParticleGraphicsTransform };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/utils/ParticleGraphicsTransform.js","import * as tslib_1 from \"tslib\";\nimport { AssetBase } from \"@awayjs/core\";\nimport { ShadingMethodEvent } from \"@awayjs/renderer\";\n/**\n * ShadingMethodBase provides an abstract base method for shading methods, used by compiled passes to compile\n * the final shading program.\n */\nvar ShadingMethodBase = (function (_super) {\n tslib_1.__extends(ShadingMethodBase, _super);\n /**\n * Create a new ShadingMethodBase object.\n */\n function ShadingMethodBase() {\n var _this = _super.call(this) || this;\n _this._textures = new Array();\n _this._owners = new Array();\n _this._counts = new Array();\n return _this;\n }\n /**\n * Cleans up any resources used by the current object.\n */\n ShadingMethodBase.prototype.dispose = function () {\n };\n ShadingMethodBase.prototype.iAddOwner = function (owner) {\n //a method can be used more than once in the same material, so we check for this\n var index = this._owners.indexOf(owner);\n if (index != -1) {\n this._counts[index]++;\n }\n else {\n this._owners.push(owner);\n this._counts.push(1);\n //add textures\n var len = this._textures.length;\n for (var i = 0; i < len; i++)\n owner.addTexture(this._textures[i]);\n }\n };\n ShadingMethodBase.prototype.iRemoveOwner = function (owner) {\n var index = this._owners.indexOf(owner);\n if (this._counts[index] != 1) {\n this._counts[index]--;\n }\n else {\n this._owners.splice(index, 1);\n this._counts.splice(index, 1);\n //remove textures\n var len = this._textures.length;\n for (var i = 0; i < len; i++)\n owner.removeTexture(this._textures[i]);\n }\n };\n /**\n *\n */\n ShadingMethodBase.prototype.iAddTexture = function (texture) {\n this._textures.push(texture);\n var len = this._owners.length;\n for (var i = 0; i < len; i++)\n this._owners[i].addTexture(texture);\n };\n /**\n *\n */\n ShadingMethodBase.prototype.iRemoveTexture = function (texture) {\n this._textures.splice(this._textures.indexOf(texture), 1);\n var len = this._owners.length;\n for (var i = 0; i < len; i++)\n this._owners[i].removeTexture(texture);\n };\n /**\n * Marks the shader program as invalid, so it will be recompiled before the next render.\n *\n * @internal\n */\n ShadingMethodBase.prototype.invalidateShaderProgram = function () {\n this.invalidate();\n this.dispatchEvent(new ShadingMethodEvent(ShadingMethodEvent.SHADER_INVALIDATED));\n };\n /**\n * Copies the state from a ShadingMethodBase object into the current object.\n */\n ShadingMethodBase.prototype.copyFrom = function (method) {\n };\n return ShadingMethodBase;\n}(AssetBase));\nexport { ShadingMethodBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/ShadingMethodBase.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * AmbientBasicMethod provides the default shading method for uniform ambient lighting.\n */\nvar AmbientBasicMethod = (function (_super) {\n tslib_1.__extends(AmbientBasicMethod, _super);\n /**\n * Creates a new AmbientBasicMethod object.\n */\n function AmbientBasicMethod() {\n var _this = _super.call(this) || this;\n _this._alpha = 1;\n _this._strength = 1;\n return _this;\n }\n Object.defineProperty(AmbientBasicMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return AmbientBasicMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AmbientBasicMethod.prototype, \"strength\", {\n /**\n * The strength of the ambient reflection of the surface.\n */\n get: function () {\n return this._strength;\n },\n set: function (value) {\n if (this._strength == value)\n return;\n this._strength = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AmbientBasicMethod.prototype, \"alpha\", {\n /**\n * The alpha component of the surface.\n */\n get: function () {\n return this._alpha;\n },\n set: function (value) {\n if (this._alpha == value)\n return;\n this._alpha = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AmbientBasicMethod.prototype, \"texture\", {\n /**\n * The texture to use to define the diffuse reflection color per texel.\n */\n get: function () {\n return this._texture;\n },\n set: function (value) {\n if (this._texture == value)\n return;\n if (this._texture)\n this.iRemoveTexture(this._texture);\n this._texture = value;\n if (this._texture)\n this.iAddTexture(this._texture);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n AmbientBasicMethod.prototype.copyFrom = function (method) {\n var m = method;\n var b = m;\n };\n return AmbientBasicMethod;\n}(ShadingMethodBase));\nexport { AmbientBasicMethod };\nAmbientBasicMethod.assetType = \"[asset AmbientBasicMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/AmbientBasicMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * DiffuseBasicMethod provides the default shading method for Lambert (dot3) diffuse lighting.\n */\nvar DiffuseBasicMethod = (function (_super) {\n tslib_1.__extends(DiffuseBasicMethod, _super);\n /**\n * Creates a new DiffuseBasicMethod object.\n */\n function DiffuseBasicMethod() {\n var _this = _super.call(this) || this;\n _this._multiply = true;\n _this._ambientColorR = 1;\n _this._ambientColorG = 1;\n _this._ambientColorB = 1;\n _this._color = 0xffffff;\n _this._colorR = 1;\n _this._colorG = 1;\n _this._colorB = 1;\n return _this;\n }\n Object.defineProperty(DiffuseBasicMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return DiffuseBasicMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseBasicMethod.prototype, \"multiply\", {\n /**\n * Set internally if diffuse color component multiplies or replaces the ambient color\n */\n get: function () {\n return this._multiply;\n },\n set: function (value) {\n if (this._multiply == value)\n return;\n this._multiply = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseBasicMethod.prototype, \"color\", {\n /**\n * The color of the diffuse reflection when not using a texture.\n */\n get: function () {\n return this._color;\n },\n set: function (value) {\n if (this._color == value)\n return;\n this._color = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseBasicMethod.prototype, \"texture\", {\n /**\n * The texture to use to define the diffuse reflection color per texel.\n */\n get: function () {\n return this._texture;\n },\n set: function (value) {\n if (this._texture == value)\n return;\n if (this._texture)\n this.iRemoveTexture(this._texture);\n this._texture = value;\n if (this._texture)\n this.iAddTexture(this._texture);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n DiffuseBasicMethod.prototype.dispose = function () {\n this._texture = null;\n };\n /**\n * @inheritDoc\n */\n DiffuseBasicMethod.prototype.copyFrom = function (method) {\n var diff = method;\n this.texture = diff.texture;\n this.multiply = diff.multiply;\n this.color = diff.color;\n };\n return DiffuseBasicMethod;\n}(ShadingMethodBase));\nexport { DiffuseBasicMethod };\nDiffuseBasicMethod.assetType = \"[asset DiffuseBasicMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/DiffuseBasicMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * NormalBasicMethod is the default method for standard tangent-space normal mapping.\n */\nvar NormalBasicMethod = (function (_super) {\n tslib_1.__extends(NormalBasicMethod, _super);\n /**\n * Creates a new NormalBasicMethod object.\n */\n function NormalBasicMethod(texture) {\n if (texture === void 0) { texture = null; }\n var _this = _super.call(this) || this;\n _this._texture = texture;\n if (_this._texture)\n _this.iAddTexture(_this._texture);\n return _this;\n }\n Object.defineProperty(NormalBasicMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return NormalBasicMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NormalBasicMethod.prototype, \"texture\", {\n /**\n * A texture to modulate the direction of the surface for each texel (normal map). The default normal method expects\n * tangent-space normal maps, but others could expect object-space maps.\n */\n get: function () {\n return this._texture;\n },\n set: function (value) {\n if (this._texture == value)\n return;\n if (this._texture)\n this.iRemoveTexture(this._texture);\n this._texture = value;\n if (this._texture)\n this.iAddTexture(this._texture);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n NormalBasicMethod.prototype.copyFrom = function (method) {\n var s = method;\n var bnm = method;\n if (bnm.texture != null)\n this.texture = bnm.texture;\n };\n /**\n * @inheritDoc\n */\n NormalBasicMethod.prototype.dispose = function () {\n if (this._texture)\n this._texture = null;\n };\n return NormalBasicMethod;\n}(ShadingMethodBase));\nexport { NormalBasicMethod };\nNormalBasicMethod.assetType = \"[asset NormalBasicMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/NormalBasicMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * SpecularBasicMethod provides the default shading method for Blinn-Phong specular highlights (an optimized but approximated\n * version of Phong specularity).\n */\nvar SpecularBasicMethod = (function (_super) {\n tslib_1.__extends(SpecularBasicMethod, _super);\n /**\n * Creates a new SpecularBasicMethod object.\n */\n function SpecularBasicMethod() {\n var _this = _super.call(this) || this;\n _this._gloss = 50;\n _this._strength = 1;\n _this._color = 0xffffff;\n return _this;\n }\n Object.defineProperty(SpecularBasicMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return SpecularBasicMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularBasicMethod.prototype, \"gloss\", {\n /**\n * The glossiness of the material (sharpness of the specular highlight).\n */\n get: function () {\n return this._gloss;\n },\n set: function (value) {\n if (this._gloss == value)\n return;\n this._gloss = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularBasicMethod.prototype, \"strength\", {\n /**\n * The overall strength of the specular highlights.\n */\n get: function () {\n return this._strength;\n },\n set: function (value) {\n if (this._strength == value)\n return;\n this._strength = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularBasicMethod.prototype, \"color\", {\n /**\n * The colour of the specular reflection of the surface.\n */\n get: function () {\n return this._color;\n },\n set: function (value) {\n if (this._color == value)\n return;\n this._color = value;\n // specular is now either enabled or disabled\n if (this._color == 0 || value == 0)\n this.invalidateShaderProgram();\n else\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularBasicMethod.prototype, \"texture\", {\n /**\n * A texture that defines the strength of specular reflections for each texel in the red channel,\n * and the gloss factor (sharpness) in the green channel. You can use Specular2DTexture if you want to easily set\n * specular and gloss maps from grayscale images, but correctly authored images are preferred.\n */\n get: function () {\n return this._texture;\n },\n set: function (value) {\n if (this._texture == value)\n return;\n if (this._texture)\n this.iRemoveTexture(this._texture);\n this._texture = value;\n if (this._texture)\n this.iAddTexture(this._texture);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n SpecularBasicMethod.prototype.dispose = function () {\n this._texture = null;\n };\n /**\n * @inheritDoc\n */\n SpecularBasicMethod.prototype.copyFrom = function (method) {\n var m = method;\n var bsm = method;\n var spec = bsm; //SpecularBasicMethod(method);\n this.texture = spec.texture;\n this.strength = spec.strength;\n this.color = spec.color;\n this.gloss = spec.gloss;\n };\n return SpecularBasicMethod;\n}(ShadingMethodBase));\nexport { SpecularBasicMethod };\nSpecularBasicMethod.assetType = \"[asset SpecularBasicMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/SpecularBasicMethod.js","var MethodMaterialMode = (function () {\n function MethodMaterialMode() {\n }\n return MethodMaterialMode;\n}());\nexport { MethodMaterialMode };\n/**\n *\n */\nMethodMaterialMode.SINGLE_PASS = \"singlePass\";\n/**\n *\n */\nMethodMaterialMode.MULTI_PASS = \"multiPass\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/MethodMaterialMode.js","import * as tslib_1 from \"tslib\";\nimport { AssetEvent } from \"@awayjs/core\";\nimport { Image2D, MaterialBase, Single2DTexture } from \"@awayjs/graphics\";\nimport { ContextGLCompareMode } from \"@awayjs/stage\";\nimport { AmbientBasicMethod } from \"./methods/AmbientBasicMethod\";\nimport { DiffuseBasicMethod } from \"./methods/DiffuseBasicMethod\";\nimport { NormalBasicMethod } from \"./methods/NormalBasicMethod\";\nimport { SpecularBasicMethod } from \"./methods/SpecularBasicMethod\";\nimport { MethodMaterialMode } from \"./MethodMaterialMode\";\n/**\n * MethodMaterial forms an abstract base class for the default shaded materials provided by Stage,\n * using material methods to define their appearance.\n */\nvar MethodMaterial = (function (_super) {\n tslib_1.__extends(MethodMaterial, _super);\n function MethodMaterial(imageColor, alpha) {\n if (imageColor === void 0) { imageColor = 0xFFFFFF; }\n if (alpha === void 0) { alpha = 1; }\n var _this = _super.call(this, imageColor, alpha) || this;\n _this._effectMethods = new Array();\n _this._enableLightFallOff = true;\n _this._specularLightSources = 0x01;\n _this._diffuseLightSources = 0x03;\n _this._ambientMethod = new AmbientBasicMethod();\n _this._diffuseMethod = new DiffuseBasicMethod();\n _this._normalMethod = new NormalBasicMethod();\n _this._specularMethod = new SpecularBasicMethod();\n _this._depthCompareMode = ContextGLCompareMode.LESS_EQUAL;\n _this._mode = MethodMaterialMode.SINGLE_PASS;\n //add default methods owners\n _this._ambientMethod.iAddOwner(_this);\n _this._diffuseMethod.iAddOwner(_this);\n _this._normalMethod.iAddOwner(_this);\n _this._specularMethod.iAddOwner(_this);\n _this._onLightChangeDelegate = function (event) { return _this.onLightsChange(event); };\n //set a texture if an image is present\n if (imageColor instanceof Image2D)\n _this._ambientMethod.texture = new Single2DTexture();\n return _this;\n }\n Object.defineProperty(MethodMaterial.prototype, \"assetType\", {\n /**\n *\n */\n get: function () {\n return MethodMaterial.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"lightPicker\", {\n /**\n * The light picker used by the material to provide lights to the material if it supports lighting.\n *\n * @see LightPickerBase\n * @see StaticLightPicker\n */\n get: function () {\n return this._pLightPicker;\n },\n set: function (value) {\n if (this._pLightPicker == value)\n return;\n if (this._pLightPicker)\n this._pLightPicker.removeEventListener(AssetEvent.INVALIDATE, this._onLightChangeDelegate);\n this._pLightPicker = value;\n if (this._pLightPicker)\n this._pLightPicker.addEventListener(AssetEvent.INVALIDATE, this._onLightChangeDelegate);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"enableLightFallOff\", {\n /**\n * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and\n * compatibility for constrained mode.\n */\n get: function () {\n return this._enableLightFallOff;\n },\n set: function (value) {\n if (this._enableLightFallOff == value)\n return;\n this._enableLightFallOff = value;\n this.invalidatePasses();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"diffuseLightSources\", {\n /**\n * Define which light source types to use for diffuse reflections. This allows choosing between regular lights\n * and/or light probes for diffuse reflections.\n *\n * @see away3d.materials.LightSources\n */\n get: function () {\n return this._diffuseLightSources;\n },\n set: function (value) {\n if (this._diffuseLightSources == value)\n return;\n this._diffuseLightSources = value;\n this.invalidatePasses();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"specularLightSources\", {\n /**\n * Define which light source types to use for specular reflections. This allows choosing between regular lights\n * and/or light probes for specular reflections.\n *\n * @see away3d.materials.LightSources\n */\n get: function () {\n return this._specularLightSources;\n },\n set: function (value) {\n if (this._specularLightSources == value)\n return;\n this._specularLightSources = value;\n this.invalidatePasses();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"mode\", {\n get: function () {\n return this._mode;\n },\n set: function (value) {\n if (this._mode == value)\n return;\n this._mode = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"depthCompareMode\", {\n /**\n * The depth compare mode used to render the renderables using this material.\n *\n * @see away.stagegl.ContextGLCompareMode\n */\n get: function () {\n return this._depthCompareMode;\n },\n set: function (value) {\n if (this._depthCompareMode == value)\n return;\n this._depthCompareMode = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"ambientMethod\", {\n /**\n * The method that provides the ambient lighting contribution. Defaults to AmbientBasicMethod.\n */\n get: function () {\n return this._ambientMethod;\n },\n set: function (value) {\n if (this._ambientMethod == value)\n return;\n if (this._ambientMethod)\n this._ambientMethod.iRemoveOwner(this);\n this._ambientMethod = value;\n if (this._ambientMethod)\n this._ambientMethod.iAddOwner(this);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"shadowMethod\", {\n /**\n * The method used to render shadows cast on this surface, or null if no shadows are to be rendered. Defaults to null.\n */\n get: function () {\n return this._shadowMethod;\n },\n set: function (value) {\n if (this._shadowMethod == value)\n return;\n if (this._shadowMethod)\n this._shadowMethod.iRemoveOwner(this);\n this._shadowMethod = value;\n if (this._shadowMethod)\n this._shadowMethod.iAddOwner(this);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"diffuseMethod\", {\n /**\n * The method that provides the diffuse lighting contribution. Defaults to DiffuseBasicMethod.\n */\n get: function () {\n return this._diffuseMethod;\n },\n set: function (value) {\n if (this._diffuseMethod == value)\n return;\n if (this._diffuseMethod)\n this._diffuseMethod.iRemoveOwner(this);\n this._diffuseMethod = value;\n if (this._diffuseMethod)\n this._diffuseMethod.iAddOwner(this);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"specularMethod\", {\n /**\n * The method that provides the specular lighting contribution. Defaults to SpecularBasicMethod.\n */\n get: function () {\n return this._specularMethod;\n },\n set: function (value) {\n if (this._specularMethod == value)\n return;\n if (this._specularMethod)\n this._specularMethod.iRemoveOwner(this);\n this._specularMethod = value;\n if (this._specularMethod)\n this._specularMethod.iAddOwner(this);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"normalMethod\", {\n /**\n * The method used to generate the per-pixel normals. Defaults to NormalBasicMethod.\n */\n get: function () {\n return this._normalMethod;\n },\n set: function (value) {\n if (this._normalMethod == value)\n return;\n if (this._normalMethod)\n this._normalMethod.iRemoveOwner(this);\n this._normalMethod = value;\n if (this._normalMethod)\n this._normalMethod.iAddOwner(this);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodMaterial.prototype, \"numEffectMethods\", {\n get: function () {\n return this._effectMethods.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Appends an \"effect\" shading method to the shader. Effect methods are those that do not influence the lighting\n * but modulate the shaded colour, used for fog, outlines, etc. The method will be applied to the result of the\n * methods added prior.\n */\n MethodMaterial.prototype.addEffectMethod = function (method) {\n method.iAddOwner(this);\n this._effectMethods.push(method);\n this.invalidate();\n };\n /**\n * Returns the method added at the given index.\n * @param index The index of the method to retrieve.\n * @return The method at the given index.\n */\n MethodMaterial.prototype.getEffectMethodAt = function (index) {\n return this._effectMethods[index];\n };\n /**\n * Adds an effect method at the specified index amongst the methods already added to the material. Effect\n * methods are those that do not influence the lighting but modulate the shaded colour, used for fog, outlines,\n * etc. The method will be applied to the result of the methods with a lower index.\n */\n MethodMaterial.prototype.addEffectMethodAt = function (method, index) {\n method.iAddOwner(this);\n this._effectMethods.splice(index, 0, method);\n this.invalidate();\n };\n /**\n * Removes an effect method from the material.\n * @param method The method to be removed.\n */\n MethodMaterial.prototype.removeEffectMethod = function (method) {\n method.iRemoveOwner(this);\n this._effectMethods.splice(this._effectMethods.indexOf(method), 1);\n this.invalidate();\n };\n /**\n * Called when the light picker's configuration changed.\n */\n MethodMaterial.prototype.onLightsChange = function (event) {\n this.invalidate();\n };\n return MethodMaterial;\n}(MaterialBase));\nexport { MethodMaterial };\nMethodMaterial.assetType = \"[materials MethodMaterial]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/MethodMaterial.js","/**\n * MethodVO contains data for a given shader object for the use within a single material.\n * This allows shader methods to be shared across materials while their non-public state differs.\n */\nvar ChunkVO = (function () {\n function ChunkVO() {\n }\n return ChunkVO;\n}());\nexport { ChunkVO };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/data/ChunkVO.js","import * as tslib_1 from \"tslib\";\nimport { AbstractionBase } from \"@awayjs/core\";\nimport { ChunkVO } from \"../data/ChunkVO\";\n/**\n * CompositeChunkBase provides a base class for diffuse methods that wrap a diffuse method to alter the\n * calculated diffuse reflection strength.\n */\nvar CompositeChunkBase = (function (_super) {\n tslib_1.__extends(CompositeChunkBase, _super);\n /**\n * Creates a new CompositeChunkBase object.\n *\n * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature clampDiffuse(t:ShaderRegisterElement, regCache:ShaderRegisterCache):string, in which t.w will contain the diffuse strength.\n * @param baseMethod The base diffuse method on which this method's shading is based.\n */\n function CompositeChunkBase(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this.chunkVO = new ChunkVO();\n _this._baseChunk = shader.getAbstraction(method.baseMethod);\n return _this;\n }\n CompositeChunkBase.prototype._isUsed = function () {\n return true;\n };\n CompositeChunkBase.prototype._usesTangentSpace = function () {\n return this._baseChunk._usesTangentSpace();\n };\n /**\n * @inheritDoc\n */\n CompositeChunkBase.prototype._initVO = function (chunkVO) {\n this._baseChunk._initVO(chunkVO);\n };\n /**\n * @inheritDoc\n */\n CompositeChunkBase.prototype._initConstants = function () {\n this._baseChunk._initConstants();\n };\n /**\n * @inheritDoc\n */\n CompositeChunkBase.prototype._activate = function () {\n this._baseChunk._activate();\n };\n /**\n * @inheritDoc\n */\n CompositeChunkBase.prototype._setRenderState = function (renderable, projection) {\n this._baseChunk._setRenderState(renderable, projection);\n };\n /**\n * @inheritDoc\n */\n CompositeChunkBase.prototype._deactivate = function () {\n this._baseChunk._deactivate();\n this._invalid = false;\n };\n /**\n * @inheritDoc\n */\n CompositeChunkBase.prototype._getVertexCode = function (registerCache, sharedRegisters) {\n return this._baseChunk._getVertexCode(registerCache, sharedRegisters);\n };\n /**\n * @inheritDoc\n */\n CompositeChunkBase.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n return this._baseChunk._getFragmentCode(targetReg, registerCache, sharedRegisters);\n };\n /**\n * @inheritDoc\n */\n CompositeChunkBase.prototype._reset = function (chunkVO) {\n this._baseChunk._reset(chunkVO);\n this._invalid = true;\n this._cleanCompilationData();\n };\n /**\n * @inheritDoc\n */\n CompositeChunkBase.prototype._cleanCompilationData = function () {\n this._baseChunk._cleanCompilationData();\n };\n return CompositeChunkBase;\n}(AbstractionBase));\nexport { CompositeChunkBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/CompositeChunkBase.js","import * as tslib_1 from \"tslib\";\nimport { CompositeChunkBase } from \"./CompositeChunkBase\";\n/**\n * LightingCompositeBase provides a base class for diffuse methods that wrap a diffuse method to alter the\n * calculated diffuse reflection strength.\n */\nvar LightingCompositeChunk = (function (_super) {\n tslib_1.__extends(LightingCompositeChunk, _super);\n function LightingCompositeChunk() {\n return _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n LightingCompositeChunk.prototype._getFragmentPreLightingCode = function (registerCache, sharedRegisters) {\n return this._baseChunk._getFragmentPreLightingCode(registerCache, sharedRegisters);\n };\n /**\n * @inheritDoc\n */\n LightingCompositeChunk.prototype._getFragmentCodePerLight = function (lightDirReg, lightColReg, registerCache, sharedRegisters) {\n var code = this._baseChunk._getFragmentCodePerLight(lightDirReg, lightColReg, registerCache, sharedRegisters);\n this._totalLightColorReg = this._baseChunk._totalLightColorReg;\n return code;\n };\n /**\n * @inheritDoc\n */\n LightingCompositeChunk.prototype._getFragmentCodePerProbe = function (cubeMapReg, weightRegister, registerCache, sharedRegisters) {\n var code = this._baseChunk._getFragmentCodePerProbe(cubeMapReg, weightRegister, registerCache, sharedRegisters);\n this._totalLightColorReg = this._baseChunk._totalLightColorReg;\n return code;\n };\n return LightingCompositeChunk;\n}(CompositeChunkBase));\nexport { LightingCompositeChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/LightingCompositeChunk.js","import * as tslib_1 from \"tslib\";\nimport { AmbientBasicMethod } from \"./AmbientBasicMethod\";\n/**\n * AmbientDepthMethod provides a debug method to visualise depth maps\n */\nvar AmbientDepthMethod = (function (_super) {\n tslib_1.__extends(AmbientDepthMethod, _super);\n /**\n * Creates a new AmbientDepthMethod object.\n */\n function AmbientDepthMethod(castingLight) {\n var _this = _super.call(this) || this;\n _this._castingLight = castingLight;\n castingLight.shadowsEnabled = true;\n _this._shadowMapper = castingLight.shadowMapper;\n _this.iAddTexture(castingLight.shadowMapper.depthMap);\n return _this;\n }\n Object.defineProperty(AmbientDepthMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return AmbientDepthMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AmbientDepthMethod.prototype, \"castingLight\", {\n /**\n * The light casting the shadows.\n */\n get: function () {\n return this._castingLight;\n },\n enumerable: true,\n configurable: true\n });\n return AmbientDepthMethod;\n}(AmbientBasicMethod));\nexport { AmbientDepthMethod };\nAmbientDepthMethod.assetType = \"[asset AmbientDepthMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/AmbientDepthMethod.js","import * as tslib_1 from \"tslib\";\nimport { AbstractMethodError } from \"@awayjs/core\";\nimport { ShadingMethodEvent } from \"@awayjs/renderer\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * CompositeMethodBase provides a base class for diffuse methods that wrap a diffuse method to alter the\n * calculated diffuse reflection strength.\n */\nvar CompositeMethodBase = (function (_super) {\n tslib_1.__extends(CompositeMethodBase, _super);\n /**\n * Creates a new CompositeMethodBase object.\n *\n * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature clampDiffuse(t:ShaderRegisterElement, regCache:ShaderRegisterCache):string, in which t.w will contain the diffuse strength.\n * @param baseMethod The base diffuse method on which this method's shading is based.\n */\n function CompositeMethodBase(baseMethod) {\n if (baseMethod === void 0) { baseMethod = null; }\n var _this = _super.call(this) || this;\n _this._onShaderInvalidatedDelegate = function (event) { return _this.onShaderInvalidated(event); };\n _this._baseMethod = baseMethod || _this.createBaseMethod();\n _this._baseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, _this._onShaderInvalidatedDelegate);\n return _this;\n }\n Object.defineProperty(CompositeMethodBase.prototype, \"baseMethod\", {\n /**\n * The base diffuse method on which this method's shading is based.\n */\n get: function () {\n return this._baseMethod;\n },\n set: function (value) {\n if (this._baseMethod == value)\n return;\n this._baseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);\n this._baseMethod = value;\n this._baseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n CompositeMethodBase.prototype.createBaseMethod = function () {\n throw new AbstractMethodError();\n };\n CompositeMethodBase.prototype.iAddOwner = function (owner) {\n _super.prototype.iAddOwner.call(this, owner);\n this._baseMethod.iAddOwner(owner);\n };\n CompositeMethodBase.prototype.iRemoveOwner = function (owner) {\n _super.prototype.iRemoveOwner.call(this, owner);\n this._baseMethod.iRemoveOwner(owner);\n };\n /**\n * @inheritDoc\n */\n CompositeMethodBase.prototype.dispose = function () {\n this._baseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);\n };\n /**\n * Called when the base method's shader code is invalidated.\n */\n CompositeMethodBase.prototype.onShaderInvalidated = function (event) {\n this.invalidateShaderProgram();\n };\n return CompositeMethodBase;\n}(ShadingMethodBase));\nexport { CompositeMethodBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/CompositeMethodBase.js","import * as tslib_1 from \"tslib\";\nimport { DiffuseBasicMethod } from \"./DiffuseBasicMethod\";\nimport { CompositeMethodBase } from \"./CompositeMethodBase\";\n/**\n * DiffuseCompositeMethod provides a base class for diffuse methods that wrap a diffuse method to alter the\n * calculated diffuse reflection strength.\n */\nvar DiffuseCompositeMethod = (function (_super) {\n tslib_1.__extends(DiffuseCompositeMethod, _super);\n /**\n * Creates a new DiffuseCompositeMethod object.\n *\n * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature clampDiffuse(t:ShaderRegisterElement, regCache:ShaderRegisterCache):string, in which t.w will contain the diffuse strength.\n * @param baseMethod The base diffuse method on which this method's shading is based.\n */\n function DiffuseCompositeMethod(baseMethod) {\n if (baseMethod === void 0) { baseMethod = null; }\n return _super.call(this, baseMethod) || this;\n }\n DiffuseCompositeMethod.prototype.createBaseMethod = function () {\n return new DiffuseBasicMethod();\n };\n Object.defineProperty(DiffuseCompositeMethod.prototype, \"texture\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return this._baseMethod.texture;\n },\n set: function (value) {\n this._baseMethod.texture = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseCompositeMethod.prototype, \"color\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return this._baseMethod.color;\n },\n set: function (value) {\n this._baseMethod.color = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseCompositeMethod.prototype, \"multiply\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return this._baseMethod.multiply;\n },\n set: function (value) {\n this._baseMethod.multiply = value;\n },\n enumerable: true,\n configurable: true\n });\n return DiffuseCompositeMethod;\n}(CompositeMethodBase));\nexport { DiffuseCompositeMethod };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/DiffuseCompositeMethod.js","import * as tslib_1 from \"tslib\";\nimport { DiffuseCompositeMethod } from \"./DiffuseCompositeMethod\";\n/**\n * DiffuseCelMethod provides a shading method to add diffuse cel (cartoon) shading.\n */\nvar DiffuseCelMethod = (function (_super) {\n tslib_1.__extends(DiffuseCelMethod, _super);\n /**\n * Creates a new DiffuseCelMethod object.\n * @param levels The amount of shadow gradations.\n * @param baseMethod An optional diffuse method on which the cartoon shading is based. If omitted, DiffuseBasicMethod is used.\n */\n function DiffuseCelMethod(levels, smoothness, baseMethod) {\n if (levels === void 0) { levels = 3; }\n if (smoothness === void 0) { smoothness = 0.1; }\n if (baseMethod === void 0) { baseMethod = null; }\n var _this = _super.call(this, baseMethod) || this;\n _this._levels = levels;\n _this._smoothness = smoothness;\n return _this;\n }\n Object.defineProperty(DiffuseCelMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return DiffuseCelMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseCelMethod.prototype, \"levels\", {\n /**\n * The amount of shadow gradations.\n */\n get: function () {\n return this._levels;\n },\n set: function (value) {\n this._levels = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseCelMethod.prototype, \"smoothness\", {\n /**\n * The smoothness of the edge between 2 shading levels.\n */\n get: function () {\n return this._smoothness;\n },\n set: function (value) {\n this._smoothness = value;\n },\n enumerable: true,\n configurable: true\n });\n return DiffuseCelMethod;\n}(DiffuseCompositeMethod));\nexport { DiffuseCelMethod };\nDiffuseCelMethod.assetType = \"[asset DiffuseCelMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/DiffuseCelMethod.js","import * as tslib_1 from \"tslib\";\nimport { DiffuseBasicMethod } from \"./DiffuseBasicMethod\";\n/**\n * DiffuseGradientMethod is an alternative to DiffuseBasicMethod in which the shading can be modulated with a gradient\n * to introduce color-tinted shading as opposed to the single-channel diffuse strength. This can be used as a crude\n * approximation to subsurface scattering (for instance, the mid-range shading for skin can be tinted red to similate\n * scattered light within the skin attributing to the final colour)\n */\nvar DiffuseGradientMethod = (function (_super) {\n tslib_1.__extends(DiffuseGradientMethod, _super);\n /**\n * Creates a new DiffuseGradientMethod object.\n * @param gradient A texture that contains the light colour based on the angle. This can be used to change\n * the light colour due to subsurface scattering when the surface faces away from the light.\n */\n function DiffuseGradientMethod(gradient) {\n var _this = _super.call(this) || this;\n _this._gradient = gradient;\n _this.iAddTexture(_this._gradient);\n return _this;\n }\n Object.defineProperty(DiffuseGradientMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return DiffuseGradientMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseGradientMethod.prototype, \"gradient\", {\n /**\n * A texture that contains the light colour based on the angle. This can be used to change the light colour\n * due to subsurface scattering when the surface faces away from the light.\n */\n get: function () {\n return this._gradient;\n },\n set: function (value) {\n if (this._gradient == value)\n return;\n if (this._gradient)\n this.iRemoveTexture(this._gradient);\n this._gradient = value;\n if (this._gradient)\n this.iAddTexture(this._gradient);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n return DiffuseGradientMethod;\n}(DiffuseBasicMethod));\nexport { DiffuseGradientMethod };\nDiffuseGradientMethod.assetType = \"[asset DiffuseGradientMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/DiffuseGradientMethod.js","import * as tslib_1 from \"tslib\";\nimport { DiffuseCompositeMethod } from \"./DiffuseCompositeMethod\";\n/**\n * DiffuseLightMapMethod provides a diffuse shading method that uses a light map to modulate the calculated diffuse\n * lighting. It is different from EffectLightMapMethod in that the latter modulates the entire calculated pixel color, rather\n * than only the diffuse lighting value.\n */\nvar DiffuseLightMapMethod = (function (_super) {\n tslib_1.__extends(DiffuseLightMapMethod, _super);\n /**\n * Creates a new DiffuseLightMapMethod method.\n *\n * @param lightMap The texture containing the light map.\n * @param blendMode The blend mode with which the light map should be applied to the lighting result.\n * @param useSecondaryUV Indicates whether the secondary UV set should be used to map the light map.\n * @param baseMethod The diffuse method used to calculate the regular diffuse-based lighting.\n */\n function DiffuseLightMapMethod(lightMap, blendMode, useSecondaryUV, baseMethod) {\n if (blendMode === void 0) { blendMode = \"multiply\"; }\n if (useSecondaryUV === void 0) { useSecondaryUV = false; }\n if (baseMethod === void 0) { baseMethod = null; }\n var _this = _super.call(this, baseMethod) || this;\n _this._lightMap = lightMap;\n _this.blendMode = blendMode;\n _this._useSecondaryUV = useSecondaryUV;\n if (_this._lightMap)\n _this.iAddTexture(_this._lightMap);\n return _this;\n }\n Object.defineProperty(DiffuseLightMapMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return DiffuseLightMapMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseLightMapMethod.prototype, \"blendMode\", {\n /**\n * The blend mode with which the light map should be applied to the lighting result.\n *\n * @see DiffuseLightMapMethod.ADD\n * @see DiffuseLightMapMethod.MULTIPLY\n */\n get: function () {\n return this._blendMode;\n },\n set: function (value) {\n if (value != DiffuseLightMapMethod.ADD && value != DiffuseLightMapMethod.MULTIPLY)\n throw new Error(\"Unknown blendmode!\");\n if (this._blendMode == value)\n return;\n this._blendMode = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseLightMapMethod.prototype, \"lightMap\", {\n /**\n * The texture containing the light map data.\n */\n get: function () {\n return this._lightMap;\n },\n set: function (value) {\n if (this._lightMap == value)\n return;\n if (this._lightMap)\n this.iRemoveTexture(this._lightMap);\n this._lightMap = value;\n if (this._lightMap)\n this.iAddTexture(this._lightMap);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseLightMapMethod.prototype, \"useSecondaryUV\", {\n /**\n * Indicates whether the secondary UV set should be used to map the light map.\n */\n get: function () {\n return this._useSecondaryUV;\n },\n set: function (value) {\n if (this._useSecondaryUV == value)\n return;\n this._useSecondaryUV = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n return DiffuseLightMapMethod;\n}(DiffuseCompositeMethod));\nexport { DiffuseLightMapMethod };\n/**\n * Indicates the light map should be multiplied with the calculated shading result.\n * This can be used to add pre-calculated shadows or occlusion.\n */\nDiffuseLightMapMethod.MULTIPLY = \"multiply\";\n/**\n * Indicates the light map should be added into the calculated shading result.\n * This can be used to add pre-calculated lighting or global illumination.\n */\nDiffuseLightMapMethod.ADD = \"add\";\nDiffuseLightMapMethod.assetType = \"[asset DiffuseLightMapMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/DiffuseLightMapMethod.js","import * as tslib_1 from \"tslib\";\nimport { DiffuseBasicMethod } from \"./DiffuseBasicMethod\";\n/**\n * DiffuseWrapMethod is an alternative to DiffuseBasicMethod in which the light is allowed to be \"wrapped around\" the normally dark area, to some extent.\n * It can be used as a crude approximation to Oren-Nayar or simple subsurface scattering.\n */\nvar DiffuseWrapMethod = (function (_super) {\n tslib_1.__extends(DiffuseWrapMethod, _super);\n /**\n * Creates a new DiffuseWrapMethod object.\n * @param wrapFactor A factor to indicate the amount by which the light is allowed to wrap\n */\n function DiffuseWrapMethod(wrapFactor) {\n if (wrapFactor === void 0) { wrapFactor = .5; }\n var _this = _super.call(this) || this;\n _this.wrapFactor = wrapFactor;\n return _this;\n }\n Object.defineProperty(DiffuseWrapMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return DiffuseWrapMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DiffuseWrapMethod.prototype, \"wrapFactor\", {\n /**\n * A factor to indicate the amount by which the light is allowed to wrap.\n */\n get: function () {\n return this._wrapFactor;\n },\n set: function (value) {\n this._wrapFactor = value;\n this._wrapFactor = 1 / (value + 1);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return DiffuseWrapMethod;\n}(DiffuseBasicMethod));\nexport { DiffuseWrapMethod };\nDiffuseWrapMethod.assetType = \"[asset DiffuseWrapMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/DiffuseWrapMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * EffectAlphaMaskMethod allows the use of an additional texture to specify the alpha value of the material. When used\n * with the secondary uv set, it allows for a tiled main texture with independently varying alpha (useful for water\n * etc).\n */\nvar EffectAlphaMaskMethod = (function (_super) {\n tslib_1.__extends(EffectAlphaMaskMethod, _super);\n /**\n * Creates a new EffectAlphaMaskMethod object.\n *\n * @param texture The texture to use as the alpha mask.\n * @param useSecondaryUV Indicated whether or not the secondary uv set for the mask. This allows mapping alpha independently.\n */\n function EffectAlphaMaskMethod(texture, useSecondaryUV) {\n if (useSecondaryUV === void 0) { useSecondaryUV = false; }\n var _this = _super.call(this) || this;\n _this._texture = texture;\n _this._useSecondaryUV = useSecondaryUV;\n if (_this._texture)\n _this.iAddTexture(_this._texture);\n return _this;\n }\n Object.defineProperty(EffectAlphaMaskMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectAlphaMaskMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectAlphaMaskMethod.prototype, \"texture\", {\n /**\n * The texture to use as the alpha mask.\n */\n get: function () {\n return this._texture;\n },\n set: function (value) {\n if (this._texture == value)\n return;\n if (this._texture)\n this.iRemoveTexture(this._texture);\n this._texture = value;\n if (this._texture)\n this.iAddTexture(this._texture);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectAlphaMaskMethod.prototype, \"useSecondaryUV\", {\n /**\n * Indicated whether or not the secondary uv set for the mask. This allows mapping alpha independently, for\n * instance to tile the main texture and normal map while providing untiled alpha, for example to define the\n * transparency over a tiled water surface.\n */\n get: function () {\n return this._useSecondaryUV;\n },\n set: function (value) {\n if (this._useSecondaryUV == value)\n return;\n this._useSecondaryUV = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n return EffectAlphaMaskMethod;\n}(ShadingMethodBase));\nexport { EffectAlphaMaskMethod };\nEffectAlphaMaskMethod.assetType = \"[asset EffectAlphaMaskMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectAlphaMaskMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * EffectColorMatrixMethod provides a shading method that changes the colour of a material analogous to a ColorMatrixFilter.\n */\nvar EffectColorMatrixMethod = (function (_super) {\n tslib_1.__extends(EffectColorMatrixMethod, _super);\n /**\n * Creates a new EffectColorTransformMethod.\n *\n * @param matrix An array of 20 items for 4 x 5 color transform.\n */\n function EffectColorMatrixMethod(matrix) {\n var _this = _super.call(this) || this;\n if (matrix.length != 20)\n throw new Error(\"Matrix length must be 20!\");\n _this._matrix = matrix;\n return _this;\n }\n Object.defineProperty(EffectColorMatrixMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectColorMatrixMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectColorMatrixMethod.prototype, \"matrix\", {\n /**\n * The 4 x 5 matrix to transform the color of the material.\n */\n get: function () {\n return this._matrix;\n },\n set: function (value) {\n if (value.length != 20)\n throw new Error(\"Matrix length must be 20!\");\n this._matrix = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return EffectColorMatrixMethod;\n}(ShadingMethodBase));\nexport { EffectColorMatrixMethod };\nEffectColorMatrixMethod.assetType = \"[asset EffectColorMatrixMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectColorMatrixMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * EffectColorTransformMethod provides a shading method that changes the colour of a material analogous to a\n * ColorTransform object.\n */\nvar EffectColorTransformMethod = (function (_super) {\n tslib_1.__extends(EffectColorTransformMethod, _super);\n /**\n * Creates a new EffectColorTransformMethod.\n */\n function EffectColorTransformMethod(colorTransform) {\n if (colorTransform === void 0) { colorTransform = null; }\n var _this = _super.call(this) || this;\n _this._colorTransform = colorTransform;\n return _this;\n }\n Object.defineProperty(EffectColorTransformMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectColorTransformMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectColorTransformMethod.prototype, \"colorTransform\", {\n /**\n * The ColorTransform object to transform the colour of the material with.\n */\n get: function () {\n return this._colorTransform;\n },\n set: function (value) {\n this._colorTransform = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return EffectColorTransformMethod;\n}(ShadingMethodBase));\nexport { EffectColorTransformMethod };\nEffectColorTransformMethod.assetType = \"[asset EffectColorTransformMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectColorTransformMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * EffectEnvMapMethod provides a material method to perform reflection mapping using cube maps.\n */\nvar EffectEnvMapMethod = (function (_super) {\n tslib_1.__extends(EffectEnvMapMethod, _super);\n /**\n * Creates an EffectEnvMapMethod object.\n * @param envMap The environment map containing the reflected scene.\n * @param alpha The reflectivity of the surface.\n */\n function EffectEnvMapMethod(envMap, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var _this = _super.call(this) || this;\n _this._envMap = envMap;\n _this._alpha = alpha;\n _this.iAddTexture(_this._envMap);\n return _this;\n }\n Object.defineProperty(EffectEnvMapMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectEnvMapMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectEnvMapMethod.prototype, \"envMap\", {\n /**\n * The cubic environment map containing the reflected scene.\n */\n get: function () {\n return this._envMap;\n },\n set: function (value) {\n if (this._envMap == value)\n return;\n if (this._envMap)\n this.iRemoveTexture(this._envMap);\n this._envMap = value;\n if (this._envMap)\n this.iAddTexture(this._envMap);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectEnvMapMethod.prototype, \"mask\", {\n /**\n * An optional texture to modulate the reflectivity of the surface.\n */\n get: function () {\n return this._mask;\n },\n set: function (value) {\n if (value == this._mask)\n return;\n if (this._mask)\n this.iRemoveTexture(this._mask);\n this._mask = value;\n if (this._mask)\n this.iAddTexture(this._mask);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectEnvMapMethod.prototype, \"alpha\", {\n /**\n * The reflectivity of the surface.\n */\n get: function () {\n return this._alpha;\n },\n set: function (value) {\n this._alpha = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n EffectEnvMapMethod.prototype.dispose = function () {\n };\n return EffectEnvMapMethod;\n}(ShadingMethodBase));\nexport { EffectEnvMapMethod };\nEffectEnvMapMethod.assetType = \"[asset EffectEnvMapMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectEnvMapMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * EffectFogMethod provides a method to add distance-based fog to a material.\n */\nvar EffectFogMethod = (function (_super) {\n tslib_1.__extends(EffectFogMethod, _super);\n /**\n * Creates a new EffectFogMethod object.\n * @param minDistance The distance from which the fog starts appearing.\n * @param maxDistance The distance at which the fog is densest.\n * @param fogColor The colour of the fog.\n */\n function EffectFogMethod(minDistance, maxDistance, fogColor) {\n if (minDistance === void 0) { minDistance = 0; }\n if (maxDistance === void 0) { maxDistance = 1000; }\n if (fogColor === void 0) { fogColor = 0x808080; }\n var _this = _super.call(this) || this;\n _this._minDistance = minDistance;\n _this._maxDistance = maxDistance;\n _this._fogColor = fogColor;\n return _this;\n }\n Object.defineProperty(EffectFogMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectFogMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectFogMethod.prototype, \"minDistance\", {\n /**\n * The distance from which the fog starts appearing.\n */\n get: function () {\n return this._minDistance;\n },\n set: function (value) {\n this._minDistance = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectFogMethod.prototype, \"maxDistance\", {\n /**\n * The distance at which the fog is densest.\n */\n get: function () {\n return this._maxDistance;\n },\n set: function (value) {\n this._maxDistance = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectFogMethod.prototype, \"fogColor\", {\n /**\n * The colour of the fog.\n */\n get: function () {\n return this._fogColor;\n },\n set: function (value) {\n this._fogColor = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return EffectFogMethod;\n}(ShadingMethodBase));\nexport { EffectFogMethod };\nEffectFogMethod.assetType = \"[asset EffectFogMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectFogMethod.js","import * as tslib_1 from \"tslib\";\nimport { EffectEnvMapMethod } from \"./EffectEnvMapMethod\";\n/**\n * EffectFresnelEnvMapMethod provides a method to add fresnel-based reflectivity to an object using cube maps, which gets\n * stronger as the viewing angle becomes more grazing.\n */\nvar EffectFresnelEnvMapMethod = (function (_super) {\n tslib_1.__extends(EffectFresnelEnvMapMethod, _super);\n /**\n * Creates a new EffectFresnelEnvMapMethod object.\n *\n * @param envMap The environment map containing the reflected scene.\n * @param alpha The reflectivity of the material.\n */\n function EffectFresnelEnvMapMethod(envMap, alpha, fresnelPower, normalReflectance) {\n if (alpha === void 0) { alpha = 1; }\n if (fresnelPower === void 0) { fresnelPower = 5; }\n if (normalReflectance === void 0) { normalReflectance = 0; }\n var _this = _super.call(this, envMap, alpha) || this;\n _this._fresnelPower = fresnelPower;\n _this._normalReflectance = normalReflectance;\n return _this;\n }\n Object.defineProperty(EffectFresnelEnvMapMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectFresnelEnvMapMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectFresnelEnvMapMethod.prototype, \"fresnelPower\", {\n /**\n * The power used in the Fresnel equation. Higher values make the fresnel effect more pronounced. Defaults to 5.\n */\n get: function () {\n return this._fresnelPower;\n },\n set: function (value) {\n this._fresnelPower = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectFresnelEnvMapMethod.prototype, \"normalReflectance\", {\n /**\n * The minimum amount of reflectance, ie the reflectance when the view direction is normal to the surface or light direction.\n */\n get: function () {\n return this._normalReflectance;\n },\n set: function (value) {\n if (this._normalReflectance == value)\n return;\n this._normalReflectance = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return EffectFresnelEnvMapMethod;\n}(EffectEnvMapMethod));\nexport { EffectFresnelEnvMapMethod };\nEffectFresnelEnvMapMethod.assetType = \"[asset EffectFresnelEnvMapMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectFresnelEnvMapMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * EffectLightMapMethod provides a method that allows applying a light map texture to the calculated pixel colour.\n * It is different from DiffuseLightMapMethod in that the latter only modulates the diffuse shading value rather\n * than the whole pixel colour.\n */\nvar EffectLightMapMethod = (function (_super) {\n tslib_1.__extends(EffectLightMapMethod, _super);\n /**\n * Creates a new EffectLightMapMethod object.\n *\n * @param lightMap The texture containing the light map.\n * @param blendMode The blend mode with which the light map should be applied to the lighting result.\n * @param useSecondaryUV Indicates whether the secondary UV set should be used to map the light map.\n */\n function EffectLightMapMethod(lightMap, blendMode, useSecondaryUV) {\n if (blendMode === void 0) { blendMode = \"multiply\"; }\n if (useSecondaryUV === void 0) { useSecondaryUV = false; }\n var _this = _super.call(this) || this;\n if (blendMode != EffectLightMapMethod.ADD && blendMode != EffectLightMapMethod.MULTIPLY)\n throw new Error(\"Unknown blendmode!\");\n _this._lightMap = lightMap;\n _this._blendMode = blendMode;\n _this._useSecondaryUV = useSecondaryUV;\n if (_this._lightMap)\n _this.iAddTexture(_this._lightMap);\n return _this;\n }\n Object.defineProperty(EffectLightMapMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectLightMapMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectLightMapMethod.prototype, \"blendMode\", {\n /**\n * The blend mode with which the light map should be applied to the lighting result.\n *\n * @see EffectLightMapMethod.ADD\n * @see EffectLightMapMethod.MULTIPLY\n */\n get: function () {\n return this._blendMode;\n },\n set: function (value) {\n if (this._blendMode == value)\n return;\n if (value != EffectLightMapMethod.ADD && value != EffectLightMapMethod.MULTIPLY)\n throw new Error(\"Unknown blendmode!\");\n this._blendMode = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectLightMapMethod.prototype, \"lightMap\", {\n /**\n * The lightMap containing the light map.\n */\n get: function () {\n return this._lightMap;\n },\n set: function (value) {\n if (this._lightMap == value)\n return;\n if (this._lightMap)\n this.iRemoveTexture(this._lightMap);\n this._lightMap = value;\n if (this._lightMap)\n this.iAddTexture(this._lightMap);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectLightMapMethod.prototype, \"useSecondaryUV\", {\n /**\n * Indicates whether the secondary UV set should be used to map the light map.\n */\n get: function () {\n return this._useSecondaryUV;\n },\n set: function (value) {\n if (this._useSecondaryUV == value)\n return;\n this._useSecondaryUV = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n return EffectLightMapMethod;\n}(ShadingMethodBase));\nexport { EffectLightMapMethod };\n/**\n * Indicates the light map should be multiplied with the calculated shading result.\n */\nEffectLightMapMethod.MULTIPLY = \"multiply\";\n/**\n * Indicates the light map should be added into the calculated shading result.\n */\nEffectLightMapMethod.ADD = \"add\";\nEffectLightMapMethod.assetType = \"[asset EffectLightMapMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectLightMapMethod.js","import * as tslib_1 from \"tslib\";\nimport { TextureProjectorEvent } from \"@awayjs/scene\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * ProjectiveTextureMethod is a material method used to project a texture unto the surface of an object.\n * This can be used for various effects apart from acting like a normal projector, such as projecting fake shadows\n * unto a surface, the impact of light coming through a stained glass window, ...\n */\nvar EffectProjectiveTextureMethod = (function (_super) {\n tslib_1.__extends(EffectProjectiveTextureMethod, _super);\n /**\n * Creates a new ProjectiveTextureMethod object.\n *\n * @param projector The TextureProjector object that defines the projection properties as well as the texture.\n * @param mode The blend mode with which the texture is blended unto the surface.\n *\n * @see away3d.entities.TextureProjector\n */\n function EffectProjectiveTextureMethod(projector, mode, exposure) {\n if (mode === void 0) { mode = \"multiply\"; }\n if (exposure === void 0) { exposure = 1; }\n var _this = _super.call(this) || this;\n _this._onTextureChangedDelegate = function (event) { return _this._onTextureChanged(event); };\n _this._projector = projector;\n _this._exposure = exposure;\n _this._mode = mode;\n _this._projector.addEventListener(TextureProjectorEvent.TEXTURE_CHANGE, _this._onTextureChangedDelegate);\n return _this;\n }\n Object.defineProperty(EffectProjectiveTextureMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectProjectiveTextureMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectProjectiveTextureMethod.prototype, \"exposure\", {\n /**\n *\n */\n get: function () {\n return this._exposure;\n },\n set: function (value) {\n if (this._exposure == value)\n return;\n this._exposure = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectProjectiveTextureMethod.prototype, \"mode\", {\n /**\n * The blend mode with which the texture is blended unto the object.\n * ProjectiveTextureMethod.MULTIPLY can be used to project shadows. To prevent clamping, the texture's alpha should be white!\n * ProjectiveTextureMethod.ADD can be used to project light, such as a slide projector or light coming through stained glass. To prevent clamping, the texture's alpha should be black!\n * ProjectiveTextureMethod.MIX provides normal alpha blending. To prevent clamping, the texture's alpha should be transparent!\n */\n get: function () {\n return this._mode;\n },\n set: function (value) {\n if (this._mode == value)\n return;\n this._mode = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectProjectiveTextureMethod.prototype, \"projector\", {\n /**\n * The TextureProjector object that defines the projection properties as well as the texture.\n *\n * @see away3d.entities.TextureProjector\n */\n get: function () {\n return this._projector;\n },\n set: function (value) {\n if (this._projector == value)\n return;\n if (this._projector)\n this._projector.removeEventListener(TextureProjectorEvent.TEXTURE_CHANGE, this._onTextureChangedDelegate);\n this._projector = value;\n if (this._projector)\n this._projector.addEventListener(TextureProjectorEvent.TEXTURE_CHANGE, this._onTextureChangedDelegate);\n this.updateTexture();\n },\n enumerable: true,\n configurable: true\n });\n EffectProjectiveTextureMethod.prototype._onTextureChanged = function (event) {\n this.updateTexture();\n };\n EffectProjectiveTextureMethod.prototype.updateTexture = function () {\n if (this._texture)\n this.iRemoveTexture(this._texture);\n this._texture = (this._projector) ? this._projector.texture : null;\n if (this._texture)\n this.iAddTexture(this._texture);\n this.invalidateShaderProgram();\n };\n return EffectProjectiveTextureMethod;\n}(ShadingMethodBase));\nexport { EffectProjectiveTextureMethod };\nEffectProjectiveTextureMethod.OVERLAY = \"overlay\";\nEffectProjectiveTextureMethod.MULTIPLY = \"multiply\";\nEffectProjectiveTextureMethod.ADD = \"add\";\nEffectProjectiveTextureMethod.MIX = \"mix\";\nEffectProjectiveTextureMethod.assetType = \"[asset EffectProjectiveTextureMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectProjectiveTextureMethod.js","import * as tslib_1 from \"tslib\";\nimport { EffectEnvMapMethod } from \"./EffectEnvMapMethod\";\n/**\n * EffectRefractionEnvMapMethod provides a method to add refracted transparency based on cube maps.\n */\nvar EffectRefractionEnvMapMethod = (function (_super) {\n tslib_1.__extends(EffectRefractionEnvMapMethod, _super);\n /**\n * Creates a new EffectRefractionEnvMapMethod object. Example values for dispersion are: dispersionR: -0.03, dispersionG: -0.01, dispersionB: = .0015\n *\n * @param envMap The environment map containing the refracted scene.\n * @param refractionIndex The refractive index of the material.\n * @param dispersionR The amount of chromatic dispersion of the red channel. Defaults to 0 (none).\n * @param dispersionG The amount of chromatic dispersion of the green channel. Defaults to 0 (none).\n * @param dispersionB The amount of chromatic dispersion of the blue channel. Defaults to 0 (none).\n */\n function EffectRefractionEnvMapMethod(envMap, alpha, refractionIndex, dispersionR, dispersionG, dispersionB) {\n if (alpha === void 0) { alpha = 1; }\n if (refractionIndex === void 0) { refractionIndex = .1; }\n if (dispersionR === void 0) { dispersionR = 0; }\n if (dispersionG === void 0) { dispersionG = 0; }\n if (dispersionB === void 0) { dispersionB = 0; }\n var _this = _super.call(this, envMap, alpha) || this;\n _this._dispersionR = 0;\n _this._dispersionG = 0;\n _this._dispersionB = 0;\n _this._refractionIndex = refractionIndex;\n _this._dispersionR = dispersionR;\n _this._dispersionG = dispersionG;\n _this._dispersionB = dispersionB;\n return _this;\n }\n Object.defineProperty(EffectRefractionEnvMapMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectRefractionEnvMapMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectRefractionEnvMapMethod.prototype, \"refractionIndex\", {\n /**\n * The refractive index of the material.\n */\n get: function () {\n return this._refractionIndex;\n },\n set: function (value) {\n this._refractionIndex = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectRefractionEnvMapMethod.prototype, \"dispersionR\", {\n /**\n * The amount of chromatic dispersion of the red channel. Defaults to 0 (none).\n */\n get: function () {\n return this._dispersionR;\n },\n set: function (value) {\n if (this._dispersionR == value)\n return;\n this._dispersionR = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectRefractionEnvMapMethod.prototype, \"dispersionG\", {\n /**\n * The amount of chromatic dispersion of the green channel. Defaults to 0 (none).\n */\n get: function () {\n return this._dispersionG;\n },\n set: function (value) {\n if (this._dispersionG == value)\n return;\n this._dispersionG = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectRefractionEnvMapMethod.prototype, \"dispersionB\", {\n /**\n * The amount of chromatic dispersion of the blue channel. Defaults to 0 (none).\n */\n get: function () {\n return this._dispersionB;\n },\n set: function (value) {\n if (this._dispersionB == value)\n return;\n this._dispersionB = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n return EffectRefractionEnvMapMethod;\n}(EffectEnvMapMethod));\nexport { EffectRefractionEnvMapMethod };\nEffectRefractionEnvMapMethod.assetType = \"[asset EffectRefractionEnvMapMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectRefractionEnvMapMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * EffectRimLightMethod provides a method to add rim lighting to a material. This adds a glow-like effect to edges of objects.\n */\nvar EffectRimLightMethod = (function (_super) {\n tslib_1.__extends(EffectRimLightMethod, _super);\n /**\n * Creates a new EffectRimLightMethod object.\n *\n * @param color The colour of the rim light.\n * @param strength The strength of the rim light.\n * @param power The power of the rim light. Higher values will result in a higher edge fall-off.\n * @param blend The blend mode with which to add the light to the object.\n */\n function EffectRimLightMethod(color, strength, power, blend) {\n if (color === void 0) { color = 0xffffff; }\n if (strength === void 0) { strength = .4; }\n if (power === void 0) { power = 2; }\n if (blend === void 0) { blend = \"mix\"; }\n var _this = _super.call(this) || this;\n _this._blendMode = blend;\n _this._strength = strength;\n _this._power = power;\n _this._color = color;\n return _this;\n }\n Object.defineProperty(EffectRimLightMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return EffectRimLightMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectRimLightMethod.prototype, \"color\", {\n /**\n * The color of the rim light.\n */\n get: function () {\n return this._color;\n },\n set: function (value /*uint*/) {\n if (this._power == value)\n return;\n this._color = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectRimLightMethod.prototype, \"strength\", {\n /**\n * The strength of the rim light.\n */\n get: function () {\n return this._strength;\n },\n set: function (value) {\n if (this._strength == value)\n return;\n this._strength = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectRimLightMethod.prototype, \"power\", {\n /**\n * The power of the rim light. Higher values will result in a higher edge fall-off.\n */\n get: function () {\n return this._power;\n },\n set: function (value) {\n if (this._power == value)\n return;\n this._power = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EffectRimLightMethod.prototype, \"blendMode\", {\n /**\n * The blend mode with which to add the light to the object.\n *\n * EffectRimLightMethod.MULTIPLY multiplies the rim light with the material's colour.\n * EffectRimLightMethod.ADD adds the rim light with the material's colour.\n * EffectRimLightMethod.MIX provides normal alpha blending.\n */\n get: function () {\n return this._blendMode;\n },\n set: function (value) {\n if (this._blendMode == value)\n return;\n this._blendMode = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n return EffectRimLightMethod;\n}(ShadingMethodBase));\nexport { EffectRimLightMethod };\nEffectRimLightMethod.ADD = \"add\";\nEffectRimLightMethod.MULTIPLY = \"multiply\";\nEffectRimLightMethod.MIX = \"mix\";\nEffectRimLightMethod.assetType = \"[asset EffectRimLightMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/EffectRimLightMethod.js","import * as tslib_1 from \"tslib\";\nimport { NormalBasicMethod } from \"./NormalBasicMethod\";\n/**\n * NormalHeightMapMethod provides a normal map method that uses a height map to calculate the normals.\n */\nvar NormalHeightMapMethod = (function (_super) {\n tslib_1.__extends(NormalHeightMapMethod, _super);\n /**\n * Creates a new NormalHeightMapMethod method.\n *\n * @param heightMap The texture containing the height data. 0 means low, 1 means high.\n * @param worldWidth The width of the 'world'. This is used to map uv coordinates' u component to scene dimensions.\n * @param worldHeight The height of the 'world'. This is used to map the height map values to scene dimensions.\n * @param worldDepth The depth of the 'world'. This is used to map uv coordinates' v component to scene dimensions.\n */\n function NormalHeightMapMethod(heightMap, worldWidth, worldHeight, worldDepth) {\n var _this = _super.call(this) || this;\n _this.texture = heightMap;\n _this._worldXYRatio = worldWidth / worldHeight;\n _this._worldXZRatio = worldDepth / worldHeight;\n return _this;\n }\n Object.defineProperty(NormalHeightMapMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return NormalHeightMapMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NormalHeightMapMethod.prototype, \"worldXYRatio\", {\n get: function () {\n return this._worldXYRatio;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NormalHeightMapMethod.prototype, \"worldXZRatio\", {\n get: function () {\n return this._worldXZRatio;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n NormalHeightMapMethod.prototype.copyFrom = function (method) {\n _super.prototype.copyFrom.call(this, method);\n this._worldXYRatio = method._worldXYRatio;\n this._worldXZRatio = method._worldXZRatio;\n };\n return NormalHeightMapMethod;\n}(NormalBasicMethod));\nexport { NormalHeightMapMethod };\nNormalHeightMapMethod.assetType = \"[asset NormalHeightMapMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/NormalHeightMapMethod.js","import * as tslib_1 from \"tslib\";\nimport { NormalBasicMethod } from \"./NormalBasicMethod\";\n/**\n * NormalSimpleWaterMethod provides a basic normal map method to create water ripples by translating two wave normal maps.\n */\nvar NormalSimpleWaterMethod = (function (_super) {\n tslib_1.__extends(NormalSimpleWaterMethod, _super);\n /**\n * Creates a new NormalSimpleWaterMethod object.\n * @param waveMap1 A normal map containing one layer of a wave structure.\n * @param waveMap2 A normal map containing a second layer of a wave structure.\n */\n function NormalSimpleWaterMethod(normalMap, secondaryNormalMap) {\n if (normalMap === void 0) { normalMap = null; }\n if (secondaryNormalMap === void 0) { secondaryNormalMap = null; }\n var _this = _super.call(this, normalMap) || this;\n _this._water1OffsetX = 0;\n _this._water1OffsetY = 0;\n _this._water2OffsetX = 0;\n _this._water2OffsetY = 0;\n _this._secondaryNormalMap = secondaryNormalMap;\n if (_this._secondaryNormalMap)\n _this.iAddTexture(_this._secondaryNormalMap);\n return _this;\n }\n Object.defineProperty(NormalSimpleWaterMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return NormalSimpleWaterMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NormalSimpleWaterMethod.prototype, \"water1OffsetX\", {\n /**\n * The translation of the first wave layer along the X-axis.\n */\n get: function () {\n return this._water1OffsetX;\n },\n set: function (value) {\n this._water1OffsetX = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NormalSimpleWaterMethod.prototype, \"water1OffsetY\", {\n /**\n * The translation of the first wave layer along the Y-axis.\n */\n get: function () {\n return this._water1OffsetY;\n },\n set: function (value) {\n this._water1OffsetY = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NormalSimpleWaterMethod.prototype, \"water2OffsetX\", {\n /**\n * The translation of the second wave layer along the X-axis.\n */\n get: function () {\n return this._water2OffsetX;\n },\n set: function (value) {\n this._water2OffsetX = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NormalSimpleWaterMethod.prototype, \"water2OffsetY\", {\n /**\n * The translation of the second wave layer along the Y-axis.\n */\n get: function () {\n return this._water2OffsetY;\n },\n set: function (value) {\n this._water2OffsetY = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NormalSimpleWaterMethod.prototype, \"secondaryNormalMap\", {\n /**\n * A second normal map that will be combined with the first to create a wave-like animation pattern.\n */\n get: function () {\n return this._secondaryNormalMap;\n },\n set: function (value) {\n if (this._secondaryNormalMap == value)\n return;\n if (this._secondaryNormalMap)\n this.iRemoveTexture(this._secondaryNormalMap);\n this._secondaryNormalMap = value;\n if (this._secondaryNormalMap)\n this.iAddTexture(this._secondaryNormalMap);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n NormalSimpleWaterMethod.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n this._secondaryNormalMap = null;\n };\n return NormalSimpleWaterMethod;\n}(NormalBasicMethod));\nexport { NormalSimpleWaterMethod };\nNormalSimpleWaterMethod.assetType = \"[asset NormalSimpleWaterMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/NormalSimpleWaterMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadingMethodBase } from \"./ShadingMethodBase\";\n/**\n * ShadowMethodBase provides an abstract base method for shadow map methods.\n */\nvar ShadowMethodBase = (function (_super) {\n tslib_1.__extends(ShadowMethodBase, _super);\n /**\n * Creates a new ShadowMethodBase object.\n * @param castingLight The light used to cast shadows.\n */\n function ShadowMethodBase(castingLight) {\n var _this = _super.call(this) || this;\n _this._epsilon = .02;\n _this._alpha = 1;\n castingLight.shadowsEnabled = true;\n _this._castingLight = castingLight;\n _this.iAddTexture(castingLight.shadowMapper.depthMap);\n return _this;\n }\n Object.defineProperty(ShadowMethodBase.prototype, \"alpha\", {\n /**\n * The \"transparency\" of the shadows. This allows making shadows less strong.\n */\n get: function () {\n return this._alpha;\n },\n set: function (value) {\n this._alpha = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowMethodBase.prototype, \"castingLight\", {\n /**\n * The light casting the shadows.\n */\n get: function () {\n return this._castingLight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowMethodBase.prototype, \"epsilon\", {\n /**\n * A small value to counter floating point precision errors when comparing values in the shadow map with the\n * calculated depth value. Increase this if shadow banding occurs, decrease it if the shadow seems to be too detached.\n */\n get: function () {\n return this._epsilon;\n },\n set: function (value) {\n this._epsilon = value;\n },\n enumerable: true,\n configurable: true\n });\n return ShadowMethodBase;\n}(ShadingMethodBase));\nexport { ShadowMethodBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/ShadowMethodBase.js","import * as tslib_1 from \"tslib\";\nimport { ShadowMethodBase } from \"./ShadowMethodBase\";\n/**\n * ShadowHardMethod provides the cheapest shadow map method by using a single tap without any filtering.\n */\nvar ShadowHardMethod = (function (_super) {\n tslib_1.__extends(ShadowHardMethod, _super);\n function ShadowHardMethod() {\n return _super.apply(this, arguments) || this;\n }\n Object.defineProperty(ShadowHardMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return ShadowHardMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n return ShadowHardMethod;\n}(ShadowMethodBase));\nexport { ShadowHardMethod };\nShadowHardMethod.assetType = \"[asset ShadowHardMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/ShadowHardMethod.js","import * as tslib_1 from \"tslib\";\nimport { AssetEvent } from \"@awayjs/core\";\nimport { DirectionalLight } from \"@awayjs/scene\";\nimport { CompositeMethodBase } from \"./CompositeMethodBase\";\nimport { ShadowHardMethod } from \"./ShadowHardMethod\";\n/**\n * ShadowCompositeMethod is a shadow map method to apply cascade shadow mapping on materials.\n * Must be used with a DirectionalLight with a CascadeShadowMapper assigned to its shadowMapper property.\n *\n * @see away.lights.CascadeShadowMapper\n */\nvar ShadowCompositeMethod = (function (_super) {\n tslib_1.__extends(ShadowCompositeMethod, _super);\n /**\n * Creates a new ShadowCompositeMethod object.\n *\n * @param shadowMethodBase The shadow map sampling method used to sample individual cascades (fe: ShadowHardMethod, ShadowSoftMethod)\n */\n function ShadowCompositeMethod(baseMethod) {\n var _this = _super.call(this, baseMethod) || this;\n if (!(baseMethod.castingLight instanceof DirectionalLight))\n throw new Error(\"ShadowCompositeMethod is only compatible with DirectionalLight\");\n baseMethod.castingLight.shadowMapper.addEventListener(AssetEvent.INVALIDATE, function (event) { return _this.onShadowMapperInvalidate(event); });\n return _this;\n }\n Object.defineProperty(ShadowCompositeMethod.prototype, \"castingLight\", {\n /**\n * The light casting the shadows.\n */\n get: function () {\n return this._baseMethod.castingLight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowCompositeMethod.prototype, \"alpha\", {\n /**\n *\n */\n get: function () {\n return this._baseMethod.alpha;\n },\n set: function (value) {\n this._baseMethod.alpha = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowCompositeMethod.prototype, \"epsilon\", {\n /**\n *\n */\n get: function () {\n return this._baseMethod.epsilon;\n },\n set: function (value) {\n this._baseMethod.epsilon = value;\n },\n enumerable: true,\n configurable: true\n });\n ShadowCompositeMethod.prototype.createBaseMethod = function () {\n return new ShadowHardMethod(new DirectionalLight());\n };\n /**\n * Called when the shadow mappers cascade configuration changes.\n */\n ShadowCompositeMethod.prototype.onShadowMapperInvalidate = function (event) {\n this.invalidateShaderProgram();\n };\n return ShadowCompositeMethod;\n}(CompositeMethodBase));\nexport { ShadowCompositeMethod };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/ShadowCompositeMethod.js","import * as tslib_1 from \"tslib\";\nimport { CascadeShadowMapper } from \"@awayjs/scene\";\nimport { ShadowCompositeMethod } from \"./ShadowCompositeMethod\";\n/**\n * ShadowCascadeMethod is a shadow map method to apply cascade shadow mapping on materials.\n * Must be used with a DirectionalLight with a CascadeShadowMapper assigned to its shadowMapper property.\n *\n * @see away.lights.CascadeShadowMapper\n */\nvar ShadowCascadeMethod = (function (_super) {\n tslib_1.__extends(ShadowCascadeMethod, _super);\n /**\n * Creates a new ShadowCascadeMethod object.\n *\n * @param shadowMethodBase The shadow map sampling method used to sample individual cascades (fe: ShadowHardMethod, ShadowSoftMethod)\n */\n function ShadowCascadeMethod(baseMethod) {\n var _this = _super.call(this, baseMethod) || this;\n if (!(baseMethod.castingLight.shadowMapper instanceof CascadeShadowMapper))\n throw new Error(\"ShadowCascadeMethod requires a light that has a CascadeShadowMapper instance assigned to shadowMapper.\");\n return _this;\n }\n Object.defineProperty(ShadowCascadeMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return ShadowCascadeMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowCascadeMethod.prototype, \"cascadeShadowMapper\", {\n get: function () {\n return this._baseMethod.castingLight.shadowMapper;\n },\n enumerable: true,\n configurable: true\n });\n return ShadowCascadeMethod;\n}(ShadowCompositeMethod));\nexport { ShadowCascadeMethod };\nShadowCascadeMethod.assetType = \"[asset ShadowCascadeMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/ShadowCascadeMethod.js","import * as tslib_1 from \"tslib\";\nimport { BitmapImage2D, Single2DTexture } from \"@awayjs/graphics\";\nimport { ShadowMethodBase } from \"./ShadowMethodBase\";\n/**\n * ShadowDitheredMethod provides a soft shadowing technique by randomly distributing sample points differently for each fragment.\n */\nvar ShadowDitheredMethod = (function (_super) {\n tslib_1.__extends(ShadowDitheredMethod, _super);\n /**\n * Creates a new ShadowDitheredMethod object.\n * @param castingLight The light casting the shadows\n * @param numSamples The amount of samples to take for dithering. Minimum 1, maximum 24.\n */\n function ShadowDitheredMethod(castingLight, numSamples, range) {\n if (numSamples === void 0) { numSamples = 4; }\n if (range === void 0) { range = 1; }\n var _this = _super.call(this, castingLight) || this;\n _this._depthMapSize = _this._castingLight.shadowMapper.depthMapSize;\n _this.numSamples = numSamples;\n _this.range = range;\n ++ShadowDitheredMethod._grainUsages;\n if (!ShadowDitheredMethod._grainTexture)\n _this.initGrainTexture();\n return _this;\n }\n Object.defineProperty(ShadowDitheredMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return ShadowDitheredMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowDitheredMethod.prototype, \"numSamples\", {\n /**\n * The amount of samples to take for dithering. Minimum 1, maximum 24. The actual maximum may depend on the\n * complexity of the shader.\n */\n get: function () {\n return this._numSamples;\n },\n set: function (value) {\n if (value < 1)\n value = 1;\n else if (value > 24)\n value = 24;\n if (this._numSamples == value)\n return;\n this._numSamples = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowDitheredMethod.prototype, \"range\", {\n /**\n * The range in the shadow map in which to distribute the samples.\n */\n get: function () {\n return this._range * 2;\n },\n set: function (value) {\n this._range = value / 2;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates a texture containing the dithering noise texture.\n */\n ShadowDitheredMethod.prototype.initGrainTexture = function () {\n ShadowDitheredMethod._grainBitmapImage2D = new BitmapImage2D(64, 64, false);\n var vec = new Array();\n var len = 4096;\n var step = 1 / (this._depthMapSize * this._range);\n var r, g;\n for (var i = 0; i < len; ++i) {\n r = 2 * (Math.random() - .5);\n g = 2 * (Math.random() - .5);\n if (r < 0)\n r -= step;\n else\n r += step;\n if (g < 0)\n g -= step;\n else\n g += step;\n if (r > 1)\n r = 1;\n else if (r < -1)\n r = -1;\n if (g > 1)\n g = 1;\n else if (g < -1)\n g = -1;\n vec[i] = (Math.floor((r * .5 + .5) * 0xff) << 16) | (Math.floor((g * .5 + .5) * 0xff) << 8);\n }\n ShadowDitheredMethod._grainBitmapImage2D.setArray(ShadowDitheredMethod._grainBitmapImage2D.rect, vec);\n ShadowDitheredMethod._grainTexture = new Single2DTexture(ShadowDitheredMethod._grainBitmapImage2D);\n };\n /**\n * @inheritDoc\n */\n ShadowDitheredMethod.prototype.dispose = function () {\n if (--ShadowDitheredMethod._grainUsages == 0) {\n ShadowDitheredMethod._grainTexture.dispose();\n ShadowDitheredMethod._grainBitmapImage2D.dispose();\n ShadowDitheredMethod._grainTexture = null;\n }\n };\n return ShadowDitheredMethod;\n}(ShadowMethodBase));\nexport { ShadowDitheredMethod };\nShadowDitheredMethod.assetType = \"[asset ShadowDitheredMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/ShadowDitheredMethod.js","import * as tslib_1 from \"tslib\";\nimport { ShadowMethodBase } from \"./ShadowMethodBase\";\n/**\n * ShadowFilteredMethod provides a softened shadowing technique by bilinearly interpolating shadow comparison\n * results of neighbouring pixels.\n */\nvar ShadowFilteredMethod = (function (_super) {\n tslib_1.__extends(ShadowFilteredMethod, _super);\n function ShadowFilteredMethod() {\n return _super.apply(this, arguments) || this;\n }\n Object.defineProperty(ShadowFilteredMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return ShadowFilteredMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n return ShadowFilteredMethod;\n}(ShadowMethodBase));\nexport { ShadowFilteredMethod };\nShadowFilteredMethod.assetType = \"[asset ShadowFilteredMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/ShadowFilteredMethod.js","import * as tslib_1 from \"tslib\";\nimport { NearDirectionalShadowMapper } from \"@awayjs/scene\";\nimport { ShadowCompositeMethod } from \"./ShadowCompositeMethod\";\n// TODO: shadow mappers references in materials should be an interface so that this class should NOT extend ShadowMapMethodBase just for some delegation work\n/**\n * ShadowNearMethod provides a shadow map method that restricts the shadowed area near the camera to optimize\n * shadow map usage. This method needs to be used in conjunction with a NearDirectionalShadowMapper.\n *\n * @see away.lights.NearDirectionalShadowMapper\n */\nvar ShadowNearMethod = (function (_super) {\n tslib_1.__extends(ShadowNearMethod, _super);\n /**\n * Creates a new ShadowNearMethod object.\n * @param baseMethod The shadow map sampling method used to sample individual cascades (fe: ShadowHardMethod, ShadowSoftMethod)\n * @param fadeRatio The amount of shadow fading to the outer shadow area. A value of 1 would mean the shadows start fading from the camera's near plane.\n */\n function ShadowNearMethod(baseMethod, fadeRatio) {\n if (baseMethod === void 0) { baseMethod = null; }\n if (fadeRatio === void 0) { fadeRatio = .1; }\n var _this = _super.call(this, baseMethod) || this;\n _this._fadeRatio = fadeRatio;\n if (!(baseMethod.castingLight.shadowMapper instanceof NearDirectionalShadowMapper))\n throw new Error(\"ShadowNearMethod requires a light that has a NearDirectionalShadowMapper instance assigned to shadowMapper.\");\n return _this;\n }\n Object.defineProperty(ShadowNearMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return ShadowNearMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowNearMethod.prototype, \"fadeRatio\", {\n /**\n * The amount of shadow fading to the outer shadow area. A value of 1 would mean the shadows start fading from the camera's near plane.\n */\n get: function () {\n return this._fadeRatio;\n },\n set: function (value) {\n this._fadeRatio = value;\n },\n enumerable: true,\n configurable: true\n });\n return ShadowNearMethod;\n}(ShadowCompositeMethod));\nexport { ShadowNearMethod };\nShadowNearMethod.assetType = \"[asset ShadowNearMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/ShadowNearMethod.js","import * as tslib_1 from \"tslib\";\nimport { PoissonLookup } from \"@awayjs/core\";\nimport { ShadowMethodBase } from \"./ShadowMethodBase\";\n/**\n * ShadowSoftMethod provides a soft shadowing technique by randomly distributing sample points.\n */\nvar ShadowSoftMethod = (function (_super) {\n tslib_1.__extends(ShadowSoftMethod, _super);\n /**\n * Creates a new DiffuseBasicMethod object.\n *\n * @param castingLight The light casting the shadows\n * @param numSamples The amount of samples to take for dithering. Minimum 1, maximum 32.\n */\n function ShadowSoftMethod(castingLight, numSamples, range) {\n if (numSamples === void 0) { numSamples = 5; }\n if (range === void 0) { range = 1; }\n var _this = _super.call(this, castingLight) || this;\n _this.numSamples = numSamples;\n _this.range = range;\n return _this;\n }\n Object.defineProperty(ShadowSoftMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return ShadowSoftMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowSoftMethod.prototype, \"offsets\", {\n get: function () {\n return this._offsets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowSoftMethod.prototype, \"numSamples\", {\n /**\n * The amount of samples to take for dithering. Minimum 1, maximum 32. The actual maximum may depend on the\n * complexity of the shader.\n */\n get: function () {\n return this._numSamples;\n },\n set: function (value) {\n this._numSamples = value;\n if (this._numSamples < 1)\n this._numSamples = 1;\n else if (this._numSamples > 32)\n this._numSamples = 32;\n this._offsets = PoissonLookup.getDistribution(this._numSamples);\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ShadowSoftMethod.prototype, \"range\", {\n /**\n * The range in the shadow map in which to distribute the samples.\n */\n get: function () {\n return this._range;\n },\n set: function (value) {\n this._range = value;\n },\n enumerable: true,\n configurable: true\n });\n return ShadowSoftMethod;\n}(ShadowMethodBase));\nexport { ShadowSoftMethod };\nShadowSoftMethod.assetType = \"[asset ShadowSoftMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/ShadowSoftMethod.js","import * as tslib_1 from \"tslib\";\nimport { SpecularBasicMethod } from \"./SpecularBasicMethod\";\n/**\n * SpecularAnisotropicMethod provides a specular method resulting in anisotropic highlights. These are typical for\n * surfaces with microfacet details such as tiny grooves. In particular, this uses the Heidrich-Seidel distrubution.\n * The tangent vectors are used as the surface groove directions.\n */\nvar SpecularAnisotropicMethod = (function (_super) {\n tslib_1.__extends(SpecularAnisotropicMethod, _super);\n /**\n * Creates a new SpecularAnisotropicMethod object.\n */\n function SpecularAnisotropicMethod() {\n return _super.call(this) || this;\n }\n Object.defineProperty(SpecularAnisotropicMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return SpecularAnisotropicMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n return SpecularAnisotropicMethod;\n}(SpecularBasicMethod));\nexport { SpecularAnisotropicMethod };\nSpecularAnisotropicMethod.assetType = \"[asset SpecularAnisotropicMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/SpecularAnisotropicMethod.js","import * as tslib_1 from \"tslib\";\nimport { CompositeMethodBase } from \"./CompositeMethodBase\";\nimport { SpecularBasicMethod } from \"./SpecularBasicMethod\";\n/**\n * SpecularCompositeMethod provides a base class for specular methods that wrap a specular method to alter the\n * calculated specular reflection strength.\n */\nvar SpecularCompositeMethod = (function (_super) {\n tslib_1.__extends(SpecularCompositeMethod, _super);\n /**\n * Creates a new SpecularCompositeMethod object.\n *\n * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature clampDiffuse(t:ShaderRegisterElement, regCache:ShaderRegisterCache):string, in which t.w will contain the diffuse strength.\n * @param baseMethod The base specular method on which this method's shading is based.\n */\n function SpecularCompositeMethod(baseMethod) {\n if (baseMethod === void 0) { baseMethod = null; }\n return _super.call(this, baseMethod) || this;\n }\n SpecularCompositeMethod.prototype.createBaseMethod = function () {\n return new SpecularBasicMethod();\n };\n Object.defineProperty(SpecularCompositeMethod.prototype, \"gloss\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return this._baseMethod.gloss;\n },\n set: function (value) {\n this._baseMethod.gloss = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularCompositeMethod.prototype, \"strength\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return this._baseMethod.strength;\n },\n set: function (value) {\n this._baseMethod.strength = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularCompositeMethod.prototype, \"color\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return this._baseMethod.color;\n },\n /**\n * @inheritDoc\n */\n set: function (value) {\n this._baseMethod.color = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularCompositeMethod.prototype, \"texture\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return this._baseMethod.texture;\n },\n set: function (value) {\n this._baseMethod.texture = value;\n },\n enumerable: true,\n configurable: true\n });\n return SpecularCompositeMethod;\n}(CompositeMethodBase));\nexport { SpecularCompositeMethod };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/SpecularCompositeMethod.js","import * as tslib_1 from \"tslib\";\nimport { SpecularCompositeMethod } from \"./SpecularCompositeMethod\";\n/**\n * SpecularCelMethod provides a shading method to add specular cel (cartoon) shading.\n */\nvar SpecularCelMethod = (function (_super) {\n tslib_1.__extends(SpecularCelMethod, _super);\n /**\n * Creates a new SpecularCelMethod object.\n * @param specularCutOff The threshold at which the specular highlight should be shown.\n * @param smoothness The smoothness of the highlight edge.\n * @param baseMethod An optional specular method on which the cartoon shading is based. If ommitted, SpecularBasicMethod is used.\n */\n function SpecularCelMethod(specularCutOff, smoothness, baseMethod) {\n if (specularCutOff === void 0) { specularCutOff = 0.5; }\n if (smoothness === void 0) { smoothness = 0.1; }\n if (baseMethod === void 0) { baseMethod = null; }\n var _this = _super.call(this, baseMethod) || this;\n _this._specularCutOff = specularCutOff;\n _this._smoothness = smoothness;\n return _this;\n }\n Object.defineProperty(SpecularCelMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return SpecularCelMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularCelMethod.prototype, \"smoothness\", {\n /**\n * The smoothness of the highlight edge.\n */\n get: function () {\n return this._smoothness;\n },\n set: function (value) {\n if (this._smoothness == value)\n return;\n this._smoothness = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularCelMethod.prototype, \"specularCutOff\", {\n /**\n * The threshold at which the specular highlight should be shown.\n */\n get: function () {\n return this._specularCutOff;\n },\n set: function (value) {\n if (this._specularCutOff == value)\n return;\n this._specularCutOff = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return SpecularCelMethod;\n}(SpecularCompositeMethod));\nexport { SpecularCelMethod };\nSpecularCelMethod.assetType = \"[asset SpecularCelMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/SpecularCelMethod.js","import * as tslib_1 from \"tslib\";\nimport { SpecularCompositeMethod } from \"./SpecularCompositeMethod\";\n/**\n * SpecularFresnelMethod provides a specular shading method that causes stronger highlights on grazing view angles.\n */\nvar SpecularFresnelMethod = (function (_super) {\n tslib_1.__extends(SpecularFresnelMethod, _super);\n /**\n * Creates a new SpecularFresnelMethod object.\n * @param basedOnSurface Defines whether the fresnel effect should be based on the view angle on the surface (if true), or on the angle between the light and the view.\n * @param baseMethod The specular method to which the fresnel equation. Defaults to SpecularBasicMethod.\n */\n function SpecularFresnelMethod(basedOnSurface, fresnelPower, normalReflectance, baseMethod) {\n if (basedOnSurface === void 0) { basedOnSurface = true; }\n if (fresnelPower === void 0) { fresnelPower = 5; }\n if (normalReflectance === void 0) { normalReflectance = 0.028; }\n if (baseMethod === void 0) { baseMethod = null; }\n var _this = _super.call(this, baseMethod) || this;\n _this._basedOnSurface = basedOnSurface;\n _this._fresnelPower = fresnelPower;\n _this._normalReflectance = normalReflectance;\n return _this;\n }\n Object.defineProperty(SpecularFresnelMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return SpecularFresnelMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularFresnelMethod.prototype, \"basedOnSurface\", {\n /**\n * Defines whether the fresnel effect should be based on the view angle on the surface (if true), or on the angle between the light and the view.\n */\n get: function () {\n return this._basedOnSurface;\n },\n set: function (value) {\n if (this._basedOnSurface == value)\n return;\n this._basedOnSurface = value;\n this.invalidateShaderProgram();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularFresnelMethod.prototype, \"fresnelPower\", {\n /**\n * The power used in the Fresnel equation. Higher values make the fresnel effect more pronounced. Defaults to 5.\n */\n get: function () {\n return this._fresnelPower;\n },\n set: function (value) {\n if (this._fresnelPower == value)\n return;\n this._fresnelPower = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SpecularFresnelMethod.prototype, \"normalReflectance\", {\n /**\n * The minimum amount of reflectance, ie the reflectance when the view direction is normal to the surface or light direction.\n */\n get: function () {\n return this._normalReflectance;\n },\n set: function (value) {\n if (this._normalReflectance == value)\n return;\n this._normalReflectance = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return SpecularFresnelMethod;\n}(SpecularCompositeMethod));\nexport { SpecularFresnelMethod };\nSpecularFresnelMethod.assetType = \"[asset SpecularFresnelMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/SpecularFresnelMethod.js","import * as tslib_1 from \"tslib\";\nimport { SpecularBasicMethod } from \"./SpecularBasicMethod\";\n/**\n * SpecularPhongMethod provides a specular method that provides Phong highlights.\n */\nvar SpecularPhongMethod = (function (_super) {\n tslib_1.__extends(SpecularPhongMethod, _super);\n /**\n * Creates a new SpecularPhongMethod object.\n */\n function SpecularPhongMethod() {\n return _super.call(this) || this;\n }\n Object.defineProperty(SpecularPhongMethod.prototype, \"assetType\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return SpecularPhongMethod.assetType;\n },\n enumerable: true,\n configurable: true\n });\n return SpecularPhongMethod;\n}(SpecularBasicMethod));\nexport { SpecularPhongMethod };\nSpecularPhongMethod.assetType = \"[asset SpecularPhongMethod]\";\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/methods/SpecularPhongMethod.js","import * as tslib_1 from \"tslib\";\nimport { AbstractionBase } from \"@awayjs/core\";\nimport { ChunkVO } from \"../data/ChunkVO\";\n/**\n * ShaderChunkBase provides an abstract base method for shading methods, used by compiled passes to compile\n * the final shading program.\n */\nvar ShaderChunkBase = (function (_super) {\n tslib_1.__extends(ShaderChunkBase, _super);\n /**\n * Create a new ShaderChunkBase object.\n */\n function ShaderChunkBase(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this.chunkVO = new ChunkVO();\n _this._stage = shader._stage;\n return _this;\n }\n /**\n *\n */\n ShaderChunkBase.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._stage = null;\n };\n ShaderChunkBase.prototype._isUsed = function () {\n return true;\n };\n ShaderChunkBase.prototype._usesTangentSpace = function () {\n return true;\n };\n /**\n * Initializes the properties for a MethodVO, including register and texture indices.\n *\n * @param methodVO The MethodVO object linking this method with the pass currently being compiled.\n *\n * @internal\n */\n ShaderChunkBase.prototype._initVO = function (chunkVO) {\n };\n /**\n * Initializes unchanging shader constants using the data from a MethodVO.\n *\n * @param methodVO The MethodVO object linking this method with the pass currently being compiled.\n *\n * @internal\n */\n ShaderChunkBase.prototype._initConstants = function () {\n };\n /**\n * Resets the compilation state of the method.\n *\n * @internal\n */\n ShaderChunkBase.prototype._reset = function (chunkVO) {\n this._invalid = true;\n chunkVO.useChunk = false;\n chunkVO.needsProjection = false;\n chunkVO.needsView = false;\n chunkVO.needsNormals = false;\n chunkVO.needsTangents = false;\n chunkVO.needsGlobalVertexPos = false;\n chunkVO.needsGlobalFragmentPos = false;\n this._cleanCompilationData();\n };\n /**\n * Resets the method's state for compilation.\n *\n * @internal\n */\n ShaderChunkBase.prototype._cleanCompilationData = function () {\n };\n /**\n * Get the vertex shader code for this method.\n * @param vo The MethodVO object linking this method with the pass currently being compiled.\n * @param regCache The register cache used during the compilation.\n *\n * @internal\n */\n ShaderChunkBase.prototype._getVertexCode = function (registerCache, sharedRegisters) {\n return \"\";\n };\n /**\n * @inheritDoc\n */\n ShaderChunkBase.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n return \"\";\n };\n /**\n * Sets the render state for this method.\n *\n * @param methodVO The MethodVO object linking this method with the pass currently being compiled.\n * @param stage The Stage object currently used for rendering.\n *\n * @internal\n */\n ShaderChunkBase.prototype._activate = function () {\n };\n /**\n * Sets the render state for a single renderable.\n *\n * @param vo The MethodVO object linking this method with the pass currently being compiled.\n * @param renderable The renderable currently being rendered.\n * @param stage The Stage object currently used for rendering.\n * @param camera The camera from which the scene is currently rendered.\n *\n * @internal\n */\n ShaderChunkBase.prototype._setRenderState = function (renderable, projection) {\n };\n /**\n * Clears the render state for this method.\n * @param vo The MethodVO object linking this method with the pass currently being compiled.\n * @param stage The Stage object currently used for rendering.\n *\n * @internal\n */\n ShaderChunkBase.prototype._deactivate = function () {\n this._invalid = false;\n };\n return ShaderChunkBase;\n}(AbstractionBase));\nexport { ShaderChunkBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/ShaderChunkBase.js","import * as tslib_1 from \"tslib\";\nimport { AssetEvent } from \"@awayjs/core\";\nimport { MappingMode } from \"@awayjs/graphics\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * AmbientBasicChunk provides the default shading method for uniform ambient lighting.\n */\nvar AmbientBasicChunk = (function (_super) {\n tslib_1.__extends(AmbientBasicChunk, _super);\n /**\n * Creates a new AmbientBasicChunk object.\n */\n function AmbientBasicChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n *\n */\n AmbientBasicChunk.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._method = null;\n this._shader = null;\n if (this._texture) {\n this._texture.onClear(new AssetEvent(AssetEvent.CLEAR, this._method.texture));\n this._texture = null;\n }\n };\n /**\n * @inheritDoc\n */\n AmbientBasicChunk.prototype._initVO = function (chunkVO) {\n if (this._method.texture) {\n this._texture = this._shader.getAbstraction(this._method.texture);\n if (this._method.texture.mappingMode == MappingMode.CUBE)\n chunkVO.needsNormals = true;\n else\n this._shader.uvDependencies++;\n }\n else if (this._texture) {\n this._texture = null;\n }\n };\n /**\n * @inheritDoc\n */\n AmbientBasicChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n if (this._texture) {\n code += this._texture._getFragmentCode(targetReg, registerCache, sharedRegisters, (this._method.texture.mappingMode == MappingMode.CUBE) ? sharedRegisters.normalFragment : sharedRegisters.uvVarying);\n if (this._shader.alphaThreshold > 0) {\n var cutOffReg = registerCache.getFreeFragmentConstant();\n this._colorIndex = cutOffReg.index * 4;\n code += \"sub \" + targetReg + \".w, \" + targetReg + \".w, \" + cutOffReg + \".x\\n\" +\n \"kil \" + targetReg + \".w\\n\" +\n \"add \" + targetReg + \".w, \" + targetReg + \".w, \" + cutOffReg + \".x\\n\";\n }\n }\n else {\n var ambientInputRegister = registerCache.getFreeFragmentConstant();\n this._colorIndex = ambientInputRegister.index * 4;\n code += \"mov \" + targetReg + \", \" + ambientInputRegister + \"\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n AmbientBasicChunk.prototype._activate = function () {\n if (this._texture) {\n this._texture.activate();\n if (this._invalid && this._shader.alphaThreshold > 0)\n this._shader.fragmentConstantData[this._colorIndex] = this._shader.alphaThreshold;\n }\n else if (this._invalid) {\n var index = this._colorIndex;\n var data = this._shader.fragmentConstantData;\n var color = this._shader.numLights ? 0xFFFFFF : this._shader.pass.style.color;\n data[index] = ((color >> 16) & 0xff) / 0xff * this._method.strength;\n data[index + 1] = ((color >> 8) & 0xff) / 0xff * this._method.strength;\n data[index + 2] = (color & 0xff) / 0xff * this._method.strength;\n data[index + 3] = this._method.alpha;\n }\n };\n AmbientBasicChunk.prototype._setRenderState = function (renderable, projection) {\n if (this._texture)\n this._texture._setRenderState(renderable);\n };\n return AmbientBasicChunk;\n}(ShaderChunkBase));\nexport { AmbientBasicChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/AmbientBasicChunk.js","import * as tslib_1 from \"tslib\";\nimport { AmbientBasicChunk } from \"./AmbientBasicChunk\";\n/**\n * AmbientDepthChunk provides a debug method to visualise depth maps\n */\nvar AmbientDepthChunk = (function (_super) {\n tslib_1.__extends(AmbientDepthChunk, _super);\n /**\n * Creates a new AmbientBasicChunk object.\n */\n function AmbientDepthChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._shadowTexture = shader.getAbstraction(method.castingLight.shadowMapper.depthMap);\n return _this;\n }\n /**\n * @inheritDoc\n */\n AmbientDepthChunk.prototype._initConstants = function () {\n var data = this._shader.fragmentConstantData;\n var index = this._decRegIndex;\n data[index] = 1.0;\n data[index + 1] = 1 / 255.0;\n data[index + 2] = 1 / 65025.0;\n data[index + 3] = 1 / 16581375.0;\n };\n AmbientDepthChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n var decReg;\n var decReg = registerCache.getFreeFragmentConstant();\n this._decRegIndex = decReg.index * 4;\n code += this._shadowTexture._getFragmentCode(targetReg, registerCache, sharedRegisters, sharedRegisters.uvVarying) +\n \"dp4 \" + targetReg + \".x, \" + targetReg + \", \" + decReg + \"\\n\" +\n \"mov \" + targetReg + \".yz, \" + targetReg + \".xx\t\t\t\\n\" +\n \"mov \" + targetReg + \".w, \" + decReg + \".x\\n\" +\n \"sub \" + targetReg + \".xyz, \" + decReg + \".xxx, \" + targetReg + \".xyz\\n\";\n return code;\n };\n return AmbientDepthChunk;\n}(AmbientBasicChunk));\nexport { AmbientDepthChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/AmbientDepthChunk.js","import * as tslib_1 from \"tslib\";\nimport { MappingMode } from \"@awayjs/graphics\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * DiffuseBasicChunk provides the default shading method for Lambert (dot3) diffuse lighting.\n */\nvar DiffuseBasicChunk = (function (_super) {\n tslib_1.__extends(DiffuseBasicChunk, _super);\n /**\n * Creates a new DiffuseBasicChunk object.\n */\n function DiffuseBasicChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._ambientColorR = 1;\n _this._ambientColorG = 1;\n _this._ambientColorB = 1;\n _this._color = 0xffffff;\n _this._colorR = 1;\n _this._colorG = 1;\n _this._colorB = 1;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n *\n */\n DiffuseBasicChunk.prototype.onInvalidate = function (event) {\n _super.prototype.onInvalidate.call(this, event);\n this._updateProperties();\n };\n DiffuseBasicChunk.prototype._isUsed = function () {\n return Boolean(this._shader.numLights);\n };\n DiffuseBasicChunk.prototype._initVO = function (chunkVO) {\n if (this._method.texture) {\n this._texture = this._shader.getAbstraction(this._method.texture);\n if (this._method.texture.mappingMode == MappingMode.CUBE)\n chunkVO.needsNormals = true;\n else\n this._shader.uvDependencies++;\n }\n else if (this._texture) {\n this._texture = null;\n }\n if (this._shader.numLights) {\n this._shader.usesCommonData = true;\n chunkVO.needsNormals = true;\n }\n };\n /**\n * @inheritDoc\n */\n DiffuseBasicChunk.prototype._initConstants = function () {\n this._updateProperties();\n };\n /**\n * @inheritDoc\n */\n DiffuseBasicChunk.prototype._cleanCompilationData = function () {\n _super.prototype._cleanCompilationData.call(this);\n this._totalLightColorReg = null;\n };\n /**\n * @inheritDoc\n */\n DiffuseBasicChunk.prototype._getFragmentPreLightingCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n this._pIsFirstLight = true;\n registerCache.addFragmentTempUsages(this._totalLightColorReg = registerCache.getFreeFragmentVectorTemp(), 1);\n return code;\n };\n /**\n * @inheritDoc\n */\n DiffuseBasicChunk.prototype._getFragmentCodePerLight = function (lightDirReg, lightColReg, registerCache, sharedRegisters) {\n var code = \"\";\n var t;\n // write in temporary if not first light, so we can add to total diffuse colour\n if (this._pIsFirstLight) {\n t = this._totalLightColorReg;\n }\n else {\n t = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(t, 1);\n }\n code += \"dp3 \" + t + \".x, \" + lightDirReg + \", \" + sharedRegisters.normalFragment + \"\\n\" +\n \"max \" + t + \".w, \" + t + \".x, \" + sharedRegisters.commons + \".y\\n\";\n if (this._shader.usesLightFallOff)\n code += \"mul \" + t + \".w, \" + t + \".w, \" + lightDirReg + \".w\\n\";\n if (this._modulateFunction != null)\n code += this._modulateFunction(t, registerCache, sharedRegisters);\n code += \"mul \" + t + \", \" + t + \".w, \" + lightColReg + \"\\n\";\n if (!this._pIsFirstLight) {\n code += \"add \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \", \" + t + \"\\n\";\n registerCache.removeFragmentTempUsage(t);\n }\n this._pIsFirstLight = false;\n return code;\n };\n /**\n * @inheritDoc\n */\n DiffuseBasicChunk.prototype._getFragmentCodePerProbe = function (cubeMapReg, weightRegister, registerCache, sharedRegisters) {\n var code = \"\";\n var t;\n // write in temporary if not first light, so we can add to total diffuse colour\n if (this._pIsFirstLight) {\n t = this._totalLightColorReg;\n }\n else {\n t = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(t, 1);\n }\n code += \"tex \" + t + \", \" + sharedRegisters.normalFragment + \", \" + cubeMapReg + \" \\n\" +\n \"mul \" + t + \".xyz, \" + t + \".xyz, \" + weightRegister + \"\\n\";\n if (this._modulateFunction != null)\n code += this._modulateFunction(t, registerCache, sharedRegisters);\n if (!this._pIsFirstLight) {\n code += \"add \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \", \" + t + \"\\n\";\n registerCache.removeFragmentTempUsage(t);\n }\n this._pIsFirstLight = false;\n return code;\n };\n /**\n * @inheritDoc\n */\n DiffuseBasicChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n var diffuseColor;\n var cutOffReg;\n // incorporate input from ambient\n if (sharedRegisters.shadowTarget)\n code += this._applyShadow(registerCache, sharedRegisters);\n registerCache.addFragmentTempUsages(diffuseColor = registerCache.getFreeFragmentVectorTemp(), 1);\n var ambientColorRegister = registerCache.getFreeFragmentConstant();\n this._ambientColorRegister = ambientColorRegister.index * 4;\n if (this._texture) {\n code += this._texture._getFragmentCode(diffuseColor, registerCache, sharedRegisters, (this._method.texture.mappingMode == MappingMode.CUBE) ? sharedRegisters.normalFragment : sharedRegisters.uvVarying);\n }\n else {\n var diffuseColorRegister = registerCache.getFreeFragmentConstant();\n this._diffuseColorRegister = diffuseColorRegister.index * 4;\n code += \"mov \" + diffuseColor + \", \" + diffuseColorRegister + \"\\n\";\n }\n code += \"sat \" + this._totalLightColorReg + \", \" + this._totalLightColorReg + \"\\n\" +\n \"mul \" + diffuseColor + \".xyz, \" + diffuseColor + \", \" + this._totalLightColorReg + \"\\n\";\n if (this._method.multiply) {\n code += \"add \" + diffuseColor + \".xyz, \" + diffuseColor + \", \" + ambientColorRegister + \"\\n\" +\n \"mul \" + targetReg + \".xyz, \" + targetReg + \", \" + diffuseColor + \"\\n\";\n }\n else if (this._texture) {\n code += \"mul \" + targetReg + \".xyz, \" + targetReg + \", \" + ambientColorRegister + \"\\n\" +\n \"mul \" + this._totalLightColorReg + \".xyz, \" + targetReg + \", \" + this._totalLightColorReg + \"\\n\" +\n \"sub \" + targetReg + \".xyz, \" + targetReg + \", \" + this._totalLightColorReg + \"\\n\" +\n \"add \" + targetReg + \".xyz, \" + targetReg + \", \" + diffuseColor + \"\\n\"; //add diffuse color and ambient color\n }\n else {\n code += \"mul \" + this._totalLightColorReg + \".xyz, \" + ambientColorRegister + \", \" + this._totalLightColorReg + \"\\n\" +\n \"sub \" + this._totalLightColorReg + \".xyz, \" + ambientColorRegister + \", \" + this._totalLightColorReg + \"\\n\" +\n \"add \" + diffuseColor + \".xyz, \" + diffuseColor + \", \" + this._totalLightColorReg + \"\\n\" +\n \"mul \" + targetReg + \".xyz, \" + targetReg + \", \" + diffuseColor + \"\\n\"; // multiply by target which could be texture or white\n }\n registerCache.removeFragmentTempUsage(this._totalLightColorReg);\n registerCache.removeFragmentTempUsage(diffuseColor);\n return code;\n };\n /**\n * Generate the code that applies the calculated shadow to the diffuse light\n * @param methodVO The MethodVO object for which the compilation is currently happening.\n * @param regCache The register cache the compiler is currently using for the register management.\n */\n DiffuseBasicChunk.prototype._applyShadow = function (regCache, sharedRegisters) {\n return \"mul \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \", \" + sharedRegisters.shadowTarget + \".w\\n\";\n };\n /**\n * @inheritDoc\n */\n DiffuseBasicChunk.prototype._activate = function () {\n if (this._texture) {\n this._texture.activate();\n }\n else {\n var index = this._diffuseColorRegister;\n var data = this._shader.fragmentConstantData;\n if (this._method.multiply) {\n data[index] = this._colorR * this._ambientColorR;\n data[index + 1] = this._colorG * this._ambientColorG;\n data[index + 2] = this._colorB * this._ambientColorB;\n }\n else {\n data[index] = this._colorR;\n data[index + 1] = this._colorG;\n data[index + 2] = this._colorB;\n }\n data[index + 3] = 1;\n }\n };\n /**\n * Updates the diffuse and ambient color data used by the render state.\n */\n DiffuseBasicChunk.prototype._updateProperties = function () {\n this._ambientColor = this._shader.pass.style.color;\n this._ambientColorR = ((this._ambientColor >> 16) & 0xff) / 0xff;\n this._ambientColorG = ((this._ambientColor >> 8) & 0xff) / 0xff;\n this._ambientColorB = (this._ambientColor & 0xff) / 0xff;\n this._color = this._method.color;\n this._colorR = ((this._color >> 16) & 0xff) / 0xff;\n this._colorG = ((this._color >> 8) & 0xff) / 0xff;\n this._colorB = (this._color & 0xff) / 0xff;\n };\n /**\n * @inheritDoc\n */\n DiffuseBasicChunk.prototype._setRenderState = function (renderable, projection) {\n if (this._texture)\n this._texture._setRenderState(renderable);\n //TODO move this to Activate (ambientR/G/B currently calc'd in render state)\n var index = this._ambientColorRegister;\n var data = this._shader.fragmentConstantData;\n data[index] = this._shader.ambientR * this._ambientColorR;\n data[index + 1] = this._shader.ambientG * this._ambientColorG;\n data[index + 2] = this._shader.ambientB * this._ambientColorB;\n data[index + 3] = 1;\n };\n return DiffuseBasicChunk;\n}(ShaderChunkBase));\nexport { DiffuseBasicChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/DiffuseBasicChunk.js","import * as tslib_1 from \"tslib\";\nimport { LightingCompositeChunk } from \"./LightingCompositeChunk\";\n/**\n * DiffuseCelChunk provides a shading method to add diffuse cel (cartoon) shading.\n */\nvar DiffuseCelChunk = (function (_super) {\n tslib_1.__extends(DiffuseCelChunk, _super);\n /**\n * Creates a new DiffuseCelChunk object.\n * @param levels The amount of shadow gradations.\n * @param baseMethod An optional diffuse method on which the cartoon shading is based. If omitted, DiffuseBasicMethod is used.\n */\n function DiffuseCelChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n _this._baseChunk._modulateFunction = function (targetReg, registerCache, sharedRegisters) { return _this.clampDiffuse(targetReg, registerCache, sharedRegisters); };\n return _this;\n }\n /**\n * @inheritDoc\n */\n DiffuseCelChunk.prototype._initConstants = function () {\n _super.prototype._initConstants.call(this);\n var data = this._shader.fragmentConstantData;\n var index = this._clampDataIndex;\n data[index + 1] = 1;\n data[index + 2] = 0;\n };\n /**\n * @inheritDoc\n */\n DiffuseCelChunk.prototype._cleanCompilationData = function () {\n _super.prototype._cleanCompilationData.call(this);\n this._clampDataRegister = null;\n };\n /**\n * @inheritDoc\n */\n DiffuseCelChunk.prototype._getFragmentPreLightingCode = function (registerCache, sharedRegisters) {\n this._clampDataRegister = registerCache.getFreeFragmentConstant();\n this._clampDataIndex = this._clampDataRegister.index * 4;\n return _super.prototype._getFragmentPreLightingCode.call(this, registerCache, sharedRegisters);\n };\n /**\n * @inheritDoc\n */\n DiffuseCelChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n if (this._invalid) {\n var data = this._shader.fragmentConstantData;\n var index = this._clampDataIndex;\n data[index] = this._method.levels;\n data[index + 3] = this._method.smoothness;\n }\n };\n /**\n * Snaps the diffuse shading of the wrapped method to one of the levels.\n * @param vo The MethodVO used to compile the current shader.\n * @param t The register containing the diffuse strength in the \"w\" component.\n * @param regCache The register cache used for the shader compilation.\n * @param sharedRegisters The shared register data for this shader.\n * @return The AGAL fragment code for the method.\n */\n DiffuseCelChunk.prototype.clampDiffuse = function (targetReg, registerCache, sharedRegisters) {\n return \"mul \" + targetReg + \".w, \" + targetReg + \".w, \" + this._clampDataRegister + \".x\\n\" +\n \"frc \" + targetReg + \".z, \" + targetReg + \".w\\n\" +\n \"sub \" + targetReg + \".y, \" + targetReg + \".w, \" + targetReg + \".z\\n\" +\n \"mov \" + targetReg + \".x, \" + this._clampDataRegister + \".x\\n\" +\n \"sub \" + targetReg + \".x, \" + targetReg + \".x, \" + this._clampDataRegister + \".y\\n\" +\n \"rcp \" + targetReg + \".x,\" + targetReg + \".x\\n\" +\n \"mul \" + targetReg + \".w, \" + targetReg + \".y, \" + targetReg + \".x\\n\" +\n // previous clamped strength\n \"sub \" + targetReg + \".y, \" + targetReg + \".w, \" + targetReg + \".x\\n\" +\n // fract/epsilon (so 0 - epsilon will become 0 - 1)\n \"div \" + targetReg + \".z, \" + targetReg + \".z, \" + this._clampDataRegister + \".w\\n\" +\n \"sat \" + targetReg + \".z, \" + targetReg + \".z\\n\" +\n \"mul \" + targetReg + \".w, \" + targetReg + \".w, \" + targetReg + \".z\\n\" +\n // 1-z\n \"sub \" + targetReg + \".z, \" + this._clampDataRegister + \".y, \" + targetReg + \".z\\n\" +\n \"mul \" + targetReg + \".y, \" + targetReg + \".y, \" + targetReg + \".z\\n\" +\n \"add \" + targetReg + \".w, \" + targetReg + \".w, \" + targetReg + \".y\\n\" +\n \"sat \" + targetReg + \".w, \" + targetReg + \".w\\n\";\n };\n return DiffuseCelChunk;\n}(LightingCompositeChunk));\nexport { DiffuseCelChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/DiffuseCelChunk.js","import * as tslib_1 from \"tslib\";\nimport { DefaultMaterialManager } from \"@awayjs/graphics\";\nimport { DiffuseBasicChunk } from \"./DiffuseBasicChunk\";\n/**\n * DiffuseGradientChunk is an alternative to DiffuseBasicChunk in which the shading can be modulated with a gradient\n * to introduce color-tinted shading as opposed to the single-channel diffuse strength. This can be used as a crude\n * approximation to subsurface scattering (for instance, the mid-range shading for skin can be tinted red to similate\n * scattered light within the skin attributing to the final colour)\n */\nvar DiffuseGradientChunk = (function (_super) {\n tslib_1.__extends(DiffuseGradientChunk, _super);\n /**\n * Creates a new DiffuseGradientChunk object.\n * @param gradient A texture that contains the light colour based on the angle. This can be used to change\n * the light colour due to subsurface scattering when the surface faces away from the light.\n */\n function DiffuseGradientChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n DiffuseGradientChunk.prototype._initVO = function (chunkVO) {\n _super.prototype._initVO.call(this, chunkVO);\n this._gradient = this._shader.getAbstraction(this._method.gradient || DefaultMaterialManager.getDefaultTexture());\n };\n /**\n * @inheritDoc\n */\n DiffuseGradientChunk.prototype._getFragmentPreLightingCode = function (registerCache, sharedRegisters) {\n var code = _super.prototype._getFragmentPreLightingCode.call(this, registerCache, sharedRegisters);\n this._pIsFirstLight = true;\n return code;\n };\n /**\n * @inheritDoc\n */\n DiffuseGradientChunk.prototype._getFragmentCodePerLight = function (lightDirReg, lightColReg, registerCache, sharedRegisters) {\n var code = \"\";\n var t;\n // write in temporary if not first light, so we can add to total diffuse colour\n if (this._pIsFirstLight)\n t = this._totalLightColorReg;\n else {\n t = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(t, 1);\n }\n code += \"dp3 \" + t + \".w, \" + lightDirReg + \".xyz, \" + sharedRegisters.normalFragment + \".xyz\\n\" +\n \"mul \" + t + \".w, \" + t + \".w, \" + sharedRegisters.commons + \".x\\n\" +\n \"add \" + t + \".w, \" + t + \".w, \" + sharedRegisters.commons + \".x\\n\" +\n \"mul \" + t + \".xyz, \" + t + \".w, \" + lightDirReg + \".w\\n\";\n if (this._modulateFunction != null)\n code += this._modulateFunction(t, registerCache, sharedRegisters);\n code += this._gradient._getFragmentCode(t, registerCache, sharedRegisters, t) +\n //\t\t\t\t\t\"mul \" + t + \".xyz, \" + t + \".xyz, \" + t + \".w\\n\" +\n \"mul \" + t + \".xyz, \" + t + \".xyz, \" + lightColReg + \".xyz\\n\";\n if (!this._pIsFirstLight) {\n code += \"add \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \".xyz, \" + t + \".xyz\\n\";\n registerCache.removeFragmentTempUsage(t);\n }\n this._pIsFirstLight = false;\n return code;\n };\n /**\n * @inheritDoc\n */\n DiffuseGradientChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n this._gradient.activate();\n };\n /**\n * @inheritDoc\n */\n DiffuseGradientChunk.prototype._setRenderState = function (renderable, projection) {\n _super.prototype._setRenderState.call(this, renderable, projection);\n this._gradient._setRenderState(renderable);\n };\n return DiffuseGradientChunk;\n}(DiffuseBasicChunk));\nexport { DiffuseGradientChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/DiffuseGradientChunk.js","import * as tslib_1 from \"tslib\";\nimport { DefaultMaterialManager } from \"@awayjs/graphics\";\nimport { DiffuseLightMapMethod } from \"../methods/DiffuseLightMapMethod\";\nimport { LightingCompositeChunk } from \"./LightingCompositeChunk\";\n/**\n * DiffuseLightMapChunk provides a diffuse shading method that uses a light map to modulate the calculated diffuse\n * lighting. It is different from EffectLightMapMethod in that the latter modulates the entire calculated pixel color, rather\n * than only the diffuse lighting value.\n */\nvar DiffuseLightMapChunk = (function (_super) {\n tslib_1.__extends(DiffuseLightMapChunk, _super);\n /**\n * Creates a new DiffuseLightMapChunk method.\n */\n function DiffuseLightMapChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n DiffuseLightMapChunk.prototype._initVO = function (chunkVO) {\n this._lightMap = this._shader.getAbstraction(this._method.lightMap || DefaultMaterialManager.getDefaultTexture());\n if (this._method.useSecondaryUV)\n this._shader.secondaryUVDependencies++;\n else\n this._shader.uvDependencies++;\n };\n /**\n * @inheritDoc\n */\n DiffuseLightMapChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code;\n var temp = registerCache.getFreeFragmentVectorTemp();\n code = this._lightMap._getFragmentCode(temp, registerCache, sharedRegisters, this._method.useSecondaryUV ? sharedRegisters.secondaryUVVarying : sharedRegisters.uvVarying);\n switch (this._method.blendMode) {\n case DiffuseLightMapMethod.MULTIPLY:\n code += \"mul \" + this._totalLightColorReg + \", \" + this._totalLightColorReg + \", \" + temp + \"\\n\";\n break;\n case DiffuseLightMapMethod.ADD:\n code += \"add \" + this._totalLightColorReg + \", \" + this._totalLightColorReg + \", \" + temp + \"\\n\";\n break;\n }\n code += _super.prototype._getFragmentCode.call(this, targetReg, registerCache, sharedRegisters);\n return code;\n };\n /**\n * @inheritDoc\n */\n DiffuseLightMapChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n this._lightMap.activate();\n };\n /**\n * @inheritDoc\n */\n DiffuseLightMapChunk.prototype._setRenderState = function (renderable, projection) {\n _super.prototype._setRenderState.call(this, renderable, projection);\n this._lightMap._setRenderState(renderable);\n };\n return DiffuseLightMapChunk;\n}(LightingCompositeChunk));\nexport { DiffuseLightMapChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/DiffuseLightMapChunk.js","import * as tslib_1 from \"tslib\";\nimport { DiffuseBasicChunk } from \"./DiffuseBasicChunk\";\n/**\n * DiffuseWrapChunk is an alternative to DiffuseBasicChunk in which the light is allowed to be \"wrapped around\" the normally dark area, to some extent.\n * It can be used as a crude approximation to Oren-Nayar or simple subsurface scattering.\n */\nvar DiffuseWrapChunk = (function (_super) {\n tslib_1.__extends(DiffuseWrapChunk, _super);\n /**\n * Creates a new DiffuseWrapChunk object.\n */\n function DiffuseWrapChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n /**\n * @inheritDoc\n */\n DiffuseWrapChunk.prototype._cleanCompilationData = function () {\n _super.prototype._cleanCompilationData.call(this);\n this._wrapDataRegister = null;\n };\n /**\n * @inheritDoc\n */\n DiffuseWrapChunk.prototype._getFragmentPreLightingCode = function (registerCache, sharedRegisters) {\n var code = _super.prototype._getFragmentPreLightingCode.call(this, registerCache, sharedRegisters);\n this._pIsFirstLight = true;\n this._wrapDataRegister = registerCache.getFreeFragmentConstant();\n this._wrapDataIndex = this._wrapDataRegister.index * 4;\n return code;\n };\n /**\n * @inheritDoc\n */\n DiffuseWrapChunk.prototype._getFragmentCodePerLight = function (lightDirReg, lightColReg, registerCache, sharedRegisters) {\n var code = \"\";\n var t;\n // write in temporary if not first light, so we can add to total diffuse colour\n if (this._pIsFirstLight) {\n t = this._totalLightColorReg;\n }\n else {\n t = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(t, 1);\n }\n code += \"dp3 \" + t + \".x, \" + lightDirReg + \".xyz, \" + sharedRegisters.normalFragment + \".xyz\\n\" +\n \"add \" + t + \".y, \" + t + \".x, \" + this._wrapDataRegister + \".x\\n\" +\n \"mul \" + t + \".y, \" + t + \".y, \" + this._wrapDataRegister + \".y\\n\" +\n \"sat \" + t + \".w, \" + t + \".y\\n\" +\n \"mul \" + t + \".xz, \" + t + \".w, \" + lightDirReg + \".wz\\n\";\n if (this._modulateFunction != null)\n code += this._modulateFunction(lightDirReg, registerCache, sharedRegisters);\n code += \"mul \" + t + \", \" + t + \".x, \" + lightColReg + \"\\n\";\n if (!this._pIsFirstLight) {\n code += \"add \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \".xyz, \" + t + \".xyz\\n\";\n registerCache.removeFragmentTempUsage(t);\n }\n this._pIsFirstLight = false;\n return code;\n };\n /**\n * @inheritDoc\n */\n DiffuseWrapChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n if (this._invalid) {\n var index = this._wrapDataIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = this._method.wrapFactor;\n data[index + 1] = 1 / (this._method.wrapFactor + 1);\n }\n };\n return DiffuseWrapChunk;\n}(DiffuseBasicChunk));\nexport { DiffuseWrapChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/DiffuseWrapChunk.js","import * as tslib_1 from \"tslib\";\nimport { DefaultMaterialManager } from \"@awayjs/graphics\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * EffectAlphaMaskChunk allows the use of an additional texture to specify the alpha value of the material. When used\n * with the secondary uv set, it allows for a tiled main texture with independently varying alpha (useful for water\n * etc).\n */\nvar EffectAlphaMaskChunk = (function (_super) {\n tslib_1.__extends(EffectAlphaMaskChunk, _super);\n /**\n * Creates a new EffectAlphaMaskChunk object.\n */\n function EffectAlphaMaskChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n EffectAlphaMaskChunk.prototype._initVO = function (chunkVO) {\n this._alphaMask = this._shader.getAbstraction(this._method.texture || DefaultMaterialManager.getDefaultTexture());\n if (this._method.useSecondaryUV)\n this._shader.secondaryUVDependencies++;\n else\n this._shader.uvDependencies++;\n };\n /**\n * @inheritDoc\n */\n EffectAlphaMaskChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var temp = registerCache.getFreeFragmentVectorTemp();\n return this._alphaMask._getFragmentCode(temp, registerCache, sharedRegisters, this._method.useSecondaryUV ? sharedRegisters.secondaryUVVarying : sharedRegisters.uvVarying) +\n \"mul \" + targetReg + \", \" + targetReg + \", \" + temp + \".x\\n\";\n };\n /**\n * @inheritDoc\n */\n EffectAlphaMaskChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n this._alphaMask.activate();\n };\n EffectAlphaMaskChunk.prototype._setRenderState = function (renderable, projection) {\n this._alphaMask._setRenderState(renderable);\n };\n return EffectAlphaMaskChunk;\n}(ShaderChunkBase));\nexport { EffectAlphaMaskChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectAlphaMaskChunk.js","import * as tslib_1 from \"tslib\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * EffectColorMatrixChunk provides a shading method that changes the colour of a material analogous to a ColorMatrixFilter.\n */\nvar EffectColorMatrixChunk = (function (_super) {\n tslib_1.__extends(EffectColorMatrixChunk, _super);\n /**\n * Creates a new EffectColorMatrixChunk\n *\n * @param method\n * @param shader\n */\n function EffectColorMatrixChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n EffectColorMatrixChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n var colorMultReg = registerCache.getFreeFragmentConstant();\n registerCache.getFreeFragmentConstant();\n registerCache.getFreeFragmentConstant();\n registerCache.getFreeFragmentConstant();\n var colorOffsetReg = registerCache.getFreeFragmentConstant();\n this._colorMatrixIndex = colorMultReg.index * 4;\n var temp = registerCache.getFreeFragmentVectorTemp();\n code += \"m44 \" + temp + \", \" + targetReg + \", \" + colorMultReg + \"\\n\" +\n \"add \" + targetReg + \", \" + temp + \", \" + colorOffsetReg + \"\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n EffectColorMatrixChunk.prototype._activate = function () {\n if (this._invalid) {\n var matrix = this._method.matrix;\n var index = this._colorMatrixIndex;\n var data = this._shader.fragmentConstantData;\n // r\n data[index] = matrix[0];\n data[index + 1] = matrix[1];\n data[index + 2] = matrix[2];\n data[index + 3] = matrix[3];\n // g\n data[index + 4] = matrix[5];\n data[index + 5] = matrix[6];\n data[index + 6] = matrix[7];\n data[index + 7] = matrix[8];\n // b\n data[index + 8] = matrix[10];\n data[index + 9] = matrix[11];\n data[index + 10] = matrix[12];\n data[index + 11] = matrix[13];\n // a\n data[index + 12] = matrix[15];\n data[index + 13] = matrix[16];\n data[index + 14] = matrix[17];\n data[index + 15] = matrix[18];\n // rgba offset\n data[index + 16] = matrix[4];\n data[index + 17] = matrix[9];\n data[index + 18] = matrix[14];\n data[index + 19] = matrix[19];\n }\n };\n return EffectColorMatrixChunk;\n}(ShaderChunkBase));\nexport { EffectColorMatrixChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectColorMatrixChunk.js","import * as tslib_1 from \"tslib\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * EffectColorTransformChumk provides a shading method that changes the colour of a material analogous to a\n * ColorTransform object.\n */\nvar EffectColorTransformChunk = (function (_super) {\n tslib_1.__extends(EffectColorTransformChunk, _super);\n /**\n * Creates a new EffectColorTransformChumk.\n */\n function EffectColorTransformChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n EffectColorTransformChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n var colorMultReg = registerCache.getFreeFragmentConstant();\n var colorOffsReg = registerCache.getFreeFragmentConstant();\n this._colorTransformIndex = colorMultReg.index * 4;\n //TODO: AGAL <> GLSL\n code += \"mul \" + targetReg + \", \" + targetReg + \", \" + colorMultReg + \"\\n\" +\n \"add \" + targetReg + \", \" + targetReg + \", \" + colorOffsReg + \"\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n EffectColorTransformChunk.prototype._activate = function () {\n if (this._invalid) {\n var index = this._colorTransformIndex;\n var data = this._shader.fragmentConstantData;\n var rawData = this._method.colorTransform._rawData;\n data[index] = rawData[0];\n data[index + 1] = rawData[1];\n data[index + 2] = rawData[2];\n data[index + 3] = rawData[3];\n data[index + 4] = rawData[4];\n data[index + 5] = rawData[5];\n data[index + 6] = rawData[6];\n data[index + 7] = rawData[7];\n }\n };\n return EffectColorTransformChunk;\n}(ShaderChunkBase));\nexport { EffectColorTransformChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectColorTransformChunk.js","import * as tslib_1 from \"tslib\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * EffectEnvMapChunk provides a material method to perform reflection mapping using cube maps.\n */\nvar EffectEnvMapChunk = (function (_super) {\n tslib_1.__extends(EffectEnvMapChunk, _super);\n /**\n * Creates a new EffectEnvMapChunk.\n */\n function EffectEnvMapChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n EffectEnvMapChunk.prototype._initVO = function (chunkVO) {\n chunkVO.needsNormals = true;\n chunkVO.needsView = true;\n this._envMap = this._shader.getAbstraction(this._method.envMap);\n if (this._method.mask) {\n this._maskMap = this._shader.getAbstraction(this._method.mask);\n this._shader.uvDependencies++;\n }\n else if (this._maskMap) {\n this._maskMap = null;\n }\n };\n /**\n * @inheritDoc\n */\n EffectEnvMapChunk.prototype.dispose = function () {\n this._envMap = null;\n this._maskMap = null;\n };\n /**\n * @inheritDoc\n */\n EffectEnvMapChunk.prototype._activate = function () {\n this._envMap.activate();\n if (this._maskMap)\n this._maskMap.activate();\n if (this._invalid)\n this._updateProperties();\n };\n EffectEnvMapChunk.prototype._setRenderState = function (renderable, projection) {\n this._envMap._setRenderState(renderable);\n if (this._maskMap)\n this._maskMap._setRenderState(renderable);\n };\n /**\n * @inheritDoc\n */\n EffectEnvMapChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var alphaRegister = registerCache.getFreeFragmentConstant();\n var code = \"\";\n this._fragmentIndex = alphaRegister.index * 4;\n var temp = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp, 1);\n var temp2 = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp2, 1);\n // r = I - 2(I.N)*N\n code += \"dp3 \" + temp + \".w, \" + sharedRegisters.viewDirFragment + \".xyz, \" + sharedRegisters.normalFragment + \".xyz\\n\" +\n \"add \" + temp + \".w, \" + temp + \".w, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".xyz, \" + sharedRegisters.normalFragment + \".xyz, \" + temp + \".w\\n\" +\n \"sub \" + temp + \".xyz, \" + temp + \".xyz, \" + sharedRegisters.viewDirFragment + \".xyz\\n\" +\n this._envMap._getFragmentCode(temp, registerCache, sharedRegisters, temp) +\n \"sub \" + temp2 + \".w, \" + temp + \".w, fc0.x\\n\" +\n \"kil \" + temp2 + \".w\\n\" +\n \"sub \" + temp + \", \" + temp + \", \" + targetReg + \"\\n\";\n if (this._maskMap) {\n code += this._maskMap._getFragmentCode(temp2, registerCache, sharedRegisters, sharedRegisters.uvVarying) +\n \"mul \" + temp + \", \" + temp2 + \", \" + temp + \"\\n\";\n }\n code += \"mul \" + temp + \", \" + temp + \", \" + alphaRegister + \".x\\n\" +\n \"add \" + targetReg + \", \" + targetReg + \", \" + temp + \"\\n\";\n registerCache.removeFragmentTempUsage(temp);\n registerCache.removeFragmentTempUsage(temp2);\n return code;\n };\n EffectEnvMapChunk.prototype._updateProperties = function () {\n this._shader.fragmentConstantData[this._fragmentIndex] = this._method.alpha;\n };\n return EffectEnvMapChunk;\n}(ShaderChunkBase));\nexport { EffectEnvMapChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectEnvMapChunk.js","import * as tslib_1 from \"tslib\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * EffectFogChunk provides a method to add distance-based fog to a material.\n */\nvar EffectFogChunk = (function (_super) {\n tslib_1.__extends(EffectFogChunk, _super);\n /**\n * Creates a new EffectEnvMapChunk.\n */\n function EffectFogChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n EffectFogChunk.prototype._initVO = function (chunkVO) {\n chunkVO.needsProjection = true;\n };\n /**\n * @inheritDoc\n */\n EffectFogChunk.prototype._activate = function () {\n if (this._invalid) {\n var data = this._shader.fragmentConstantData;\n var index = this._fogColorIndex;\n var color = this._method.fogColor;\n data[index] = ((color >> 16) & 0xff) / 0xff;\n data[index + 1] = ((color >> 8) & 0xff) / 0xff;\n data[index + 2] = (color & 0xff) / 0xff;\n data[index + 3] = 1;\n data[index + 4] = this._method.minDistance;\n data[index + 5] = 1 / (this._method.maxDistance - this._method.minDistance);\n data[index + 6] = 0;\n data[index + 7] = 0;\n }\n };\n /**\n * @inheritDoc\n */\n EffectFogChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var fogColor = registerCache.getFreeFragmentConstant();\n var fogData = registerCache.getFreeFragmentConstant();\n var temp = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp, 1);\n var temp2 = registerCache.getFreeFragmentVectorTemp();\n var code = \"\";\n this._fogColorIndex = fogColor.index * 4;\n code += \"sub \" + temp2 + \".w, \" + sharedRegisters.projectionFragment + \".z, \" + fogData + \".x\\n\" +\n \"mul \" + temp2 + \".w, \" + temp2 + \".w, \" + fogData + \".y\\n\" +\n \"sat \" + temp2 + \".w, \" + temp2 + \".w\\n\" +\n \"sub \" + temp + \", \" + fogColor + \", \" + targetReg + \"\\n\" +\n \"mul \" + temp + \", \" + temp + \", \" + temp2 + \".w\\n\" +\n \"add \" + targetReg + \", \" + targetReg + \", \" + temp + \"\\n\"; // fogRatio*(fogColor- col) + col\n registerCache.removeFragmentTempUsage(temp);\n return code;\n };\n return EffectFogChunk;\n}(ShaderChunkBase));\nexport { EffectFogChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectFogChunk.js","import * as tslib_1 from \"tslib\";\nimport { EffectEnvMapChunk } from \"./EffectEnvMapChunk\";\n/**\n * EffectFresnelEnvMapChunk provides a method to add fresnel-based reflectivity to an object using cube maps, which gets\n * stronger as the viewing angle becomes more grazing.\n */\nvar EffectFresnelEnvMapChunk = (function (_super) {\n tslib_1.__extends(EffectFresnelEnvMapChunk, _super);\n function EffectFresnelEnvMapChunk() {\n return _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n EffectFresnelEnvMapChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var dataRegister = registerCache.getFreeFragmentConstant();\n var code = \"\";\n var viewDirReg = sharedRegisters.viewDirFragment;\n var normalReg = sharedRegisters.normalFragment;\n this._fragmentIndex = dataRegister.index * 4;\n var temp = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp, 1);\n var temp2 = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp2, 1);\n // r = V - 2(V.N)*N\n code += \"dp3 \" + temp + \".w, \" + viewDirReg + \".xyz, \" + normalReg + \".xyz\\n\" +\n \"add \" + temp + \".w, \" + temp + \".w, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".xyz, \" + normalReg + \".xyz, \" + temp + \".w\\n\" +\n \"sub \" + temp + \".xyz, \" + temp + \".xyz, \" + viewDirReg + \".xyz\\n\" +\n this._envMap._getFragmentCode(temp, registerCache, sharedRegisters, temp) +\n \"sub \" + temp2 + \".w, \" + temp + \".w, fc0.x\\n\" +\n \"kil \" + temp2 + \".w\\n\" +\n \"sub \" + temp + \", \" + temp + \", \" + targetReg + \"\\n\";\n // calculate fresnel term\n code += \"dp3 \" + viewDirReg + \".w, \" + viewDirReg + \".xyz, \" + normalReg + \".xyz\\n\" +\n \"sub \" + viewDirReg + \".w, \" + dataRegister + \".w, \" + viewDirReg + \".w\\n\" +\n \"pow \" + viewDirReg + \".w, \" + viewDirReg + \".w, \" + dataRegister + \".z\\n\" +\n \"sub \" + normalReg + \".w, \" + dataRegister + \".w, \" + viewDirReg + \".w\\n\" +\n \"mul \" + normalReg + \".w, \" + dataRegister + \".y, \" + normalReg + \".w\\n\" +\n \"add \" + viewDirReg + \".w, \" + viewDirReg + \".w, \" + normalReg + \".w\\n\" +\n // total alpha\n \"mul \" + viewDirReg + \".w, \" + dataRegister + \".x, \" + viewDirReg + \".w\\n\";\n if (this._maskMap) {\n code += this._maskMap._getFragmentCode(temp2, registerCache, sharedRegisters, sharedRegisters.uvVarying) +\n \"mul \" + viewDirReg + \".w, \" + temp2 + \".x, \" + viewDirReg + \".w\\n\";\n }\n // blend\n code += \"mul \" + temp + \", \" + temp + \", \" + viewDirReg + \".w\\n\" +\n \"add \" + targetReg + \", \" + targetReg + \", \" + temp + \"\\n\";\n registerCache.removeFragmentTempUsage(temp);\n registerCache.removeFragmentTempUsage(temp2);\n return code;\n };\n EffectFresnelEnvMapChunk.prototype._updateProperties = function () {\n var index = this._fragmentIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = this._method.alpha;\n data[index + 1] = this._method.normalReflectance;\n data[index + 2] = this._method.fresnelPower;\n };\n return EffectFresnelEnvMapChunk;\n}(EffectEnvMapChunk));\nexport { EffectFresnelEnvMapChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectFresnelEnvMapChunk.js","import * as tslib_1 from \"tslib\";\nimport { EffectLightMapMethod } from \"../methods/EffectLightMapMethod\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * EffectLightMapChunk provides a method that allows applying a light map texture to the calculated pixel colour.\n * It is different from DiffuseLightMapMethod in that the latter only modulates the diffuse shading value rather\n * than the whole pixel colour.\n */\nvar EffectLightMapChunk = (function (_super) {\n tslib_1.__extends(EffectLightMapChunk, _super);\n /**\n * Creates a new EffectEnvMapChunk.\n */\n function EffectLightMapChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n EffectLightMapChunk.prototype._initVO = function (chunkVO) {\n this._lightMap = this._shader.getAbstraction(this._method.lightMap);\n if (this._method.useSecondaryUV)\n this._shader.secondaryUVDependencies++;\n else\n this._shader.uvDependencies++;\n };\n /**\n * @inheritDoc\n */\n EffectLightMapChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code;\n var temp = registerCache.getFreeFragmentVectorTemp();\n code = this._lightMap._getFragmentCode(temp, registerCache, sharedRegisters, this._method.useSecondaryUV ? sharedRegisters.secondaryUVVarying : sharedRegisters.uvVarying);\n switch (this._method.blendMode) {\n case EffectLightMapMethod.MULTIPLY:\n code += \"mul \" + targetReg + \", \" + targetReg + \", \" + temp + \"\\n\";\n break;\n case EffectLightMapMethod.ADD:\n code += \"add \" + targetReg + \", \" + targetReg + \", \" + temp + \"\\n\";\n break;\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n EffectLightMapChunk.prototype._activate = function () {\n this._lightMap.activate();\n };\n EffectLightMapChunk.prototype._setRenderState = function (renderable, projection) {\n this._lightMap._setRenderState(renderable);\n };\n return EffectLightMapChunk;\n}(ShaderChunkBase));\nexport { EffectLightMapChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectLightMapChunk.js","import * as tslib_1 from \"tslib\";\nimport { ErrorBase, Matrix3D } from \"@awayjs/core\";\nimport { EffectProjectiveTextureMethod } from \"../methods/EffectProjectiveTextureMethod\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * ProjectiveTextureMethod is a material method used to project a texture unto the surface of an object.\n * This can be used for various effects apart from acting like a normal projector, such as projecting fake shadows\n * unto a surface, the impact of light coming through a stained glass window, ...\n */\nvar EffectProjectiveTextureChunk = (function (_super) {\n tslib_1.__extends(EffectProjectiveTextureChunk, _super);\n /**\n * Creates a new EffectEnvMapChunk.\n */\n function EffectProjectiveTextureChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n EffectProjectiveTextureChunk.prototype._initVO = function (chunkVO) {\n this._texture = this._shader.getAbstraction(this._method.projector.texture);\n };\n /**\n * @inheritDoc\n */\n EffectProjectiveTextureChunk.prototype._initConstants = function () {\n var index = this._exposureIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = this._method.exposure;\n data[index + 1] = 0.5;\n data[index + 2] = 4;\n data[index + 3] = -1;\n this._projectionMatrix = new Matrix3D(new Float32Array(this._shader.vertexConstantData.buffer, this._projectionIndex * 4, 16));\n };\n /**\n * @inheritDoc\n */\n EffectProjectiveTextureChunk.prototype._cleanCompilationData = function () {\n _super.prototype._cleanCompilationData.call(this);\n this._uvVarying = null;\n this._projectionMatrix = null;\n };\n /**\n * @inheritDoc\n */\n EffectProjectiveTextureChunk.prototype._getVertexCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n var projReg = registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n this._projectionIndex = projReg.index * 4;\n this._uvVarying = registerCache.getFreeVarying();\n code += \"m44 \" + this._uvVarying + \", \" + sharedRegisters.animatedPosition + \", \" + projReg + \"\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n EffectProjectiveTextureChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n var col = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(col, 1);\n var temp = registerCache.getFreeFragmentVectorTemp();\n //var toTexReg:ShaderRegisterElement = registerCache.getFreeFragmentConstant();\n //methodVO.fragmentConstantsIndex = toTexReg.index*4;\n var exposure = registerCache.getFreeFragmentConstant();\n this._exposureIndex = exposure.index * 4;\n // code += \"mul \" + col + \".xy, \" + this._uvVarying + \".xy, \" + toTexReg + \".xy\t\\n\" +\n // \t\"add \" + col + \".xy, \" + col + \".xy, \" + toTexReg + \".xx\t\\n\";\n code += this._texture._getFragmentCode(col, registerCache, sharedRegisters, this._uvVarying);\n code += \"mul \" + col + \", \" + col + \", \" + exposure + \".xxx\\n\" +\n \"add \" + col + \", \" + col + \", \" + exposure + \".xxx\\n\";\n if (this._method.mode == EffectProjectiveTextureMethod.MULTIPLY)\n code += \"mul \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + col + \".xyz\t\t\t\\n\";\n else if (this._method.mode == EffectProjectiveTextureMethod.ADD)\n code += \"add \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + col + \".xyz\t\t\t\\n\";\n else if (this._method.mode == EffectProjectiveTextureMethod.MIX) {\n code += \"sub \" + col + \".xyz, \" + col + \".xyz, \" + targetReg + \".xyz\t\t\t\t\\n\" +\n \"mul \" + col + \".xyz, \" + col + \".xyz, \" + col + \".w\t\t\t\t\t\t\\n\" +\n \"add \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + col + \".xyz\t\t\t\\n\";\n }\n else if (this._method.mode == EffectProjectiveTextureMethod.OVERLAY) {\n code += \"sge \" + temp + \", \" + targetReg + \", \" + exposure + \".yyy\\n\"; // temp = (base >= 0.5)? 1 : 0\n code += \"sub \" + targetReg + \", \" + targetReg + \", \" + temp + \"\\n\"; // base = temp? (base - 1 : base)\n code += \"sub \" + col + \", \" + col + \", \" + temp + \"\\n\"; // blend = temp? (blend - 1 : blend)\n code += \"mul \" + col + \", \" + col + \", \" + targetReg + \"\\n\"; // blend = blend * base\n code += \"sub \" + targetReg + \", \" + exposure + \".yyy, \" + temp + \"\\n\"; // base = temp? -0.5 : 0.5\n code += \"mul \" + targetReg + \", \" + exposure + \".zzz, \" + targetReg + \"\\n\"; // base = temp? -2 : 2\n code += \"mul \" + col + \", \" + col + \", \" + targetReg + \"\\n\"; // blend = blend * ( -2 : 2)\n code += \"add \" + targetReg + \", \" + col + \", \" + temp + \"\\n\"; //blend = temp? (blend + 1 : blend)\n }\n else\n throw new ErrorBase(\"Unknown mode \\\"\" + this._method.mode + \"\\\"\");\n registerCache.removeFragmentTempUsage(col);\n return code;\n };\n /**\n * @inheritDoc\n */\n EffectProjectiveTextureChunk.prototype._setRenderState = function (renderable, projection) {\n var matrix3D = Matrix3D.CALCULATION_MATRIX;\n matrix3D.copyFrom(this._method.projector.projection.viewMatrix3D);\n matrix3D.prepend(renderable.renderSceneTransform);\n this._projectionMatrix.copyFrom(matrix3D, true);\n this._texture._setRenderState(renderable);\n };\n /**\n * @inheritDoc\n */\n EffectProjectiveTextureChunk.prototype._activate = function () {\n this._texture.activate();\n if (this._invalid)\n this._shader.fragmentConstantData[this._exposureIndex] = this._method.exposure;\n };\n return EffectProjectiveTextureChunk;\n}(ShaderChunkBase));\nexport { EffectProjectiveTextureChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectProjectiveTextureChunk.js","import * as tslib_1 from \"tslib\";\nimport { EffectEnvMapChunk } from \"./EffectEnvMapChunk\";\n/**\n * EffectRefractionEnvMapMethod provides a method to add refracted transparency based on cube maps.\n */\nvar EffectRefractionEnvMapChunk = (function (_super) {\n tslib_1.__extends(EffectRefractionEnvMapChunk, _super);\n function EffectRefractionEnvMapChunk() {\n return _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n EffectRefractionEnvMapChunk.prototype._initVO = function (chunkVO) {\n _super.prototype._initVO.call(this, chunkVO);\n this._useDispersion = !(this._method.dispersionR == this._method.dispersionB && this._method.dispersionR == this._method.dispersionG);\n };\n /**\n * @inheritDoc\n */\n EffectRefractionEnvMapChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n // todo: data2.x could use common reg, so only 1 reg is used\n var data = registerCache.getFreeFragmentConstant();\n var data2 = registerCache.getFreeFragmentConstant();\n var code = \"\";\n var refractionDir;\n var refractionColor;\n var temp;\n this._fragmentIndex = data.index * 4;\n refractionDir = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(refractionDir, 1);\n refractionColor = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(refractionColor, 1);\n temp = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp, 1);\n var viewDirReg = sharedRegisters.viewDirFragment;\n var normalReg = sharedRegisters.normalFragment;\n code += \"neg \" + viewDirReg + \".xyz, \" + viewDirReg + \".xyz\\n\";\n code += \"dp3 \" + temp + \".x, \" + viewDirReg + \".xyz, \" + normalReg + \".xyz\\n\" +\n \"mul \" + temp + \".w, \" + temp + \".x, \" + temp + \".x\\n\" +\n \"sub \" + temp + \".w, \" + data2 + \".x, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".w, \" + data + \".x, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".w, \" + data + \".x, \" + temp + \".w\\n\" +\n \"sub \" + temp + \".w, \" + data2 + \".x, \" + temp + \".w\\n\" +\n \"sqt \" + temp + \".y, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".x, \" + data + \".x, \" + temp + \".x\\n\" +\n \"add \" + temp + \".x, \" + temp + \".x, \" + temp + \".y\\n\" +\n \"mul \" + temp + \".xyz, \" + temp + \".x, \" + normalReg + \".xyz\\n\" +\n \"mul \" + refractionDir + \", \" + data + \".x, \" + viewDirReg + \"\\n\" +\n \"sub \" + refractionDir + \".xyz, \" + refractionDir + \".xyz, \" + temp + \".xyz\\n\" +\n \"nrm \" + refractionDir + \".xyz, \" + refractionDir + \".xyz\\n\" +\n this._envMap._getFragmentCode(refractionColor, registerCache, sharedRegisters, refractionDir) +\n \"sub \" + refractionColor + \".w, \" + refractionColor + \".w, fc0.x\t\\n\" +\n \"kil \" + refractionColor + \".w\\n\";\n if (this._useDispersion) {\n // GREEN\n code += \"dp3 \" + temp + \".x, \" + viewDirReg + \".xyz, \" + normalReg + \".xyz\\n\" +\n \"mul \" + temp + \".w, \" + temp + \".x, \" + temp + \".x\\n\" +\n \"sub \" + temp + \".w, \" + data2 + \".x, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".w, \" + data + \".y, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".w, \" + data + \".y, \" + temp + \".w\\n\" +\n \"sub \" + temp + \".w, \" + data2 + \".x, \" + temp + \".w\\n\" +\n \"sqt \" + temp + \".y, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".x, \" + data + \".y, \" + temp + \".x\\n\" +\n \"add \" + temp + \".x, \" + temp + \".x, \" + temp + \".y\\n\" +\n \"mul \" + temp + \".xyz, \" + temp + \".x, \" + normalReg + \".xyz\\n\" +\n \"mul \" + refractionDir + \", \" + data + \".y, \" + viewDirReg + \"\\n\" +\n \"sub \" + refractionDir + \".xyz, \" + refractionDir + \".xyz, \" + temp + \".xyz\\n\" +\n \"nrm \" + refractionDir + \".xyz, \" + refractionDir + \".xyz\\n\" +\n this._envMap._getFragmentCode(temp, registerCache, sharedRegisters, refractionDir) +\n \"mov \" + refractionColor + \".y, \" + temp + \".y\\n\";\n // BLUE\n code += \"dp3 \" + temp + \".x, \" + viewDirReg + \".xyz, \" + normalReg + \".xyz\\n\" +\n \"mul \" + temp + \".w, \" + temp + \".x, \" + temp + \".x\\n\" +\n \"sub \" + temp + \".w, \" + data2 + \".x, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".w, \" + data + \".z, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".w, \" + data + \".z, \" + temp + \".w\\n\" +\n \"sub \" + temp + \".w, \" + data2 + \".x, \" + temp + \".w\\n\" +\n \"sqt \" + temp + \".y, \" + temp + \".w\\n\" +\n \"mul \" + temp + \".x, \" + data + \".z, \" + temp + \".x\\n\" +\n \"add \" + temp + \".x, \" + temp + \".x, \" + temp + \".y\\n\" +\n \"mul \" + temp + \".xyz, \" + temp + \".x, \" + normalReg + \".xyz\\n\" +\n \"mul \" + refractionDir + \", \" + data + \".z, \" + viewDirReg + \"\\n\" +\n \"sub \" + refractionDir + \".xyz, \" + refractionDir + \".xyz, \" + temp + \".xyz\\n\" +\n \"nrm \" + refractionDir + \".xyz, \" + refractionDir + \".xyz\\n\" +\n this._envMap._getFragmentCode(temp, registerCache, sharedRegisters, refractionDir) +\n \"mov \" + refractionColor + \".z, \" + temp + \".z\\n\";\n }\n code += \"sub \" + refractionColor + \".xyz, \" + refractionColor + \".xyz, \" + targetReg + \".xyz\\n\" +\n \"mul \" + refractionColor + \".xyz, \" + refractionColor + \".xyz, \" + data + \".w\\n\" +\n \"add \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + refractionColor + \".xyz\\n\";\n registerCache.removeFragmentTempUsage(temp);\n registerCache.removeFragmentTempUsage(refractionDir);\n registerCache.removeFragmentTempUsage(refractionColor);\n // restore\n code += \"neg \" + viewDirReg + \".xyz, \" + viewDirReg + \".xyz\\n\";\n return code;\n };\n EffectRefractionEnvMapChunk.prototype._updateProperties = function () {\n var index = this._fragmentIndex;\n var data = this._shader.fragmentConstantData;\n var refractionIndex = this._method.refractionIndex;\n data[index] = this._method.dispersionR + refractionIndex;\n if (this._useDispersion) {\n data[index + 1] = this._method.dispersionG + refractionIndex;\n data[index + 2] = this._method.dispersionB + refractionIndex;\n }\n data[index + 3] = this._method.alpha;\n };\n return EffectRefractionEnvMapChunk;\n}(EffectEnvMapChunk));\nexport { EffectRefractionEnvMapChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectRefractionEnvMapChunk.js","import * as tslib_1 from \"tslib\";\nimport { EffectRimLightMethod } from \"../methods/EffectRimLightMethod\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * EffectRimLightChunk provides a method to add rim lighting to a material. This adds a glow-like effect to edges of objects.\n */\nvar EffectRimLightChunk = (function (_super) {\n tslib_1.__extends(EffectRimLightChunk, _super);\n /**\n * Creates a new EffectEnvMapChunk.\n */\n function EffectRimLightChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n EffectRimLightChunk.prototype._initVO = function (chunkVO) {\n chunkVO.needsNormals = true;\n chunkVO.needsView = true;\n };\n /**\n * @inheritDoc\n */\n EffectRimLightChunk.prototype._activate = function () {\n if (this._invalid) {\n var index = this._rimColorIndex;\n var data = this._shader.fragmentConstantData;\n var color = this._method.color;\n data[index] = ((color >> 16) & 0xff) / 0xff;\n data[index + 1] = ((color >> 8) & 0xff) / 0xff;\n data[index + 2] = (color & 0xff) / 0xff;\n data[index + 3] = 1;\n data[index + 4] = this._method.strength;\n data[index + 5] = this._method.power;\n }\n };\n /**\n * @inheritDoc\n */\n EffectRimLightChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var dataRegister = registerCache.getFreeFragmentConstant();\n var dataRegister2 = registerCache.getFreeFragmentConstant();\n var temp = registerCache.getFreeFragmentVectorTemp();\n var code = \"\";\n this._rimColorIndex = dataRegister.index * 4;\n code += \"dp3 \" + temp + \".x, \" + sharedRegisters.viewDirFragment + \".xyz, \" + sharedRegisters.normalFragment + \".xyz\\n\" +\n \"sat \" + temp + \".x, \" + temp + \".x\\n\" +\n \"sub \" + temp + \".x, \" + dataRegister + \".w, \" + temp + \".x\\n\" +\n \"pow \" + temp + \".x, \" + temp + \".x, \" + dataRegister2 + \".y\\n\" +\n \"mul \" + temp + \".x, \" + temp + \".x, \" + dataRegister2 + \".x\\n\" +\n \"sub \" + temp + \".x, \" + dataRegister + \".w, \" + temp + \".x\\n\" +\n \"mul \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + temp + \".x\\n\" +\n \"sub \" + temp + \".w, \" + dataRegister + \".w, \" + temp + \".x\\n\";\n if (this._method.blendMode == EffectRimLightMethod.ADD) {\n code += \"mul \" + temp + \".xyz, \" + temp + \".w, \" + dataRegister + \".xyz\\n\" +\n \"add \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + temp + \".xyz\\n\";\n }\n else if (this._method.blendMode == EffectRimLightMethod.MULTIPLY) {\n code += \"mul \" + temp + \".xyz, \" + temp + \".w, \" + dataRegister + \".xyz\\n\" +\n \"mul \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + temp + \".xyz\\n\";\n }\n else {\n code += \"sub \" + temp + \".xyz, \" + dataRegister + \".xyz, \" + targetReg + \".xyz\\n\" +\n \"mul \" + temp + \".xyz, \" + temp + \".xyz, \" + temp + \".w\\n\" +\n \"add \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + temp + \".xyz\\n\";\n }\n return code;\n };\n return EffectRimLightChunk;\n}(ShaderChunkBase));\nexport { EffectRimLightChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/EffectRimLightChunk.js","import * as tslib_1 from \"tslib\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * NormalBasicChunk is the default method for standard tangent-space normal mapping.\n */\nvar NormalBasicChunk = (function (_super) {\n tslib_1.__extends(NormalBasicChunk, _super);\n /**\n * Creates a new EffectEnvMapChunk.\n */\n function NormalBasicChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n NormalBasicChunk.prototype._isUsed = function () {\n if (this._texture && this._shader.normalDependencies)\n return true;\n return false;\n };\n /**\n * @inheritDoc\n */\n NormalBasicChunk.prototype._initVO = function (chunkVO) {\n if (this._method.texture) {\n this._texture = this._shader.getAbstraction(this._method.texture);\n this._shader.uvDependencies++;\n }\n };\n /**\n * Indicates whether or not this method outputs normals in tangent space. Override for object-space normals.\n */\n NormalBasicChunk.prototype._outputsTangentNormals = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n NormalBasicChunk.prototype._activate = function () {\n if (this._texture)\n this._texture.activate();\n };\n NormalBasicChunk.prototype._setRenderState = function (renderable, projection) {\n if (this._texture)\n this._texture._setRenderState(renderable);\n };\n /**\n * @inheritDoc\n */\n NormalBasicChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n if (this._texture)\n code += this._texture._getFragmentCode(targetReg, registerCache, sharedRegisters, sharedRegisters.uvVarying);\n code += \"sub \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + sharedRegisters.commons + \".xxx\\n\" +\n \"nrm \" + targetReg + \".xyz, \" + targetReg + \"\\n\";\n return code;\n };\n return NormalBasicChunk;\n}(ShaderChunkBase));\nexport { NormalBasicChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/NormalBasicChunk.js","import * as tslib_1 from \"tslib\";\nimport { NormalBasicChunk } from \"./NormalBasicChunk\";\n/**\n * NormalHeightMapChunk provides a normal map method that uses a height map to calculate the normals.\n */\nvar NormalHeightMapChunk = (function (_super) {\n tslib_1.__extends(NormalHeightMapChunk, _super);\n /**\n * Creates a new NormalHeightMapChunk.\n */\n function NormalHeightMapChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n /**\n * @inheritDoc\n */\n NormalHeightMapChunk.prototype._initConstants = function () {\n var index = this._fragmentConstantsIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = 1 / this._method.texture.image2D.width;\n data[index + 1] = 1 / this._method.texture.image2D.height;\n data[index + 2] = 0;\n data[index + 3] = 1;\n data[index + 4] = this._method.worldXYRatio;\n data[index + 5] = this._method.worldXZRatio;\n };\n Object.defineProperty(NormalHeightMapChunk.prototype, \"tangentSpace\", {\n /**\n * @inheritDoc\n */\n get: function () {\n return false;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n NormalHeightMapChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n var temp = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp, 1);\n var dataReg = registerCache.getFreeFragmentConstant();\n var dataReg2 = registerCache.getFreeFragmentConstant();\n this._fragmentConstantsIndex = dataReg.index * 4;\n code += this._texture._getFragmentCode(targetReg, registerCache, sharedRegisters, sharedRegisters.uvVarying) +\n \"add \" + temp + \", \" + sharedRegisters.uvVarying + \", \" + dataReg + \".xzzz\\n\" +\n this._texture._getFragmentCode(temp, registerCache, sharedRegisters, temp) +\n \"sub \" + targetReg + \".x, \" + targetReg + \".x, \" + temp + \".x\\n\" +\n \"add \" + temp + \", \" + sharedRegisters.uvVarying + \", \" + dataReg + \".zyzz\\n\" +\n this._texture._getFragmentCode(temp, registerCache, sharedRegisters, temp) +\n \"sub \" + targetReg + \".z, \" + targetReg + \".z, \" + temp + \".x\\n\" +\n \"mov \" + targetReg + \".y, \" + dataReg + \".w\\n\" +\n \"mul \" + targetReg + \".xz, \" + targetReg + \".xz, \" + dataReg2 + \".xy\\n\" +\n \"nrm \" + targetReg + \".xyz, \" + targetReg + \".xyz\\n\";\n registerCache.removeFragmentTempUsage(temp);\n return code;\n };\n return NormalHeightMapChunk;\n}(NormalBasicChunk));\nexport { NormalHeightMapChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/NormalHeightMapChunk.js","import * as tslib_1 from \"tslib\";\nimport { NormalBasicChunk } from \"./NormalBasicChunk\";\n/**\n * NormalSimpleWaterChunk provides a basic normal map method to create water ripples by translating two wave normal maps.\n */\nvar NormalSimpleWaterChunk = (function (_super) {\n tslib_1.__extends(NormalSimpleWaterChunk, _super);\n /**\n * Creates a new NormalHeightMapChunk.\n */\n function NormalSimpleWaterChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n /**\n * @inheritDoc\n */\n NormalSimpleWaterChunk.prototype._initConstants = function () {\n var index = this._fragmentConstantsIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = .5;\n data[index + 1] = 0;\n data[index + 2] = 0;\n data[index + 3] = 1;\n };\n /**\n * @inheritDoc\n */\n NormalSimpleWaterChunk.prototype._initVO = function (chunkVO) {\n _super.prototype._initVO.call(this, chunkVO);\n if (this._method.secondaryNormalMap) {\n this._secondaryNormalMap = this._shader.getAbstraction(this._method.secondaryNormalMap);\n this._shader.uvDependencies++;\n }\n };\n /**\n * @inheritDoc\n */\n NormalSimpleWaterChunk.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n this._secondaryNormalMap = null;\n };\n /**\n * @inheritDoc\n */\n NormalSimpleWaterChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n if (this._invalid) {\n var data = this._shader.fragmentConstantData;\n var index = this._fragmentConstantsIndex;\n data[index + 4] = this._method.water1OffsetX;\n data[index + 5] = this._method.water1OffsetY;\n data[index + 6] = this._method.water2OffsetX;\n data[index + 7] = this._method.water2OffsetY;\n }\n if (this._secondaryNormalMap)\n this._secondaryNormalMap.activate();\n };\n /**\n * @inheritDoc\n */\n NormalSimpleWaterChunk.prototype._setRenderState = function (renderable, projection) {\n _super.prototype._setRenderState.call(this, renderable, projection);\n if (this._secondaryNormalMap)\n this._secondaryNormalMap._setRenderState(renderable);\n };\n /**\n * @inheritDoc\n */\n NormalSimpleWaterChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n var temp = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp, 1);\n var dataReg = registerCache.getFreeFragmentConstant();\n var dataReg2 = registerCache.getFreeFragmentConstant();\n this._fragmentConstantsIndex = dataReg.index * 4;\n code += \"add \" + temp + \", \" + sharedRegisters.uvVarying + \", \" + dataReg2 + \".xyxy\\n\";\n if (this._texture)\n code += this._texture._getFragmentCode(targetReg, registerCache, sharedRegisters, temp);\n code += \"add \" + temp + \", \" + sharedRegisters.uvVarying + \", \" + dataReg2 + \".zwzw\\n\";\n if (this._secondaryNormalMap)\n code += this._secondaryNormalMap._getFragmentCode(temp, registerCache, sharedRegisters, temp);\n code += \"add \" + targetReg + \", \" + targetReg + \", \" + temp + \"\t\t\\n\" +\n \"mul \" + targetReg + \", \" + targetReg + \", \" + dataReg + \".x\t\\n\" +\n \"sub \" + targetReg + \".xyz, \" + targetReg + \".xyz, \" + sharedRegisters.commons + \".xxx\t\\n\" +\n \"nrm \" + targetReg + \".xyz, \" + targetReg + \".xyz\t\t\t\t\t\t\t\\n\";\n return code;\n };\n return NormalSimpleWaterChunk;\n}(NormalBasicChunk));\nexport { NormalSimpleWaterChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/NormalSimpleWaterChunk.js","import * as tslib_1 from \"tslib\";\nimport { Matrix3D } from \"@awayjs/core\";\nimport { CompositeChunkBase } from \"./CompositeChunkBase\";\n/**\n * ShadowCascadeChunk is a shadow map method to apply cascade shadow mapping on materials.\n * Must be used with a DirectionalLight with a CascadeShadowMapper assigned to its shadowMapper property.\n *\n * @see away.lights.CascadeShadowMapper\n */\nvar ShadowCascadeChunk = (function (_super) {\n tslib_1.__extends(ShadowCascadeChunk, _super);\n /**\n * Creates a new ShadowCascadeChunk.\n */\n function ShadowCascadeChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n ShadowCascadeChunk.prototype._initVO = function (chunkVO) {\n _super.prototype._initVO.call(this, chunkVO);\n chunkVO.needsProjection = true;\n };\n /**\n * @inheritDoc\n */\n ShadowCascadeChunk.prototype._initConstants = function () {\n _super.prototype._initConstants.call(this);\n var fragmentData = this._shader.fragmentConstantData;\n var vertexData = this._shader.vertexConstantData;\n var index = this._fragmentConstantsIndex;\n fragmentData[index] = 1.0;\n fragmentData[index + 1] = 1 / 255.0;\n fragmentData[index + 2] = 1 / 65025.0;\n fragmentData[index + 3] = 1 / 16581375.0;\n fragmentData[index + 6] = .5;\n fragmentData[index + 7] = -.5;\n index = this._vertexConstantsIndex;\n vertexData[index] = .5;\n vertexData[index + 1] = -.5;\n vertexData[index + 2] = 0;\n var numCascades = this._method.cascadeShadowMapper.numCascades;\n this._projectionMatrices = new Array(numCascades);\n for (var k = 0; k < numCascades; ++k)\n this._projectionMatrices[k] = new Matrix3D(new Float32Array(this._shader.vertexConstantData.buffer, (this._vertexConstantsIndex + 4 + k * 16) * 4, 16));\n };\n /**\n * @inheritDoc\n */\n ShadowCascadeChunk.prototype._cleanCompilationData = function () {\n _super.prototype._cleanCompilationData.call(this);\n this._cascadeProjections = null;\n this._depthMapCoordVaryings = null;\n this._projectionMatrices = null;\n };\n /**\n * @inheritDoc\n */\n ShadowCascadeChunk.prototype._getVertexCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n var dataReg = registerCache.getFreeVertexConstant();\n this._vertexConstantsIndex = dataReg.index * 4;\n //Create the registers for the cascades' projection coordinates.\n this._cascadeProjections = new Array(this._method.cascadeShadowMapper.numCascades);\n this._depthMapCoordVaryings = new Array(this._method.cascadeShadowMapper.numCascades);\n for (var i = 0; i < this._method.cascadeShadowMapper.numCascades; ++i) {\n this._depthMapCoordVaryings[i] = registerCache.getFreeVarying();\n this._cascadeProjections[i] = registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n registerCache.getFreeVertexConstant();\n }\n var temp = registerCache.getFreeVertexVectorTemp();\n for (var i = 0; i < this._method.cascadeShadowMapper.numCascades; ++i) {\n code += \"m44 \" + temp + \", \" + sharedRegisters.globalPositionVertex + \", \" + this._cascadeProjections[i] + \"\\n\" +\n \"add \" + this._depthMapCoordVaryings[i] + \", \" + temp + \", \" + dataReg + \".zzwz\\n\";\n }\n return code;\n };\n /**\n * @inheritDoc\n */\n ShadowCascadeChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var numCascades = this._method.cascadeShadowMapper.numCascades;\n var decReg = registerCache.getFreeFragmentConstant();\n var dataReg = registerCache.getFreeFragmentConstant();\n var planeDistanceReg = registerCache.getFreeFragmentConstant();\n var planeDistances = Array(planeDistanceReg + \".x\", planeDistanceReg + \".y\", planeDistanceReg + \".z\", planeDistanceReg + \".w\");\n var code;\n this._fragmentConstantsIndex = decReg.index * 4;\n var inQuad = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(inQuad, 1);\n var uvCoord = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(uvCoord, 1);\n // assume lowest partition is selected, will be overwritten later otherwise\n code = \"mov \" + uvCoord + \", \" + this._depthMapCoordVaryings[numCascades - 1] + \"\\n\";\n for (var i = numCascades - 2; i >= 0; --i) {\n var uvProjection = this._depthMapCoordVaryings[i];\n // calculate if in texturemap (result == 0 or 1, only 1 for a single partition)\n code += \"slt \" + inQuad + \".z, \" + sharedRegisters.projectionFragment + \".z, \" + planeDistances[i] + \"\\n\"; // z = x > minX, w = y > minY\n var temp = registerCache.getFreeFragmentVectorTemp();\n // linearly interpolate between old and new uv coords using predicate value == conditional toggle to new value if predicate == 1 (true)\n code += \"sub \" + temp + \", \" + uvProjection + \", \" + uvCoord + \"\\n\" +\n \"mul \" + temp + \", \" + temp + \", \" + inQuad + \".z\\n\" +\n \"add \" + uvCoord + \", \" + uvCoord + \", \" + temp + \"\\n\";\n }\n registerCache.removeFragmentTempUsage(inQuad);\n code += \"div \" + uvCoord + \", \" + uvCoord + \", \" + uvCoord + \".w\\n\" +\n \"mul \" + uvCoord + \".xy, \" + uvCoord + \".xy, \" + dataReg + \".zw\\n\" +\n \"add \" + uvCoord + \".xy, \" + uvCoord + \".xy, \" + dataReg + \".zz\\n\";\n code += this._baseChunk._getCascadeFragmentCode(decReg, uvCoord, targetReg, registerCache, sharedRegisters) +\n \"add \" + targetReg + \".w, \" + targetReg + \".w, \" + dataReg + \".y\\n\";\n registerCache.removeFragmentTempUsage(uvCoord);\n return code;\n };\n /**\n * @inheritDoc\n */\n ShadowCascadeChunk.prototype._activate = function () {\n this._baseChunk.depthMap.activate();\n this._shader.vertexConstantData[this._vertexConstantsIndex + 3] = -1 / (this._method.cascadeShadowMapper.depth * this._method.epsilon);\n var numCascades = this._method.cascadeShadowMapper.numCascades;\n for (var k = 0; k < numCascades; ++k)\n this._projectionMatrices[k].copyFrom(this._method.cascadeShadowMapper.getDepthProjections(k), true);\n var fragmentData = this._shader.fragmentConstantData;\n var fragmentIndex = this._fragmentConstantsIndex;\n fragmentData[fragmentIndex + 5] = 1 - this._method.alpha;\n var nearPlaneDistances = this._method.cascadeShadowMapper._iNearPlaneDistances;\n fragmentIndex += 8;\n for (var i = 0; i < numCascades; ++i)\n fragmentData[fragmentIndex + i] = nearPlaneDistances[i];\n this._baseChunk._activateForCascade();\n };\n /**\n * @inheritDoc\n */\n ShadowCascadeChunk.prototype._setRenderState = function (renderable, projection) {\n };\n return ShadowCascadeChunk;\n}(CompositeChunkBase));\nexport { ShadowCascadeChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/ShadowCascadeChunk.js","import * as tslib_1 from \"tslib\";\nimport { Matrix3D, AbstractMethodError } from \"@awayjs/core\";\nimport { PointLight } from \"@awayjs/scene\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * ShadowChunkBase provides an abstract method for simple (non-wrapping) shadow map methods.\n */\nvar ShadowChunkBase = (function (_super) {\n tslib_1.__extends(ShadowChunkBase, _super);\n /**\n * Creates a new ShadowChunkBase object.\n */\n function ShadowChunkBase(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n _this._usePoint = (method.castingLight instanceof PointLight);\n return _this;\n }\n Object.defineProperty(ShadowChunkBase.prototype, \"depthMap\", {\n get: function () {\n return this._depthMap;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ShadowChunkBase.prototype._initVO = function (chunkVO) {\n chunkVO.needsView = true;\n chunkVO.needsGlobalVertexPos = true;\n chunkVO.needsGlobalFragmentPos = this._usePoint;\n chunkVO.needsNormals = this._shader.numLights > 0;\n this._depthMap = this._shader.getAbstraction(this._method.castingLight.shadowMapper.depthMap);\n };\n /**\n * @inheritDoc\n */\n ShadowChunkBase.prototype._initConstants = function () {\n var fragmentData = this._shader.fragmentConstantData;\n var vertexData = this._shader.vertexConstantData;\n var index = this._fragmentConstantsIndex;\n fragmentData[index] = 1.0;\n fragmentData[index + 1] = 1 / 255.0;\n fragmentData[index + 2] = 1 / 65025.0;\n fragmentData[index + 3] = 1 / 16581375.0;\n fragmentData[index + 6] = 0;\n fragmentData[index + 7] = 1;\n if (this._usePoint) {\n fragmentData[index + 8] = 0;\n fragmentData[index + 9] = 0;\n fragmentData[index + 10] = 0;\n fragmentData[index + 11] = 1;\n }\n index = this._vertexConstantsIndex;\n if (index != -1) {\n vertexData[index] = .5;\n vertexData[index + 1] = .5;\n vertexData[index + 2] = 0.0;\n vertexData[index + 3] = 1.0;\n }\n this._depthProjectionMatrix = new Matrix3D(new Float32Array(this._shader.vertexConstantData.buffer, (this._vertexConstantsIndex + 4) * 4, 16));\n };\n Object.defineProperty(ShadowChunkBase.prototype, \"_iDepthMapCoordReg\", {\n /**\n * Wrappers that override the vertex shader need to set this explicitly\n */\n get: function () {\n return this._depthMapCoordReg;\n },\n set: function (value) {\n this._depthMapCoordReg = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n ShadowChunkBase.prototype._cleanCompilationData = function () {\n _super.prototype._cleanCompilationData.call(this);\n this._depthMapCoordReg = null;\n };\n /**\n * @inheritDoc\n */\n ShadowChunkBase.prototype._getVertexCode = function (regCache, sharedRegisters) {\n return this._usePoint ? this._getPointVertexCode(regCache, sharedRegisters) : this._getPlanarVertexCode(regCache, sharedRegisters);\n };\n /**\n * @inheritDoc\n */\n ShadowChunkBase.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = this._usePoint ? this._getPointFragmentCode(targetReg, registerCache, sharedRegisters) : this._getPlanarFragmentCode(targetReg, registerCache, sharedRegisters);\n code += \"add \" + targetReg + \".w, \" + targetReg + \".w, fc\" + (this._fragmentConstantsIndex / 4 + 1) + \".y\\n\" +\n \"sat \" + targetReg + \".w, \" + targetReg + \".w\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n ShadowChunkBase.prototype._setRenderState = function (renderable, projection) {\n if (!this._usePoint)\n this._depthProjectionMatrix.copyFrom(this._method.castingLight.shadowMapper.iDepthProjection, true);\n this._depthMap._setRenderState(renderable);\n };\n /**\n * Gets the fragment code for combining this method with a cascaded shadow map method.\n * @param methodVO The MethodVO object linking this method with the pass currently being compiled.\n * @param regCache The register cache used during the compilation.\n * @param decodeRegister The register containing the data to decode the shadow map depth value.\n * @param depthTexture The texture containing the shadow map.\n * @param depthProjection The projection of the fragment relative to the light.\n * @param targetRegister The register to contain the shadow coverage\n * @return\n */\n ShadowChunkBase.prototype._getCascadeFragmentCode = function (decodeRegister, depthProjection, targetRegister, registerCache, sharedRegisters) {\n throw new Error(\"This shadow method is incompatible with cascade shadows\");\n };\n /**\n * @inheritDoc\n */\n ShadowChunkBase.prototype._activate = function () {\n var fragmentData = this._shader.fragmentConstantData;\n var index = this._fragmentConstantsIndex;\n if (this._usePoint)\n fragmentData[index + 4] = -Math.pow(1 / (this._method.castingLight.fallOff * this._method.epsilon), 2);\n else\n this._shader.vertexConstantData[this._vertexConstantsIndex + 3] = -1 / (this._method.castingLight.shadowMapper.depth * this._method.epsilon);\n fragmentData[index + 5] = 1 - this._method.alpha;\n if (this._usePoint) {\n var pos = this._method.castingLight.scenePosition;\n fragmentData[index + 8] = pos.x;\n fragmentData[index + 9] = pos.y;\n fragmentData[index + 10] = pos.z;\n // used to decompress distance\n var f = this._method.castingLight.fallOff;\n fragmentData[index + 11] = 1 / (2 * f * f);\n }\n this._depthMap.activate();\n };\n /**\n * Sets the method state for cascade shadow mapping.\n */\n ShadowChunkBase.prototype._activateForCascade = function () {\n throw new Error(\"This shadow method is incompatible with cascade shadows\");\n };\n /**\n * Gets the vertex code for shadow mapping with a point light.\n *\n * @param methodVO The MethodVO object linking this method with the pass currently being compiled.\n * @param regCache The register cache used during the compilation.\n */\n ShadowChunkBase.prototype._getPointVertexCode = function (regCache, sharedRegisters) {\n this._vertexConstantsIndex = -1;\n return \"\";\n };\n /**\n * Gets the vertex code for shadow mapping with a planar shadow map (fe: directional lights).\n *\n * @param methodVO The MethodVO object linking this method with the pass currently being compiled.\n * @param regCache The register cache used during the compilation.\n */\n ShadowChunkBase.prototype._getPlanarVertexCode = function (regCache, sharedRegisters) {\n var code = \"\";\n var temp = regCache.getFreeVertexVectorTemp();\n var dataReg = regCache.getFreeVertexConstant();\n this._vertexConstantsIndex = dataReg.index * 4;\n var depthMapProj = regCache.getFreeVertexConstant();\n regCache.getFreeVertexConstant();\n regCache.getFreeVertexConstant();\n regCache.getFreeVertexConstant();\n this._depthMapCoordReg = regCache.getFreeVarying();\n // todo: can epsilon be applied here instead of fragment shader?\n code += \"m44 \" + temp + \", \" + sharedRegisters.globalPositionVertex + \", \" + depthMapProj + \"\\n\" +\n \"div \" + temp + \", \" + temp + \", \" + temp + \".w\\n\" +\n \"mul \" + temp + \".xy, \" + temp + \".xy, \" + dataReg + \".xy\\n\" +\n \"add \" + this._depthMapCoordReg + \", \" + temp + \", \" + dataReg + \".xxwz\\n\";\n //\"sub \" + this._depthMapCoordReg + \".z, \" + this._depthMapCoordReg + \".z, \" + this._depthMapCoordReg + \".w\\n\";\n return code;\n };\n /**\n * Gets the fragment code for shadow mapping with a planar shadow map.\n * @param methodVO The MethodVO object linking this method with the pass currently being compiled.\n * @param regCache The register cache used during the compilation.\n * @param targetReg The register to contain the shadow coverage\n * @return\n */\n ShadowChunkBase.prototype._getPlanarFragmentCode = function (targetReg, regCache, sharedRegisters) {\n throw new AbstractMethodError();\n };\n /**\n * Gets the fragment code for shadow mapping with a point light.\n * @param methodVO The MethodVO object linking this method with the pass currently being compiled.\n * @param regCache The register cache used during the compilation.\n * @param targetReg The register to contain the shadow coverage\n * @return\n */\n ShadowChunkBase.prototype._getPointFragmentCode = function (targetReg, regCache, sharedRegisters) {\n throw new AbstractMethodError();\n };\n return ShadowChunkBase;\n}(ShaderChunkBase));\nexport { ShadowChunkBase };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/ShadowChunkBase.js","import * as tslib_1 from \"tslib\";\nimport { ShadowDitheredMethod } from \"../methods/ShadowDitheredMethod\";\nimport { ShadowChunkBase } from \"./ShadowChunkBase\";\n/**\n * ShadowDitheredChunk provides a soft shadowing technique by randomly distributing sample points differently for each fragment.\n */\nvar ShadowDitheredChunk = (function (_super) {\n tslib_1.__extends(ShadowDitheredChunk, _super);\n /**\n * Creates a new ShadowDitheredChunk.\n */\n function ShadowDitheredChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n /**\n * @inheritDoc\n */\n ShadowDitheredChunk.prototype._initVO = function (chunkVO) {\n _super.prototype._initVO.call(this, chunkVO);\n chunkVO.needsProjection = true;\n this._grainMap = this._shader.getAbstraction(ShadowDitheredMethod._grainTexture);\n };\n /**\n * @inheritDoc\n */\n ShadowDitheredChunk.prototype._initConstants = function () {\n _super.prototype._initConstants.call(this);\n var data = this._shader.fragmentConstantData;\n var index = this._fragmentConstantsIndex;\n data[index + 8] = 1 / this._method.numSamples;\n };\n /**\n * @inheritDoc\n */\n ShadowDitheredChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n var data = this._shader.fragmentConstantData;\n var index = this._fragmentConstantsIndex;\n data[index + 9] = (this._stage.width - 1) / 63;\n data[index + 10] = (this._stage.height - 1) / 63;\n data[index + 11] = 2 * this._method.range / this._method.castingLight.shadowMapper.depthMapSize;\n this._grainMap.activate();\n };\n /**\n * @inheritDoc\n */\n ShadowDitheredChunk.prototype._setRenderState = function (renderable, projection) {\n _super.prototype._setRenderState.call(this, renderable, projection);\n this._grainMap._setRenderState(renderable);\n };\n /**\n * Adds the code for another tap to the shader code.\n * @param uvReg The uv register for the tap.\n * @param depthMapRegister The texture register containing the depth map.\n * @param decReg The register containing the depth map decoding data.\n * @param targetReg The target register to add the tap comparison result.\n * @param regCache The register cache managing the registers.\n * @return\n */\n ShadowDitheredChunk.prototype._addSample = function (uvReg, decReg, targetReg, regCache, sharedRegisters) {\n var temp = regCache.getFreeFragmentVectorTemp();\n return this._depthMap._getFragmentCode(temp, regCache, sharedRegisters, uvReg) +\n \"dp4 \" + temp + \".z, \" + temp + \", \" + decReg + \"\\n\" +\n \"slt \" + temp + \".z, \" + this._depthMapCoordReg + \".z, \" + temp + \".z\\n\" +\n \"add \" + targetReg + \".w, \" + targetReg + \".w, \" + temp + \".z\\n\";\n };\n /**\n * @inheritDoc\n */\n ShadowDitheredChunk.prototype._activateForCascade = function () {\n var data = this._shader.fragmentConstantData;\n var index = this._cascadeFragmentConstantsIndex;\n data[index] = 1 / this._method.numSamples;\n data[index + 1] = (this._stage.width - 1) / 63;\n data[index + 2] = (this._stage.height - 1) / 63;\n data[index + 3] = 2 * this._method.range / this._method.castingLight.shadowMapper.depthMapSize;\n this._grainMap.activate();\n };\n /**\n * @inheritDoc\n */\n ShadowDitheredChunk.prototype._getCascadeFragmentCode = function (decodeRegister, depthProjection, targetRegister, registerCache, sharedRegisters) {\n this._depthMapCoordReg = depthProjection;\n var dataReg = registerCache.getFreeFragmentConstant();\n this._cascadeFragmentConstantsIndex = dataReg.index * 4;\n return this.getSampleCode(dataReg, decodeRegister, targetRegister, registerCache, sharedRegisters);\n };\n /**\n * @inheritDoc\n */\n ShadowDitheredChunk.prototype._getPlanarFragmentCode = function (targetReg, regCache, sharedRegisters) {\n var decReg = regCache.getFreeFragmentConstant();\n var dataReg = regCache.getFreeFragmentConstant();\n var customDataReg = regCache.getFreeFragmentConstant();\n this._fragmentConstantsIndex = decReg.index * 4;\n return this.getSampleCode(customDataReg, decReg, targetReg, regCache, sharedRegisters);\n };\n /**\n * Get the actual shader code for shadow mapping\n * @param regCache The register cache managing the registers.\n * @param depthMapRegister The texture register containing the depth map.\n * @param decReg The register containing the depth map decoding data.\n * @param targetReg The target register to add the shadow coverage.\n */\n ShadowDitheredChunk.prototype.getSampleCode = function (customDataReg, decReg, targetReg, regCache, sharedRegisters) {\n var code = \"\";\n var numSamples = this._method.numSamples;\n var uvReg = regCache.getFreeFragmentVectorTemp();\n regCache.addFragmentTempUsages(uvReg, 1);\n var temp = regCache.getFreeFragmentVectorTemp();\n regCache.addFragmentTempUsages(temp, 1);\n var projectionReg = sharedRegisters.projectionFragment;\n code += \"div \" + uvReg + \", \" + projectionReg + \", \" + projectionReg + \".w\\n\" +\n \"mul \" + uvReg + \".xy, \" + uvReg + \".xy, \" + customDataReg + \".yz\\n\";\n var index = numSamples;\n while (index > 0) {\n if (index == numSamples) {\n code += this._grainMap._getFragmentCode(uvReg, regCache, sharedRegisters, uvReg);\n }\n else {\n code += \"mov \" + temp + \", \" + uvReg + \".zwxy \\n\" +\n this._grainMap._getFragmentCode(uvReg, regCache, sharedRegisters, temp);\n }\n // keep grain in uvReg.zw\n code += \"sub \" + uvReg + \".zw, \" + uvReg + \".xy, fc0.xx\\n\" +\n \"mul \" + uvReg + \".zw, \" + uvReg + \".zw, \" + customDataReg + \".w\\n\"; // (tex unpack scale and tex scale in one)\n if (index == numSamples) {\n // first sample\n code += \"add \" + uvReg + \".xy, \" + uvReg + \".zw, \" + this._depthMapCoordReg + \".xy\\n\" +\n this._depthMap._getFragmentCode(temp, regCache, sharedRegisters, uvReg) +\n \"dp4 \" + temp + \".z, \" + temp + \", \" + decReg + \"\\n\" +\n \"slt \" + targetReg + \".w, \" + this._depthMapCoordReg + \".z, \" + temp + \".z\\n\"; // 0 if in shadow\n }\n else {\n code += this._addSample(uvReg, decReg, targetReg, regCache, sharedRegisters);\n }\n if (index > 4)\n code += \"add \" + uvReg + \".xy, \" + uvReg + \".xy, \" + uvReg + \".zw\\n\" + this._addSample(uvReg, decReg, targetReg, regCache, sharedRegisters);\n if (index > 1)\n code += \"sub \" + uvReg + \".xy, \" + this._depthMapCoordReg + \".xy, \" + uvReg + \".zw\\n\" + this._addSample(uvReg, decReg, targetReg, regCache, sharedRegisters);\n if (index > 5)\n code += \"sub \" + uvReg + \".xy, \" + uvReg + \".xy, \" + uvReg + \".zw\\n\" + this._addSample(uvReg, decReg, targetReg, regCache, sharedRegisters);\n if (index > 2) {\n code += \"neg \" + uvReg + \".w, \" + uvReg + \".w\\n\"; // will be rotated 90 degrees when being accessed as wz\n code += \"add \" + uvReg + \".xy, \" + uvReg + \".wz, \" + this._depthMapCoordReg + \".xy\\n\" + this._addSample(uvReg, decReg, targetReg, regCache, sharedRegisters);\n }\n if (index > 6)\n code += \"add \" + uvReg + \".xy, \" + uvReg + \".xy, \" + uvReg + \".wz\\n\" + this._addSample(uvReg, decReg, targetReg, regCache, sharedRegisters);\n if (index > 3)\n code += \"sub \" + uvReg + \".xy, \" + this._depthMapCoordReg + \".xy, \" + uvReg + \".wz\\n\" + this._addSample(uvReg, decReg, targetReg, regCache, sharedRegisters);\n if (index > 7)\n code += \"sub \" + uvReg + \".xy, \" + uvReg + \".xy, \" + uvReg + \".wz\\n\" + this._addSample(uvReg, decReg, targetReg, regCache, sharedRegisters);\n index -= 8;\n }\n regCache.removeFragmentTempUsage(temp);\n regCache.removeFragmentTempUsage(uvReg);\n code += \"mul \" + targetReg + \".w, \" + targetReg + \".w, \" + customDataReg + \".x\\n\"; // average\n return code;\n };\n return ShadowDitheredChunk;\n}(ShadowChunkBase));\nexport { ShadowDitheredChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/ShadowDitheredChunk.js","import * as tslib_1 from \"tslib\";\nimport { ShadowChunkBase } from \"./ShadowChunkBase\";\n/**\n * ShadowFilteredChunk provides a softened shadowing technique by bilinearly interpolating shadow comparison\n * results of neighbouring pixels.\n */\nvar ShadowFilteredChunk = (function (_super) {\n tslib_1.__extends(ShadowFilteredChunk, _super);\n /**\n * Creates a new ShadowFilteredChunk.\n */\n function ShadowFilteredChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n /**\n * @inheritDoc\n */\n ShadowFilteredChunk.prototype._initConstants = function () {\n _super.prototype._initConstants.call(this);\n var fragmentData = this._shader.fragmentConstantData;\n var index = this._fragmentConstantsIndex;\n fragmentData[index + 8] = .5;\n var size = this._method.castingLight.shadowMapper.depthMapSize;\n fragmentData[index + 9] = size;\n fragmentData[index + 10] = 1 / size;\n };\n /**\n * @inheritDoc\n */\n ShadowFilteredChunk.prototype._getPlanarFragmentCode = function (targetReg, regCache, sharedRegisters) {\n var code = \"\";\n var decReg = regCache.getFreeFragmentConstant();\n regCache.getFreeFragmentConstant();\n var customDataReg = regCache.getFreeFragmentConstant();\n this._fragmentConstantsIndex = decReg.index * 4;\n var depthCol = regCache.getFreeFragmentVectorTemp();\n regCache.addFragmentTempUsages(depthCol, 1);\n var uvReg = regCache.getFreeFragmentVectorTemp();\n regCache.addFragmentTempUsages(uvReg, 1);\n code += \"mov \" + uvReg + \", \" + this._depthMapCoordReg + \"\\n\" +\n this._depthMap._getFragmentCode(depthCol, regCache, sharedRegisters, this._depthMapCoordReg) +\n \"dp4 \" + depthCol + \".z, \" + depthCol + \", \" + decReg + \"\\n\" +\n \"slt \" + uvReg + \".z, \" + this._depthMapCoordReg + \".z, \" + depthCol + \".z\\n\" +\n \"add \" + uvReg + \".x, \" + this._depthMapCoordReg + \".x, \" + customDataReg + \".z\\n\" +\n this._depthMap._getFragmentCode(depthCol, regCache, sharedRegisters, uvReg) +\n \"dp4 \" + depthCol + \".z, \" + depthCol + \", \" + decReg + \"\\n\" +\n \"slt \" + uvReg + \".w, \" + this._depthMapCoordReg + \".z, \" + depthCol + \".z\\n\" +\n \"mul \" + depthCol + \".x, \" + this._depthMapCoordReg + \".x, \" + customDataReg + \".y\\n\" +\n \"frc \" + depthCol + \".x, \" + depthCol + \".x\\n\" +\n \"sub \" + uvReg + \".w, \" + uvReg + \".w, \" + uvReg + \".z\\n\" +\n \"mul \" + uvReg + \".w, \" + uvReg + \".w, \" + depthCol + \".x\\n\" +\n \"add \" + targetReg + \".w, \" + uvReg + \".z, \" + uvReg + \".w\\n\" +\n \"mov \" + uvReg + \".x, \" + this._depthMapCoordReg + \".x\\n\" +\n \"add \" + uvReg + \".y, \" + this._depthMapCoordReg + \".y, \" + customDataReg + \".z\\n\" +\n this._depthMap._getFragmentCode(depthCol, regCache, sharedRegisters, uvReg) +\n \"dp4 \" + depthCol + \".z, \" + depthCol + \", \" + decReg + \"\\n\" +\n \"slt \" + uvReg + \".z, \" + this._depthMapCoordReg + \".z, \" + depthCol + \".z\\n\" +\n \"add \" + uvReg + \".x, \" + this._depthMapCoordReg + \".x, \" + customDataReg + \".z\\n\" +\n this._depthMap._getFragmentCode(depthCol, regCache, sharedRegisters, uvReg) +\n \"dp4 \" + depthCol + \".z, \" + depthCol + \", \" + decReg + \"\\n\" +\n \"slt \" + uvReg + \".w, \" + this._depthMapCoordReg + \".z, \" + depthCol + \".z\\n\" +\n // recalculate fraction, since we ran out of registers :(\n \"mul \" + depthCol + \".x, \" + this._depthMapCoordReg + \".x, \" + customDataReg + \".y\\n\" +\n \"frc \" + depthCol + \".x, \" + depthCol + \".x\\n\" + \"sub \" + uvReg + \".w, \" + uvReg + \".w, \" + uvReg + \".z\\n\" +\n \"mul \" + uvReg + \".w, \" + uvReg + \".w, \" + depthCol + \".x\\n\" +\n \"add \" + uvReg + \".w, \" + uvReg + \".z, \" + uvReg + \".w\\n\" +\n \"mul \" + depthCol + \".x, \" + this._depthMapCoordReg + \".y, \" + customDataReg + \".y\\n\" +\n \"frc \" + depthCol + \".x, \" + depthCol + \".x\\n\" +\n \"sub \" + uvReg + \".w, \" + uvReg + \".w, \" + targetReg + \".w\\n\" +\n \"mul \" + uvReg + \".w, \" + uvReg + \".w, \" + depthCol + \".x\\n\" +\n \"add \" + targetReg + \".w, \" + targetReg + \".w, \" + uvReg + \".w\\n\";\n regCache.removeFragmentTempUsage(depthCol);\n regCache.removeFragmentTempUsage(uvReg);\n return code;\n };\n /**\n * @inheritDoc\n */\n ShadowFilteredChunk.prototype._activateForCascade = function () {\n var size = this._method.castingLight.shadowMapper.depthMapSize;\n var index = this._cascadeFragmentConstantsIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = size;\n data[index + 1] = 1 / size;\n };\n /**\n * @inheritDoc\n */\n ShadowFilteredChunk.prototype._getCascadeFragmentCode = function (decodeRegister, depthProjection, targetRegister, registerCache, sharedRegisters) {\n var code;\n var dataReg = registerCache.getFreeFragmentConstant();\n this._cascadeFragmentConstantsIndex = dataReg.index * 4;\n var temp = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(temp, 1);\n var predicate = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(predicate, 1);\n code = this._depthMap._getFragmentCode(temp, registerCache, sharedRegisters, depthProjection) +\n \"dp4 \" + temp + \".z, \" + temp + \", \" + decodeRegister + \"\\n\" +\n \"slt \" + predicate + \".x, \" + depthProjection + \".z, \" + temp + \".z\\n\" +\n \"add \" + depthProjection + \".x, \" + depthProjection + \".x, \" + dataReg + \".y\\n\" +\n this._depthMap._getFragmentCode(temp, registerCache, sharedRegisters, depthProjection) +\n \"dp4 \" + temp + \".z, \" + temp + \", \" + decodeRegister + \"\\n\" +\n \"slt \" + predicate + \".z, \" + depthProjection + \".z, \" + temp + \".z\\n\" +\n \"add \" + depthProjection + \".y, \" + depthProjection + \".y, \" + dataReg + \".y\\n\" +\n this._depthMap._getFragmentCode(temp, registerCache, sharedRegisters, depthProjection) +\n \"dp4 \" + temp + \".z, \" + temp + \", \" + decodeRegister + \"\\n\" +\n \"slt \" + predicate + \".w, \" + depthProjection + \".z, \" + temp + \".z\\n\" +\n \"sub \" + depthProjection + \".x, \" + depthProjection + \".x, \" + dataReg + \".y\\n\" +\n this._depthMap._getFragmentCode(temp, registerCache, sharedRegisters, depthProjection) +\n \"dp4 \" + temp + \".z, \" + temp + \", \" + decodeRegister + \"\\n\" +\n \"slt \" + predicate + \".y, \" + depthProjection + \".z, \" + temp + \".z\\n\" +\n \"mul \" + temp + \".xy, \" + depthProjection + \".xy, \" + dataReg + \".x\\n\" +\n \"frc \" + temp + \".xy, \" + temp + \".xy\\n\" +\n // some strange register juggling to prevent agal bugging out\n \"sub \" + depthProjection + \", \" + predicate + \".xyzw, \" + predicate + \".zwxy\\n\" +\n \"mul \" + depthProjection + \", \" + depthProjection + \", \" + temp + \".x\\n\" +\n \"add \" + predicate + \".xy, \" + predicate + \".xy, \" + depthProjection + \".zw\\n\" +\n \"sub \" + predicate + \".y, \" + predicate + \".y, \" + predicate + \".x\\n\" +\n \"mul \" + predicate + \".y, \" + predicate + \".y, \" + temp + \".y\\n\" +\n \"add \" + targetRegister + \".w, \" + predicate + \".x, \" + predicate + \".y\\n\";\n registerCache.removeFragmentTempUsage(temp);\n registerCache.removeFragmentTempUsage(predicate);\n return code;\n };\n return ShadowFilteredChunk;\n}(ShadowChunkBase));\nexport { ShadowFilteredChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/ShadowFilteredChunk.js","import * as tslib_1 from \"tslib\";\nimport { ShadowChunkBase } from \"./ShadowChunkBase\";\n/**\n * ShadowHardChunk provides the cheapest shadow map method by using a single tap without any filtering.\n */\nvar ShadowHardChunk = (function (_super) {\n tslib_1.__extends(ShadowHardChunk, _super);\n /**\n * Creates a new ShadowHardChunk.\n */\n function ShadowHardChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n /**\n * @inheritDoc\n */\n ShadowHardChunk.prototype._getPlanarFragmentCode = function (targetReg, regCache, sharedRegisters) {\n var code = \"\";\n var decReg = regCache.getFreeFragmentConstant();\n regCache.getFreeFragmentConstant();\n var depthCol = regCache.getFreeFragmentVectorTemp();\n this._fragmentConstantsIndex = decReg.index * 4;\n code += this._depthMap._getFragmentCode(depthCol, regCache, sharedRegisters, this._depthMapCoordReg) +\n \"dp4 \" + depthCol + \".z, \" + depthCol + \", \" + decReg + \"\\n\" +\n \"slt \" + targetReg + \".w, \" + this._depthMapCoordReg + \".z, \" + depthCol + \".z\\n\"; // 0 if in shadow\n return code;\n };\n /**\n * @inheritDoc\n */\n ShadowHardChunk.prototype._getPointFragmentCode = function (targetReg, regCache, sharedRegisters) {\n var code = \"\";\n var decReg = regCache.getFreeFragmentConstant();\n var epsReg = regCache.getFreeFragmentConstant();\n var posReg = regCache.getFreeFragmentConstant();\n var depthSampleCol = regCache.getFreeFragmentVectorTemp();\n regCache.addFragmentTempUsages(depthSampleCol, 1);\n var lightDir = regCache.getFreeFragmentVectorTemp();\n regCache.addFragmentTempUsages(lightDir, 1);\n this._fragmentConstantsIndex = decReg.index * 4;\n code += \"sub \" + lightDir + \", \" + sharedRegisters.globalPositionVarying + \", \" + posReg + \"\\n\" +\n \"dp3 \" + lightDir + \".w, \" + lightDir + \".xyz, \" + lightDir + \".xyz\\n\" +\n \"mul \" + lightDir + \".w, \" + lightDir + \".w, \" + posReg + \".w\\n\" +\n \"nrm \" + lightDir + \".xyz, \" + lightDir + \".xyz\\n\" +\n this._depthMap._getFragmentCode(depthSampleCol, regCache, sharedRegisters, lightDir) +\n \"dp4 \" + depthSampleCol + \".z, \" + depthSampleCol + \", \" + decReg + \"\\n\" +\n \"add \" + targetReg + \".w, \" + lightDir + \".w, \" + epsReg + \".x\\n\" +\n \"slt \" + targetReg + \".w, \" + targetReg + \".w, \" + depthSampleCol + \".z\\n\"; // 0 if in shadow\n regCache.removeFragmentTempUsage(lightDir);\n regCache.removeFragmentTempUsage(depthSampleCol);\n return code;\n };\n /**\n * @inheritDoc\n */\n ShadowHardChunk.prototype._getCascadeFragmentCode = function (decodeRegister, depthProjection, targetRegister, registerCache, sharedRegisters) {\n var temp = registerCache.getFreeFragmentVectorTemp();\n return this._depthMap._getFragmentCode(temp, registerCache, sharedRegisters, depthProjection) +\n \"dp4 \" + temp + \".z, \" + temp + \", \" + decodeRegister + \"\\n\" +\n \"slt \" + targetRegister + \".w, \" + depthProjection + \".z, \" + temp + \".z\\n\"; // 0 if in shadow\n };\n /**\n * @inheritDoc\n */\n ShadowHardChunk.prototype._activateForCascade = function () {\n };\n return ShadowHardChunk;\n}(ShadowChunkBase));\nexport { ShadowHardChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/ShadowHardChunk.js","import * as tslib_1 from \"tslib\";\nimport { CompositeChunkBase } from \"./CompositeChunkBase\";\n// TODO: shadow mappers references in materials should be an interface so that this class should NOT extend ShadowMapMethodBase just for some delegation work\n/**\n * ShadowNearChunk provides a shadow map method that restricts the shadowed area near the camera to optimize\n * shadow map usage. This method needs to be used in conjunction with a NearDirectionalShadowMapper.\n *\n * @see away.lights.NearDirectionalShadowMapper\n */\nvar ShadowNearChunk = (function (_super) {\n tslib_1.__extends(ShadowNearChunk, _super);\n /**\n * Creates a new ShadowNearChunk.\n */\n function ShadowNearChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n /**\n * @inheritDoc\n */\n ShadowNearChunk.prototype._initConstants = function () {\n _super.prototype._initConstants.call(this);\n var fragmentData = this._shader.fragmentConstantData;\n var index = this._fragmentConstantsIndex;\n fragmentData[index + 2] = 0;\n fragmentData[index + 3] = 1;\n };\n /**\n * @inheritDoc\n */\n ShadowNearChunk.prototype._initVO = function (chunkVO) {\n _super.prototype._initVO.call(this, chunkVO);\n chunkVO.needsProjection = true;\n };\n /**\n * @inheritDoc\n */\n ShadowNearChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = _super.prototype._getFragmentCode.call(this, targetReg, registerCache, sharedRegisters);\n var dataReg = registerCache.getFreeFragmentConstant();\n var temp = registerCache.getFreeFragmentSingleTemp();\n this._fragmentConstantsIndex = dataReg.index * 4;\n code += \"abs \" + temp + \", \" + sharedRegisters.projectionFragment + \".w\\n\" +\n \"sub \" + temp + \", \" + temp + \", \" + dataReg + \".x\\n\" +\n \"mul \" + temp + \", \" + temp + \", \" + dataReg + \".y\\n\" +\n \"sat \" + temp + \", \" + temp + \"\\n\" +\n \"sub \" + temp + \", \" + dataReg + \".w,\" + temp + \"\\n\" +\n \"sub \" + targetReg + \".w, \" + dataReg + \".w,\" + targetReg + \".w\\n\" +\n \"mul \" + targetReg + \".w, \" + targetReg + \".w, \" + temp + \"\\n\" +\n \"sub \" + targetReg + \".w, \" + dataReg + \".w,\" + targetReg + \".w\\n\";\n return code;\n };\n /**\n * @inheritDoc\n */\n ShadowNearChunk.prototype._setRenderState = function (renderable, projection) {\n // todo: move this to activate (needs camera)\n var near = projection.near;\n var d = projection.far - near;\n var maxDistance = this._method.castingLight.shadowMapper.coverageRatio;\n var minDistance = maxDistance * (1 - this._fadeRatio);\n maxDistance = near + maxDistance * d;\n minDistance = near + minDistance * d;\n var fragmentData = this._shader.fragmentConstantData;\n var index = this._fragmentConstantsIndex;\n fragmentData[index] = minDistance;\n fragmentData[index + 1] = 1 / (maxDistance - minDistance);\n _super.prototype._setRenderState.call(this, renderable, projection);\n };\n return ShadowNearChunk;\n}(CompositeChunkBase));\nexport { ShadowNearChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/ShadowNearChunk.js","import * as tslib_1 from \"tslib\";\nimport { ShadowChunkBase } from \"./ShadowChunkBase\";\n/**\n * ShadowSoftChunk provides a soft shadowing technique by randomly distributing sample points.\n */\nvar ShadowSoftChunk = (function (_super) {\n tslib_1.__extends(ShadowSoftChunk, _super);\n /**\n * Creates a new ShadowHardChunk.\n */\n function ShadowSoftChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n /**\n * @inheritDoc\n */\n ShadowSoftChunk.prototype._initConstants = function () {\n _super.prototype._initConstants.call(this);\n this._shader.fragmentConstantData[this._fragmentConstantsIndex + 8] = 1 / this._method.numSamples;\n this._shader.fragmentConstantData[this._fragmentConstantsIndex + 9] = 0;\n };\n /**\n * @inheritDoc\n */\n ShadowSoftChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n var texRange = .5 * this._method.range / this._method.castingLight.shadowMapper.depthMapSize;\n var data = this._shader.fragmentConstantData;\n var index = this._fragmentConstantsIndex + 10;\n var len = this._method.numSamples << 1;\n for (var i = 0; i < len; ++i)\n data[index + i] = this._method.offsets[i] * texRange;\n };\n /**\n * @inheritDoc\n */\n ShadowSoftChunk.prototype._getPlanarFragmentCode = function (targetReg, regCache, sharedRegisters) {\n // todo: move some things to super\n var decReg = regCache.getFreeFragmentConstant();\n regCache.getFreeFragmentConstant();\n var dataReg = regCache.getFreeFragmentConstant();\n this._fragmentConstantsIndex = decReg.index * 4;\n return this.getSampleCode(decReg, targetReg, regCache, sharedRegisters, dataReg);\n };\n /**\n * Adds the code for another tap to the shader code.\n * @param uv The uv register for the tap.\n * @param texture The texture register containing the depth map.\n * @param decode The register containing the depth map decoding data.\n * @param target The target register to add the tap comparison result.\n * @param regCache The register cache managing the registers.\n * @return\n */\n ShadowSoftChunk.prototype.addSample = function (decodeRegister, targetRegister, registerCache, sharedRegisters, uvReg) {\n var temp = registerCache.getFreeFragmentVectorTemp();\n return this._depthMap._getFragmentCode(temp, registerCache, sharedRegisters, uvReg) +\n \"dp4 \" + temp + \".z, \" + temp + \", \" + decodeRegister + \"\\n\" +\n \"slt \" + uvReg + \".w, \" + this._depthMapCoordReg + \".z, \" + temp + \".z\\n\" +\n \"add \" + targetRegister + \".w, \" + targetRegister + \".w, \" + uvReg + \".w\\n\";\n };\n /**\n * @inheritDoc\n */\n ShadowSoftChunk.prototype._activateForCascade = function () {\n _super.prototype._activate.call(this);\n var texRange = this._method.range / this._method.castingLight.shadowMapper.depthMapSize;\n var data = this._shader.fragmentConstantData;\n var index = this._secondaryFragmentConstantsIndex;\n var len = this._method.numSamples << 1;\n data[index] = 1 / this._method.numSamples;\n data[index + 1] = 0;\n index += 2;\n for (var i = 0; i < len; ++i)\n data[index + i] = this._method.offsets[i] * texRange;\n if (len % 4 == 0) {\n data[index + len] = 0;\n data[index + len + 1] = 0;\n }\n };\n /**\n * @inheritDoc\n */\n ShadowSoftChunk.prototype._getCascadeFragmentCode = function (decodeRegister, depthProjection, targetRegister, registerCache, sharedRegisters) {\n this._depthMapCoordReg = depthProjection;\n var dataReg = registerCache.getFreeFragmentConstant();\n this._secondaryFragmentConstantsIndex = dataReg.index * 4;\n return this.getSampleCode(decodeRegister, targetRegister, registerCache, sharedRegisters, dataReg);\n };\n /**\n * Get the actual shader code for shadow mapping\n * @param regCache The register cache managing the registers.\n * @param depthTexture The texture register containing the depth map.\n * @param decodeRegister The register containing the depth map decoding data.\n * @param targetReg The target register to add the shadow coverage.\n * @param dataReg The register containing additional data.\n */\n ShadowSoftChunk.prototype.getSampleCode = function (decodeRegister, targetRegister, registerCache, sharedRegisters, dataReg) {\n var code;\n var uvReg = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(uvReg, 1);\n var offsets = new Array(dataReg + \".zw\");\n var numRegs = this._method.numSamples >> 1;\n for (var i = 0; i < numRegs; ++i) {\n var reg = registerCache.getFreeFragmentConstant();\n offsets.push(reg + \".xy\");\n offsets.push(reg + \".zw\");\n }\n for (i = 0; i < this._method.numSamples; ++i) {\n if (i == 0) {\n var temp = registerCache.getFreeFragmentVectorTemp();\n code = \"add \" + uvReg + \", \" + this._depthMapCoordReg + \", \" + dataReg + \".zwyy\\n\" +\n this._depthMap._getFragmentCode(temp, registerCache, sharedRegisters, uvReg) +\n \"dp4 \" + temp + \".z, \" + temp + \", \" + decodeRegister + \"\\n\" +\n \"slt \" + targetRegister + \".w, \" + this._depthMapCoordReg + \".z, \" + temp + \".z\\n\"; // 0 if in shadow;\n }\n else {\n code += \"add \" + uvReg + \".xy, \" + this._depthMapCoordReg + \".xy, \" + offsets[i] + \"\\n\" +\n this.addSample(decodeRegister, targetRegister, registerCache, sharedRegisters, uvReg);\n }\n }\n registerCache.removeFragmentTempUsage(uvReg);\n code += \"mul \" + targetRegister + \".w, \" + targetRegister + \".w, \" + dataReg + \".x\\n\"; // average\n return code;\n };\n return ShadowSoftChunk;\n}(ShadowChunkBase));\nexport { ShadowSoftChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/ShadowSoftChunk.js","import * as tslib_1 from \"tslib\";\nimport { ShaderChunkBase } from \"./ShaderChunkBase\";\n/**\n * SpecularBasicChunk provides the default shading method for Blinn-Phong specular highlights (an optimized but approximated\n * version of Phong specularity).\n */\nvar SpecularBasicChunk = (function (_super) {\n tslib_1.__extends(SpecularBasicChunk, _super);\n /**\n * Creates a new EffectEnvMapChunk.\n */\n function SpecularBasicChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n return _this;\n }\n SpecularBasicChunk.prototype._isUsed = function () {\n if (!this._shader.numLights)\n return false;\n return true;\n };\n /**\n * @inheritDoc\n */\n SpecularBasicChunk.prototype._initVO = function (chunkVO) {\n chunkVO.needsNormals = this._shader.numLights > 0;\n chunkVO.needsView = this._shader.numLights > 0;\n if (this._method.texture) {\n this._texture = this._shader.getAbstraction(this._method.texture);\n this._shader.uvDependencies++;\n }\n else if (this._texture) {\n this._texture = null;\n }\n };\n /**\n * @inheritDoc\n */\n SpecularBasicChunk.prototype._cleanCompilationData = function () {\n _super.prototype._cleanCompilationData.call(this);\n this._totalLightColorReg = null;\n this._specularTexData = null;\n this._specularDataRegister = null;\n };\n /**\n * @inheritDoc\n */\n SpecularBasicChunk.prototype._getFragmentPreLightingCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n this._pIsFirstLight = true;\n this._specularDataRegister = registerCache.getFreeFragmentConstant();\n this._specularDataIndex = this._specularDataRegister.index * 4;\n if (this._texture) {\n this._specularTexData = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(this._specularTexData, 1);\n code += this._texture._getFragmentCode(this._specularTexData, registerCache, sharedRegisters, sharedRegisters.uvVarying);\n }\n this._totalLightColorReg = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(this._totalLightColorReg, 1);\n return code;\n };\n /**\n * @inheritDoc\n */\n SpecularBasicChunk.prototype._getFragmentCodePerLight = function (lightDirReg, lightColReg, registerCache, sharedRegisters) {\n var code = \"\";\n var t;\n if (this._pIsFirstLight) {\n t = this._totalLightColorReg;\n }\n else {\n t = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(t, 1);\n }\n var viewDirReg = sharedRegisters.viewDirFragment;\n var normalReg = sharedRegisters.normalFragment;\n // blinn-phong half vector model\n code += \"add \" + t + \", \" + lightDirReg + \", \" + viewDirReg + \"\\n\" +\n \"nrm \" + t + \".xyz, \" + t + \"\\n\" +\n \"dp3 \" + t + \".w, \" + normalReg + \", \" + t + \"\\n\" +\n \"sat \" + t + \".w, \" + t + \".w\\n\";\n if (this._texture) {\n // apply gloss modulation from texture\n code += \"mul \" + this._specularTexData + \".w, \" + this._specularTexData + \".y, \" + this._specularDataRegister + \".w\\n\" +\n \"pow \" + t + \".w, \" + t + \".w, \" + this._specularTexData + \".w\\n\";\n }\n else {\n code += \"pow \" + t + \".w, \" + t + \".w, \" + this._specularDataRegister + \".w\\n\";\n }\n // attenuate\n if (this._shader.usesLightFallOff)\n code += \"mul \" + t + \".w, \" + t + \".w, \" + lightDirReg + \".w\\n\";\n if (this._modulateFunction != null)\n code += this._modulateFunction(t, registerCache, sharedRegisters);\n code += \"mul \" + t + \".xyz, \" + lightColReg + \", \" + t + \".w\\n\";\n if (!this._pIsFirstLight) {\n code += \"add \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \", \" + t + \"\\n\";\n registerCache.removeFragmentTempUsage(t);\n }\n this._pIsFirstLight = false;\n return code;\n };\n /**\n * @inheritDoc\n */\n SpecularBasicChunk.prototype._getFragmentCodePerProbe = function (cubeMapReg, weightRegister, registerCache, sharedRegisters) {\n var code = \"\";\n var t;\n // write in temporary if not first light, so we can add to total diffuse colour\n if (this._pIsFirstLight) {\n t = this._totalLightColorReg;\n }\n else {\n t = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(t, 1);\n }\n var normalReg = sharedRegisters.normalFragment;\n var viewDirReg = sharedRegisters.viewDirFragment;\n code += \"dp3 \" + t + \".w, \" + normalReg + \", \" + viewDirReg + \"\\n\" +\n \"add \" + t + \".w, \" + t + \".w, \" + t + \".w\\n\" +\n \"mul \" + t + \", \" + t + \".w, \" + normalReg + \"\\n\" +\n \"sub \" + t + \", \" + t + \", \" + viewDirReg + \"\\n\" +\n \"tex \" + t + \", \" + t + \", \" + cubeMapReg + \" \\n\" +\n \"mul \" + t + \".xyz, \" + t + \", \" + weightRegister + \"\\n\";\n if (this._modulateFunction != null)\n code += this._modulateFunction(t, registerCache, sharedRegisters);\n if (!this._pIsFirstLight) {\n code += \"add \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \", \" + t + \"\\n\";\n registerCache.removeFragmentTempUsage(t);\n }\n this._pIsFirstLight = false;\n return code;\n };\n /**\n * @inheritDoc\n */\n SpecularBasicChunk.prototype._getFragmentCode = function (targetReg, registerCache, sharedRegisters) {\n var code = \"\";\n if (sharedRegisters.shadowTarget)\n code += \"mul \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \", \" + sharedRegisters.shadowTarget + \".w\\n\";\n if (this._texture) {\n // apply strength modulation from texture\n code += \"mul \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \", \" + this._specularTexData + \".x\\n\";\n registerCache.removeFragmentTempUsage(this._specularTexData);\n }\n // apply material's specular reflection\n code += \"mul \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \", \" + this._specularDataRegister + \"\\n\" +\n \"add \" + targetReg + \".xyz, \" + targetReg + \", \" + this._totalLightColorReg + \"\\n\";\n registerCache.removeFragmentTempUsage(this._totalLightColorReg);\n return code;\n };\n /**\n * @inheritDoc\n */\n SpecularBasicChunk.prototype._activate = function () {\n if (this._texture)\n this._texture.activate();\n if (this._invalid) {\n var index = this._specularDataIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = ((this._method.color >> 16) & 0xff) / 0xff * this._method.strength;\n data[index + 1] = ((this._method.color >> 8) & 0xff) / 0xff * this._method.strength;\n data[index + 2] = (this._method.color & 0xff) / 0xff * this._method.strength;\n data[index + 3] = this._method.gloss;\n }\n };\n SpecularBasicChunk.prototype.iSetRenderState = function (renderable, projection) {\n if (this._texture)\n this._texture._setRenderState(renderable);\n };\n return SpecularBasicChunk;\n}(ShaderChunkBase));\nexport { SpecularBasicChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/SpecularBasicChunk.js","import * as tslib_1 from \"tslib\";\nimport { SpecularBasicChunk } from \"./SpecularBasicChunk\";\n/**\n * SpecularAnisotropicChunk provides a specular method resulting in anisotropic highlights. These are typical for\n * surfaces with microfacet details such as tiny grooves. In particular, this uses the Heidrich-Seidel distrubution.\n * The tangent vectors are used as the surface groove directions.\n */\nvar SpecularAnisotropicChunk = (function (_super) {\n tslib_1.__extends(SpecularAnisotropicChunk, _super);\n /**\n * Creates a new EffectEnvMapChunk.\n */\n function SpecularAnisotropicChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n /**\n * @inheritDoc\n */\n SpecularAnisotropicChunk.prototype._initVO = function (chunkVO) {\n _super.prototype._initVO.call(this, chunkVO);\n chunkVO.needsTangents = this._shader.numLights > 0;\n };\n /**\n * @inheritDoc\n */\n SpecularAnisotropicChunk.prototype._getFragmentCodePerLight = function (lightDirReg, lightColReg, registerCache, sharedRegisters) {\n var code = \"\";\n var t;\n if (this._pIsFirstLight)\n t = this._totalLightColorReg;\n else {\n t = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(t, 1);\n }\n // (sin(l,t) * sin(v,t) - cos(l,t)*cos(v,t)) ^ k\n code += \"nrm \" + t + \".xyz, \" + sharedRegisters.tangentVarying + \".xyz\\n\" +\n \"dp3 \" + t + \".w, \" + t + \".xyz, \" + lightDirReg + \".xyz\\n\" +\n \"dp3 \" + t + \".z, \" + t + \".xyz, \" + sharedRegisters.viewDirFragment + \".xyz\\n\";\n // (sin(t.w) * sin(t.z) - cos(t.w)*cos(t.z)) ^ k\n code += \"sin \" + t + \".x, \" + t + \".w\\n\" +\n \"sin \" + t + \".y, \" + t + \".z\\n\" +\n // (t.x * t.y - cos(t.w)*cos(t.z)) ^ k\n \"mul \" + t + \".x, \" + t + \".x, \" + t + \".y\\n\" +\n // (t.x - cos(t.w)*cos(t.z)) ^ k\n \"cos \" + t + \".z, \" + t + \".z\\n\" +\n \"cos \" + t + \".w, \" + t + \".w\\n\" +\n // (t.x - t.w*t.z) ^ k\n \"mul \" + t + \".w, \" + t + \".w, \" + t + \".z\\n\" +\n // (t.x - t.w) ^ k\n \"sub \" + t + \".w, \" + t + \".x, \" + t + \".w\\n\";\n if (this._texture) {\n // apply gloss modulation from texture\n code += \"mul \" + this._specularTexData + \".w, \" + this._specularTexData + \".y, \" + this._specularDataRegister + \".w\\n\" +\n \"pow \" + t + \".w, \" + t + \".w, \" + this._specularTexData + \".w\\n\";\n }\n else\n code += \"pow \" + t + \".w, \" + t + \".w, \" + this._specularDataRegister + \".w\\n\";\n // attenuate\n code += \"mul \" + t + \".w, \" + t + \".w, \" + lightDirReg + \".w\\n\";\n if (this._modulateFunction != null)\n code += this._modulateFunction(t, registerCache, sharedRegisters);\n code += \"mul \" + t + \".xyz, \" + lightColReg + \".xyz, \" + t + \".w\\n\";\n if (!this._pIsFirstLight) {\n code += \"add \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \".xyz, \" + t + \".xyz\\n\";\n registerCache.removeFragmentTempUsage(t);\n }\n this._pIsFirstLight = false;\n return code;\n };\n return SpecularAnisotropicChunk;\n}(SpecularBasicChunk));\nexport { SpecularAnisotropicChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/SpecularAnisotropicChunk.js","import * as tslib_1 from \"tslib\";\nimport { LightingCompositeChunk } from \"./LightingCompositeChunk\";\n/**\n * SpecularCelChunk provides a shading method to add specular cel (cartoon) shading.\n */\nvar SpecularCelChunk = (function (_super) {\n tslib_1.__extends(SpecularCelChunk, _super);\n /**\n * Creates a new DiffuseCelChunk object.\n * @param levels The amount of shadow gradations.\n * @param baseMethod An optional diffuse method on which the cartoon shading is based. If omitted, DiffuseBasicMethod is used.\n */\n function SpecularCelChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n _this._baseChunk._modulateFunction = function (targetReg, registerCache, sharedRegisters) { return _this.clampSpecular(targetReg, registerCache, sharedRegisters); };\n return _this;\n }\n /**\n * @inheritDoc\n */\n SpecularCelChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n if (this._invalid) {\n var index = this._cutoffDataIndex;\n var data = this._shader.fragmentConstantData;\n data[index] = this._method.smoothness;\n data[index + 1] = this._method.specularCutOff;\n }\n };\n /**\n * @inheritDoc\n */\n SpecularCelChunk.prototype._cleanCompilationData = function () {\n _super.prototype._cleanCompilationData.call(this);\n this._cutoffDataRegister = null;\n };\n /**\n * Snaps the specular shading strength of the wrapped method to zero or one, depending on whether or not it exceeds the specularCutOff\n * @param vo The MethodVO used to compile the current shader.\n * @param t The register containing the specular strength in the \"w\" component, and either the half-vector or the reflection vector in \"xyz\".\n * @param regCache The register cache used for the shader compilation.\n * @param sharedRegisters The shared register data for this shader.\n * @return The AGAL fragment code for the method.\n */\n SpecularCelChunk.prototype.clampSpecular = function (targetReg, registerCache, sharedRegisters) {\n return \"sub \" + targetReg + \".y, \" + targetReg + \".w, \" + this._cutoffDataRegister + \".y\\n\" +\n \"div \" + targetReg + \".y, \" + targetReg + \".y, \" + this._cutoffDataRegister + \".x\\n\" +\n \"sat \" + targetReg + \".y, \" + targetReg + \".y\\n\" +\n \"sge \" + targetReg + \".w, \" + targetReg + \".w, \" + this._cutoffDataRegister + \".y\\n\" +\n \"mul \" + targetReg + \".w, \" + targetReg + \".w, \" + targetReg + \".y\\n\";\n };\n /**\n * @inheritDoc\n */\n SpecularCelChunk.prototype._getFragmentPreLightingCode = function (registerCache, sharedRegisters) {\n this._cutoffDataRegister = registerCache.getFreeFragmentConstant();\n this._cutoffDataIndex = this._cutoffDataRegister.index * 4;\n return _super.prototype._getFragmentPreLightingCode.call(this, registerCache, sharedRegisters);\n };\n return SpecularCelChunk;\n}(LightingCompositeChunk));\nexport { SpecularCelChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/SpecularCelChunk.js","import * as tslib_1 from \"tslib\";\nimport { LightingCompositeChunk } from \"./LightingCompositeChunk\";\n/**\n * SpecularFresnelChunk provides a specular shading method that causes stronger highlights on grazing view angles.\n */\nvar SpecularFresnelChunk = (function (_super) {\n tslib_1.__extends(SpecularFresnelChunk, _super);\n /**\n * Creates a new SpecularFresnelChunk object.\n */\n function SpecularFresnelChunk(method, shader) {\n var _this = _super.call(this, method, shader) || this;\n _this._method = method;\n _this._shader = shader;\n _this._baseChunk._modulateFunction = function (targetReg, registerCache, sharedRegisters) { return _this.modulateSpecular(targetReg, registerCache, sharedRegisters); };\n return _this;\n }\n /**\n * @inheritDoc\n */\n SpecularFresnelChunk.prototype._cleanCompilationData = function () {\n _super.prototype._cleanCompilationData.call(this);\n this._fresnelDataRegister = null;\n };\n /**\n * @inheritDoc\n */\n SpecularFresnelChunk.prototype._activate = function () {\n _super.prototype._activate.call(this);\n if (this._invalid) {\n var data = this._shader.fragmentConstantData;\n var index = this._fresnelDataIndex;\n data[index] = this._method.normalReflectance;\n data[index + 1] = this._method.fresnelPower;\n data[index + 2] = 1;\n data[index + 3] = 0;\n }\n };\n /**\n * @inheritDoc\n */\n SpecularFresnelChunk.prototype._getFragmentPreLightingCode = function (registerCache, sharedRegisters) {\n this._fresnelDataRegister = registerCache.getFreeFragmentConstant();\n this._fresnelDataIndex = this._fresnelDataRegister.index * 4;\n return _super.prototype._getFragmentPreLightingCode.call(this, registerCache, sharedRegisters);\n };\n /**\n * Applies the fresnel effect to the specular strength.\n *\n * @param vo The MethodVO object containing the method data for the currently compiled material pass.\n * @param target The register containing the specular strength in the \"w\" component, and the half-vector/reflection vector in \"xyz\".\n * @param regCache The register cache used for the shader compilation.\n * @param sharedRegisters The shared registers created by the compiler.\n * @return The AGAL fragment code for the method.\n */\n SpecularFresnelChunk.prototype.modulateSpecular = function (targetReg, registerCache, sharedRegisters) {\n var code;\n code = \"dp3 \" + targetReg + \".y, \" + sharedRegisters.viewDirFragment + \".xyz, \" + (this._method.basedOnSurface ? sharedRegisters.normalFragment : targetReg) + \".xyz\\n\" +\n \"sub \" + targetReg + \".y, \" + this._fresnelDataRegister + \".z, \" + targetReg + \".y\\n\" +\n \"pow \" + targetReg + \".x, \" + targetReg + \".y, \" + this._fresnelDataRegister + \".y\\n\" +\n \"sub \" + targetReg + \".y, \" + this._fresnelDataRegister + \".z, \" + targetReg + \".y\\n\" +\n \"mul \" + targetReg + \".y, \" + this._fresnelDataRegister + \".x, \" + targetReg + \".y\\n\" +\n \"add \" + targetReg + \".y, \" + targetReg + \".x, \" + targetReg + \".y\\n\" +\n \"mul \" + targetReg + \".w, \" + targetReg + \".w, \" + targetReg + \".y\\n\";\n return code;\n };\n return SpecularFresnelChunk;\n}(LightingCompositeChunk));\nexport { SpecularFresnelChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/SpecularFresnelChunk.js","import * as tslib_1 from \"tslib\";\nimport { SpecularBasicChunk } from \"./SpecularBasicChunk\";\n/**\n * SpecularPhongChunk provides a specular method that provides Phong highlights.\n */\nvar SpecularPhongChunk = (function (_super) {\n tslib_1.__extends(SpecularPhongChunk, _super);\n /**\n * Creates a new SpecularPhongChunk object.\n */\n function SpecularPhongChunk(method, shader) {\n return _super.call(this, method, shader) || this;\n }\n /**\n * @inheritDoc\n */\n SpecularPhongChunk.prototype._getFragmentCodePerLight = function (lightDirReg, lightColReg, registerCache, sharedRegisters) {\n var code = \"\";\n var t;\n if (this._pIsFirstLight) {\n t = this._totalLightColorReg;\n }\n else {\n t = registerCache.getFreeFragmentVectorTemp();\n registerCache.addFragmentTempUsages(t, 1);\n }\n var viewDirReg = sharedRegisters.viewDirFragment;\n var normalReg = sharedRegisters.normalFragment;\n // phong model\n code += \"dp3 \" + t + \".w, \" + lightDirReg + \", \" + normalReg + \"\\n\" +\n //find the reflected light vector R\n \"add \" + t + \".w, \" + t + \".w, \" + t + \".w\\n\" +\n \"mul \" + t + \".xyz, \" + normalReg + \", \" + t + \".w\\n\" +\n \"sub \" + t + \".xyz, \" + t + \", \" + lightDirReg + \"\\n\" +\n //smooth the edge as incidence angle approaches 90\n \"add \" + t + \".w, \" + t + \".w, \" + sharedRegisters.commons + \".w\\n\" +\n \"sat \" + t + \".w, \" + t + \".w\\n\" +\n \"mul \" + t + \".xyz, \" + t + \", \" + t + \".w\\n\" +\n //find the dot product between R and V\n \"dp3 \" + t + \".w, \" + t + \", \" + viewDirReg + \"\\n\" +\n \"sat \" + t + \".w, \" + t + \".w\\n\";\n if (this._texture) {\n // apply gloss modulation from texture\n code += \"mul \" + this._specularTexData + \".w, \" + this._specularTexData + \".y, \" + this._specularDataRegister + \".w\\n\" +\n \"pow \" + t + \".w, \" + t + \".w, \" + this._specularTexData + \".w\\n\";\n }\n else\n code += \"pow \" + t + \".w, \" + t + \".w, \" + this._specularDataRegister + \".w\\n\";\n // attenuate\n if (this._shader.usesLightFallOff)\n code += \"mul \" + t + \".w, \" + t + \".w, \" + lightDirReg + \".w\\n\";\n if (this._modulateFunction != null)\n code += this._modulateFunction(t, registerCache, sharedRegisters);\n code += \"mul \" + t + \".xyz, \" + lightColReg + \".xyz, \" + t + \".w\\n\";\n if (!this._pIsFirstLight) {\n code += \"add \" + this._totalLightColorReg + \".xyz, \" + this._totalLightColorReg + \".xyz, \" + t + \".xyz\\n\";\n registerCache.removeFragmentTempUsage(t);\n }\n this._pIsFirstLight = false;\n return code;\n };\n return SpecularPhongChunk;\n}(SpecularBasicChunk));\nexport { SpecularPhongChunk };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/chunks/SpecularPhongChunk.js","var MethodPassMode = (function () {\n function MethodPassMode() {\n }\n return MethodPassMode;\n}());\nexport { MethodPassMode };\n/**\n *\n */\nMethodPassMode.EFFECTS = 0x01;\n/**\n *\n */\nMethodPassMode.LIGHTING = 0x02;\n/**\n *\n */\nMethodPassMode.SUPER_SHADER = 0x03;\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/surfaces/passes/MethodPassMode.js","import * as tslib_1 from \"tslib\";\nimport { AssetEvent } from \"@awayjs/core\";\nimport { LightSources } from \"@awayjs/scene\";\nimport { ShaderBase, PassBase } from \"@awayjs/stage\";\nimport { LightingShader, ShadingMethodEvent } from \"@awayjs/renderer\";\nimport { AmbientBasicChunk } from \"../../chunks/AmbientBasicChunk\";\nimport { AmbientDepthChunk } from \"../../chunks/AmbientDepthChunk\";\nimport { DiffuseBasicChunk } from \"../../chunks/DiffuseBasicChunk\";\nimport { DiffuseCelChunk } from \"../../chunks/DiffuseCelChunk\";\nimport { DiffuseGradientChunk } from \"../../chunks/DiffuseGradientChunk\";\nimport { DiffuseLightMapChunk } from \"../../chunks/DiffuseLightMapChunk\";\nimport { DiffuseWrapChunk } from \"../../chunks/DiffuseWrapChunk\";\nimport { EffectAlphaMaskChunk } from \"../../chunks/EffectAlphaMaskChunk\";\nimport { EffectColorMatrixChunk } from \"../../chunks/EffectColorMatrixChunk\";\nimport { EffectColorTransformChunk } from \"../../chunks/EffectColorTransformChunk\";\nimport { EffectEnvMapChunk } from \"../../chunks/EffectEnvMapChunk\";\nimport { EffectFogChunk } from \"../../chunks/EffectFogChunk\";\nimport { EffectFresnelEnvMapChunk } from \"../../chunks/EffectFresnelEnvMapChunk\";\nimport { EffectLightMapChunk } from \"../../chunks/EffectLightMapChunk\";\nimport { EffectProjectiveTextureChunk } from \"../../chunks/EffectProjectiveTextureChunk\";\nimport { EffectRefractionEnvMapChunk } from \"../../chunks/EffectRefractionEnvMapChunk\";\nimport { EffectRimLightChunk } from \"../../chunks/EffectRimLightChunk\";\nimport { NormalBasicChunk } from \"../../chunks/NormalBasicChunk\";\nimport { NormalHeightMapChunk } from \"../../chunks/NormalHeightMapChunk\";\nimport { NormalSimpleWaterChunk } from \"../../chunks/NormalSimpleWaterChunk\";\nimport { ShadowCascadeChunk } from \"../../chunks/ShadowCascadeChunk\";\nimport { ShadowDitheredChunk } from \"../../chunks/ShadowDitheredChunk\";\nimport { ShadowFilteredChunk } from \"../../chunks/ShadowFilteredChunk\";\nimport { ShadowHardChunk } from \"../../chunks/ShadowHardChunk\";\nimport { ShadowNearChunk } from \"../../chunks/ShadowNearChunk\";\nimport { ShadowSoftChunk } from \"../../chunks/ShadowSoftChunk\";\nimport { SpecularAnisotropicChunk } from \"../../chunks/SpecularAnisotropicChunk\";\nimport { SpecularBasicChunk } from \"../../chunks/SpecularBasicChunk\";\nimport { SpecularCelChunk } from \"../../chunks/SpecularCelChunk\";\nimport { SpecularFresnelChunk } from \"../../chunks/SpecularFresnelChunk\";\nimport { SpecularPhongChunk } from \"../../chunks/SpecularPhongChunk\";\nimport { AmbientBasicMethod } from \"../../methods/AmbientBasicMethod\";\nimport { AmbientDepthMethod } from \"../../methods/AmbientDepthMethod\";\nimport { DiffuseBasicMethod } from \"../../methods/DiffuseBasicMethod\";\nimport { DiffuseCelMethod } from \"../../methods/DiffuseCelMethod\";\nimport { DiffuseGradientMethod } from \"../../methods/DiffuseGradientMethod\";\nimport { DiffuseLightMapMethod } from \"../../methods/DiffuseLightMapMethod\";\nimport { DiffuseWrapMethod } from \"../../methods/DiffuseWrapMethod\";\nimport { EffectAlphaMaskMethod } from \"../../methods/EffectAlphaMaskMethod\";\nimport { EffectColorMatrixMethod } from \"../../methods/EffectColorMatrixMethod\";\nimport { EffectColorTransformMethod } from \"../../methods/EffectColorTransformMethod\";\nimport { EffectEnvMapMethod } from \"../../methods/EffectEnvMapMethod\";\nimport { EffectFogMethod } from \"../../methods/EffectFogMethod\";\nimport { EffectFresnelEnvMapMethod } from \"../../methods/EffectFresnelEnvMapMethod\";\nimport { EffectLightMapMethod } from \"../../methods/EffectLightMapMethod\";\nimport { EffectProjectiveTextureMethod } from \"../../methods/EffectProjectiveTextureMethod\";\nimport { EffectRefractionEnvMapMethod } from \"../../methods/EffectRefractionEnvMapMethod\";\nimport { EffectRimLightMethod } from \"../../methods/EffectRimLightMethod\";\nimport { NormalBasicMethod } from \"../../methods/NormalBasicMethod\";\nimport { NormalHeightMapMethod } from \"../../methods/NormalHeightMapMethod\";\nimport { NormalSimpleWaterMethod } from \"../../methods/NormalSimpleWaterMethod\";\nimport { ShadowCascadeMethod } from \"../../methods/ShadowCascadeMethod\";\nimport { ShadowDitheredMethod } from \"../../methods/ShadowDitheredMethod\";\nimport { ShadowFilteredMethod } from \"../../methods/ShadowFilteredMethod\";\nimport { ShadowHardMethod } from \"../../methods/ShadowHardMethod\";\nimport { ShadowNearMethod } from \"../../methods/ShadowNearMethod\";\nimport { ShadowSoftMethod } from \"../../methods/ShadowSoftMethod\";\nimport { SpecularAnisotropicMethod } from \"../../methods/SpecularAnisotropicMethod\";\nimport { SpecularBasicMethod } from \"../../methods/SpecularBasicMethod\";\nimport { SpecularCelMethod } from \"../../methods/SpecularCelMethod\";\nimport { SpecularFresnelMethod } from \"../../methods/SpecularFresnelMethod\";\nimport { SpecularPhongMethod } from \"../../methods/SpecularPhongMethod\";\nimport { MethodPassMode } from \"./MethodPassMode\";\nShaderBase.registerAbstraction(AmbientBasicChunk, AmbientBasicMethod);\nShaderBase.registerAbstraction(AmbientDepthChunk, AmbientDepthMethod);\nShaderBase.registerAbstraction(DiffuseBasicChunk, DiffuseBasicMethod);\nShaderBase.registerAbstraction(DiffuseCelChunk, DiffuseCelMethod);\nShaderBase.registerAbstraction(DiffuseGradientChunk, DiffuseGradientMethod);\nShaderBase.registerAbstraction(DiffuseLightMapChunk, DiffuseLightMapMethod);\nShaderBase.registerAbstraction(DiffuseWrapChunk, DiffuseWrapMethod);\nShaderBase.registerAbstraction(EffectAlphaMaskChunk, EffectAlphaMaskMethod);\nShaderBase.registerAbstraction(EffectColorMatrixChunk, EffectColorMatrixMethod);\nShaderBase.registerAbstraction(EffectColorTransformChunk, EffectColorTransformMethod);\nShaderBase.registerAbstraction(EffectEnvMapChunk, EffectEnvMapMethod);\nShaderBase.registerAbstraction(EffectFogChunk, EffectFogMethod);\nShaderBase.registerAbstraction(EffectFresnelEnvMapChunk, EffectFresnelEnvMapMethod);\nShaderBase.registerAbstraction(EffectLightMapChunk, EffectLightMapMethod);\nShaderBase.registerAbstraction(EffectProjectiveTextureChunk, EffectProjectiveTextureMethod);\nShaderBase.registerAbstraction(EffectRefractionEnvMapChunk, EffectRefractionEnvMapMethod);\nShaderBase.registerAbstraction(EffectRimLightChunk, EffectRimLightMethod);\nShaderBase.registerAbstraction(NormalBasicChunk, NormalBasicMethod);\nShaderBase.registerAbstraction(NormalHeightMapChunk, NormalHeightMapMethod);\nShaderBase.registerAbstraction(NormalSimpleWaterChunk, NormalSimpleWaterMethod);\nShaderBase.registerAbstraction(ShadowCascadeChunk, ShadowCascadeMethod);\nShaderBase.registerAbstraction(ShadowDitheredChunk, ShadowDitheredMethod);\nShaderBase.registerAbstraction(ShadowFilteredChunk, ShadowFilteredMethod);\nShaderBase.registerAbstraction(ShadowHardChunk, ShadowHardMethod);\nShaderBase.registerAbstraction(ShadowNearChunk, ShadowNearMethod);\nShaderBase.registerAbstraction(ShadowSoftChunk, ShadowSoftMethod);\nShaderBase.registerAbstraction(SpecularAnisotropicChunk, SpecularAnisotropicMethod);\nShaderBase.registerAbstraction(SpecularBasicChunk, SpecularBasicMethod);\nShaderBase.registerAbstraction(SpecularCelChunk, SpecularCelMethod);\nShaderBase.registerAbstraction(SpecularFresnelChunk, SpecularFresnelMethod);\nShaderBase.registerAbstraction(SpecularPhongChunk, SpecularPhongMethod);\n/**\n * CompiledPass forms an abstract base class for the default compiled pass materials provided by Away3D,\n * using material methods to define their appearance.\n */\nvar MethodPass = (function (_super) {\n tslib_1.__extends(MethodPass, _super);\n /**\n * Creates a new CompiledPass object.\n *\n * @param material The material to which this pass belongs.\n */\n function MethodPass(mode, material, materialPool) {\n var _this = _super.call(this, material, materialPool) || this;\n _this._maxLights = 3;\n _this._mode = 0x03;\n _this._includeCasters = true;\n _this._chunks = new Array();\n _this._methods = new Array();\n _this._numEffectDependencies = 0;\n _this.numDirectionalLights = 0;\n _this.numPointLights = 0;\n _this.numLightProbes = 0;\n _this.pointLightsOffset = 0;\n _this.directionalLightsOffset = 0;\n _this.lightProbesOffset = 0;\n _this._mode = mode;\n _this._onLightsChangeDelegate = function (event) { return _this.onLightsChange(event); };\n _this._onMethodInvalidatedDelegate = function (event) { return _this.onMethodInvalidated(event); };\n _this.lightPicker = material.lightPicker;\n if (_this._shader == null)\n _this._updateShader();\n return _this;\n }\n Object.defineProperty(MethodPass.prototype, \"mode\", {\n /**\n *\n */\n get: function () {\n return this._mode;\n },\n set: function (value) {\n if (this._mode == value)\n return;\n this._mode = value;\n this._updateLights();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"includeCasters\", {\n /**\n * Indicates whether or not shadow casting lights need to be included.\n */\n get: function () {\n return this._includeCasters;\n },\n set: function (value) {\n if (this._includeCasters == value)\n return;\n this._includeCasters = value;\n this._updateLights();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"lightPicker\", {\n /**\n *\n * @returns {LightPickerBase}\n */\n get: function () {\n return this._lightPicker;\n },\n set: function (value) {\n //if (this._lightPicker == value)\n //\treturn;\n if (this._lightPicker)\n this._lightPicker.removeEventListener(AssetEvent.INVALIDATE, this._onLightsChangeDelegate);\n this._lightPicker = value;\n if (this._lightPicker)\n this._lightPicker.addEventListener(AssetEvent.INVALIDATE, this._onLightsChangeDelegate);\n this._updateLights();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"enableLightFallOff\", {\n /**\n * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and\n * compatibility for constrained mode.\n */\n get: function () {\n return this._material.enableLightFallOff;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"diffuseLightSources\", {\n /**\n * Define which light source types to use for diffuse reflections. This allows choosing between regular lights\n * and/or light probes for diffuse reflections.\n *\n * @see away3d.materials.LightSources\n */\n get: function () {\n return this._material.diffuseLightSources;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"specularLightSources\", {\n /**\n * Define which light source types to use for specular reflections. This allows choosing between regular lights\n * and/or light probes for specular reflections.\n *\n * @see away3d.materials.LightSources\n */\n get: function () {\n return this._material.specularLightSources;\n },\n enumerable: true,\n configurable: true\n });\n MethodPass.prototype._updateShader = function () {\n if ((this.numDirectionalLights || this.numPointLights || this.numLightProbes) && !(this._shader instanceof LightingShader)) {\n if (this._shader != null) {\n this._shader.dispose();\n this._shader = null;\n }\n this._shader = new LightingShader(this._elementsClass, this, this._stage);\n }\n else if (this._shader == null) {\n if (this._shader != null) {\n this._shader.dispose();\n this._shader = null;\n }\n this._shader = new ShaderBase(this._elementsClass, this, this._stage);\n }\n };\n /**\n * Initializes the unchanging constant data for this material.\n */\n MethodPass.prototype._initConstantData = function (shader) {\n _super.prototype._initConstantData.call(this, shader);\n //Updates method constants if they have changed.\n var len = this._chunks.length;\n for (var i = 0; i < len; ++i)\n this._chunks[i]._initConstants();\n };\n Object.defineProperty(MethodPass.prototype, \"colorTransform\", {\n /**\n * The ColorTransform object to transform the colour of the material with. Defaults to null.\n */\n get: function () {\n return this.colorTransformMethod ? this.colorTransformMethod.colorTransform : null;\n },\n set: function (value) {\n if (value) {\n if (this.colorTransformMethod == null)\n this.colorTransformMethod = new EffectColorTransformMethod();\n this.colorTransformMethod.colorTransform = value;\n }\n else if (!value) {\n if (this.colorTransformMethod)\n this.colorTransformMethod = null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"colorTransformMethod\", {\n /**\n * The EffectColorTransformMethod object to transform the colour of the material with. Defaults to null.\n */\n get: function () {\n return this._colorTransformMethod;\n },\n set: function (value) {\n if (this._colorTransformMethod == value)\n return;\n if (this._colorTransformMethod) {\n this._removeDependency(this._colorTransformMethod);\n this._colorTransformChunk = null;\n }\n this._colorTransformMethod = value;\n if (value) {\n this._colorTransformChunk = this._shader.getAbstraction(value);\n this._addDependency(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n MethodPass.prototype._removeDependency = function (method, effectsDependency) {\n if (effectsDependency === void 0) { effectsDependency = false; }\n var index = this._methods.indexOf(method);\n if (index == -1)\n return;\n if (!effectsDependency)\n this._numEffectDependencies--;\n method.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onMethodInvalidatedDelegate);\n this._methods.splice(index, 1);\n this._chunks.splice(index, 1);\n this.invalidate();\n };\n MethodPass.prototype._addDependency = function (method, effectsDependency, index) {\n if (effectsDependency === void 0) { effectsDependency = false; }\n if (index === void 0) { index = -1; }\n method.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onMethodInvalidatedDelegate);\n var chunk = this._shader.getAbstraction(method);\n if (effectsDependency) {\n if (index != -1) {\n this._methods.splice(index + this._methods.length - this._numEffectDependencies, 0, method);\n this._chunks.splice(index + this._chunks.length - this._numEffectDependencies, 0, chunk);\n }\n else {\n this._methods.push(method);\n this._chunks.push(chunk);\n }\n this._numEffectDependencies++;\n }\n else {\n this._methods.splice(this._methods.length - this._numEffectDependencies, 0, method);\n this._chunks.splice(this._chunks.length - this._numEffectDependencies, 0, chunk);\n }\n this.invalidate();\n };\n /**\n * Appends an \"effect\" shading method to the shader. Effect methods are those that do not influence the lighting\n * but modulate the shaded colour, used for fog, outlines, etc. The method will be applied to the result of the\n * methods added prior.\n */\n MethodPass.prototype.addEffectMethod = function (method) {\n this._addDependency(method, true);\n };\n Object.defineProperty(MethodPass.prototype, \"numEffectMethods\", {\n /**\n * The number of \"effect\" methods added to the material.\n */\n get: function () {\n return this._numEffectDependencies;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Queries whether a given effects method was added to the material.\n *\n * @param method The method to be queried.\n * @return true if the method was added to the material, false otherwise.\n */\n MethodPass.prototype.hasEffectMethod = function (method) {\n return this._methods.indexOf(method) != -1;\n };\n /**\n * Returns the method added at the given index.\n * @param index The index of the method to retrieve.\n * @return The method at the given index.\n */\n MethodPass.prototype.getEffectMethodAt = function (index) {\n if (index < 0 || index > this._numEffectDependencies - 1)\n return null;\n return this._methods[index + this._methods.length - this._numEffectDependencies];\n };\n /**\n * Adds an effect method at the specified index amongst the methods already added to the material. Effect\n * methods are those that do not influence the lighting but modulate the shaded colour, used for fog, outlines,\n * etc. The method will be applied to the result of the methods with a lower index.\n */\n MethodPass.prototype.addEffectMethodAt = function (method, index) {\n this._addDependency(method, true, index);\n };\n /**\n * Removes an effect method from the material.\n * @param method The method to be removed.\n */\n MethodPass.prototype.removeEffectMethod = function (method) {\n this._removeDependency(method, true);\n };\n /**\n * remove an effect method at the specified index from the material.\n */\n MethodPass.prototype.removeEffectMethodAt = function (index) {\n var method = this.getEffectMethodAt(index);\n if (method != null)\n this._removeDependency(method, true);\n };\n Object.defineProperty(MethodPass.prototype, \"normalMethod\", {\n /**\n * The method used to generate the per-pixel normals. Defaults to NormalBasicMethod.\n */\n get: function () {\n return this._normalMethod;\n },\n set: function (value) {\n if (this._normalMethod == value)\n return;\n if (this._normalMethod) {\n this._removeDependency(this._normalMethod);\n this._normalChunk = null;\n }\n this._normalMethod = value;\n if (value) {\n this._normalChunk = this._shader.getAbstraction(value);\n this._addDependency(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"ambientMethod\", {\n /**\n * The method that provides the ambient lighting contribution. Defaults to AmbientBasicMethod.\n */\n get: function () {\n return this._ambientMethod;\n },\n set: function (value) {\n if (this._ambientMethod == value)\n return;\n if (this._ambientMethod) {\n this._removeDependency(this._ambientMethod);\n this._ambientChunk = null;\n }\n this._ambientMethod = value;\n if (value) {\n this._ambientChunk = this._shader.getAbstraction(value);\n this._addDependency(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"shadowMethod\", {\n /**\n * The method used to render shadows cast on this surface, or null if no shadows are to be rendered. Defaults to null.\n */\n get: function () {\n return this._shadowMethod;\n },\n set: function (value) {\n if (this._shadowMethod == value)\n return;\n if (this._shadowMethod) {\n this._removeDependency(this._shadowMethod);\n this._shadowChunk = null;\n }\n this._shadowMethod = value;\n if (value) {\n this._shadowChunk = this._shader.getAbstraction(value);\n this._addDependency(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"diffuseMethod\", {\n /**\n * The method that provides the diffuse lighting contribution. Defaults to DiffuseBasicMethod.\n */\n get: function () {\n return this._diffuseMethod;\n },\n set: function (value) {\n if (this._diffuseMethod == value)\n return;\n if (this._diffuseMethod) {\n this._removeDependency(this._diffuseMethod);\n this._diffuseChunk = null;\n }\n if (value) {\n this._diffuseChunk = this._shader.getAbstraction(value);\n this._addDependency(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MethodPass.prototype, \"specularMethod\", {\n /**\n * The method that provides the specular lighting contribution. Defaults to SpecularBasicMethod.\n */\n get: function () {\n return this._specularMethod;\n },\n set: function (value) {\n if (this._specularMethod == value)\n return;\n if (this._specularMethod) {\n this._removeDependency(this._specularMethod);\n this._specularChunk = null;\n }\n if (value) {\n this._specularChunk = this._shader.getAbstraction(value);\n this._addDependency(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n MethodPass.prototype.dispose = function () {\n if (this._lightPicker)\n this._lightPicker.removeEventListener(AssetEvent.INVALIDATE, this._onLightsChangeDelegate);\n while (this._methods.length)\n this._removeDependency(this._methods[0]);\n _super.prototype.dispose.call(this);\n this._chunks = null;\n this._methods = null;\n };\n /**\n * Called when any method's shader code is invalidated.\n */\n MethodPass.prototype.onMethodInvalidated = function (event) {\n this.invalidate();\n };\n // RENDER LOOP\n /**\n * @inheritDoc\n */\n MethodPass.prototype._activate = function (projection) {\n _super.prototype._activate.call(this, projection);\n var chunk;\n var len = this._chunks.length;\n for (var i = 0; i < len; ++i) {\n chunk = this._chunks[i];\n if (chunk.chunkVO.useChunk)\n chunk._activate();\n }\n };\n /**\n *\n *\n * @param renderable\n * @param stage\n * @param camera\n */\n MethodPass.prototype._setRenderState = function (renderable, projection) {\n _super.prototype._setRenderState.call(this, renderable, projection);\n var chunk;\n var len = this._chunks.length;\n for (var i = 0; i < len; ++i) {\n chunk = this._chunks[i];\n if (chunk.chunkVO.useChunk)\n chunk._setRenderState(renderable, projection);\n }\n };\n /**\n * @inheritDoc\n */\n MethodPass.prototype._deactivate = function () {\n _super.prototype._deactivate.call(this);\n var chunk;\n var len = this._chunks.length;\n for (var i = 0; i < len; ++i) {\n chunk = this._chunks[i];\n if (chunk.chunkVO.useChunk)\n chunk._deactivate();\n }\n };\n MethodPass.prototype._includeDependencies = function (shader) {\n _super.prototype._includeDependencies.call(this, shader);\n //TODO: fragment animtion should be compatible with lighting pass\n shader.usesFragmentAnimation = Boolean(this._mode == MethodPassMode.SUPER_SHADER);\n if (shader.useAlphaPremultiplied && shader.usesBlending)\n shader.usesCommonData = true;\n var i;\n var len = this._chunks.length;\n for (i = 0; i < len; ++i)\n this.setupAndCountDependencies(shader, this._chunks[i]);\n var usesTangentSpace = true;\n var chunk;\n for (i = 0; i < len; ++i) {\n chunk = this._chunks[i];\n if ((chunk.chunkVO.useChunk = chunk._isUsed()) && !chunk._usesTangentSpace())\n usesTangentSpace = false;\n }\n shader.outputsNormals = this._normalChunk && this._normalChunk.chunkVO.useChunk;\n shader.outputsTangentNormals = shader.outputsNormals && this._normalChunk._outputsTangentNormals();\n shader.usesTangentSpace = shader.outputsTangentNormals && !shader.usesProbes && usesTangentSpace;\n if (!shader.usesTangentSpace) {\n if (shader.viewDirDependencies > 0) {\n shader.globalPosDependencies++;\n }\n else if (this.numPointLights > 0 && shader.usesLights) {\n shader.globalPosDependencies++;\n if (Boolean(this._mode & MethodPassMode.EFFECTS))\n shader.usesGlobalPosFragment = true;\n }\n }\n };\n /**\n * Counts the dependencies for a given method.\n * @param method The method to count the dependencies for.\n * @param chunk The method's data for this material.\n */\n MethodPass.prototype.setupAndCountDependencies = function (shader, chunk) {\n var chunkVO = chunk.chunkVO;\n chunk._reset(chunkVO);\n chunk._initVO(chunkVO);\n if (chunkVO.needsProjection)\n shader.projectionDependencies++;\n if (chunkVO.needsGlobalVertexPos || chunkVO.needsGlobalFragmentPos) {\n shader.globalPosDependencies++;\n if (chunkVO.needsGlobalFragmentPos)\n shader.usesGlobalPosFragment = true;\n }\n if (chunkVO.needsNormals)\n shader.normalDependencies++;\n if (chunkVO.needsTangents)\n shader.tangentDependencies++;\n if (chunkVO.needsView)\n shader.viewDirDependencies++;\n };\n MethodPass.prototype._getPreLightingVertexCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n return code;\n };\n MethodPass.prototype._getPreLightingFragmentCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n if (this._diffuseChunk && this._diffuseChunk.chunkVO.useChunk)\n code += this._diffuseChunk._getFragmentPreLightingCode(registerCache, sharedRegisters);\n if (this._specularChunk && this._specularChunk.chunkVO.useChunk)\n code += this._specularChunk._getFragmentPreLightingCode(registerCache, sharedRegisters);\n return code;\n };\n MethodPass.prototype._getPerLightDiffuseFragmentCode = function (lightDirReg, diffuseColorReg, registerCache, sharedRegisters) {\n return this._diffuseChunk._getFragmentCodePerLight(lightDirReg, diffuseColorReg, registerCache, sharedRegisters);\n };\n MethodPass.prototype._getPerLightSpecularFragmentCode = function (lightDirReg, specularColorReg, registerCache, sharedRegisters) {\n return this._specularChunk._getFragmentCodePerLight(lightDirReg, specularColorReg, registerCache, sharedRegisters);\n };\n MethodPass.prototype._getPerProbeDiffuseFragmentCode = function (texReg, weightReg, registerCache, sharedRegisters) {\n return this._diffuseChunk._getFragmentCodePerProbe(texReg, weightReg, registerCache, sharedRegisters);\n };\n MethodPass.prototype._getPerProbeSpecularFragmentCode = function (texReg, weightReg, registerCache, sharedRegisters) {\n return this._specularChunk._getFragmentCodePerProbe(texReg, weightReg, registerCache, sharedRegisters);\n };\n MethodPass.prototype._getNormalVertexCode = function (registerCache, sharedRegisters) {\n return this._normalChunk._getVertexCode(registerCache, sharedRegisters);\n };\n MethodPass.prototype._getNormalFragmentCode = function (registerCache, sharedRegisters) {\n var code = this._normalChunk._getFragmentCode(sharedRegisters.normalFragment, registerCache, sharedRegisters);\n if (this._normalChunk.chunkVO.needsView)\n registerCache.removeFragmentTempUsage(sharedRegisters.viewDirFragment);\n if (this._normalChunk.chunkVO.needsGlobalFragmentPos || this._normalChunk.chunkVO.needsGlobalVertexPos)\n registerCache.removeVertexTempUsage(sharedRegisters.globalPositionVertex);\n return code;\n };\n /**\n * @inheritDoc\n */\n MethodPass.prototype._getVertexCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n if (this._ambientChunk && this._ambientChunk.chunkVO.useChunk)\n code += this._ambientChunk._getVertexCode(registerCache, sharedRegisters);\n if (this._shadowChunk)\n code += this._shadowChunk._getVertexCode(registerCache, sharedRegisters);\n if (this._diffuseChunk && this._diffuseChunk.chunkVO.useChunk)\n code += this._diffuseChunk._getVertexCode(registerCache, sharedRegisters);\n if (this._specularChunk && this._specularChunk.chunkVO.useChunk)\n code += this._specularChunk._getVertexCode(registerCache, sharedRegisters);\n var chunk;\n var len = this._chunks.length;\n for (var i = len - this._numEffectDependencies; i < len; i++) {\n chunk = this._chunks[i];\n if (chunk.chunkVO.useChunk) {\n code += chunk._getVertexCode(registerCache, sharedRegisters);\n if (chunk.chunkVO.needsGlobalVertexPos || chunk.chunkVO.needsGlobalFragmentPos)\n registerCache.removeVertexTempUsage(sharedRegisters.globalPositionVertex);\n }\n }\n if (this._colorTransformChunk && this._colorTransformChunk.chunkVO.useChunk)\n code += this._colorTransformChunk._getVertexCode(registerCache, sharedRegisters);\n return code;\n };\n /**\n * @inheritDoc\n */\n MethodPass.prototype._getFragmentCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n if (this._ambientChunk && this._ambientChunk.chunkVO.useChunk) {\n code += this._ambientChunk._getFragmentCode(sharedRegisters.shadedTarget, registerCache, sharedRegisters);\n if (this._ambientChunk.chunkVO.needsNormals)\n registerCache.removeFragmentTempUsage(sharedRegisters.normalFragment);\n if (this._ambientChunk.chunkVO.needsView)\n registerCache.removeFragmentTempUsage(sharedRegisters.viewDirFragment);\n }\n return code;\n };\n MethodPass.prototype._getPostAnimationFragmentCode = function (registerCache, sharedRegisters) {\n var code = \"\";\n //if blending with premultiplied alpha, make sure ambient color is correctly multiplied\n if (this._shader.useAlphaPremultiplied && this._shader.usesBlending) {\n code += \"add \" + sharedRegisters.shadedTarget + \".w, \" + sharedRegisters.shadedTarget + \".w, \" + sharedRegisters.commons + \".z\\n\" +\n \"div \" + sharedRegisters.shadedTarget + \".xyz, \" + sharedRegisters.shadedTarget + \", \" + sharedRegisters.shadedTarget + \".w\\n\" +\n \"sub \" + sharedRegisters.shadedTarget + \".w, \" + sharedRegisters.shadedTarget + \".w, \" + sharedRegisters.commons + \".z\\n\" +\n \"sat \" + sharedRegisters.shadedTarget + \".xyz, \" + sharedRegisters.shadedTarget + \"\\n\";\n }\n ///////////////begin lighting shading\n if (this._shadowChunk)\n code += this._shadowChunk._getFragmentCode(sharedRegisters.shadowTarget, registerCache, sharedRegisters);\n if (this._diffuseChunk && this._diffuseChunk.chunkVO.useChunk) {\n code += this._diffuseChunk._getFragmentCode(sharedRegisters.shadedTarget, registerCache, sharedRegisters);\n // resolve other dependencies as well?\n if (this._diffuseChunk.chunkVO.needsNormals)\n registerCache.removeFragmentTempUsage(sharedRegisters.normalFragment);\n if (this._diffuseChunk.chunkVO.needsView)\n registerCache.removeFragmentTempUsage(sharedRegisters.viewDirFragment);\n }\n if (this._specularChunk && this._specularChunk.chunkVO.useChunk) {\n code += this._specularChunk._getFragmentCode(sharedRegisters.shadedTarget, registerCache, sharedRegisters);\n if (this._specularChunk.chunkVO.needsNormals)\n registerCache.removeFragmentTempUsage(sharedRegisters.normalFragment);\n if (this._specularChunk.chunkVO.needsView)\n registerCache.removeFragmentTempUsage(sharedRegisters.viewDirFragment);\n }\n if (this._shadowChunk)\n registerCache.removeFragmentTempUsage(sharedRegisters.shadowTarget);\n ///////////////end lighting shading\n var alphaReg;\n //check if alpha is preserved while performing effects shading and store value\n if (this.preserveAlpha && this._numEffectDependencies > 0) {\n alphaReg = registerCache.getFreeFragmentSingleTemp();\n registerCache.addFragmentTempUsages(alphaReg, 1);\n code += \"mov \" + alphaReg + \", \" + sharedRegisters.shadedTarget + \".w\\n\";\n }\n //perform effects shading\n var chunk;\n var len = this._chunks.length;\n for (var i = len - this._numEffectDependencies; i < len; i++) {\n chunk = this._chunks[i];\n if (chunk.chunkVO.useChunk) {\n code += chunk._getFragmentCode(sharedRegisters.shadedTarget, registerCache, sharedRegisters);\n if (chunk.chunkVO.needsNormals)\n registerCache.removeFragmentTempUsage(sharedRegisters.normalFragment);\n if (chunk.chunkVO.needsView)\n registerCache.removeFragmentTempUsage(sharedRegisters.viewDirFragment);\n }\n }\n //check if alpha is preserved while performing effects shading and restore value\n if (this.preserveAlpha && this._numEffectDependencies > 0) {\n code += \"mov \" + sharedRegisters.shadedTarget + \".w, \" + alphaReg + \"\\n\";\n registerCache.removeFragmentTempUsage(alphaReg);\n }\n //peform final colortransform chunk if it exists\n if (this._colorTransformChunk && this._colorTransformChunk.chunkVO.useChunk)\n code += this._colorTransformChunk._getFragmentCode(sharedRegisters.shadedTarget, registerCache, sharedRegisters);\n return code;\n };\n /**\n * Indicates whether the shader uses any shadows.\n */\n MethodPass.prototype._iUsesShadows = function (shader) {\n return Boolean(this._shadowChunk && (this._lightPicker.castingDirectionalLights.length > 0 || this._lightPicker.castingPointLights.length > 0));\n };\n /**\n * Indicates whether the shader uses any specular component.\n */\n MethodPass.prototype._iUsesSpecular = function (shader) {\n return Boolean(this._specularChunk);\n };\n /**\n * Indicates whether the shader uses any specular component.\n */\n MethodPass.prototype._iUsesDiffuse = function (shader) {\n return Boolean(this._diffuseChunk);\n };\n MethodPass.prototype.onLightsChange = function (event) {\n this._updateLights();\n };\n MethodPass.prototype._updateLights = function () {\n var numDirectionalLightsOld = this.numDirectionalLights;\n var numPointLightsOld = this.numPointLights;\n var numLightProbesOld = this.numLightProbes;\n if (this._lightPicker && (this._mode & MethodPassMode.LIGHTING)) {\n this.numDirectionalLights = this.calculateNumDirectionalLights(this._lightPicker.numDirectionalLights);\n this.numPointLights = this.calculateNumPointLights(this._lightPicker.numPointLights);\n this.numLightProbes = this.calculateNumProbes(this._lightPicker.numLightProbes);\n if (this._includeCasters) {\n this.numDirectionalLights += this._lightPicker.numCastingDirectionalLights;\n this.numPointLights += this._lightPicker.numCastingPointLights;\n }\n }\n else {\n this.numDirectionalLights = 0;\n this.numPointLights = 0;\n this.numLightProbes = 0;\n }\n if (numDirectionalLightsOld != this.numDirectionalLights || numPointLightsOld != this.numPointLights || numLightProbesOld != this.numLightProbes) {\n this._updateShader();\n this.invalidate();\n }\n };\n /**\n * Calculates the amount of directional lights this material will support.\n * @param numDirectionalLights The maximum amount of directional lights to support.\n * @return The amount of directional lights this material will support, bounded by the amount necessary.\n */\n MethodPass.prototype.calculateNumDirectionalLights = function (numDirectionalLights) {\n return Math.min(numDirectionalLights - this.directionalLightsOffset, this._maxLights);\n };\n /**\n * Calculates the amount of point lights this material will support.\n * @param numDirectionalLights The maximum amount of point lights to support.\n * @return The amount of point lights this material will support, bounded by the amount necessary.\n */\n MethodPass.prototype.calculateNumPointLights = function (numPointLights) {\n var numFree = this._maxLights - this.numDirectionalLights;\n return Math.min(numPointLights - this.pointLightsOffset, numFree);\n };\n /**\n * Calculates the amount of light probes this material will support.\n * @param numDirectionalLights The maximum amount of light probes to support.\n * @return The amount of light probes this material will support, bounded by the amount necessary.\n */\n MethodPass.prototype.calculateNumProbes = function (numLightProbes) {\n var numChannels = 0;\n if ((this._material.specularLightSources & LightSources.PROBES) != 0)\n ++numChannels;\n if ((this._material.diffuseLightSources & LightSources.PROBES) != 0)\n ++numChannels;\n // 4 channels available\n return Math.min(numLightProbes - this.lightProbesOffset, (4 / numChannels) | 0);\n };\n return MethodPass;\n}(PassBase));\nexport { MethodPass };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/surfaces/passes/MethodPass.js","import * as tslib_1 from \"tslib\";\nimport { BlendMode } from \"@awayjs/graphics\";\nimport { StaticLightPicker } from \"@awayjs/scene\";\nimport { ContextGLCompareMode, GL_MaterialBase } from \"@awayjs/stage\";\nimport { MethodPassMode } from \"../surfaces/passes/MethodPassMode\";\nimport { MethodPass } from \"../surfaces/passes/MethodPass\";\nimport { MethodMaterialMode } from \"../MethodMaterialMode\";\n/**\n * CompiledPass forms an abstract base class for the default compiled pass materials provided by Away3D,\n * using material methods to define their appearance.\n */\nvar GL_MethodMaterial = (function (_super) {\n tslib_1.__extends(GL_MethodMaterial, _super);\n /**\n * Creates a new CompiledPass object.\n *\n * @param material The material to which this pass belongs.\n */\n function GL_MethodMaterial(material, materialPool) {\n var _this = _super.call(this, material, materialPool) || this;\n _this._methodMaterial = material;\n _this._materialPool = materialPool;\n return _this;\n }\n Object.defineProperty(GL_MethodMaterial.prototype, \"numLights\", {\n /**\n * The maximum total number of lights provided by the light picker.\n */\n get: function () {\n return this._methodMaterial.lightPicker ? this._methodMaterial.lightPicker.numLightProbes + this._methodMaterial.lightPicker.numDirectionalLights + this._methodMaterial.lightPicker.numPointLights + this._methodMaterial.lightPicker.numCastingDirectionalLights + this._methodMaterial.lightPicker.numCastingPointLights : 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MethodMaterial.prototype, \"numNonCasters\", {\n /**\n * The amount of lights that don't cast shadows.\n */\n get: function () {\n return this._methodMaterial.lightPicker ? this._methodMaterial.lightPicker.numLightProbes + this._methodMaterial.lightPicker.numDirectionalLights + this._methodMaterial.lightPicker.numPointLights : 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MethodMaterial.prototype, \"lightPicker\", {\n get: function () {\n return this._methodMaterial.lightPicker;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MethodMaterial.prototype, \"enableLightFallOff\", {\n /**\n * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and\n * compatibility for constrained mode.\n */\n get: function () {\n return this._methodMaterial.enableLightFallOff;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MethodMaterial.prototype, \"diffuseLightSources\", {\n /**\n * Define which light source types to use for diffuse reflections. This allows choosing between regular lights\n * and/or light probes for diffuse reflections.\n *\n * @see away3d.materials.LightSources\n */\n get: function () {\n return this._methodMaterial.diffuseLightSources;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GL_MethodMaterial.prototype, \"specularLightSources\", {\n /**\n * Define which light source types to use for specular reflections. This allows choosing between regular lights\n * and/or light probes for specular reflections.\n *\n * @see away3d.materials.LightSources\n */\n get: function () {\n return this._methodMaterial.specularLightSources;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n GL_MethodMaterial.prototype._pUpdateRender = function () {\n _super.prototype._pUpdateRender.call(this);\n this.initPasses();\n this.setBlendAndCompareModes();\n this._pClearPasses();\n if (this._methodMaterial.mode == MethodMaterialMode.MULTI_PASS) {\n if (this._casterLightPass)\n this._pAddPass(this._casterLightPass);\n if (this._nonCasterLightPasses)\n for (var i = 0; i < this._nonCasterLightPasses.length; ++i)\n this._pAddPass(this._nonCasterLightPasses[i]);\n }\n if (this._pass)\n this._pAddPass(this._pass);\n };\n /**\n * Initializes all the passes and their dependent passes.\n */\n GL_MethodMaterial.prototype.initPasses = function () {\n // let the effects pass handle everything if there are no lights, when there are effect methods applied\n // after shading, or when the material mode is single pass.\n if (this.numLights == 0 || this._methodMaterial.numEffectMethods > 0 || this._methodMaterial.mode == MethodMaterialMode.SINGLE_PASS)\n this.initEffectPass();\n else if (this._pass)\n this.removeEffectPass();\n // only use a caster light pass if shadows need to be rendered\n if (this._methodMaterial.shadowMethod && this._methodMaterial.mode == MethodMaterialMode.MULTI_PASS)\n this.initCasterLightPass();\n else if (this._casterLightPass)\n this.removeCasterLightPass();\n // only use non caster light passes if there are lights that don't cast\n if (this.numNonCasters > 0 && this._methodMaterial.mode == MethodMaterialMode.MULTI_PASS)\n this.initNonCasterLightPasses();\n else if (this._nonCasterLightPasses)\n this.removeNonCasterLightPasses();\n };\n /**\n * Sets up the various blending modes for all screen passes, based on whether or not there are previous passes.\n */\n GL_MethodMaterial.prototype.setBlendAndCompareModes = function () {\n var forceSeparateMVP = Boolean(this._casterLightPass || this._pass);\n // caster light pass is always first if it exists, hence it uses normal blending\n if (this._casterLightPass) {\n this._casterLightPass.forceSeparateMVP = forceSeparateMVP;\n this._casterLightPass.shader.setBlendMode(BlendMode.NORMAL);\n this._casterLightPass.shader.depthCompareMode = this._methodMaterial.depthCompareMode;\n }\n if (this._nonCasterLightPasses) {\n var firstAdditiveIndex = 0;\n // if there's no caster light pass, the first non caster light pass will be the first\n // and should use normal blending\n if (!this._casterLightPass) {\n this._nonCasterLightPasses[0].forceSeparateMVP = forceSeparateMVP;\n this._nonCasterLightPasses[0].shader.setBlendMode(BlendMode.NORMAL);\n this._nonCasterLightPasses[0].shader.depthCompareMode = this._methodMaterial.depthCompareMode;\n firstAdditiveIndex = 1;\n }\n // all lighting passes following the first light pass should use additive blending\n for (var i = firstAdditiveIndex; i < this._nonCasterLightPasses.length; ++i) {\n this._nonCasterLightPasses[i].forceSeparateMVP = forceSeparateMVP;\n this._nonCasterLightPasses[i].shader.setBlendMode(BlendMode.ADD);\n this._nonCasterLightPasses[i].shader.depthCompareMode = ContextGLCompareMode.LESS_EQUAL;\n }\n }\n if (this._casterLightPass || this._nonCasterLightPasses) {\n //cannot be blended by blendmode property if multipass enabled\n this._pRequiresBlending = false;\n // there are light passes, so this should be blended in\n if (this._pass) {\n this._pass.mode = MethodPassMode.EFFECTS;\n this._pass.forceSeparateMVP = forceSeparateMVP;\n this._pass.shader.depthCompareMode = ContextGLCompareMode.LESS_EQUAL;\n this._pass.shader.setBlendMode(BlendMode.LAYER);\n }\n }\n else if (this._pass) {\n this._pRequiresBlending = (this._methodMaterial.blendMode != BlendMode.NORMAL || this._methodMaterial.alphaBlending || (this._methodMaterial.colorTransform && this._methodMaterial.colorTransform.alphaMultiplier < 1));\n // effects pass is the only pass, so it should just blend normally\n this._pass.mode = MethodPassMode.SUPER_SHADER;\n this._pass.preserveAlpha = this._pRequiresBlending;\n this._pass.forceSeparateMVP = false;\n this._pass.colorTransform = this._methodMaterial.colorTransform;\n this._pass.shader.setBlendMode((this._methodMaterial.blendMode == BlendMode.NORMAL && this._pRequiresBlending) ? BlendMode.LAYER : this._methodMaterial.blendMode);\n this._pass.shader.depthCompareMode = this._methodMaterial.depthCompareMode;\n }\n };\n GL_MethodMaterial.prototype.initCasterLightPass = function () {\n if (this._casterLightPass == null)\n this._casterLightPass = new MethodPass(MethodPassMode.LIGHTING, this, this._materialPool);\n this._casterLightPass.lightPicker = new StaticLightPicker([this._methodMaterial.shadowMethod.castingLight]);\n this._casterLightPass.shadowMethod = this._methodMaterial.shadowMethod;\n this._casterLightPass.diffuseMethod = this._methodMaterial.diffuseMethod;\n this._casterLightPass.ambientMethod = this._methodMaterial.ambientMethod;\n this._casterLightPass.normalMethod = this._methodMaterial.normalMethod;\n this._casterLightPass.specularMethod = this._methodMaterial.specularMethod;\n };\n GL_MethodMaterial.prototype.removeCasterLightPass = function () {\n this._casterLightPass.dispose();\n this._pRemovePass(this._casterLightPass);\n this._casterLightPass = null;\n };\n GL_MethodMaterial.prototype.initNonCasterLightPasses = function () {\n this.removeNonCasterLightPasses();\n var pass;\n var numDirLights = this._methodMaterial.lightPicker.numDirectionalLights;\n var numPointLights = this._methodMaterial.lightPicker.numPointLights;\n var numLightProbes = this._methodMaterial.lightPicker.numLightProbes;\n var dirLightOffset = 0;\n var pointLightOffset = 0;\n var probeOffset = 0;\n if (!this._casterLightPass) {\n numDirLights += this._methodMaterial.lightPicker.numCastingDirectionalLights;\n numPointLights += this._methodMaterial.lightPicker.numCastingPointLights;\n }\n this._nonCasterLightPasses = new Array();\n while (dirLightOffset < numDirLights || pointLightOffset < numPointLights || probeOffset < numLightProbes) {\n pass = new MethodPass(MethodPassMode.LIGHTING, this, this._materialPool);\n pass.includeCasters = this._methodMaterial.shadowMethod == null;\n pass.directionalLightsOffset = dirLightOffset;\n pass.pointLightsOffset = pointLightOffset;\n pass.lightProbesOffset = probeOffset;\n pass.lightPicker = this._methodMaterial.lightPicker;\n pass.diffuseMethod = this._methodMaterial.diffuseMethod;\n pass.ambientMethod = this._methodMaterial.ambientMethod;\n pass.normalMethod = this._methodMaterial.normalMethod;\n pass.specularMethod = this._methodMaterial.specularMethod;\n this._nonCasterLightPasses.push(pass);\n dirLightOffset += pass.numDirectionalLights;\n pointLightOffset += pass.numPointLights;\n probeOffset += pass.numLightProbes;\n }\n };\n GL_MethodMaterial.prototype.removeNonCasterLightPasses = function () {\n if (!this._nonCasterLightPasses)\n return;\n for (var i = 0; i < this._nonCasterLightPasses.length; ++i)\n this._pRemovePass(this._nonCasterLightPasses[i]);\n this._nonCasterLightPasses = null;\n };\n GL_MethodMaterial.prototype.removeEffectPass = function () {\n if (this._pass.ambientMethod != this._methodMaterial.ambientMethod)\n this._pass.ambientMethod.dispose();\n if (this._pass.diffuseMethod != this._methodMaterial.diffuseMethod)\n this._pass.diffuseMethod.dispose();\n if (this._pass.specularMethod != this._methodMaterial.specularMethod)\n this._pass.specularMethod.dispose();\n if (this._pass.normalMethod != this._methodMaterial.normalMethod)\n this._pass.normalMethod.dispose();\n this._pRemovePass(this._pass);\n this._pass = null;\n };\n GL_MethodMaterial.prototype.initEffectPass = function () {\n if (this._pass == null)\n this._pass = new MethodPass(MethodPassMode.SUPER_SHADER, this, this._materialPool);\n if (this._methodMaterial.mode == MethodMaterialMode.SINGLE_PASS) {\n this._pass.ambientMethod = this._methodMaterial.ambientMethod;\n this._pass.diffuseMethod = this._methodMaterial.diffuseMethod;\n this._pass.specularMethod = this._methodMaterial.specularMethod;\n this._pass.normalMethod = this._methodMaterial.normalMethod;\n this._pass.shadowMethod = this._methodMaterial.shadowMethod;\n }\n else if (this._methodMaterial.mode == MethodMaterialMode.MULTI_PASS) {\n if (this.numLights == 0) {\n this._pass.ambientMethod = this._methodMaterial.ambientMethod;\n }\n else {\n this._pass.ambientMethod = null;\n }\n this._pass.preserveAlpha = false;\n this._pass.normalMethod = this._methodMaterial.normalMethod;\n }\n //update effect methods\n var i = 0;\n var effectMethod;\n var len = Math.max(this._methodMaterial.numEffectMethods, this._pass.numEffectMethods);\n while (i < len) {\n effectMethod = this._methodMaterial.getEffectMethodAt(i);\n if (effectMethod != this._pass.getEffectMethodAt(i)) {\n this._pass.removeEffectMethodAt(i);\n if (effectMethod != null) {\n if (i < this._pass.numEffectMethods)\n this._pass.addEffectMethodAt(effectMethod, i);\n else\n this._pass.addEffectMethod(effectMethod);\n }\n }\n i++;\n }\n };\n /**\n * @inheritDoc\n */\n GL_MethodMaterial.prototype.onClear = function (event) {\n _super.prototype.onClear.call(this, event);\n //TODO\n };\n return GL_MethodMaterial;\n}(GL_MaterialBase));\nexport { GL_MethodMaterial };\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/surfaces/GL_MethodMaterial.js","import * as tslib_1 from \"tslib\";\r\nimport { DefaultGraphicsFactory } from \"@awayjs/graphics\";\r\nimport { Billboard, TextField, MovieClip, Sprite, DisplayObjectContainer } from \"@awayjs/scene\";\r\nimport { MethodMaterial } from \"@awayjs/materials\";\r\nvar DefaultSceneGraphFactory = (function (_super) {\r\n tslib_1.__extends(DefaultSceneGraphFactory, _super);\r\n function DefaultSceneGraphFactory() {\r\n return _super.apply(this, arguments) || this;\r\n }\r\n DefaultSceneGraphFactory.prototype.createMovieClip = function (timeline) {\r\n if (timeline === void 0) { timeline = null; }\r\n return new MovieClip(timeline);\r\n };\r\n DefaultSceneGraphFactory.prototype.createSprite = function (prefab) {\r\n if (prefab === void 0) { prefab = null; }\r\n if (prefab)\r\n return prefab.getNewObject();\r\n return new Sprite();\r\n };\r\n DefaultSceneGraphFactory.prototype.createDisplayObjectContainer = function () {\r\n return new DisplayObjectContainer();\r\n };\r\n DefaultSceneGraphFactory.prototype.createTextField = function () {\r\n return new TextField();\r\n };\r\n DefaultSceneGraphFactory.prototype.createBillboard = function (material) {\r\n return new Billboard(material);\r\n };\r\n DefaultSceneGraphFactory.prototype.createMaterial = function (imageColor, alpha) {\r\n return new MethodMaterial(imageColor, alpha);\r\n };\r\n return DefaultSceneGraphFactory;\r\n}(DefaultGraphicsFactory));\r\nexport { DefaultSceneGraphFactory };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/factories/DefaultSceneGraphFactory.js","var AWD3Utils = (function () {\r\n function AWD3Utils() {\r\n }\r\n return AWD3Utils;\r\n}());\r\nexport { AWD3Utils };\r\nAWD3Utils.BLOCKSTATE_FINALIZE = 0;\r\nAWD3Utils.BLOCKSTATE_INVALID = 1;\r\nAWD3Utils.BLOCKSTATE_LOAD_DEPENDENICES = 2;\r\nAWD3Utils.BLOCKSTATE_NO_ASSET = 3;\r\nAWD3Utils.COMPRESSIONMODE_LZMA = \"lzma\";\r\nAWD3Utils.UNCOMPRESSED = 0;\r\nAWD3Utils.DEFLATE = 1;\r\nAWD3Utils.LZMA = 2;\r\nAWD3Utils.INT8 = 1;\r\nAWD3Utils.INT16 = 2;\r\nAWD3Utils.INT32 = 3;\r\nAWD3Utils.UINT8 = 4;\r\nAWD3Utils.UINT16 = 5;\r\nAWD3Utils.UINT32 = 6;\r\nAWD3Utils.FLOAT32 = 7;\r\nAWD3Utils.FLOAT64 = 8;\r\nAWD3Utils.BOOL = 21;\r\nAWD3Utils.COLOR = 22;\r\nAWD3Utils.BADDR = 23;\r\nAWD3Utils.AWDSTRING = 31;\r\nAWD3Utils.AWDBYTEARRAY = 32;\r\nAWD3Utils.VECTOR2x1 = 41;\r\nAWD3Utils.VECTOR3x1 = 42;\r\nAWD3Utils.VECTOR4x1 = 43;\r\nAWD3Utils.MTX3x2 = 44;\r\nAWD3Utils.MTX3x3 = 45;\r\nAWD3Utils.MTX4x3 = 46;\r\nAWD3Utils.MTX4x4 = 47;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/AWD3ParserUtils/AWD3Utils.js","import { AWD3Utils } from \"./AWD3Utils\";\r\nvar AWDBlock = (function () {\r\n function AWDBlock(this_id, this_type) {\r\n this.type = this_type;\r\n this.id = this_id;\r\n this.state = AWD3Utils.BLOCKSTATE_FINALIZE;\r\n this.dependencies_data = Array();\r\n this.dependencies_urls = Array();\r\n if (this_type == 83) {\r\n this.loaded_dependencies = Array(6);\r\n }\r\n this.loaded_dependencies_cnt = 0;\r\n }\r\n AWDBlock.prototype.dispose = function () {\r\n this.id = null;\r\n this.bytes = null;\r\n this.errorMessages = null;\r\n this.uvsForVertexAnimation = null;\r\n };\r\n AWDBlock.prototype.addError = function (errorMsg) {\r\n if (!this.errorMessages)\r\n this.errorMessages = new Array();\r\n this.errorMessages.push(errorMsg);\r\n };\r\n return AWDBlock;\r\n}());\r\nexport { AWDBlock };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/AWD3ParserUtils/AWDBlock.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesBuffer, Short2Attributes, Float3Attributes, Float2Attributes, Byte4Attributes, ColorTransform, Matrix3D, Vector3D, URLLoaderDataFormat, URLRequest, AssetLibrary, ParserBase, ParserUtils, PerspectiveProjection, OrthographicProjection, OrthographicOffCenterProjection, ByteArray, Rectangle, Matrix } from \"@awayjs/core\";\r\nimport { Image2DParser, Graphics, ElementsUtils, Style, BitmapImageCube, BlendMode, Sampler2D, TriangleElements, DefaultMaterialManager, SingleCubeTexture, Single2DTexture, MappingMode, ElementsType, Shape } from \"@awayjs/graphics\";\r\nimport { DirectionalLight, PointLight, Camera, Sprite, Skybox, StaticLightPicker, CubeMapShadowMapper, DirectionalShadowMapper, PrefabBase, PrimitiveCapsulePrefab, PrimitiveConePrefab, PrimitiveCubePrefab, PrimitiveCylinderPrefab, PrimitivePlanePrefab, PrimitiveSpherePrefab, PrimitiveTorusPrefab, Timeline, Font, TesselatedFontTable, TextFormat } from \"@awayjs/scene\";\r\nimport { VertexAnimationSet, VertexAnimator, SkeletonAnimationSet, SkeletonAnimator, JointPose, Skeleton, SkeletonPose, SkeletonJoint, SkeletonClipNode, VertexClipNode } from \"@awayjs/renderer\";\r\nimport { MethodMaterialMode, DiffuseCelMethod, DiffuseGradientMethod, DiffuseLightMapMethod, DiffuseWrapMethod, EffectAlphaMaskMethod, EffectColorMatrixMethod, EffectColorTransformMethod, EffectEnvMapMethod, EffectFogMethod, EffectFresnelEnvMapMethod, EffectLightMapMethod, EffectRimLightMethod, NormalSimpleWaterMethod, ShadowDitheredMethod, SpecularFresnelMethod, ShadowHardMethod, SpecularAnisotropicMethod, SpecularCelMethod, SpecularPhongMethod, ShadowNearMethod, ShadowSoftMethod } from \"@awayjs/materials\";\r\nimport { DefaultSceneGraphFactory } from \"./factories/DefaultSceneGraphFactory\";\r\nimport { AWDBlock } from \"./AWD3ParserUtils/AWDBlock\";\r\nimport { LineScaleMode } from \"@awayjs/graphics\";\r\n/**\r\n * AWDParser provides a parser for the AWD data type.\r\n */\r\nvar AWDParser = (function (_super) {\r\n tslib_1.__extends(AWDParser, _super);\r\n /**\r\n * Creates a new AWD3Parserutils object.\r\n * @param uri The url or id of the data or file to be parsed.\r\n * @param extra The holder for extra contextual data that the parser might need.\r\n */\r\n function AWDParser(factory) {\r\n if (factory === void 0) { factory = null; }\r\n var _this = _super.call(this, URLLoaderDataFormat.ARRAY_BUFFER) || this;\r\n //set to \"true\" to have some console.logs in the Console\r\n _this._debug = false;\r\n _this._debugTimers = true;\r\n _this._startedParsing = false;\r\n _this._texture_users = {};\r\n _this._parsed_header = false;\r\n _this._time_all = 0;\r\n _this._time_graphics = 0;\r\n _this._time_graphics_bytes = 0;\r\n _this._time_timeline = 0;\r\n _this._time_fonts = 0;\r\n _this._time_textfields = 0;\r\n _this._time_sounds = 0;\r\n _this._time_textures = 0;\r\n _this._time_materials = 0;\r\n _this._time_sprites = 0;\r\n _this._num_graphics = 0;\r\n _this._num_timeline = 0;\r\n _this._num_fonts = 0;\r\n _this._num_textfields = 0;\r\n _this._num_sounds = 0;\r\n _this._num_textures = 0;\r\n _this._num_materials = 0;\r\n _this._num_sprites = 0;\r\n //--Parser UTILS---------------------------------------------------------------------------\r\n _this.shadowMethodListProperties = {\r\n 1: AWDParser.BADDR,\r\n 2: AWDParser.BADDR,\r\n 3: AWDParser.BADDR,\r\n 101: AWDParser.PROPERTY_NUMBER,\r\n 102: AWDParser.PROPERTY_NUMBER,\r\n 103: AWDParser.PROPERTY_NUMBER,\r\n 201: AWDParser.UINT32,\r\n 202: AWDParser.UINT32,\r\n 301: AWDParser.UINT16,\r\n 302: AWDParser.UINT16,\r\n 401: AWDParser.UINT8,\r\n 402: AWDParser.UINT8,\r\n 601: AWDParser.COLOR,\r\n 602: AWDParser.COLOR,\r\n 701: AWDParser.BOOL,\r\n 702: AWDParser.BOOL,\r\n 801: AWDParser.MTX4x4\r\n };\r\n _this.spritePoseAnimationProperties = {\r\n 1: AWDParser.BOOL,\r\n 2: AWDParser.BOOL\r\n };\r\n _this.sharedMethodListProperties = {\r\n 1: AWDParser.BADDR,\r\n 2: AWDParser.BADDR,\r\n 3: AWDParser.BADDR,\r\n 101: AWDParser.PROPERTY_NUMBER,\r\n 102: AWDParser.PROPERTY_NUMBER,\r\n 103: AWDParser.PROPERTY_NUMBER,\r\n 104: AWDParser.PROPERTY_NUMBER,\r\n 105: AWDParser.PROPERTY_NUMBER,\r\n 106: AWDParser.PROPERTY_NUMBER,\r\n 107: AWDParser.PROPERTY_NUMBER,\r\n 201: AWDParser.UINT32,\r\n 202: AWDParser.UINT32,\r\n 301: AWDParser.UINT16,\r\n 302: AWDParser.UINT16,\r\n 401: AWDParser.UINT8,\r\n 402: AWDParser.UINT8,\r\n 601: AWDParser.COLOR,\r\n 602: AWDParser.COLOR,\r\n 701: AWDParser.BOOL,\r\n 702: AWDParser.BOOL\r\n };\r\n _this._factory = factory || new DefaultSceneGraphFactory();\r\n _this._blocks = new Array();\r\n _this._blocks[0] = new AWDBlock(0, 255);\r\n _this._blocks[0].data = null; // Zero address means null in AWD\r\n _this.blendModeDic = new Array(); // used to translate ints to blendMode-strings\r\n _this.blendModeDic.push(BlendMode.NORMAL);\r\n _this.blendModeDic.push(BlendMode.ADD);\r\n _this.blendModeDic.push(BlendMode.ALPHA);\r\n _this.blendModeDic.push(BlendMode.DARKEN);\r\n _this.blendModeDic.push(BlendMode.DIFFERENCE);\r\n _this.blendModeDic.push(BlendMode.ERASE);\r\n _this.blendModeDic.push(BlendMode.HARDLIGHT);\r\n _this.blendModeDic.push(BlendMode.INVERT);\r\n _this.blendModeDic.push(BlendMode.LAYER);\r\n _this.blendModeDic.push(BlendMode.LIGHTEN);\r\n _this.blendModeDic.push(BlendMode.MULTIPLY);\r\n _this.blendModeDic.push(BlendMode.NORMAL);\r\n _this.blendModeDic.push(BlendMode.OVERLAY);\r\n _this.blendModeDic.push(BlendMode.SCREEN);\r\n _this.blendModeDic.push(BlendMode.SHADER);\r\n _this.blendModeDic.push(BlendMode.OVERLAY);\r\n _this._depthSizeDic = new Array(); // used to translate ints to depthSize-values\r\n _this._depthSizeDic.push(256);\r\n _this._depthSizeDic.push(512);\r\n _this._depthSizeDic.push(2048);\r\n _this._depthSizeDic.push(1024);\r\n _this._version = Array(); // will contain 2 int (major-version, minor-version) for awd-version-check\r\n return _this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n AWDParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"awd\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n AWDParser.supportsData = function (data) {\r\n return (ParserUtils.toString(data, 3) == 'AWD');\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n AWDParser.prototype._iResolveDependency = function (resourceDependency) {\r\n // this will be called when Dependency has finished loading.\r\n // the ressource dependecniy has a id that point to the awd_block waiting for it.\r\n //console.log(\"AWDParser resolve dependencies\";\r\n if (resourceDependency.assets.length == 1) {\r\n var this_block = this._blocks[parseInt(resourceDependency.id)];\r\n if (this_block.type == 82) {\r\n var image_asset = resourceDependency.assets[0];\r\n this_block.data = image_asset; // Store finished asset\r\n // Finalize texture asset to dispatch texture event, which was\r\n // previously suppressed while the dependency was loaded.\r\n this._pFinalizeAsset(image_asset, this_block.name);\r\n if (this._debug)\r\n console.log(\"Parsed Texture: Name = \" + this_block.name);\r\n }\r\n else if (this_block.type == 44) {\r\n var audio_asset = resourceDependency.assets[0];\r\n this_block.data = audio_asset; // Store finished asset\r\n // Finalize texture asset to dispatch texture event, which was\r\n // previously suppressed while the dependency was loaded.\r\n //console.log(\"Parsing audio \" + this_block.name);\r\n this._pFinalizeAsset(audio_asset, this_block.name);\r\n if (this._debug)\r\n console.log(\"Parsed WaveAudio: Name = \" + this_block.name);\r\n }\r\n else if (this_block.type == 83) {\r\n this_block.loaded_dependencies[resourceDependency.sub_id] = resourceDependency.assets[0];\r\n this_block.loaded_dependencies_cnt++;\r\n if (this._debug)\r\n console.log(\"Successfully loaded Bitmap \" + resourceDependency.sub_id + \" / 6 for Cubetexture\");\r\n if (this_block.loaded_dependencies_cnt == 6) {\r\n var cube_image_asset = new BitmapImageCube(this_block.loaded_dependencies[0].width);\r\n for (var i = 0; i < 6; i++)\r\n cube_image_asset.draw(i, this_block.loaded_dependencies[i]);\r\n this_block.data = cube_image_asset; // Store finished asset\r\n this._pFinalizeAsset(cube_image_asset, this_block.name);\r\n if (this._debug)\r\n console.log(\"Parsed CubeTexture: Name = \" + this_block.name);\r\n }\r\n }\r\n if (this._debugTimers && !this._isParsing)\r\n this.updateTimers(this_block.type);\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n AWDParser.prototype._iResolveDependencyFailure = function (resourceDependency) {\r\n //not used - if a dependcy fails, the awaiting Texture or CubeTexture will never be finalized, and the default-bitmaps will be used.\r\n // this means, that if one Bitmap of a CubeTexture fails, the CubeTexture will have the DefaultTexture applied for all six Bitmaps.\r\n };\r\n /**\r\n * Resolve a dependency name\r\n *\r\n * @param resourceDependency The dependency to be resolved.\r\n */\r\n AWDParser.prototype._iResolveDependencyName = function (resourceDependency, asset) {\r\n var oldName = asset.name;\r\n if (asset) {\r\n var block = this._blocks[parseInt(resourceDependency.id)];\r\n // Reset name of texture to the one defined in the AWD file,\r\n // as opposed to whatever the image parser came up with.\r\n asset.resetAssetPath(block.name, null, true);\r\n }\r\n var newName = asset.name;\r\n asset.name = oldName;\r\n return newName;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n AWDParser.prototype._pProceedParsing = function () {\r\n if (!this._startedParsing) {\r\n this._byteData = this._pGetByteData(); //getByteData();\r\n this._startedParsing = true;\r\n }\r\n if (!this._parsed_header) {\r\n //----------------------------------------------------------------------------\r\n // LITTLE_ENDIAN - Default for ArrayBuffer / Not implemented in ByteArray\r\n //----------------------------------------------------------------------------\r\n //this._byteData.endian = Endian.LITTLE_ENDIAN;\r\n //----------------------------------------------------------------------------\r\n //----------------------------------------------------------------------------\r\n // Parse header and decompress body if needed\r\n this.parseHeader();\r\n switch (this._compression) {\r\n case AWDParser.DEFLATE:\r\n case AWDParser.LZMA:\r\n this._pDieWithError('Compressed AWD formats not yet supported');\r\n break;\r\n case AWDParser.UNCOMPRESSED:\r\n this._body = this._byteData;\r\n break;\r\n }\r\n this._parsed_header = true;\r\n }\r\n if (this._body) {\r\n while (this._body.getBytesAvailable() > 0 && !this.parsingPaused)\r\n this.parseNextBlock();\r\n //----------------------------------------------------------------------------\r\n // Return complete status\r\n if (this._body.getBytesAvailable() == 0) {\r\n this.dispose();\r\n if (this._debugTimers)\r\n console.log(\"Parsing total: \" + (this._time_all | 0) + \"ms\", \" | graphics: \" + this._num_graphics + \", \" + (this._time_graphics | 0) + \"ms\", \" | graphics bytes: \" + this._num_graphics + \", \" + (this._time_graphics_bytes | 0) + \"ms\", \" | timelines: \" + this._num_timeline + \", \" + (this._time_timeline | 0) + \"ms\", \" | fonts: \" + this._num_fonts + \", \" + (this._time_fonts | 0) + \"ms\", \" | sounds: \" + this._num_sounds + \", \" + (this._time_sounds | 0) + \"ms\", \" | mats: \" + this._num_materials + \", \" + (this._time_materials | 0) + \"ms\", \" | textures: \" + this._num_textures + \", \" + (this._time_textures | 0) + \"ms\", \" | sprites: \" + this._num_sprites + \", \" + (this._time_sprites | 0) + \"ms\");\r\n return ParserBase.PARSING_DONE;\r\n }\r\n else {\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n }\r\n else {\r\n switch (this._compression) {\r\n case AWDParser.DEFLATE:\r\n case AWDParser.LZMA:\r\n if (this._debug)\r\n console.log(\"(!) AWDParser Error: Compressed AWD formats not yet supported (!)\");\r\n break;\r\n }\r\n // Error - most likely _body not set because we do not support compression.\r\n return ParserBase.PARSING_DONE;\r\n }\r\n };\r\n AWDParser.prototype._pStartParsing = function (frameLimit) {\r\n //create a content object for Loaders\r\n this._pContent = this._factory.createDisplayObjectContainer();\r\n _super.prototype._pStartParsing.call(this, frameLimit);\r\n };\r\n AWDParser.prototype.dispose = function () {\r\n for (var c in this._blocks) {\r\n var b = this._blocks[c];\r\n b.dispose();\r\n }\r\n };\r\n AWDParser.prototype.parseNextBlock = function () {\r\n var block;\r\n var isParsed = false;\r\n var ns;\r\n var type;\r\n var flags;\r\n var len;\r\n //*\r\n if (this._debugTimers)\r\n this.start_timeing = performance.now();\r\n //*/\r\n this._cur_block_id = this._body.readUnsignedInt();\r\n ns = this._body.readUnsignedByte();\r\n type = this._body.readUnsignedByte();\r\n flags = this._body.readUnsignedByte();\r\n len = this._body.readUnsignedInt();\r\n var blockCompression = BitFlags.test(flags, BitFlags.FLAG4);\r\n var blockCompressionLZMA = BitFlags.test(flags, BitFlags.FLAG5);\r\n if (this._accuracyOnBlocks) {\r\n this._accuracyMatrix = BitFlags.test(flags, BitFlags.FLAG1);\r\n this._accuracyGeo = BitFlags.test(flags, BitFlags.FLAG2);\r\n this._accuracyProps = BitFlags.test(flags, BitFlags.FLAG3);\r\n }\r\n var blockEndAll = this._body.position + len;\r\n if (len > this._body.getBytesAvailable()) {\r\n this._pDieWithError('AWD2 block length is bigger than the bytes that are available!');\r\n this._body.position += this._body.getBytesAvailable();\r\n return;\r\n }\r\n //----------------------------------------------------------------------------\r\n // Compressed AWD Formats not yet supported\r\n if (blockCompression) {\r\n this._pDieWithError('Compressed AWD formats not yet supported');\r\n this._newBlockBytes = new ByteArray();\r\n this._body.readBytes(this._newBlockBytes, 0, len);\r\n this._newBlockBytes.position = 0;\r\n }\r\n else {\r\n this._newBlockBytes = this._body;\r\n }\r\n //----------------------------------------------------------------------------\r\n // LITTLE_ENDIAN - Default for ArrayBuffer / Not implemented in ByteArray\r\n //----------------------------------------------------------------------------\r\n //this._newBlockBytes.endian = Endian.LITTLE_ENDIAN;\r\n //----------------------------------------------------------------------------\r\n block = new AWDBlock(this._cur_block_id, type);\r\n block.len = len;\r\n var blockEndBlock = this._newBlockBytes.position + len;\r\n if (blockCompression) {\r\n this._pDieWithError('Compressed AWD formats not yet supported');\r\n }\r\n if (this._debug)\r\n console.log(\"AWDBlock: ID = \" + this._cur_block_id + \" | TypeID = \" + type + \" | Compression = \" + blockCompression + \" | Matrix-Precision = \" + this._accuracyMatrix + \" | Graphics-Precision = \" + this._accuracyGeo + \" | Properties-Precision = \" + this._accuracyProps);\r\n this._blocks[this._cur_block_id] = block;\r\n if ((this._version[0] == 3) && (this._version[1] == 0)) {\r\n // probably should contain some info about the type of animation;\r\n switch (type) {\r\n case 24:\r\n this.parseSpriteLibraryBlock(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 25:\r\n this.parseBillBoardLibraryBlock(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 44:\r\n this.parseAudioBlock(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 133:\r\n this.parseMovieClip(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 134:\r\n this.parseTextField(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 135:\r\n this.parseTesselatedFont(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 136:\r\n this.parseTextFormat(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n }\r\n }\r\n if ((this._version[0] > 2) || ((this._version[0] >= 2) && (this._version[1] >= 1))) {\r\n switch (type) {\r\n case 11:\r\n this.parsePrimitves(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 31:\r\n this.parseSkyboxInstance(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 41:\r\n this.parseLight(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 42:\r\n this.parseCamera(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n // case 43:\r\n // parseTextureProjector(_cur_block_id);\r\n // isParsed = true;\r\n // break;\r\n case 51:\r\n this.parseLightPicker(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 81:\r\n this.parseMaterial_v1(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 83:\r\n this.parseCubeTexture(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 91:\r\n this.parseSharedMethodBlock(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 92:\r\n this.parseShadowMethodBlock(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 111:\r\n this.parseSpritePoseAnimation(this._cur_block_id, true);\r\n isParsed = true;\r\n break;\r\n case 112:\r\n this.parseSpritePoseAnimation(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 113:\r\n this.parseVertexAnimationSet(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 122:\r\n this.parseAnimatorSet(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n case 253:\r\n this.parseCommand(this._cur_block_id);\r\n isParsed = true;\r\n break;\r\n }\r\n }\r\n if (isParsed == false) {\r\n switch (type) {\r\n case 1:\r\n this.parseGraphics(this._cur_block_id);\r\n break;\r\n case 22:\r\n this.parseContainer(this._cur_block_id);\r\n break;\r\n case 23:\r\n this.parseSpriteInstance(this._cur_block_id);\r\n break;\r\n case 81:\r\n this.parseMaterial(this._cur_block_id);\r\n break;\r\n case 82:\r\n this.parseTexture(this._cur_block_id);\r\n break;\r\n case 101:\r\n this.parseSkeleton(this._cur_block_id);\r\n break;\r\n case 102:\r\n this.parseSkeletonPose(this._cur_block_id);\r\n break;\r\n case 103:\r\n this.parseSkeletonAnimation(this._cur_block_id);\r\n break;\r\n case 121:\r\n //this.parseUVAnimation(this._cur_block_id);\r\n //break;\r\n case 254:\r\n this.parseNameSpace(this._cur_block_id);\r\n break;\r\n case 255:\r\n this.parseMetaData(this._cur_block_id);\r\n break;\r\n default:\r\n if (this._debug)\r\n console.log(\"AWDBlock: Unknown BlockType (BlockID = \" + this._cur_block_id + \") - Skip \" + len + \" bytes\");\r\n this._newBlockBytes.position += len;\r\n break;\r\n }\r\n }\r\n if (this._debug) {\r\n if (this._newBlockBytes.position != blockEndBlock)\r\n console.log(\" (!)(!)(!) Error while reading AWDBlock ID \" + this._cur_block_id + \" = skip to next block\");\r\n if (block.errorMessages) {\r\n var len = block.errorMessages.length;\r\n for (var msgCnt = 0; msgCnt < len; msgCnt++)\r\n console.log(\" (!) Error: \" + block.errorMessages[msgCnt] + \" (!)\");\r\n }\r\n console.log(\"\\n\");\r\n }\r\n if (this._debugTimers && !this.parsingPaused)\r\n this.updateTimers(type);\r\n this._body.position = blockEndAll;\r\n this._newBlockBytes = null;\r\n };\r\n AWDParser.prototype.updateTimers = function (type) {\r\n var end_timing = performance.now();\r\n var time_delta = end_timing - this.start_timeing;\r\n this._time_all += time_delta;\r\n if (type == 1) {\r\n this._time_graphics += time_delta;\r\n this._num_graphics++;\r\n }\r\n else if (type == 133) {\r\n this._time_timeline += time_delta;\r\n this._num_timeline++;\r\n }\r\n else if (type == 135) {\r\n this._time_fonts += time_delta;\r\n this._num_fonts++;\r\n }\r\n else if (type == 134) {\r\n this._time_textfields += time_delta;\r\n this._num_textfields++;\r\n }\r\n else if (type == 44) {\r\n this._time_sounds += time_delta;\r\n this._num_sounds++;\r\n }\r\n else if (type == 82) {\r\n this._time_textures += time_delta;\r\n this._num_textures++;\r\n }\r\n else if (type == 81) {\r\n this._time_materials += time_delta;\r\n this._num_materials++;\r\n }\r\n else if (type == 24) {\r\n this._time_sprites += time_delta;\r\n this._num_sprites++;\r\n }\r\n };\r\n //--Parser Blocks---------------------------------------------------------------------------\r\n AWDParser.prototype.parseTesselatedFont = function (blockID) {\r\n var name = this.parseVarStr();\r\n this._blocks[blockID].name = name;\r\n var new_font = AssetLibrary.getAsset(this._blocks[blockID].name);\r\n var newfont = false;\r\n if (new_font == undefined) {\r\n new_font = new Font();\r\n newfont = true;\r\n }\r\n var font_style_cnt = this._newBlockBytes.readUnsignedInt();\r\n var font_style_char_cnt;\r\n var font_style_name;\r\n var new_font_style;\r\n var font_style_char;\r\n var attr_count = 0;\r\n var sm_len;\r\n var sm_end;\r\n var str_ftype, str_type, str_len, str_end;\r\n for (var i = 0; i < font_style_cnt; ++i) {\r\n font_style_name = this.parseVarStr();\r\n // dirty hack for icycle, when using Tessellated fonts (for FNT fonts we do not need this anymore)\r\n // we use bold chars for non-latin chars, but we use regular for � sign,\r\n // so the dirty hack is to merge the regular and the bold style\r\n //if((this._blocks[blockID].name==\"Tahoma\") && (font_style_name==\"RegularStyle\")){\r\n //\tfont_style_name=\"BoldStyle\";\r\n //}\r\n new_font_style = new_font.get_font_table(font_style_name, TesselatedFontTable.assetType);\r\n new_font_style.set_font_em_size(this._newBlockBytes.readUnsignedInt());\r\n new_font_style.set_whitespace_width(this._newBlockBytes.readUnsignedInt());\r\n new_font_style.ascent = this._newBlockBytes.readFloat();\r\n new_font_style.descent = this._newBlockBytes.readFloat();\r\n //console.log(new_font_style.get_whitespace_width());\r\n font_style_char_cnt = this._newBlockBytes.readUnsignedInt();\r\n for (var j = 0; j < font_style_char_cnt; ++j) {\r\n // todo: this is basically a simplified version of the elements-parsing done in parseGraphics. Make a parseElements() instead (?)\r\n font_style_char = this._newBlockBytes.readUnsignedInt();\r\n var char_width = this._newBlockBytes.readFloat();\r\n sm_len = this._newBlockBytes.readUnsignedInt();\r\n sm_end = this._newBlockBytes.position + sm_len;\r\n // Loop through data streams\r\n while (this._newBlockBytes.position < sm_end) {\r\n // Type, field type, length\r\n str_type = this._newBlockBytes.readUnsignedByte();\r\n str_ftype = this._newBlockBytes.readUnsignedByte();\r\n str_len = this._newBlockBytes.readUnsignedInt();\r\n str_end = this._newBlockBytes.position + str_len;\r\n /*\r\n //todo: right now we only support 2 types of vert data for glyphs (curves vs non-curves)\r\n if (str_type == 2) {//face indices positions\r\n var indices:Array = new Array();\r\n for(var idx:number = 0; this._newBlockBytes.position < str_end; idx++)\r\n indices[idx] = this._newBlockBytes.readUnsignedShort();\r\n } else if (str_type == 11) {// combined vertex2D stream 5 x float32 (position + curvedata)\r\n attr_count = 20;\r\n var curveData:ByteArray = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n } else if (str_type == 10) {// combined vertex2D stream 7 x float32 (position + curvedata + uv)\r\n attr_count = 28;\r\n var curveData:ByteArray = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n }*/\r\n if (str_type == 12) {\r\n attr_count = 12;\r\n var curveData = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n }\r\n else if (str_type == 16) {\r\n attr_count = 8;\r\n var curveData = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n }\r\n else {\r\n this._newBlockBytes.position = str_end;\r\n }\r\n }\r\n if (curveData) {\r\n var vertexBuffer = new AttributesBuffer(attr_count, str_len / attr_count);\r\n vertexBuffer.bufferView = new Uint8Array(curveData.arraybytes);\r\n //console.log(\"allchars[cnt1++] = ['\"+font_style_char.toString()+\"',[\"+vertexBuffer.bufferView.toString()+\"]]\");\r\n new_font_style.setChar(font_style_char.toString(), char_width, vertexBuffer, null, (attr_count != 8));\r\n }\r\n }\r\n }\r\n this.parseProperties(null);\r\n this.parseUserAttributes();\r\n if (newfont) {\r\n this._pFinalizeAsset(new_font, name);\r\n }\r\n this._blocks[blockID].data = new_font;\r\n if (this._debug)\r\n console.log(\"Parsed a font: Name = '\" + name);\r\n };\r\n AWDParser.prototype.parseTextFormat = function (blockID) {\r\n var name = this.parseVarStr();\r\n this._blocks[blockID].name = name;\r\n var font = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n var font_style_name = this.parseVarStr();\r\n var newTextFormat = new TextFormat();\r\n newTextFormat.font_name = font.name;\r\n // todo: atm in awd this will always default to get a TesselatedFontTable. need to find a way to request the correct type here\r\n var font_table = font.get_font_table(font_style_name);\r\n if (font_table != null) {\r\n newTextFormat.font_style = font_style_name;\r\n newTextFormat.font_table = font_table;\r\n }\r\n var mat = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n mat.bothSides = true;\r\n //mat.curves = true;\r\n var num_uv_values = this._newBlockBytes.readUnsignedByte();\r\n var uv_values = [];\r\n for (var uvcnt = 0; uvcnt < num_uv_values; uvcnt++)\r\n uv_values[uvcnt] = this._newBlockBytes.readFloat();\r\n newTextFormat.uv_values = uv_values;\r\n var format_props = this.parseProperties(AWDParser.textFormatProperties);\r\n newTextFormat.size = format_props.get(1, 12);\r\n newTextFormat.letterSpacing = format_props.get(2, 0);\r\n //newTextFormat.rotated = format_props.get(3,false);\r\n newTextFormat.kerning = format_props.get(4, true);\r\n //newTextFormat.baseline_shift = format_props.get(5,1);\r\n var tf_align_int = format_props.get(6, 0);\r\n if (tf_align_int == 1) {\r\n newTextFormat.align = \"right\";\r\n }\r\n else if (tf_align_int == 2) {\r\n newTextFormat.align = \"center\";\r\n }\r\n else if (tf_align_int == 3) {\r\n newTextFormat.align = \"justify\";\r\n }\r\n newTextFormat.indent = format_props.get(7, 0);\r\n newTextFormat.leftMargin = format_props.get(8, 0);\r\n newTextFormat.rightMargin = format_props.get(9, 0);\r\n newTextFormat.leading = format_props.get(10, 0);\r\n newTextFormat.color = format_props.get(11, 0);\r\n newTextFormat.material = mat;\r\n this.parseUserAttributes(); // textformat has no extra-properties\r\n //newTextFormat.extra =\r\n this._pFinalizeAsset(newTextFormat, name);\r\n this._blocks[blockID].data = newTextFormat;\r\n if (this._debug)\r\n console.log(\"Parsed a TextFormat: Name = '\" + name + \" font: \" + font.name);\r\n };\r\n AWDParser.prototype.parseTextField = function (blockID) {\r\n var name = this.parseVarStr();\r\n this._blocks[blockID].name = name;\r\n var newTextField = this._factory.createTextField();\r\n var text_field_type = this._newBlockBytes.readUnsignedByte();\r\n newTextField.type = AWDParser.textFieldTypes[text_field_type];\r\n if (text_field_type == 3)\r\n newTextField.displayAsPassword = true;\r\n //\r\n newTextField.width = Math.abs(this._newBlockBytes.readFloat());\r\n newTextField.height = Math.abs(this._newBlockBytes.readFloat());\r\n var num_paragraphs = this._newBlockBytes.readUnsignedInt();\r\n var complete_text = \"\";\r\n //console.log(\"num_paragraphs '\" + num_paragraphs);\r\n for (var paracnt = 0; paracnt < num_paragraphs; paracnt++) {\r\n var num_textruns = this._newBlockBytes.readUnsignedInt();\r\n //console.log(\"num_textruns '\" + num_textruns);\r\n for (var textrun_cnt = 0; textrun_cnt < num_textruns; textrun_cnt++) {\r\n var text_format = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n var txt_length = this._newBlockBytes.readUnsignedInt();\r\n //console.log(\"txt_length '\" + txt_length);\r\n if (txt_length > 0) {\r\n var this_txt = this._newBlockBytes.readUTFBytes(txt_length);\r\n //newTextField.appendText(this_txt, text_format);\r\n complete_text += this_txt;\r\n }\r\n }\r\n }\r\n newTextField.textFormat = text_format;\r\n newTextField.text = complete_text;\r\n //newTextField.construct_graphics();\r\n // todo: optional matrix etc can be put in properties.\r\n var props = this.parseProperties(AWDParser.textFieldProperties);\r\n newTextField.selectable = props.get(1, false);\r\n newTextField.border = props.get(3, false);\r\n //newTextField.renderHTML = props.get(4, false);\r\n //newTextField.scrollable = props.get(5, false);\r\n //newTextField.text_flow = props.get(7, 0);\r\n //newTextField.orientationMode = props.get(8, 0);\r\n //newTextField.line_mode = props.get(9, 0);\r\n newTextField.extra = this.parseUserAttributes();\r\n //console.log(\"Parsed a TextField: Name = '\" + name + \"| text = \" + complete_text);\r\n this._pFinalizeAsset(newTextField, name);\r\n this._blocks[blockID].data = newTextField;\r\n if (this._debug)\r\n console.log(\"Parsed a TextField: Name = '\" + name + \"| text = \" + complete_text);\r\n };\r\n // Block ID = 25\r\n AWDParser.prototype.parseBillBoardLibraryBlock = function (blockID) {\r\n var name = this.parseVarStr();\r\n var mat = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n mat.bothSides = true;\r\n var billboard = this._factory.createBillboard(mat);\r\n // todo: optional matrix etc can be put in properties.\r\n this.parseProperties(null);\r\n billboard.extra = this.parseUserAttributes();\r\n this._pFinalizeAsset(billboard, name);\r\n this._blocks[blockID].data = billboard;\r\n if (this._debug)\r\n console.log(\"Parsed a Library-Billboard: Name = '\" + name + \"| Material-Name = \" + mat.name);\r\n };\r\n // Block ID = 24\r\n AWDParser.prototype.parseSpriteLibraryBlock = function (blockID) {\r\n var name = this.parseVarStr();\r\n var data_id = this._newBlockBytes.readUnsignedInt();\r\n var graphics = this._blocks[data_id].data;\r\n this._blocks[blockID].geoID = data_id;\r\n var num_materials = this._newBlockBytes.readUnsignedShort();\r\n var materials = new Array();\r\n var materialNames = new Array();\r\n var mat;\r\n for (var materials_parsed = 0; materials_parsed < num_materials; materials_parsed++) {\r\n mat = (this._blocks[this._newBlockBytes.readUnsignedInt()].data || DefaultMaterialManager.getDefaultMaterial());\r\n //mat.preserveAlpha = true;\r\n //mat.alphaBlending = true;\r\n mat.useColorTransform = true;\r\n materials[materials_parsed] = mat;\r\n materialNames[materials_parsed] = mat.name;\r\n }\r\n var start_timeing = performance.now();\r\n var sprite = this._factory.createSprite();\r\n sprite.mouseEnabled = false;\r\n graphics.copyTo(sprite.graphics);\r\n var end_timing = performance.now();\r\n var time_delta = end_timing - start_timeing;\r\n this._time_graphics_bytes += time_delta;\r\n if (materials.length >= 1 && sprite.graphics.count == 1) {\r\n sprite.material = materials[0];\r\n }\r\n else if (materials.length >= 1) {\r\n // Assign each sub-sprite in the sprite a material from the list. If more sub-sprites\r\n // than materials, repeat the last material for all remaining sub-sprites.\r\n for (var i = 0; i < sprite.graphics.count; i++) {\r\n if (!sprite.graphics.getShapeAt(i).isStroke) {\r\n sprite.graphics.getShapeAt(i).material = materials[Math.min(materials.length - 1, i)];\r\n }\r\n }\r\n }\r\n var sampler;\r\n var shape;\r\n var material;\r\n var count = this._newBlockBytes.readUnsignedShort();\r\n //if(count != sprite.graphics.count)\r\n //\tthrow new Error(\"num elements does not match num subsprites\";\r\n for (var i = 0; i < count; i++) {\r\n var type = this._newBlockBytes.readUnsignedByte();\r\n sampler = new Sampler2D();\r\n shape = sprite.graphics.getShapeAt(i);\r\n material = shape.material || sprite.material;\r\n if (!material) {\r\n shape = null;\r\n }\r\n if (shape) {\r\n shape.style = new Style();\r\n shape.style.addSamplerAt(sampler, material.getTextureAt(0));\r\n }\r\n if (type == 3) {\r\n var tx = this._newBlockBytes.readFloat();\r\n var ty = this._newBlockBytes.readFloat();\r\n if (shape) {\r\n material.animateUVs = true;\r\n shape.style.uvMatrix = new Matrix(0, 0, 0, 0, tx, ty);\r\n }\r\n }\r\n else if (type == 4) {\r\n var matrix = this.parseMatrix32RawData();\r\n if (shape) {\r\n material.animateUVs = true;\r\n shape.style.uvMatrix = new Matrix(matrix);\r\n }\r\n }\r\n else if (type == 5) {\r\n var newMatrix = new Matrix(this._newBlockBytes.readFloat(), this._newBlockBytes.readFloat(), 0, 0, this._newBlockBytes.readFloat(), this._newBlockBytes.readFloat());\r\n if (shape) {\r\n material.animateUVs = true;\r\n shape.style.uvMatrix = newMatrix;\r\n }\r\n }\r\n else if (type == 6) {\r\n var x = this._newBlockBytes.readFloat();\r\n var y = this._newBlockBytes.readFloat();\r\n var width = this._newBlockBytes.readFloat();\r\n var height = this._newBlockBytes.readFloat();\r\n var matrix = this.parseMatrix32RawData();\r\n if (shape) {\r\n sampler.imageRect = new Rectangle(x, y, width, height);\r\n material.imageRect = true;\r\n material.animateUVs = true;\r\n shape.style.uvMatrix = new Matrix(matrix);\r\n }\r\n }\r\n if (shape) {\r\n //check if curves are needed\r\n if (shape.elements.getCustomAtributes(\"curves\"))\r\n material.curves = true;\r\n }\r\n // todo: finish optional properties (spreadmode + focalpoint)\r\n this._newBlockBytes.readUnsignedInt();\r\n }\r\n var props = this.parseProperties(AWDParser.spriteLibraryProperties);\r\n sprite.registrationPoint = new Vector3D(props.get(1, 0.0), props.get(2, 0.0), 0.0);\r\n sprite.registrationScale = new Vector3D(props.get(3, 1.0), props.get(4, 1.0), 1.0);\r\n sprite.extra = this.parseUserAttributes();\r\n this._pFinalizeAsset(sprite, name);\r\n this._blocks[blockID].data = sprite;\r\n if (this._debug)\r\n console.log(\"Parsed a Library-Sprite: Name = '\" + name + \"| Graphics-Name = \" + graphics.name + \" | Graphics-Count = \" + sprite.graphics.count + \" | Mat-Names = \" + materialNames);\r\n };\r\n AWDParser.prototype.parseAudioBlock = function (blockID) {\r\n //var asset:Audio;todo create asset for audio\r\n this._blocks[blockID].name = this.parseVarStr();\r\n var type = this._newBlockBytes.readUnsignedByte();\r\n var data_len;\r\n // External\r\n if (type == 0) {\r\n data_len = this._newBlockBytes.readUnsignedInt();\r\n var url;\r\n url = this._newBlockBytes.readUTFBytes(data_len);\r\n // todo parser needs to be able to handle mp3 and wav files if we trigger the loading of external ressource\r\n this._pAddDependency(this._cur_block_id.toString(), new URLRequest(url), null, null, false, true);\r\n }\r\n else {\r\n // todo: exporter does not export embed sounds yet\r\n data_len = this._newBlockBytes.readUnsignedInt();\r\n var data = new ByteArray(data_len);\r\n this._newBlockBytes.readBytes(data, 0, data_len);\r\n // todo parse sound from bytes\r\n // this._pAddDependency(this._cur_block_id.toString(), null, false, ParserUtils.by(data), true);\r\n this._pAddDependency(this._cur_block_id.toString(), null, null, data, false, true);\r\n }\r\n // Ignore for now\r\n this.parseProperties(null);\r\n this._blocks[blockID].extras = this.parseUserAttributes();\r\n this._pPauseAndRetrieveDependencies();\r\n //this._blocks[blockID].data = asset;todo\r\n if (this._debug)\r\n console.log(\"Start parsing a \" + [\"external\", \"embed\"][type] + \" Audio file\");\r\n };\r\n //Block ID = 4\r\n AWDParser.prototype.parseMovieClip = function (blockID) {\r\n var i;\r\n var j;\r\n var cmd_asset;\r\n var new_timeline = new Timeline();\r\n var new_mc = this._factory.createMovieClip(new_timeline);\r\n var name = this.parseVarStr();\r\n // register list of potential childs\r\n // a potential child can be reused on a timeline (added / removed / added)\r\n // However, for each potential child, we need to register the max-number of instances that a frame contains\r\n // we parse 2 lists of potential-childs:\r\n // -\tthe first list contains potential-childs that are only ever instanced once per frame.\r\n // -\tthe second list contains potential-childs that are instanced multiple times on some frames.\r\n // on registering a child, the child gets a incremental-id assigned. This is the id, that the commands are using to access the childs.\r\n // hence we need to be careful to register all objects in correct order.\r\n var num_potential_childs = this._newBlockBytes.readUnsignedShort();\r\n for (i = 0; i < num_potential_childs; i++) {\r\n cmd_asset = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n if (cmd_asset != null) {\r\n new_timeline.registerPotentialChild(cmd_asset);\r\n }\r\n else {\r\n //todo: register a default display object on timeline, so we do not mess up the incremental obj-id\r\n //new_mc.registerPotentialChild(cmd_asset);\r\n console.log(\"ERROR when collecting objects for timeline\");\r\n }\r\n }\r\n var num_all_display_instances = num_potential_childs;\r\n var num_potential_childs_multi_instanced = this._newBlockBytes.readUnsignedShort();\r\n for (i = 0; i < num_potential_childs_multi_instanced; i++) {\r\n cmd_asset = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n var num_instances = this._newBlockBytes.readUnsignedShort();\r\n num_all_display_instances += num_instances;\r\n if (cmd_asset != null) {\r\n for (j = 0; j < num_instances; j++)\r\n new_timeline.registerPotentialChild(cmd_asset);\r\n }\r\n else {\r\n for (j = 0; j < num_instances; j++) {\r\n //todo: register a default display object on timeline, so we do not mess up the incremental obj-id\r\n //new_mc.registerPotentialChild(cmd_asset);\r\n console.log(\"ERROR when collecting objects for timeline\");\r\n }\r\n }\r\n }\r\n if (this._debug)\r\n console.log(\"Parsed \" + (num_potential_childs + num_potential_childs_multi_instanced) + \" potential childs. They will be used by \" + num_all_display_instances + \" instances.\");\r\n // register list of potential sounds - for now we always have 0 sounds\r\n var num_potential_sounds = this._newBlockBytes.readUnsignedShort();\r\n var str_cnt = this._newBlockBytes.readUnsignedByte();\r\n var str_len = 0;\r\n var str_data_type = 0;\r\n var str_type = 0;\r\n var str_counter = 0;\r\n for (i = 0; i < str_cnt; i++) {\r\n // the first 6 lists are not optional and always in same order\r\n // hence we can get type by incremental counter instead of stored uint8\r\n if (str_counter < 6)\r\n str_type = str_counter;\r\n else\r\n str_type = this._newBlockBytes.readUnsignedByte();\r\n // get the data type for this stream (1:UINT8 - 2:UINT16 - 3:UINT32)\r\n str_data_type = this._newBlockBytes.readUnsignedByte();\r\n // size of this stream in byte\r\n str_len = this._newBlockBytes.readUnsignedInt();\r\n if (str_len > 0) {\r\n var keyframes_start_indices_data = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(keyframes_start_indices_data, 0, str_len);\r\n var new_buffer;\r\n //console.log(\"str_data_type = \"+str_type);\r\n switch (str_data_type) {\r\n case 1:\r\n new_buffer = new Uint8Array(keyframes_start_indices_data.arraybytes);\r\n break;\r\n case 2:\r\n new_buffer = new Uint16Array(keyframes_start_indices_data.arraybytes);\r\n break;\r\n case 4:\r\n new_buffer = new Uint32Array(keyframes_start_indices_data.arraybytes);\r\n break;\r\n }\r\n switch (str_type) {\r\n case 0:\r\n new_timeline.keyframe_durations = new_buffer;\r\n new_timeline.numKeyFrames = str_len / str_data_type;\r\n break;\r\n case 1:\r\n new_timeline.frame_command_indices = new_buffer;\r\n break;\r\n case 2:\r\n new_timeline.frame_recipe = new_buffer;\r\n break;\r\n case 3:\r\n new_timeline.command_length_stream = new_buffer;\r\n break;\r\n case 4:\r\n new_timeline.command_index_stream = new_buffer;\r\n break;\r\n case 5:\r\n new_timeline.add_child_stream = new_buffer;\r\n break;\r\n case 6:\r\n new_timeline.remove_child_stream = new_buffer;\r\n break;\r\n case 7:\r\n new_timeline.update_child_stream = new_buffer;\r\n break;\r\n case 8:\r\n new_timeline.update_child_props_indices_stream = new_buffer;\r\n break;\r\n case 9:\r\n new_timeline.update_child_props_length_stream = new_buffer;\r\n break;\r\n case 10:\r\n new_timeline.property_type_stream = new_buffer;\r\n break;\r\n case 11:\r\n new_timeline.property_index_stream = new_buffer;\r\n break;\r\n case 12:\r\n new_timeline.properties_stream_int = new_buffer;\r\n break;\r\n }\r\n }\r\n str_counter++;\r\n }\r\n var lc = 0;\r\n var float_array_data;\r\n str_cnt = this._newBlockBytes.readUnsignedByte();\r\n for (i = 0; i < str_cnt; i++) {\r\n str_type = this._newBlockBytes.readUnsignedByte();\r\n str_len = this._newBlockBytes.readUnsignedInt();\r\n switch (str_type) {\r\n case 0:\r\n float_array_data = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(float_array_data, 0, str_len);\r\n new_timeline.properties_stream_f32_mtx_scale_rot = new Float32Array(float_array_data.arraybytes);\r\n break;\r\n case 1:\r\n float_array_data = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(float_array_data, 0, str_len);\r\n new_timeline.properties_stream_f32_mtx_pos = new Float32Array(float_array_data.arraybytes);\r\n break;\r\n case 2:\r\n float_array_data = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(float_array_data, 0, str_len);\r\n new_timeline.properties_stream_f32_mtx_all = new Float32Array(float_array_data.arraybytes);\r\n break;\r\n case 3:\r\n float_array_data = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(float_array_data, 0, str_len);\r\n new_timeline.properties_stream_f32_ct = new Float32Array(float_array_data.arraybytes);\r\n break;\r\n case 4:\r\n str_len = this._newBlockBytes.readUnsignedShort();\r\n //console.log(\"start reading labels \"+str_len);\r\n for (lc = 0; lc < str_len; lc++) {\r\n new_timeline._labels[this.parseVarStr()] = this._newBlockBytes.readUnsignedShort();\r\n }\r\n break;\r\n case 5:\r\n str_len = this._newBlockBytes.readUnsignedShort();\r\n var string_props_array = [];\r\n for (lc = 0; lc < str_len; lc++) {\r\n string_props_array.push(this._newBlockBytes.readUTFBytes(this._newBlockBytes.readUnsignedShort()));\r\n }\r\n new_timeline.properties_stream_strings = string_props_array;\r\n break;\r\n case 6:\r\n str_len = this._newBlockBytes.readUnsignedShort();\r\n for (lc = 0; lc < str_len; lc++) {\r\n var frame_index = this._newBlockBytes.readUnsignedShort();\r\n var one_str_len = this._newBlockBytes.readUnsignedInt();\r\n //this._newBlockBytes.readUTFBytes(one_str_len);\r\n new_timeline.add_framescript(this._newBlockBytes.readUTFBytes(one_str_len), frame_index);\r\n }\r\n break;\r\n }\r\n }\r\n new_timeline.init();\r\n var sceneID = 0;\r\n var fps = 25;\r\n var props = this.parseProperties(AWDParser.movieClipProperties);\r\n new_mc.isSlice9ScaledMC = props.get(4, false);\r\n this.parseUserAttributes();\r\n this._pFinalizeAsset(new_mc, name);\r\n this._blocks[blockID].data = new_mc;\r\n if (this._debug)\r\n console.log(\"Parsed a TIMELINE: Name = \" + name + \"| sceneID = \" + sceneID + \"| numFrames = \" + new_mc.timeline.numFrames);\r\n };\r\n //Block ID = 1\r\n AWDParser.prototype.parseGraphics = function (blockID) {\r\n var graphics = new Graphics();\r\n // Read name and sub count\r\n var name = this.parseVarStr();\r\n var numElements = this._newBlockBytes.readUnsignedShort();\r\n // Read optional properties\r\n var props = this.parseProperties(AWDParser.graphicsProperties);\r\n var geoScaleU = props.get(1, 1);\r\n var geoScaleV = props.get(2, 1);\r\n var target_start_idx = 0;\r\n var target_vert_cnt = 0;\r\n var element_type = ElementType.STANDART_STREAMS;\r\n var target_element = null;\r\n // Loop through sub sprites\r\n target_element = null;\r\n for (var elements_parsed = 0; elements_parsed < numElements; elements_parsed++) {\r\n var attr_count = 0;\r\n var sm_len, sm_end;\r\n var w_indices;\r\n var weights;\r\n var slice9Indices;\r\n target_start_idx = 0;\r\n target_vert_cnt = 0;\r\n element_type = ElementType.STANDART_STREAMS;\r\n sm_len = this._newBlockBytes.readUnsignedInt();\r\n sm_end = this._newBlockBytes.position + sm_len;\r\n var elementsProps = this.parseProperties(AWDParser.elementsProperties);\r\n // Loop through data streams\r\n while (this._newBlockBytes.position < sm_end) {\r\n var idx = 0;\r\n var str_ftype, str_type, str_len, str_end;\r\n // Type, field type, length\r\n str_type = this._newBlockBytes.readUnsignedByte();\r\n str_ftype = this._newBlockBytes.readUnsignedByte();\r\n str_len = this._newBlockBytes.readUnsignedInt();\r\n str_end = this._newBlockBytes.position + str_len;\r\n var x, y, z;\r\n if (str_type == 1) {\r\n var verts = [];\r\n while (this._newBlockBytes.position < str_end) {\r\n x = this.readNumber(this._accuracyGeo);\r\n y = this.readNumber(this._accuracyGeo);\r\n z = this.readNumber(this._accuracyGeo);\r\n verts[idx++] = x;\r\n verts[idx++] = y;\r\n verts[idx++] = z;\r\n }\r\n }\r\n else if (str_type == 2) {\r\n var indices = [];\r\n while (this._newBlockBytes.position < str_end)\r\n indices[idx++] = this._newBlockBytes.readUnsignedShort();\r\n }\r\n else if (str_type == 3) {\r\n var uvs = [];\r\n while (this._newBlockBytes.position < str_end)\r\n uvs[idx++] = this.readNumber(this._accuracyGeo);\r\n }\r\n else if (str_type == 4) {\r\n var normals = [];\r\n while (this._newBlockBytes.position < str_end)\r\n normals[idx++] = this.readNumber(this._accuracyGeo);\r\n }\r\n else if (str_type == 6) {\r\n w_indices = Array();\r\n while (this._newBlockBytes.position < str_end)\r\n w_indices[idx++] = this._newBlockBytes.readUnsignedShort() * 3;\r\n }\r\n else if (str_type == 7) {\r\n weights = [];\r\n while (this._newBlockBytes.position < str_end)\r\n weights[idx++] = this.readNumber(this._accuracyGeo);\r\n }\r\n else if (str_type == 8) {\r\n this._newBlockBytes.position = str_end;\r\n }\r\n else if (str_type == 9) {\r\n this._newBlockBytes.position = str_end;\r\n }\r\n else if (str_type == 10) {\r\n element_type = ElementType.CONCENATED_STREAMS;\r\n attr_count = 28;\r\n var curveData = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n }\r\n else if (str_type == 11) {\r\n element_type = ElementType.CONCENATED_STREAMS;\r\n attr_count = 20;\r\n var curveData = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n }\r\n else if (str_type == 12) {\r\n element_type = ElementType.CONCENATED_STREAMS;\r\n attr_count = 12;\r\n var curveData = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n }\r\n else if (str_type == 13) {\r\n element_type = ElementType.SHARED_BUFFER;\r\n var targetGraphic = (this._blocks[this._newBlockBytes.readUnsignedInt()].data);\r\n var element_idx = this._newBlockBytes.readUnsignedByte();\r\n target_element = targetGraphic.getShapeAt(element_idx).elements;\r\n target_start_idx = this._newBlockBytes.readUnsignedInt();\r\n target_vert_cnt = this._newBlockBytes.readUnsignedInt();\r\n }\r\n else if (str_type == 14) {\r\n element_type = ElementType.CONCATENATED_SUBGEO;\r\n //var verts:Array = [];\r\n attr_count = 8;\r\n var vertData = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(vertData, 0, str_len);\r\n }\r\n else if (str_type == 15) {\r\n element_type = ElementType.SHARED_INDEXBUFFER;\r\n target_start_idx = this._newBlockBytes.readUnsignedInt();\r\n target_vert_cnt = this._newBlockBytes.readUnsignedInt();\r\n }\r\n else if (str_type == 16) {\r\n element_type = ElementType.CONCENATED_STREAMS;\r\n attr_count = 8;\r\n var curveData = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n }\r\n else if (str_type == 17) {\r\n element_type = ElementType.CONCENATED_STREAMS_UINT16;\r\n attr_count = 4;\r\n var curveData = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n }\r\n else if (str_type == 18) {\r\n element_type = ElementType.CONCENATED_STREAMS_UINT16;\r\n attr_count = 8;\r\n var curveData = new ByteArray(str_len);\r\n this._newBlockBytes.readBytes(curveData, 0, str_len);\r\n }\r\n else if (str_type == 23) {\r\n slice9Indices = [];\r\n var cnt = 0;\r\n var cnt2 = 0;\r\n graphics.slice9Rectangle = new Rectangle();\r\n graphics.originalSlice9Size = new Rectangle();\r\n while (this._newBlockBytes.position < str_end) {\r\n if (cnt == 0)\r\n graphics.slice9Rectangle.x = (this._newBlockBytes.readInt() / 20);\r\n else if (cnt == 1)\r\n graphics.slice9Rectangle.y = (this._newBlockBytes.readInt() / 20);\r\n else if (cnt == 2)\r\n graphics.slice9Rectangle.width = (this._newBlockBytes.readInt() / 20);\r\n else if (cnt == 3)\r\n graphics.slice9Rectangle.height = (this._newBlockBytes.readInt() / 20);\r\n else if (cnt == 4)\r\n graphics.originalSlice9Size.x = (this._newBlockBytes.readInt() / 20);\r\n else if (cnt == 5)\r\n graphics.originalSlice9Size.y = (this._newBlockBytes.readInt() / 20);\r\n else if (cnt == 6)\r\n graphics.originalSlice9Size.width = (this._newBlockBytes.readInt() / 20);\r\n else if (cnt == 7)\r\n graphics.originalSlice9Size.height = (this._newBlockBytes.readInt() / 20);\r\n else\r\n slice9Indices[cnt2++] = this._newBlockBytes.readInt();\r\n cnt++;\r\n }\r\n }\r\n else if (str_type == 24) {\r\n element_type = ElementType.STROKE_DATA;\r\n // todo: store the lineStyle as optional props on subgeom-properties ?\r\n var color = this._newBlockBytes.readInt();\r\n var thickness = this._newBlockBytes.readFloat();\r\n var capStyle = this._newBlockBytes.readUnsignedByte(); //todo\r\n var jointStyle = this._newBlockBytes.readUnsignedByte(); //todo\r\n var mitter = this._newBlockBytes.readFloat(); //todo\r\n graphics.lineStyle(thickness, color);\r\n var seg_type;\r\n while (this._newBlockBytes.position < str_end) {\r\n seg_type = this._newBlockBytes.readFloat();\r\n if (seg_type == 1.0) {\r\n graphics.moveTo(this._newBlockBytes.readFloat(), this._newBlockBytes.readFloat());\r\n }\r\n else if (seg_type == 2.0) {\r\n graphics.lineTo(this._newBlockBytes.readFloat(), this._newBlockBytes.readFloat());\r\n }\r\n else if (seg_type == 3.0) {\r\n graphics.curveTo(this._newBlockBytes.readFloat(), this._newBlockBytes.readFloat(), this._newBlockBytes.readFloat(), this._newBlockBytes.readFloat());\r\n }\r\n }\r\n graphics.endFill();\r\n graphics.scaleStrokes = LineScaleMode.NORMAL;\r\n }\r\n else {\r\n console.log(\"skipping unknown subgeom stream\");\r\n this._newBlockBytes.position = str_end;\r\n }\r\n }\r\n this.parseUserAttributes(); // Ignore sub-sprite attributes for now\r\n if (element_type == ElementType.CONCENATED_STREAMS) {\r\n //console.log(\"str_len/attr_count = \"+str_len/attr_count)\r\n var vertexBuffer = new AttributesBuffer(attr_count, str_len / attr_count);\r\n vertexBuffer.bufferView = new Uint8Array(curveData.arraybytes);\r\n var curve_elements = new TriangleElements(vertexBuffer);\r\n if (graphics.slice9Rectangle) {\r\n curve_elements.slice9Indices = slice9Indices;\r\n curve_elements.slice9offsets = new Rectangle();\r\n curve_elements.slice9offsets.copyFrom(graphics.slice9Rectangle);\r\n curve_elements.originalSlice9Size = new Rectangle();\r\n curve_elements.originalSlice9Size.copyFrom(graphics.originalSlice9Size);\r\n graphics.slice9Rectangle.copyFrom(graphics.originalSlice9Size);\r\n curve_elements.setPositions(new Float2Attributes(vertexBuffer));\r\n ElementsUtils.updateTriangleGraphicsSlice9(curve_elements, curve_elements.originalSlice9Size, 1, 1, true);\r\n }\r\n else {\r\n curve_elements.setPositions(new Float2Attributes(vertexBuffer));\r\n if (attr_count == 20) {\r\n curve_elements.setCustomAttributes(\"curves\", new Float3Attributes(vertexBuffer));\r\n }\r\n else if (attr_count == 12) {\r\n curve_elements.setCustomAttributes(\"curves\", new Byte4Attributes(vertexBuffer, false));\r\n }\r\n if (attr_count == 28)\r\n curve_elements.setUVs(new Float2Attributes(vertexBuffer));\r\n }\r\n graphics.addShape(new Shape(curve_elements));\r\n if (this._debug)\r\n console.log(\"Parsed a TriangleElements with curves\");\r\n }\r\n else if (element_type == ElementType.CONCENATED_STREAMS_UINT16) {\r\n var vertexBuffer = new AttributesBuffer(attr_count, str_len / attr_count);\r\n vertexBuffer.bufferView = new Uint8Array(curveData.arraybytes);\r\n var curve_elements = new TriangleElements(vertexBuffer);\r\n curve_elements.setPositions(new Short2Attributes(vertexBuffer, true));\r\n if (attr_count == 8) {\r\n curve_elements.setCustomAttributes(\"curves\", new Byte4Attributes(vertexBuffer, false));\r\n }\r\n graphics.addShape(new Shape(curve_elements));\r\n if (this._debug)\r\n console.log(\"Parsed a TriangleElements uint16\");\r\n }\r\n else if (element_type == ElementType.STANDART_STREAMS) {\r\n var triangle_elements = new TriangleElements(new AttributesBuffer());\r\n if (weights)\r\n triangle_elements.jointsPerVertex = weights.length / (verts.length / 3);\r\n if (normals)\r\n triangle_elements.autoDeriveNormals = false;\r\n triangle_elements.autoDeriveTangents = true;\r\n triangle_elements.setIndices(indices);\r\n triangle_elements.setPositions(verts);\r\n triangle_elements.setNormals(normals);\r\n triangle_elements.setUVs(uvs);\r\n triangle_elements.setJointWeights(weights);\r\n triangle_elements.setJointIndices(w_indices);\r\n var scaleU = elementsProps.get(1, 1);\r\n var scaleV = elementsProps.get(2, 1);\r\n var setSubUVs = false; //this should remain false atm, because in AwayBuilder the uv is only scaled by the graphics\r\n if ((geoScaleU != scaleU) || (geoScaleV != scaleV)) {\r\n setSubUVs = true;\r\n scaleU = geoScaleU / scaleU;\r\n scaleV = geoScaleV / scaleV;\r\n }\r\n if (setSubUVs)\r\n triangle_elements.scaleUV(scaleU, scaleV);\r\n graphics.addShape(new Shape(triangle_elements));\r\n if (this._debug)\r\n console.log(\"Parsed a TriangleElements\");\r\n }\r\n else if (element_type == ElementType.CONCATENATED_SUBGEO) {\r\n var vertexBuffer = new AttributesBuffer(attr_count, str_len / attr_count);\r\n vertexBuffer.bufferView = new Uint8Array(vertData.arraybytes);\r\n var triangle_elements = new TriangleElements(vertexBuffer);\r\n triangle_elements.setPositions(new Float2Attributes(vertexBuffer));\r\n //if (weights)\r\n //\ttriangle_elements.jointsPerVertex = weights.length / (verts.length / 3);\r\n //if (normals)\r\n //\ttriangle_elements.autoDeriveNormals = false;\r\n //triangle_elements.autoDeriveTangents = true;\r\n triangle_elements.setIndices(indices);\r\n //triangle_elements.setPositions(verts);\r\n //triangle_elements.setNormals(normals);\r\n //triangle_elements.setUVs(uvs);\r\n //triangle_elements.setJointWeights(weights);\r\n //triangle_elements.setJointIndices(w_indices);\r\n var scaleU = elementsProps.get(1, 1);\r\n var scaleV = elementsProps.get(2, 1);\r\n var setSubUVs = false; //this should remain false atm, because in AwayBuilder the uv is only scaled by the graphics\r\n if ((geoScaleU != scaleU) || (geoScaleV != scaleV)) {\r\n setSubUVs = true;\r\n scaleU = geoScaleU / scaleU;\r\n scaleV = geoScaleV / scaleV;\r\n }\r\n if (setSubUVs)\r\n triangle_elements.scaleUV(scaleU, scaleV);\r\n target_element = triangle_elements;\r\n }\r\n else if (element_type == ElementType.SHARED_INDEXBUFFER) {\r\n var shape = graphics.addShape(new Shape(target_element));\r\n shape.offset = target_start_idx / 3; //todo: move this calc to exporter\r\n shape.count = target_vert_cnt / 3; //todo: move this calc to exporter\r\n }\r\n else if (element_type == ElementType.SHARED_BUFFER) {\r\n var shape = graphics.addShape(new Shape(target_element));\r\n shape.offset = target_start_idx;\r\n shape.count = target_vert_cnt;\r\n if (this._debug)\r\n console.log(\"Parsed a TriangleElements that shares index buffer from target geom\");\r\n }\r\n }\r\n if ((geoScaleU != 1) || (geoScaleV != 1))\r\n graphics.scaleUV(geoScaleU, geoScaleV);\r\n this.parseUserAttributes();\r\n this._pFinalizeAsset(graphics, name);\r\n this._blocks[blockID].data = graphics;\r\n if (this._debug)\r\n console.log(\"Parsed Graphics: Name = \" + name);\r\n };\r\n //Block ID = 11\r\n AWDParser.prototype.parsePrimitves = function (blockID) {\r\n var name;\r\n var prefab;\r\n var primType;\r\n var elements_parsed;\r\n var props;\r\n var bsm;\r\n // Read name and sub count\r\n name = this.parseVarStr();\r\n primType = this._newBlockBytes.readUnsignedByte();\r\n props = this.parseProperties(AWDParser.primitiveProperties);\r\n // to do, not all properties are set on all primitives\r\n switch (primType) {\r\n case 1:\r\n prefab = new PrimitivePlanePrefab(null, ElementsType.TRIANGLE, props.get(101, 100), props.get(102, 100), props.get(301, 1), props.get(302, 1), props.get(701, true), props.get(702, false));\r\n break;\r\n case 2:\r\n prefab = new PrimitiveCubePrefab(null, ElementsType.TRIANGLE, props.get(101, 100), props.get(102, 100), props.get(103, 100), props.get(301, 1), props.get(302, 1), props.get(303, 1), props.get(701, true));\r\n break;\r\n case 3:\r\n prefab = new PrimitiveSpherePrefab(null, ElementsType.TRIANGLE, props.get(101, 50), props.get(301, 16), props.get(302, 12), props.get(701, true));\r\n break;\r\n case 4:\r\n prefab = new PrimitiveCylinderPrefab(null, ElementsType.TRIANGLE, props.get(101, 50), props.get(102, 50), props.get(103, 100), props.get(301, 16), props.get(302, 1), true, true, true); // bool701, bool702, bool703, bool704);\r\n if (!props.get(701, true))\r\n prefab.topClosed = false;\r\n if (!props.get(702, true))\r\n prefab.bottomClosed = false;\r\n if (!props.get(703, true))\r\n prefab.yUp = false;\r\n break;\r\n case 5:\r\n prefab = new PrimitiveConePrefab(null, ElementsType.TRIANGLE, props.get(101, 50), props.get(102, 100), props.get(301, 16), props.get(302, 1), props.get(701, true), props.get(702, true));\r\n break;\r\n case 6:\r\n prefab = new PrimitiveCapsulePrefab(null, ElementsType.TRIANGLE, props.get(101, 50), props.get(102, 100), props.get(301, 16), props.get(302, 15), props.get(701, true));\r\n break;\r\n case 7:\r\n prefab = new PrimitiveTorusPrefab(null, ElementsType.TRIANGLE, props.get(101, 50), props.get(102, 50), props.get(301, 16), props.get(302, 8), props.get(701, true));\r\n break;\r\n default:\r\n prefab = new PrefabBase();\r\n console.log(\"ERROR: UNSUPPORTED PREFAB_TYPE\");\r\n break;\r\n }\r\n if ((props.get(110, 1) != 1) || (props.get(111, 1) != 1)) {\r\n }\r\n this.parseUserAttributes();\r\n prefab.name = name;\r\n this._pFinalizeAsset(prefab, name);\r\n this._blocks[blockID].data = prefab;\r\n if (this._debug) {\r\n if ((primType < 0) || (primType > 7))\r\n primType = 0;\r\n console.log(\"Parsed a Primivite: Name = \" + name + \"| type = \" + AWDParser.primitiveTypes[primType]);\r\n }\r\n };\r\n // Block ID = 22\r\n AWDParser.prototype.parseContainer = function (blockID) {\r\n var name;\r\n var mtx;\r\n var ctr;\r\n var parent = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n mtx = this.parseMatrix3D();\r\n name = this.parseVarStr();\r\n var parentName = \"Root (TopLevel)\";\r\n ctr = this._factory.createDisplayObjectContainer();\r\n ctr.transform.matrix3D = mtx;\r\n if (parent) {\r\n parent.addChild(ctr);\r\n parentName = parent.name;\r\n }\r\n else {\r\n //add to the content property\r\n this._pContent.addChild(ctr);\r\n }\r\n // in AWD version 2.1 we read the Container properties\r\n if ((this._version[0] == 2) && (this._version[1] == 1)) {\r\n var props = this.parseProperties(AWDParser.containerProperties);\r\n ctr.registrationPoint = new Vector3D(props.get(1, 0), props.get(2, 0), props.get(3, 0));\r\n }\r\n else {\r\n this.parseProperties(null);\r\n }\r\n // the extraProperties should only be set for AWD2.1-Files, but is read for both versions\r\n ctr.extra = this.parseUserAttributes();\r\n this._pFinalizeAsset(ctr, name);\r\n this._blocks[blockID].data = ctr;\r\n if (this._debug)\r\n console.log(\"Parsed a Container: Name = '\" + name + \"' | Parent-Name = \" + parentName);\r\n };\r\n // Block ID = 23\r\n AWDParser.prototype.parseSpriteInstance = function (blockID) {\r\n var parent = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n var mtx = this.parseMatrix3D();\r\n var name = this.parseVarStr();\r\n var data_id = this._newBlockBytes.readUnsignedInt();\r\n var asset = this._blocks[data_id].data;\r\n var graphics;\r\n var prefab;\r\n var isPrefab = false;\r\n if (asset.isAsset(Graphics)) {\r\n graphics = asset;\r\n }\r\n else {\r\n isPrefab = true;\r\n prefab = asset;\r\n }\r\n this._blocks[blockID].geoID = data_id;\r\n var num_materials = this._newBlockBytes.readUnsignedShort();\r\n var materials = new Array();\r\n var materialNames = new Array();\r\n var mat;\r\n for (var materials_parsed = 0; materials_parsed < num_materials; materials_parsed++) {\r\n mat = (this._blocks[this._newBlockBytes.readUnsignedInt()].data || DefaultMaterialManager.getDefaultMaterial());\r\n materials[materials_parsed] = mat;\r\n materialNames[materials_parsed] = mat.name;\r\n }\r\n var sprite;\r\n if (isPrefab) {\r\n sprite = this._factory.createSprite(prefab);\r\n }\r\n else {\r\n sprite = this._factory.createSprite();\r\n graphics.copyTo(sprite.graphics);\r\n }\r\n sprite.transform.matrix3D = mtx;\r\n var parentName = \"Root (TopLevel)\";\r\n if (parent) {\r\n parent.addChild(sprite);\r\n parentName = parent.name;\r\n }\r\n else {\r\n //add to the content property\r\n this._pContent.addChild(sprite);\r\n }\r\n if (materials.length >= 1 && sprite.graphics.count == 1) {\r\n sprite.material = materials[0];\r\n }\r\n else if (materials.length > 1) {\r\n // Assign each sub-sprite in the sprite a material from the list. If more sub-sprites\r\n // than materials, repeat the last material for all remaining sub-sprites.\r\n for (var i = 0; i < sprite.graphics.count; i++)\r\n sprite.graphics.getShapeAt(i).material = materials[Math.min(materials.length - 1, i)];\r\n }\r\n if ((this._version[0] == 2) && (this._version[1] == 1)) {\r\n var props = this.parseProperties(AWDParser.spriteInstanceProperties);\r\n sprite.registrationPoint = new Vector3D(props.get(1, 0), props.get(2, 0), props.get(3, 0));\r\n sprite.castsShadows = props.get(5, true);\r\n }\r\n else {\r\n this.parseProperties(null);\r\n }\r\n sprite.extra = this.parseUserAttributes();\r\n this._pFinalizeAsset(sprite, name);\r\n this._blocks[blockID].data = sprite;\r\n if (this._debug) {\r\n if (isPrefab)\r\n console.log(\"Parsed a Sprite for Prefab: Name = '\" + name + \"' | Parent-Name = \" + parentName + \"| Prefab-Name = \" + prefab.name + \" | Graphics-Count = \" + sprite.graphics.count + \" | Mat-Names = \" + materialNames);\r\n else\r\n console.log(\"Parsed a Sprite for Graphics: Name = '\" + name + \"' | Parent-Name = \" + parentName + \"| Graphics-Name = \" + graphics.name + \" | Graphics-Count = \" + sprite.graphics.count + \" | Mat-Names = \" + materialNames);\r\n }\r\n };\r\n //Block ID 31\r\n AWDParser.prototype.parseSkyboxInstance = function (blockID) {\r\n var name = this.parseVarStr();\r\n var asset = new Skybox();\r\n var tex = new SingleCubeTexture(this._blocks[this._newBlockBytes.readUnsignedInt()].data || DefaultMaterialManager.getDefaultImageCube());\r\n asset.texture = tex;\r\n this.parseProperties(null);\r\n asset.extra = this.parseUserAttributes();\r\n this._pFinalizeAsset(asset, name);\r\n this._blocks[blockID].data = asset;\r\n if (this._debug)\r\n console.log(\"Parsed a Skybox: Name = '\" + name + \"' | CubeTexture-Name = \" + tex.name);\r\n };\r\n //Block ID = 41\r\n AWDParser.prototype.parseLight = function (blockID) {\r\n var light;\r\n var newShadowMapper;\r\n var parent = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n var mtx = this.parseMatrix3D();\r\n var name = this.parseVarStr();\r\n var lightType = this._newBlockBytes.readUnsignedByte();\r\n var props = this.parseProperties(AWDParser.lightProperties);\r\n var shadowMapperType = props.get(9, 0);\r\n var lightTypes = [\"Unsupported LightType\", \"PointLight\", \"DirectionalLight\"];\r\n var shadowMapperTypes = [\"No ShadowMapper\", \"DirectionalShadowMapper\", \"NearDirectionalShadowMapper\", \"CascadeShadowMapper\", \"CubeMapShadowMapper\"];\r\n if (lightType == 1) {\r\n light = new PointLight();\r\n light.radius = props.get(1, 90000);\r\n light.fallOff = props.get(2, 100000);\r\n if (shadowMapperType > 0) {\r\n if (shadowMapperType == 4) {\r\n newShadowMapper = new CubeMapShadowMapper();\r\n }\r\n }\r\n light.transform.matrix3D = mtx;\r\n }\r\n if (lightType == 2) {\r\n light = new DirectionalLight(props.get(21, 0), props.get(22, -1), props.get(23, 1));\r\n if (shadowMapperType > 0) {\r\n if (shadowMapperType == 1) {\r\n newShadowMapper = new DirectionalShadowMapper();\r\n }\r\n }\r\n }\r\n light.color = props.get(3, 0xffffff);\r\n light.specular = props.get(4, 1.0);\r\n light.diffuse = props.get(5, 1.0);\r\n light.ambientColor = props.get(7, 0xffffff);\r\n light.ambient = props.get(8, 0.0);\r\n // if a shadowMapper has been created, adjust the depthMapSize if needed, assign to light and set castShadows to true\r\n if (newShadowMapper) {\r\n if (newShadowMapper instanceof CubeMapShadowMapper) {\r\n if (props.get(10, 1) != 1)\r\n newShadowMapper.depthMapSize = this._depthSizeDic[props.get(10, 1)];\r\n }\r\n else {\r\n if (props.get(10, 2) != 2)\r\n newShadowMapper.depthMapSize = this._depthSizeDic[props.get(10, 2)];\r\n }\r\n light.shadowMapper = newShadowMapper;\r\n light.castsShadows = true;\r\n }\r\n var parentName = \"Root (TopLevel)\";\r\n if (parent) {\r\n parent.addChild(light);\r\n parentName = parent.name;\r\n }\r\n else {\r\n //add to the content property\r\n this._pContent.addChild(light);\r\n }\r\n this.parseUserAttributes();\r\n this._pFinalizeAsset(light, name);\r\n this._blocks[blockID].data = light;\r\n if (this._debug)\r\n console.log(\"Parsed a Light: Name = '\" + name + \"' | Type = \" + lightTypes[lightType] + \" | Parent-Name = \" + parentName + \" | ShadowMapper-Type = \" + shadowMapperTypes[shadowMapperType]);\r\n };\r\n //Block ID = 43\r\n AWDParser.prototype.parseCamera = function (blockID) {\r\n var parent = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n var mtx = this.parseMatrix3D();\r\n var name = this.parseVarStr();\r\n var projection;\r\n this._newBlockBytes.readUnsignedByte(); //set as active camera\r\n this._newBlockBytes.readShort(); //lengthof lenses - not used yet\r\n var projectiontype = this._newBlockBytes.readShort();\r\n var props = this.parseProperties(AWDParser.cameraProperties);\r\n switch (projectiontype) {\r\n case 5001:\r\n projection = new PerspectiveProjection(props.get(101, 60));\r\n break;\r\n case 5002:\r\n projection = new OrthographicProjection(props.get(101, 500));\r\n break;\r\n case 5003:\r\n projection = new OrthographicOffCenterProjection(props.get(101, -400), props.get(102, 400), props.get(103, -300), props.get(104, 300));\r\n break;\r\n default:\r\n console.log(\"unsupportedLenstype\");\r\n return;\r\n }\r\n var camera = new Camera(projection);\r\n camera.transform.matrix3D = mtx;\r\n var parentName = \"Root (TopLevel)\";\r\n if (parent) {\r\n parent.addChild(camera);\r\n parentName = parent.name;\r\n }\r\n else {\r\n //add to the content property\r\n this._pContent.addChild(camera);\r\n }\r\n camera.name = name;\r\n props = this.parseProperties(AWDParser.cameraPivotProperties);\r\n camera.registrationPoint = new Vector3D(props.get(1, 0), props.get(2, 0), props.get(3, 0));\r\n camera.extra = this.parseUserAttributes();\r\n this._pFinalizeAsset(camera, name);\r\n this._blocks[blockID].data = camera;\r\n if (this._debug)\r\n console.log(\"Parsed a Camera: Name = '\" + name + \"' | Projectiontype = \" + projection + \" | Parent-Name = \" + parentName);\r\n };\r\n //Block ID = 51\r\n AWDParser.prototype.parseLightPicker = function (blockID) {\r\n var name = this.parseVarStr();\r\n var numLights = this._newBlockBytes.readUnsignedShort();\r\n var lightsArray = new Array();\r\n var lightsArrayNames = new Array();\r\n for (var k = 0; k < numLights; k++) {\r\n var light = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n lightsArray.push(light);\r\n lightsArrayNames.push(light.name);\r\n }\r\n if (lightsArray.length == 0) {\r\n this._blocks[blockID].addError(\"Could not create this LightPicker, cause no Light was found.\");\r\n this.parseUserAttributes();\r\n return; //return without any more parsing for this block\r\n }\r\n var lightPick = new StaticLightPicker(lightsArray);\r\n lightPick.name = name;\r\n this.parseUserAttributes();\r\n this._pFinalizeAsset(lightPick, name);\r\n this._blocks[blockID].data = lightPick;\r\n if (this._debug)\r\n console.log(\"Parsed a StaticLightPicker: Name = '\" + name + \"' | Texture-Name = \" + lightsArrayNames);\r\n };\r\n //Block ID = 81\r\n AWDParser.prototype.parseMaterial = function (blockID) {\r\n // TODO: not used\r\n ////blockLength = block.len;\r\n var name;\r\n var type;\r\n var props;\r\n var mat;\r\n var finalize;\r\n var num_methods;\r\n var methods_parsed;\r\n var returnedArray;\r\n name = this.parseVarStr();\r\n type = this._newBlockBytes.readUnsignedByte();\r\n num_methods = this._newBlockBytes.readUnsignedByte();\r\n // Read material numerical properties\r\n props = this.parseProperties(AWDParser.materialProperties);\r\n methods_parsed = 0;\r\n while (methods_parsed < num_methods) {\r\n var method_type;\r\n method_type = this._newBlockBytes.readUnsignedShort();\r\n this.parseProperties(null);\r\n this.parseUserAttributes();\r\n methods_parsed += 1;\r\n }\r\n var debugString = \"\";\r\n if (type === 1) {\r\n debugString += \"Parsed a ColorMaterial(SinglePass): Name = '\" + name + \"' | \";\r\n var color = props.get(1, 0xffffff);\r\n if (this.materialMode < 2) {\r\n mat = this._factory.createMaterial(color, props.get(10, 1.0));\r\n }\r\n else {\r\n mat = this._factory.createMaterial(color);\r\n mat.mode = MethodMaterialMode.MULTI_PASS;\r\n }\r\n }\r\n else if (type === 2) {\r\n var texture = new Single2DTexture(this._blocks[props.get(2, 0)].data);\r\n mat = this._factory.createMaterial();\r\n mat.ambientMethod.texture = texture;\r\n if (this.materialMode < 2) {\r\n mat.alphaBlending = props.get(11, false);\r\n mat.alpha = props.get(10, 1.0);\r\n debugString += \"Parsed a MethodMaterial(SinglePass): Name = '\" + name + \"'\" + (texture ? \" | Texture-Name = \" + texture.name : \"\");\r\n }\r\n else {\r\n mat.mode = MethodMaterialMode.MULTI_PASS;\r\n debugString += \"Parsed a MethodMaterial(MultiPass): Name = '\" + name + \"'\" + (texture ? \" | Texture-Name = \" + texture.name : \"\");\r\n }\r\n }\r\n mat.extra = this.parseUserAttributes();\r\n mat.alphaThreshold = props.get(12, 0.0);\r\n mat.style.sampler = new Sampler2D(props.get(13, false));\r\n this._pFinalizeAsset(mat, name);\r\n this._blocks[blockID].data = mat;\r\n if (this._debug)\r\n console.log(debugString);\r\n };\r\n // Block ID = 81 AWD2.1\r\n AWDParser.prototype.parseMaterial_v1 = function (blockID) {\r\n var mat;\r\n var diffuseImage;\r\n var normalImage;\r\n var specImage;\r\n var name = this.parseVarStr();\r\n var type = this._newBlockBytes.readUnsignedByte();\r\n var num_methods = this._newBlockBytes.readUnsignedByte();\r\n var props = this.parseProperties(AWDParser.material_v1Properties);\r\n var spezialType = props.get(4, 0);\r\n var debugString = \"Parsed Material \";\r\n if (spezialType >= 2) {\r\n this._blocks[blockID].addError(\"Material-spezialType '\" + spezialType + \"' is not supported, can only be 0:singlePass, 1:MultiPass !\");\r\n return;\r\n }\r\n if (type <= 2) {\r\n if (this.materialMode == 1)\r\n spezialType = 0;\r\n else if (this.materialMode == 2)\r\n spezialType = 1;\r\n if (spezialType < 2) {\r\n if (type == 1) {\r\n var color = props.get(1, 0xcccccc); //TODO temporarily swapped so that diffuse color goes to ambient\r\n if (spezialType == 1) {\r\n mat = this._factory.createMaterial(color);\r\n mat.mode = MethodMaterialMode.MULTI_PASS;\r\n debugString += \"Parsed a ColorMaterial(MultiPass): Name = '\" + name + \"' | \";\r\n }\r\n else {\r\n mat = this._factory.createMaterial(color, props.get(10, 1.0));\r\n mat.alphaBlending = props.get(11, false);\r\n debugString += \"Parsed a ColorMaterial(SinglePass): Name = '\" + name + \"' | \";\r\n }\r\n }\r\n else if (type == 2) {\r\n mat = this._factory.createMaterial(this._blocks[props.get(2, 0)].data);\r\n if (spezialType == 1) {\r\n mat.mode = MethodMaterialMode.MULTI_PASS;\r\n debugString += \"Parsed a MethodMaterial(MultiPass): Name = '\" + name + \"'\" + (mat.ambientMethod.texture ? \" | Texture-Name = \" + mat.ambientMethod.texture.name : \"\");\r\n }\r\n else {\r\n mat.alpha = props.get(10, 1.0);\r\n mat.alphaBlending = props.get(11, false);\r\n debugString += \"Parsed a MethodMaterial(SinglePass): Name = '\" + name + \"'\" + (mat.ambientMethod.texture ? \" | Texture-Name = \" + mat.ambientMethod.texture.name : \"\");\r\n }\r\n }\r\n diffuseImage = this._blocks[props.get(17, 0)].data;\r\n normalImage = this._blocks[props.get(3, 0)].data;\r\n specImage = this._blocks[props.get(21, 0)].data;\r\n mat.lightPicker = this._blocks[props.get(22, 0)].data;\r\n mat.style.sampler = new Sampler2D(props.get(13, false), props.get(5, true), props.get(6, true));\r\n mat.bothSides = props.get(7, false);\r\n mat.alphaPremultiplied = props.get(8, false);\r\n mat.blendMode = this.blendModeDic[props.get(9, 0)];\r\n if (diffuseImage) {\r\n mat.diffuseMethod.texture = new Single2DTexture(diffuseImage);\r\n debugString += \" | DiffuseTexture-Name = \" + diffuseImage.name;\r\n }\r\n if (normalImage) {\r\n mat.normalMethod.texture = new Single2DTexture(normalImage);\r\n debugString += \" | NormalTexture-Name = \" + normalImage.name;\r\n }\r\n if (specImage) {\r\n mat.specularMethod.texture = new Single2DTexture(specImage);\r\n debugString += \" | SpecularTexture-Name = \" + specImage.name;\r\n }\r\n mat.alphaThreshold = props.get(12, 0.0);\r\n mat.ambientMethod.strength = props.get(15, 1.0);\r\n mat.diffuseMethod.color = props.get(16, 0xffffff);\r\n mat.specularMethod.strength = props.get(18, 1.0);\r\n mat.specularMethod.gloss = props.get(19, 50);\r\n mat.specularMethod.color = props.get(20, 0xffffff);\r\n for (var methods_parsed = 0; methods_parsed < num_methods; methods_parsed++) {\r\n var method_type;\r\n method_type = this._newBlockBytes.readUnsignedShort();\r\n props = this.parseProperties(AWDParser.method_v1Properties);\r\n switch (method_type) {\r\n case 999:\r\n var effectMethod = this._blocks[props.get(1, 0)].data;\r\n mat.addEffectMethod(effectMethod);\r\n debugString += \" | EffectMethod-Name = \" + effectMethod.name;\r\n break;\r\n case 998:\r\n var shadowMethod = this._blocks[props.get(1, 0)].data;\r\n mat.shadowMethod = shadowMethod;\r\n debugString += \" | ShadowMethod-Name = \" + shadowMethod.name;\r\n break;\r\n case 1:\r\n var cubeTexture = new SingleCubeTexture(this._blocks[props.get(1, 0)].data);\r\n //mat.ambientMethod.mappingMode = \r\n mat.ambientMethod.texture = cubeTexture;\r\n debugString += \" | AmbientEnvMapMethod | EnvMap-Name =\" + cubeTexture.name;\r\n break;\r\n // case 51: //AmbientDepthMethod\r\n // \tmat.diffuseMethod = new AmbientDepthMethod();\r\n // \tdebugString += \" | AmbientDepthMethod\";\r\n // \tbreak;\r\n case 52:\r\n var texture = new Single2DTexture(this._blocks[props.get(1, 0)].data);\r\n mat.diffuseMethod = new DiffuseGradientMethod(texture);\r\n debugString += \" | DiffuseGradientMethod | GradientDiffuseTexture-Name =\" + texture.name;\r\n break;\r\n case 53:\r\n mat.diffuseMethod = new DiffuseWrapMethod(props.get(101, 5));\r\n debugString += \" | DiffuseWrapMethod\";\r\n break;\r\n case 54:\r\n var texture = new Single2DTexture(this._blocks[props.get(1, 0)].data);\r\n mat.diffuseMethod = new DiffuseLightMapMethod(texture, this.blendModeDic[props.get(401, 10)], false, mat.diffuseMethod);\r\n debugString += \" | DiffuseLightMapMethod | LightMapTexture-Name =\" + texture.name;\r\n break;\r\n case 55:\r\n mat.diffuseMethod = new DiffuseCelMethod(props.get(401, 3), props.get(101, 0.1), mat.diffuseMethod);\r\n debugString += \" | DiffuseCelMethod\";\r\n break;\r\n case 56:\r\n //\t\t\t\t\t\t\tmat.diffuseMethod = new DiffuseSubSurfaceMethod(); //depthMapSize and depthMapOffset ?\r\n //\t\t\t\t\t\t\t( mat.diffuseMethod).scattering = props.get(101, 0.2);\r\n //\t\t\t\t\t\t\t( mat.diffuseMethod).translucency = props.get(102, 1);\r\n //\t\t\t\t\t\t\t( mat.diffuseMethod).scatterColor = props.get(601, 0xffffff);\r\n //\t\t\t\t\t\t\tdebugString += \" | DiffuseSubSurfaceMethod\";\r\n break;\r\n case 101:\r\n mat.specularMethod = new SpecularAnisotropicMethod();\r\n debugString += \" | SpecularAnisotropicMethod\";\r\n break;\r\n case 102:\r\n mat.specularMethod = new SpecularPhongMethod();\r\n debugString += \" | SpecularPhongMethod\";\r\n break;\r\n case 103:\r\n mat.specularMethod = new SpecularCelMethod(props.get(101, 0.5), props.get(102, 0.1), mat.specularMethod);\r\n debugString += \" | SpecularCelMethod\";\r\n break;\r\n case 104:\r\n mat.specularMethod = new SpecularFresnelMethod(props.get(701, true), props.get(101, 5), props.get(102, 0.1), mat.specularMethod);\r\n debugString += \" | SpecularFresnelMethod\";\r\n break;\r\n case 151:\r\n break;\r\n case 152:\r\n var texture = new Single2DTexture(this._blocks[props.get(1, 0)].data);\r\n mat.normalMethod = new NormalSimpleWaterMethod(mat.normalMethod.texture || texture, texture);\r\n debugString += \" | NormalSimpleWaterMethod | Second-NormalTexture-Name = \" + texture.name;\r\n break;\r\n }\r\n this.parseUserAttributes();\r\n }\r\n }\r\n }\r\n else if ((type >= 3) && (type <= 7)) {\r\n // if this is a basic material, we create it, finalize it, assign it to block-cache and return.\r\n var color = props.get(1, 0xcccccc);\r\n debugString += color;\r\n var diffuseTexture = new Single2DTexture(this._blocks[props.get(2, 0)].data);\r\n if (type == 5) {\r\n diffuseTexture.mappingMode = MappingMode.LINEAR;\r\n }\r\n else if (type == 6) {\r\n diffuseTexture.mappingMode = MappingMode.RADIAL;\r\n }\r\n var basic_mat = this._factory.createMaterial();\r\n basic_mat.ambientMethod.texture = diffuseTexture;\r\n basic_mat.bothSides = true;\r\n basic_mat.alphaBlending = props.get(11, false);\r\n //basic_mat.preserveAlpha = basic_mat.alphaBlending;\r\n //basic_mat.alphaBlending = true;\r\n basic_mat.extra = this.parseUserAttributes();\r\n this._pFinalizeAsset(basic_mat, name);\r\n this._blocks[blockID].data = basic_mat;\r\n if (this._debug)\r\n console.log(debugString);\r\n return;\r\n }\r\n mat.extra = this.parseUserAttributes();\r\n this._pFinalizeAsset(mat, name);\r\n this._blocks[blockID].data = mat;\r\n if (this._debug)\r\n console.log(debugString);\r\n };\r\n //Block ID = 82\r\n AWDParser.prototype.parseTexture = function (blockID) {\r\n this._blocks[blockID].name = this.parseVarStr();\r\n var type = this._newBlockBytes.readUnsignedByte();\r\n this._texture_users[this._cur_block_id] = [];\r\n // External\r\n if (type == 0) {\r\n var url = this._newBlockBytes.readUTFBytes(this._newBlockBytes.readUnsignedInt());\r\n this._pAddDependency(this._cur_block_id.toString(), new URLRequest(url), new Image2DParser(this._factory), null, false, true);\r\n }\r\n else {\r\n var data_len = this._newBlockBytes.readUnsignedInt();\r\n var data = new ByteArray(data_len);\r\n this._newBlockBytes.readBytes(data, 0, data_len);\r\n //\r\n // AWD3Parserutils - Fix for FireFox Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=715075 .\r\n //\r\n // Converting data to image here instead of parser - fix FireFox bug where image width / height is 0 when created from data\r\n // This gives the browser time to initialise image width / height.\r\n this._pAddDependency(this._cur_block_id.toString(), null, new Image2DParser(this._factory), data, false, true);\r\n }\r\n // Ignore for now\r\n this.parseProperties(null);\r\n this._blocks[blockID].extras = this.parseUserAttributes();\r\n this._pPauseAndRetrieveDependencies();\r\n if (this._debug)\r\n console.log(\"Start parsing a \" + [\"external\", \"embed\"][type] + \" Bitmap for Texture\");\r\n };\r\n //Block ID = 83\r\n AWDParser.prototype.parseCubeTexture = function (blockID) {\r\n //blockLength = block.len;\r\n var data_len;\r\n var i;\r\n this._texture_users[this._cur_block_id] = [];\r\n var type = this._newBlockBytes.readUnsignedByte();\r\n this._blocks[blockID].name = this.parseVarStr();\r\n for (i = 0; i < 6; i++) {\r\n this._texture_users[this._cur_block_id] = [];\r\n // External\r\n if (type == 0) {\r\n data_len = this._newBlockBytes.readUnsignedInt();\r\n var url;\r\n url = this._newBlockBytes.readUTFBytes(data_len);\r\n this._pAddDependency(this._cur_block_id.toString(), new URLRequest(url), null, null, false, true, i);\r\n }\r\n else {\r\n data_len = this._newBlockBytes.readUnsignedInt();\r\n var data = new ByteArray(data_len);\r\n this._newBlockBytes.readBytes(data, 0, data_len);\r\n this._pAddDependency(this._cur_block_id.toString(), null, null, ParserUtils.byteArrayToImage(data), false, true, i);\r\n }\r\n }\r\n // Ignore for now\r\n this.parseProperties(null);\r\n this._blocks[blockID].extras = this.parseUserAttributes();\r\n this._pPauseAndRetrieveDependencies();\r\n if (this._debug)\r\n console.log(\"Start parsing 6 \" + [\"external\", \"embed\"][type] + \" Bitmaps for CubeTexture\");\r\n };\r\n //Block ID = 91\r\n AWDParser.prototype.parseSharedMethodBlock = function (blockID) {\r\n var asset;\r\n this._blocks[blockID].name = this.parseVarStr();\r\n asset = this.parseSharedMethodList(blockID);\r\n this.parseUserAttributes();\r\n this._blocks[blockID].data = asset;\r\n this._pFinalizeAsset(asset, this._blocks[blockID].name);\r\n this._blocks[blockID].data = asset;\r\n if (this._debug)\r\n console.log(\"Parsed a EffectMethod: Name = \" + asset.name + \" Type = \" + asset);\r\n };\r\n //Block ID = 92\r\n AWDParser.prototype.parseShadowMethodBlock = function (blockID) {\r\n this._blocks[blockID].name = this.parseVarStr();\r\n var light = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n var asset = this.parseShadowMethodList(light, blockID);\r\n if (!asset)\r\n return;\r\n this.parseUserAttributes(); // Ignore for now\r\n this._pFinalizeAsset(asset, this._blocks[blockID].name);\r\n this._blocks[blockID].data = asset;\r\n if (this._debug)\r\n console.log(\"Parsed a ShadowMapMethodMethod: Name = \" + asset.name + \" | Type = \" + asset + \" | Light-Name = \", light.name);\r\n };\r\n //Block ID = 253\r\n AWDParser.prototype.parseCommand = function (blockID) {\r\n var hasBlocks = (this._newBlockBytes.readUnsignedByte() == 1);\r\n var parentObject = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n var targetObject;\r\n var mtx = this.parseMatrix3D();\r\n var name = this.parseVarStr();\r\n var numCommands = this._newBlockBytes.readShort();\r\n var typeCommand = this._newBlockBytes.readShort();\r\n var props = this.parseProperties(AWDParser.commandProperties);\r\n switch (typeCommand) {\r\n case 1:\r\n targetObject = this._blocks[props.get(1, 0)].data;\r\n targetObject.transform.matrix3D = mtx;\r\n if (parentObject)\r\n parentObject.addChild(targetObject);\r\n break;\r\n }\r\n if (targetObject) {\r\n props = this.parseProperties(AWDParser.targetProperties);\r\n targetObject.registrationPoint = new Vector3D(props.get(1, 0), props.get(2, 0), props.get(3, 0));\r\n targetObject.extra = this.parseUserAttributes();\r\n }\r\n this._blocks[blockID].data = targetObject;\r\n if (this._debug)\r\n console.log(\"Parsed a CommandBlock: Name = '\" + name);\r\n };\r\n //blockID 255\r\n AWDParser.prototype.parseMetaData = function (blockID) {\r\n var props = this.parseProperties(AWDParser.metaDataProperties);\r\n if (this._debug) {\r\n console.log(\"Parsed a MetaDataBlock: TimeStamp = \" + props.get(1, 0));\r\n console.log(\" EncoderName = \" + props.get(2, \"unknown\"));\r\n console.log(\" EncoderVersion = \" + props.get(3, \"unknown\"));\r\n console.log(\" GeneratorName = \" + props.get(4, \"unknown\"));\r\n console.log(\" GeneratorVersion = \" + props.get(5, \"unknown\"));\r\n }\r\n };\r\n //blockID 254\r\n AWDParser.prototype.parseNameSpace = function (blockID) {\r\n var id = this._newBlockBytes.readUnsignedByte();\r\n var nameSpaceString = this.parseVarStr();\r\n if (this._debug)\r\n console.log(\"Parsed a NameSpaceBlock: ID = \" + id + \" | String = \" + nameSpaceString);\r\n };\r\n // this functions reads and creates a ShadowMethodMethod\r\n AWDParser.prototype.parseShadowMethodList = function (light, blockID) {\r\n var methodType = this._newBlockBytes.readUnsignedShort();\r\n var shadowMethod;\r\n var props = this.parseProperties(this.shadowMethodListProperties);\r\n var targetID;\r\n var returnedArray;\r\n switch (methodType) {\r\n //\t\t\t\tcase 1001: //CascadeShadowMapMethod\r\n //\t\t\t\t\ttargetID = props.get(1, 0);\r\n //\t\t\t\t\treturnedArray = getAssetByID(targetID, [ShadowMapMethodBase.assetType]);\r\n //\t\t\t\t\tif (!returnedArray[0]) {\r\n //\t\t\t\t\t\t_blocks[blockID].addError(\"Could not find the ShadowBaseMethod (ID = \" + targetID + \" ) for this CascadeShadowMapMethod - ShadowMethod not created\");\r\n //\t\t\t\t\t\treturn shadowMethod;\r\n //\t\t\t\t\t}\r\n //\t\t\t\t\tshadowMethod = new CascadeShadowMapMethod(returnedArray[1]);\r\n //\t\t\t\t\tbreak;\r\n case 1002:\r\n shadowMethod = new ShadowNearMethod(this._blocks[props.get(1, 0)].data);\r\n break;\r\n // case 1101: //ShadowFilteredMethod\r\n // \tshadowMethod = new ShadowFilteredMethod( light);\r\n // \t( shadowMethod).alpha = props.get(101, 1);\r\n // \t( shadowMethod).epsilon = props.get(102, 0.002);\r\n // \tbreak;\r\n case 1102:\r\n shadowMethod = new ShadowDitheredMethod(light, props.get(201, 5));\r\n shadowMethod.alpha = props.get(101, 1);\r\n shadowMethod.epsilon = props.get(102, 0.002);\r\n shadowMethod.range = props.get(103, 1);\r\n break;\r\n case 1103:\r\n shadowMethod = new ShadowSoftMethod(light, props.get(201, 5));\r\n shadowMethod.alpha = props.get(101, 1);\r\n shadowMethod.epsilon = props.get(102, 0.002);\r\n shadowMethod.range = props.get(103, 1);\r\n break;\r\n case 1104:\r\n shadowMethod = new ShadowHardMethod(light);\r\n shadowMethod.alpha = props.get(101, 1);\r\n shadowMethod.epsilon = props.get(102, 0.002);\r\n break;\r\n }\r\n this.parseUserAttributes();\r\n return shadowMethod;\r\n };\r\n //Block ID 101\r\n AWDParser.prototype.parseSkeleton = function (blockID /*uint*/) {\r\n var name = this.parseVarStr();\r\n var num_joints = this._newBlockBytes.readUnsignedShort();\r\n var skeleton = new Skeleton();\r\n this.parseProperties(null); // Discard properties for now\r\n for (var joints_parsed = 0; joints_parsed < num_joints; joints_parsed++) {\r\n var joint;\r\n var ibp;\r\n // Ignore joint id\r\n this._newBlockBytes.readUnsignedShort();\r\n joint = new SkeletonJoint();\r\n joint.parentIndex = this._newBlockBytes.readUnsignedShort() - 1; // 0=null in AWD\r\n joint.name = this.parseVarStr();\r\n ibp = this.parseMatrix3D();\r\n joint.inverseBindPose = ibp._rawData;\r\n // Ignore joint props/attributes for now\r\n this.parseProperties(null);\r\n this.parseUserAttributes();\r\n skeleton.joints.push(joint);\r\n }\r\n // Discard attributes for now\r\n this.parseUserAttributes();\r\n this._pFinalizeAsset(skeleton, name);\r\n this._blocks[blockID].data = skeleton;\r\n if (this._debug)\r\n console.log(\"Parsed a Skeleton: Name = \" + skeleton.name + \" | Number of Joints = \" + joints_parsed);\r\n };\r\n //Block ID = 102\r\n AWDParser.prototype.parseSkeletonPose = function (blockID /*uint*/) {\r\n var name = this.parseVarStr();\r\n var num_joints = this._newBlockBytes.readUnsignedShort();\r\n this.parseProperties(null); // Ignore properties for now\r\n var pose = new SkeletonPose();\r\n for (var joints_parsed = 0; joints_parsed < num_joints; joints_parsed++) {\r\n var joint_pose;\r\n var has_transform /*uint*/;\r\n joint_pose = new JointPose();\r\n has_transform = this._newBlockBytes.readUnsignedByte();\r\n if (has_transform == 1) {\r\n var mtx_data = this.parseMatrix43RawData();\r\n var mtx = new Matrix3D(mtx_data);\r\n joint_pose.orientation.fromMatrix(mtx);\r\n joint_pose.translation.copyFrom(mtx.position);\r\n pose.jointPoses[joints_parsed] = joint_pose;\r\n }\r\n }\r\n // Skip attributes for now\r\n this.parseUserAttributes();\r\n this._pFinalizeAsset(pose, name);\r\n this._blocks[blockID].data = pose;\r\n if (this._debug)\r\n console.log(\"Parsed a SkeletonPose: Name = \" + pose.name + \" | Number of Joints = \" + joints_parsed);\r\n };\r\n //blockID 103\r\n AWDParser.prototype.parseSkeletonAnimation = function (blockID /*uint*/) {\r\n var frame_dur;\r\n var pose_id;\r\n var name = this.parseVarStr();\r\n var clip = new SkeletonClipNode();\r\n var num_frames = this._newBlockBytes.readUnsignedShort();\r\n this.parseProperties(null); // Ignore properties for now\r\n for (var frames_parsed = 0; frames_parsed < num_frames; frames_parsed++) {\r\n pose_id = this._newBlockBytes.readUnsignedInt();\r\n frame_dur = this._newBlockBytes.readUnsignedShort();\r\n clip.addFrame(this._blocks[pose_id].data, frame_dur);\r\n }\r\n if (clip.frames.length == 0) {\r\n this._blocks[blockID].addError(\"Could not this SkeletonClipNode, because no Frames where set.\");\r\n return;\r\n }\r\n // Ignore attributes for now\r\n this.parseUserAttributes();\r\n this._pFinalizeAsset(clip, name);\r\n this._blocks[blockID].data = clip;\r\n if (this._debug)\r\n console.log(\"Parsed a SkeletonClipNode: Name = \" + clip.name + \" | Number of Frames = \" + clip.frames.length);\r\n };\r\n //Block ID = 111 / Block ID = 112\r\n AWDParser.prototype.parseSpritePoseAnimation = function (blockID /*uint*/, poseOnly) {\r\n if (poseOnly === void 0) { poseOnly = false; }\r\n var subSpriteParsed /*uint*/;\r\n var x;\r\n var y;\r\n var z;\r\n var str_len;\r\n var str_end;\r\n var elements;\r\n var idx = 0;\r\n var clip = new VertexClipNode();\r\n var indices;\r\n var verts;\r\n var streamtypes = new Array() /*int*/;\r\n var props;\r\n var name = this.parseVarStr();\r\n var geo_id = this._newBlockBytes.readUnsignedInt();\r\n var graphics = this._blocks[geo_id].data;\r\n var uvs = this.getUVForVertexAnimation(geo_id);\r\n var num_frames = (!poseOnly) ? this._newBlockBytes.readUnsignedShort() : 1;\r\n var num_subsprites = this._newBlockBytes.readUnsignedShort();\r\n var num_Streams = this._newBlockBytes.readUnsignedShort();\r\n for (var streamsParsed = 0; streamsParsed < num_Streams; streamsParsed++)\r\n streamtypes.push(this._newBlockBytes.readUnsignedShort());\r\n props = this.parseProperties(this.spritePoseAnimationProperties);\r\n clip.looping = props.get(1, true);\r\n clip.stitchFinalFrame = props.get(2, false);\r\n var frame_dur;\r\n for (var frames_parsed = 0; frames_parsed < num_frames; frames_parsed++) {\r\n frame_dur = this._newBlockBytes.readUnsignedShort();\r\n graphics = new Graphics();\r\n subSpriteParsed = 0;\r\n while (subSpriteParsed < num_subsprites) {\r\n streamsParsed = 0;\r\n str_len = this._newBlockBytes.readUnsignedInt();\r\n str_end = this._newBlockBytes.position + str_len;\r\n while (streamsParsed < num_Streams) {\r\n if (streamtypes[streamsParsed] == 1) {\r\n indices = graphics.getShapeAt(subSpriteParsed).elements.indices;\r\n verts = new Array();\r\n idx = 0;\r\n while (this._newBlockBytes.position < str_end) {\r\n x = this.readNumber(this._accuracyGeo);\r\n y = this.readNumber(this._accuracyGeo);\r\n z = this.readNumber(this._accuracyGeo);\r\n verts[idx++] = x;\r\n verts[idx++] = y;\r\n verts[idx++] = z;\r\n }\r\n elements = new TriangleElements(new AttributesBuffer());\r\n elements.setIndices(indices);\r\n elements.setPositions(verts);\r\n elements.setUVs(uvs[subSpriteParsed]);\r\n elements.setNormals(null);\r\n elements.setTangents(null);\r\n elements.autoDeriveNormals = false;\r\n elements.autoDeriveTangents = false;\r\n subSpriteParsed++;\r\n graphics.addShape(new Shape(elements));\r\n }\r\n else\r\n this._newBlockBytes.position = str_end;\r\n streamsParsed++;\r\n }\r\n }\r\n clip.addFrame(graphics, frame_dur);\r\n }\r\n this.parseUserAttributes();\r\n this._pFinalizeAsset(clip, name);\r\n this._blocks[blockID].data = clip;\r\n if (this._debug)\r\n console.log(\"Parsed a VertexClipNode: Name = \" + clip.name + \" | Target-Graphics-Name = \" + graphics.name + \" | Number of Frames = \" + clip.frames.length);\r\n };\r\n //BlockID 113\r\n AWDParser.prototype.parseVertexAnimationSet = function (blockID /*uint*/) {\r\n var name = this.parseVarStr();\r\n var num_frames = this._newBlockBytes.readUnsignedShort();\r\n var props = this.parseProperties(AWDParser.vertexAnimationSetProperties);\r\n var skeletonFrames = new Array();\r\n var vertexFrames = new Array();\r\n var clipNode;\r\n for (var frames_parsed = 0; frames_parsed < num_frames; frames_parsed++) {\r\n clipNode = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n if (clipNode instanceof VertexClipNode)\r\n vertexFrames.push(clipNode);\r\n else if (clipNode instanceof SkeletonClipNode)\r\n skeletonFrames.push(clipNode);\r\n }\r\n if ((vertexFrames.length == 0) && (skeletonFrames.length == 0)) {\r\n this._blocks[blockID].addError(\"Could not create this AnimationSet, because it contains no animations\");\r\n return;\r\n }\r\n this.parseUserAttributes();\r\n if (vertexFrames.length > 0) {\r\n var newVertexAnimationSet = new VertexAnimationSet();\r\n for (var i = 0; i < vertexFrames.length; i++)\r\n newVertexAnimationSet.addAnimation(vertexFrames[i]);\r\n this._pFinalizeAsset(newVertexAnimationSet, name);\r\n this._blocks[blockID].data = newVertexAnimationSet;\r\n if (this._debug)\r\n console.log(\"Parsed a VertexAnimationSet: Name = \" + name + \" | Animations = \" + newVertexAnimationSet.animations.length + \" | Animation-Names = \" + newVertexAnimationSet.animationNames);\r\n }\r\n else if (skeletonFrames.length > 0) {\r\n var newSkeletonAnimationSet = new SkeletonAnimationSet(props.get(1, 4)); //props.get(1,4));\r\n for (var i = 0; i < skeletonFrames.length; i++)\r\n newSkeletonAnimationSet.addAnimation(skeletonFrames[i]);\r\n this._pFinalizeAsset(newSkeletonAnimationSet, name);\r\n this._blocks[blockID].data = newSkeletonAnimationSet;\r\n if (this._debug)\r\n console.log(\"Parsed a SkeletonAnimationSet: Name = \" + name + \" | Animations = \" + newSkeletonAnimationSet.animations.length + \" | Animation-Names = \" + newSkeletonAnimationSet.animationNames);\r\n }\r\n };\r\n //BlockID 122\r\n AWDParser.prototype.parseAnimatorSet = function (blockID /*uint*/) {\r\n var name = this.parseVarStr();\r\n var type = this._newBlockBytes.readUnsignedShort();\r\n var props = this.parseProperties(AWDParser.animatorSetProperties);\r\n var targetAnimationSet = this._blocks[this._newBlockBytes.readUnsignedInt()].data;\r\n var targetSpritees = new Array();\r\n var targetSpriteLength = this._newBlockBytes.readUnsignedShort();\r\n for (var i = 0; i < targetSpriteLength; i++)\r\n targetSpritees.push(this._blocks[this._newBlockBytes.readUnsignedInt()].data);\r\n var activeState = this._newBlockBytes.readUnsignedShort();\r\n var autoplay = (this._newBlockBytes.readUnsignedByte() == 1);\r\n this.parseUserAttributes();\r\n this.parseUserAttributes();\r\n var thisAnimator;\r\n if (type == 1)\r\n thisAnimator = new SkeletonAnimator(targetAnimationSet, this._blocks[props.get(1, 0)].data);\r\n else if (type == 2)\r\n thisAnimator = new VertexAnimator(targetAnimationSet);\r\n this._pFinalizeAsset(thisAnimator, name);\r\n this._blocks[blockID].data = thisAnimator;\r\n for (i = 0; i < targetSpritees.length; i++) {\r\n if (type == 1)\r\n targetSpritees[i].animator = thisAnimator;\r\n else if (type == 2)\r\n targetSpritees[i].animator = thisAnimator;\r\n }\r\n if (this._debug)\r\n console.log(\"Parsed a Animator: Name = \" + name);\r\n };\r\n // this functions reads and creates a EffectMethod\r\n AWDParser.prototype.parseSharedMethodList = function (blockID) {\r\n var methodType = this._newBlockBytes.readUnsignedShort();\r\n var effectMethodReturn;\r\n var props = this.parseProperties(this.sharedMethodListProperties);\r\n switch (methodType) {\r\n // Effect Methods\r\n case 401:\r\n effectMethodReturn = new EffectColorMatrixMethod(props.get(101, new Array(0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)));\r\n break;\r\n case 402:\r\n effectMethodReturn = new EffectColorTransformMethod();\r\n var offCol = props.get(601, 0x00000000);\r\n effectMethodReturn.colorTransform = new ColorTransform(props.get(102, 1), props.get(103, 1), props.get(104, 1), props.get(101, 1), ((offCol >> 16) & 0xFF), ((offCol >> 8) & 0xFF), (offCol & 0xFF), ((offCol >> 24) & 0xFF));\r\n break;\r\n case 403:\r\n effectMethodReturn = new EffectEnvMapMethod(new SingleCubeTexture(this._blocks[props.get(1, 0)].data), props.get(101, 1));\r\n var targetID = props.get(2, 0);\r\n if (targetID > 0) {\r\n }\r\n break;\r\n case 404:\r\n effectMethodReturn = new EffectLightMapMethod(this._blocks[props.get(1, 0)].data, this.blendModeDic[props.get(401, 10)]); //usesecondaryUV not set\r\n break;\r\n //\t\t\t\tcase 405: //ProjectiveTextureMethod\r\n //\t\t\t\t\ttargetID = props.get(1, 0);\r\n //\t\t\t\t\treturnedArray = getAssetByID(targetID, [TextureProjector.assetType]);\r\n //\t\t\t\t\tif (!returnedArray[0])\r\n //\t\t\t\t\t\t_blocks[blockID].addError(\"Could not find the TextureProjector (ID = \" + targetID + \" ) for this ProjectiveTextureMethod\");\r\n //\t\t\t\t\teffectMethodReturn = new ProjectiveTextureMethod(returnedArray[1], blendModeDic[props.get(401, 10)]);\r\n //\t\t\t\t\tbreak;\r\n case 406:\r\n effectMethodReturn = new EffectRimLightMethod(props.get(601, 0xffffff), props.get(101, 0.4), props.get(101, 2)); //blendMode\r\n break;\r\n case 407:\r\n effectMethodReturn = new EffectAlphaMaskMethod(this._blocks[props.get(1, 0)].data, props.get(701, false));\r\n break;\r\n //\t\t\t\tcase 408: //RefractionEnvMapMethod\r\n //\t\t\t\t\ttargetID = props.get(1, 0);\r\n //\t\t\t\t\treturnedArray = getAssetByID(targetID, [TextureBase.assetType], \"CubeTexture\");\r\n //\t\t\t\t\tif (!returnedArray[0])\r\n //\t\t\t\t\t\t_blocks[blockID].addError(\"Could not find the EnvMap (ID = \" + targetID + \" ) for this RefractionEnvMapMethod\");\r\n //\t\t\t\t\teffectMethodReturn = new RefractionEnvMapMethod(returnedArray[1], props.get(101, 0.1), props.get(102, 0.01), props.get(103, 0.01), props.get(104, 0.01));\r\n //\t\t\t\t\tRefractionEnvMapMethod(effectMethodReturn).alpha = props.get(104, 1);\r\n //\t\t\t\t\tbreak;\r\n //\t\t\t\tcase 409: //OutlineMethod\r\n //\t\t\t\t\teffectMethodReturn = new OutlineMethod(props.get(601, 0x00000000), props.get(101, 1), props.get(701, true), props.get(702, false));\r\n //\t\t\t\t\tbreak;\r\n case 410:\r\n effectMethodReturn = new EffectFresnelEnvMapMethod(this._blocks[props.get(1, 0)].data, props.get(101, 1));\r\n break;\r\n case 411:\r\n effectMethodReturn = new EffectFogMethod(props.get(101, 0), props.get(102, 1000), props.get(601, 0x808080));\r\n break;\r\n }\r\n this.parseUserAttributes();\r\n return effectMethodReturn;\r\n };\r\n AWDParser.prototype.parseUserAttributes = function () {\r\n var list_len = this._newBlockBytes.readUnsignedInt();\r\n if (list_len > 0) {\r\n var list_end = this._newBlockBytes.position + list_len;\r\n var attributes = {};\r\n for (var attibuteCnt = 0; this._newBlockBytes.position < list_end; attibuteCnt++) {\r\n var ns_id;\r\n var attr_key;\r\n var attr_type;\r\n var attr_len;\r\n var attr_val;\r\n // TODO: Properly tend to namespaces in attributes\r\n ns_id = this._newBlockBytes.readUnsignedByte();\r\n attr_key = this.parseVarStr();\r\n attr_type = this._newBlockBytes.readUnsignedByte();\r\n attr_len = this._newBlockBytes.readUnsignedInt();\r\n if ((this._newBlockBytes.position + attr_len) > list_end) {\r\n console.log(\" Error in reading attribute # \" + attibuteCnt + \" = skipped to end of attribute-list\");\r\n this._newBlockBytes.position = list_end;\r\n return attributes;\r\n }\r\n switch (attr_type) {\r\n case AWDParser.AWDSTRING:\r\n attr_val = this._newBlockBytes.readUTFBytes(attr_len);\r\n break;\r\n case AWDParser.INT8:\r\n attr_val = this._newBlockBytes.readByte();\r\n break;\r\n case AWDParser.INT16:\r\n attr_val = this._newBlockBytes.readShort();\r\n break;\r\n case AWDParser.INT32:\r\n attr_val = this._newBlockBytes.readInt();\r\n break;\r\n case AWDParser.BOOL:\r\n case AWDParser.UINT8:\r\n attr_val = this._newBlockBytes.readUnsignedByte();\r\n break;\r\n case AWDParser.UINT16:\r\n attr_val = this._newBlockBytes.readUnsignedShort();\r\n break;\r\n case AWDParser.UINT32:\r\n case AWDParser.BADDR:\r\n attr_val = this._newBlockBytes.readUnsignedInt();\r\n break;\r\n case AWDParser.FLOAT32:\r\n attr_val = this._newBlockBytes.readFloat();\r\n break;\r\n case AWDParser.FLOAT64:\r\n attr_val = this._newBlockBytes.readDouble();\r\n break;\r\n default:\r\n attr_val = 'unimplemented attribute type ' + attr_type;\r\n this._newBlockBytes.position += attr_len;\r\n break;\r\n }\r\n attributes[attr_key] = attr_val;\r\n if (this._debug)\r\n console.log(\"attribute = name: \" + attr_key + \" / value = \" + attr_val);\r\n }\r\n }\r\n return attributes;\r\n };\r\n AWDParser.prototype.parseProperties = function (expected) {\r\n var list_len = this._newBlockBytes.readUnsignedInt();\r\n var props = new AWDProperties();\r\n var list_end = this._newBlockBytes.position + list_len;\r\n if (expected) {\r\n var len;\r\n var key;\r\n var type;\r\n for (var propertyCnt = 0; this._newBlockBytes.position < list_end; propertyCnt++) {\r\n key = this._newBlockBytes.readUnsignedShort();\r\n len = this._newBlockBytes.readUnsignedInt();\r\n if ((this._newBlockBytes.position + len) > list_end) {\r\n console.log(\" Error in reading property # \" + propertyCnt + \" = skipped to end of propertie-list\");\r\n this._newBlockBytes.position = list_end;\r\n return props;\r\n }\r\n if (expected[key]) {\r\n type = expected[key];\r\n props.set(key, this.parseAttrValue(type, len));\r\n }\r\n else {\r\n this._newBlockBytes.position += len;\r\n }\r\n }\r\n }\r\n else {\r\n this._newBlockBytes.position = list_end;\r\n }\r\n return props;\r\n };\r\n AWDParser.prototype.parseAttrValue = function (type, len) {\r\n var elem_len;\r\n var read_func;\r\n var accuracy;\r\n switch (type) {\r\n case AWDParser.BOOL:\r\n case AWDParser.INT8:\r\n elem_len = 1;\r\n read_func = this._newBlockBytes.readByte;\r\n break;\r\n case AWDParser.INT16:\r\n elem_len = 2;\r\n read_func = this._newBlockBytes.readShort;\r\n break;\r\n case AWDParser.INT32:\r\n elem_len = 4;\r\n read_func = this._newBlockBytes.readInt;\r\n break;\r\n case AWDParser.UINT8:\r\n elem_len = 1;\r\n read_func = this._newBlockBytes.readUnsignedByte;\r\n break;\r\n case AWDParser.UINT16:\r\n elem_len = 2;\r\n read_func = this._newBlockBytes.readUnsignedShort;\r\n break;\r\n case AWDParser.UINT32:\r\n case AWDParser.COLOR:\r\n case AWDParser.BADDR:\r\n elem_len = 4;\r\n read_func = this._newBlockBytes.readUnsignedInt;\r\n break;\r\n case AWDParser.FLOAT32:\r\n elem_len = 4;\r\n read_func = this._newBlockBytes.readFloat;\r\n break;\r\n case AWDParser.FLOAT64:\r\n elem_len = 8;\r\n read_func = this._newBlockBytes.readDouble;\r\n break;\r\n case AWDParser.AWDSTRING:\r\n return this._newBlockBytes.readUTFBytes(len);\r\n case AWDParser.VECTOR2x1:\r\n case AWDParser.VECTOR3x1:\r\n case AWDParser.VECTOR4x1:\r\n case AWDParser.MTX3x2:\r\n case AWDParser.MTX3x3:\r\n case AWDParser.MTX4x3:\r\n case AWDParser.MTX4x4:\r\n elem_len = 8;\r\n read_func = this._newBlockBytes.readDouble;\r\n break;\r\n case AWDParser.GEO_NUMBER:\r\n accuracy = this._accuracyGeo;\r\n case AWDParser.MATRIX_NUMBER:\r\n accuracy = this._accuracyMatrix;\r\n case AWDParser.PROPERTY_NUMBER:\r\n accuracy = this._accuracyProps;\r\n default:\r\n if (accuracy) {\r\n elem_len = 8;\r\n read_func = this._newBlockBytes.readDouble;\r\n }\r\n else {\r\n elem_len = 4;\r\n read_func = this._newBlockBytes.readFloat;\r\n }\r\n }\r\n if (elem_len < len) {\r\n var list = [];\r\n var num_elems = len / elem_len;\r\n for (var num_read = 0; num_read < num_elems; num_read++)\r\n list[num_read] = read_func.call(this._newBlockBytes);\r\n return list;\r\n }\r\n else if (type == AWDParser.BOOL) {\r\n return Boolean(read_func.call(this._newBlockBytes));\r\n }\r\n else {\r\n return read_func.call(this._newBlockBytes);\r\n }\r\n };\r\n AWDParser.prototype.parseHeader = function () {\r\n this._byteData.position = 3; // Skip magic string and parse version\r\n this._version[0] = this._byteData.readUnsignedByte();\r\n this._version[1] = this._byteData.readUnsignedByte();\r\n var flags = this._byteData.readUnsignedShort(); // Parse bit flags\r\n this._streaming = BitFlags.test(flags, BitFlags.FLAG1);\r\n // if we set _accuracyOnBlocks, the precision-values are read from each block-header.\r\n if ((this._version[0] == 2) && (this._version[1] == 1)) {\r\n this._accuracyMatrix = BitFlags.test(flags, BitFlags.FLAG2);\r\n this._accuracyGeo = BitFlags.test(flags, BitFlags.FLAG3);\r\n this._accuracyProps = BitFlags.test(flags, BitFlags.FLAG4);\r\n }\r\n this._compression = this._byteData.readUnsignedByte(); // compression\r\n if (this._debug) {\r\n console.log(\"Import AWDFile of version = \" + this._version[0] + \" - \" + this._version[1]);\r\n console.log(\"Global Settings = Compression = \" + this._compression + \" | Streaming = \" + this._streaming + \" | Matrix-Precision = \" + this._accuracyMatrix + \" | Graphics-Precision = \" + this._accuracyGeo + \" | Properties-Precision = \" + this._accuracyProps);\r\n }\r\n // Check file integrity\r\n var body_len = this._byteData.readUnsignedInt();\r\n if (!this._streaming && body_len != this._byteData.getBytesAvailable())\r\n this._pDieWithError('AWD2 body length does not match header integrity field');\r\n };\r\n // Helper - functions\r\n AWDParser.prototype.getUVForVertexAnimation = function (spriteID /*uint*/) {\r\n if (this._blocks[spriteID].data instanceof Sprite)\r\n spriteID = this._blocks[spriteID].geoID;\r\n if (this._blocks[spriteID].uvsForVertexAnimation)\r\n return this._blocks[spriteID].uvsForVertexAnimation;\r\n var graphics = this._blocks[spriteID].data;\r\n var elements;\r\n var uvsForVertexAnimation = this._blocks[spriteID].uvsForVertexAnimation = new Array();\r\n var len = graphics.count;\r\n for (var geoCnt = 0; geoCnt < len; geoCnt++) {\r\n elements = graphics.getShapeAt(geoCnt).elements;\r\n uvsForVertexAnimation[geoCnt] = elements.uvs.get(elements.numVertices);\r\n }\r\n return this._blocks[spriteID].uvsForVertexAnimation;\r\n };\r\n AWDParser.prototype.parseVarStr = function () {\r\n return this._newBlockBytes.readUTFBytes(this._newBlockBytes.readUnsignedShort());\r\n };\r\n AWDParser.prototype.readNumber = function (precision) {\r\n if (precision === void 0) { precision = false; }\r\n if (precision)\r\n return this._newBlockBytes.readDouble();\r\n return this._newBlockBytes.readFloat();\r\n };\r\n AWDParser.prototype.parseMatrix3D = function () {\r\n return new Matrix3D(this.parseMatrix43RawData());\r\n };\r\n AWDParser.prototype.parseMatrix32RawData = function () {\r\n var mtx_raw = new Float32Array(6);\r\n for (var i = 0; i < 6; i++)\r\n mtx_raw[i] = this._newBlockBytes.readFloat();\r\n return mtx_raw;\r\n };\r\n AWDParser.prototype.parseMatrix43RawData = function () {\r\n var mtx_raw = new Float32Array(16);\r\n mtx_raw[0] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[1] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[2] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[3] = 0.0;\r\n mtx_raw[4] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[5] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[6] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[7] = 0.0;\r\n mtx_raw[8] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[9] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[10] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[11] = 0.0;\r\n mtx_raw[12] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[13] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[14] = this.readNumber(this._accuracyMatrix);\r\n mtx_raw[15] = 1.0;\r\n //TODO: fix max exporter to remove NaN values in joint 0 inverse bind pose\r\n if (isNaN(mtx_raw[0])) {\r\n mtx_raw[0] = 1;\r\n mtx_raw[1] = 0;\r\n mtx_raw[2] = 0;\r\n mtx_raw[4] = 0;\r\n mtx_raw[5] = 1;\r\n mtx_raw[6] = 0;\r\n mtx_raw[8] = 0;\r\n mtx_raw[9] = 0;\r\n mtx_raw[10] = 1;\r\n mtx_raw[12] = 0;\r\n mtx_raw[13] = 0;\r\n mtx_raw[14] = 0;\r\n }\r\n return mtx_raw;\r\n };\r\n return AWDParser;\r\n}(ParserBase));\r\nexport { AWDParser };\r\nAWDParser.COMPRESSIONMODE_LZMA = \"lzma\";\r\nAWDParser.UNCOMPRESSED = 0;\r\nAWDParser.DEFLATE = 1;\r\nAWDParser.LZMA = 2;\r\nAWDParser.INT8 = 1;\r\nAWDParser.INT16 = 2;\r\nAWDParser.INT32 = 3;\r\nAWDParser.UINT8 = 4;\r\nAWDParser.UINT16 = 5;\r\nAWDParser.UINT32 = 6;\r\nAWDParser.FLOAT32 = 7;\r\nAWDParser.FLOAT64 = 8;\r\nAWDParser.BOOL = 21;\r\nAWDParser.COLOR = 22;\r\nAWDParser.BADDR = 23;\r\nAWDParser.AWDSTRING = 31;\r\nAWDParser.AWDBYTEARRAY = 32;\r\nAWDParser.VECTOR2x1 = 41;\r\nAWDParser.VECTOR3x1 = 42;\r\nAWDParser.VECTOR4x1 = 43;\r\nAWDParser.MTX3x2 = 44;\r\nAWDParser.MTX3x3 = 45;\r\nAWDParser.MTX4x3 = 46;\r\nAWDParser.MTX4x4 = 47;\r\nAWDParser.GEO_NUMBER = 48;\r\nAWDParser.MATRIX_NUMBER = 49;\r\nAWDParser.PROPERTY_NUMBER = 50;\r\nAWDParser.textFormatProperties = {\r\n 1: AWDParser.UINT16,\r\n 2: AWDParser.FLOAT32,\r\n 3: AWDParser.UINT8,\r\n 4: AWDParser.UINT8,\r\n 5: AWDParser.UINT8,\r\n 6: AWDParser.UINT8,\r\n 7: AWDParser.FLOAT32,\r\n 8: AWDParser.FLOAT32,\r\n 9: AWDParser.FLOAT32,\r\n 10: AWDParser.FLOAT32,\r\n 11: AWDParser.COLOR\r\n}; //line spacing\r\nAWDParser.textFieldProperties = {\r\n 1: AWDParser.BOOL,\r\n 3: AWDParser.BOOL,\r\n 4: AWDParser.BOOL,\r\n 5: AWDParser.BOOL,\r\n 7: AWDParser.UINT8,\r\n 8: AWDParser.UINT8,\r\n 9: AWDParser.UINT8\r\n};\r\nAWDParser.textFieldTypes = [\"static\", \"dynamic\", \"input\", \"input\"];\r\nAWDParser.spriteLibraryProperties = {\r\n 1: AWDParser.FLOAT32,\r\n 2: AWDParser.FLOAT32,\r\n 3: AWDParser.FLOAT32,\r\n 4: AWDParser.FLOAT32\r\n};\r\nAWDParser.movieClipProperties = {\r\n 1: AWDParser.FLOAT32,\r\n 2: AWDParser.UINT16,\r\n 3: AWDParser.UINT8,\r\n 4: AWDParser.UINT8 // isScale9SliceMC\r\n};\r\nAWDParser.graphicsProperties = {\r\n 1: AWDParser.GEO_NUMBER,\r\n 2: AWDParser.GEO_NUMBER\r\n};\r\nAWDParser.elementsProperties = {\r\n 1: AWDParser.GEO_NUMBER,\r\n 2: AWDParser.GEO_NUMBER\r\n};\r\nAWDParser.primitiveProperties = {\r\n 101: AWDParser.GEO_NUMBER,\r\n 102: AWDParser.GEO_NUMBER,\r\n 103: AWDParser.GEO_NUMBER,\r\n 110: AWDParser.GEO_NUMBER,\r\n 111: AWDParser.GEO_NUMBER,\r\n 301: AWDParser.UINT16,\r\n 302: AWDParser.UINT16,\r\n 303: AWDParser.UINT16,\r\n 701: AWDParser.BOOL,\r\n 702: AWDParser.BOOL,\r\n 703: AWDParser.BOOL,\r\n 704: AWDParser.BOOL\r\n};\r\nAWDParser.primitiveTypes = [\"Unsupported Type-ID\", \"PrimitivePlanePrefab\", \"PrimitiveCubePrefab\", \"PrimitiveSpherePrefab\", \"PrimitiveCylinderPrefab\", \"PrimitivesConePrefab\", \"PrimitivesCapsulePrefab\", \"PrimitivesTorusPrefab\"];\r\nAWDParser.containerProperties = {\r\n 1: AWDParser.MATRIX_NUMBER,\r\n 2: AWDParser.MATRIX_NUMBER,\r\n 3: AWDParser.MATRIX_NUMBER,\r\n 4: AWDParser.UINT8\r\n};\r\nAWDParser.spriteInstanceProperties = {\r\n 1: AWDParser.MATRIX_NUMBER,\r\n 2: AWDParser.MATRIX_NUMBER,\r\n 3: AWDParser.MATRIX_NUMBER,\r\n 4: AWDParser.UINT8,\r\n 5: AWDParser.BOOL\r\n};\r\nAWDParser.lightProperties = {\r\n 1: AWDParser.PROPERTY_NUMBER,\r\n 2: AWDParser.PROPERTY_NUMBER,\r\n 3: AWDParser.COLOR,\r\n 4: AWDParser.PROPERTY_NUMBER,\r\n 5: AWDParser.PROPERTY_NUMBER,\r\n 6: AWDParser.BOOL,\r\n 7: AWDParser.COLOR,\r\n 8: AWDParser.PROPERTY_NUMBER,\r\n 9: AWDParser.UINT8,\r\n 10: AWDParser.UINT8,\r\n 11: AWDParser.PROPERTY_NUMBER,\r\n 12: AWDParser.UINT16,\r\n 21: AWDParser.MATRIX_NUMBER,\r\n 22: AWDParser.MATRIX_NUMBER,\r\n 23: AWDParser.MATRIX_NUMBER\r\n};\r\nAWDParser.cameraProperties = {\r\n 101: AWDParser.PROPERTY_NUMBER,\r\n 102: AWDParser.PROPERTY_NUMBER,\r\n 103: AWDParser.PROPERTY_NUMBER,\r\n 104: AWDParser.PROPERTY_NUMBER\r\n};\r\nAWDParser.cameraPivotProperties = {\r\n 1: AWDParser.MATRIX_NUMBER,\r\n 2: AWDParser.MATRIX_NUMBER,\r\n 3: AWDParser.MATRIX_NUMBER,\r\n 4: AWDParser.UINT8\r\n};\r\n// (1=color, 2=bitmap url, 10=alpha, 11=alpha_blending, 12=alpha_threshold, 13=repeat)\r\nAWDParser.materialProperties = {\r\n 1: AWDParser.INT32,\r\n 2: AWDParser.BADDR,\r\n 10: AWDParser.PROPERTY_NUMBER,\r\n 11: AWDParser.BOOL,\r\n 12: AWDParser.PROPERTY_NUMBER,\r\n 13: AWDParser.BOOL\r\n};\r\nAWDParser.material_v1Properties = { 1: AWDParser.UINT32,\r\n 2: AWDParser.BADDR,\r\n 3: AWDParser.BADDR,\r\n 4: AWDParser.UINT8,\r\n 5: AWDParser.BOOL,\r\n 6: AWDParser.BOOL,\r\n 7: AWDParser.BOOL,\r\n 8: AWDParser.BOOL,\r\n 9: AWDParser.UINT8,\r\n 10: AWDParser.PROPERTY_NUMBER,\r\n 11: AWDParser.BOOL,\r\n 12: AWDParser.PROPERTY_NUMBER,\r\n 13: AWDParser.BOOL,\r\n 15: AWDParser.PROPERTY_NUMBER,\r\n 16: AWDParser.UINT32,\r\n 17: AWDParser.BADDR,\r\n 18: AWDParser.PROPERTY_NUMBER,\r\n 19: AWDParser.PROPERTY_NUMBER,\r\n 20: AWDParser.UINT32,\r\n 21: AWDParser.BADDR,\r\n 22: AWDParser.BADDR };\r\nAWDParser.method_v1Properties = {\r\n 1: AWDParser.BADDR,\r\n 2: AWDParser.BADDR,\r\n 3: AWDParser.BADDR,\r\n 101: AWDParser.PROPERTY_NUMBER,\r\n 102: AWDParser.PROPERTY_NUMBER,\r\n 103: AWDParser.PROPERTY_NUMBER,\r\n 201: AWDParser.UINT32,\r\n 202: AWDParser.UINT32,\r\n 301: AWDParser.UINT16,\r\n 302: AWDParser.UINT16,\r\n 401: AWDParser.UINT8,\r\n 402: AWDParser.UINT8,\r\n 601: AWDParser.COLOR,\r\n 602: AWDParser.COLOR,\r\n 701: AWDParser.BOOL,\r\n 702: AWDParser.BOOL,\r\n 801: AWDParser.MTX4x4\r\n};\r\nAWDParser.commandProperties = {\r\n 1: AWDParser.BADDR\r\n};\r\nAWDParser.targetProperties = {\r\n 1: AWDParser.MATRIX_NUMBER,\r\n 2: AWDParser.MATRIX_NUMBER,\r\n 3: AWDParser.MATRIX_NUMBER,\r\n 4: AWDParser.UINT8\r\n};\r\nAWDParser.metaDataProperties = {\r\n 1: AWDParser.UINT32,\r\n 2: AWDParser.AWDSTRING,\r\n 3: AWDParser.AWDSTRING,\r\n 4: AWDParser.AWDSTRING,\r\n 5: AWDParser.AWDSTRING\r\n};\r\nAWDParser.vertexAnimationSetProperties = {\r\n 1: AWDParser.UINT16\r\n};\r\nAWDParser.animatorSetProperties = { 1: AWDParser.BADDR };\r\nvar ElementType = (function () {\r\n function ElementType() {\r\n }\r\n return ElementType;\r\n}());\r\nElementType.STANDART_STREAMS = 0;\r\nElementType.CONCENATED_STREAMS = 1;\r\nElementType.SHARED_BUFFER = 2;\r\nElementType.CONCATENATED_SUBGEO = 3;\r\nElementType.SHARED_INDEXBUFFER = 4;\r\nElementType.CONCENATED_STREAMS_UINT16 = 5;\r\nElementType.STROKE_DATA = 6;\r\nvar AWDProperties = (function () {\r\n function AWDProperties() {\r\n }\r\n AWDProperties.prototype.set = function (key, value) {\r\n this[key] = value;\r\n };\r\n AWDProperties.prototype.get = function (key, fallback) {\r\n return this.hasOwnProperty(key.toString()) ? this[key] : fallback;\r\n };\r\n return AWDProperties;\r\n}());\r\n/**\r\n *\r\n */\r\nvar BitFlags = (function () {\r\n function BitFlags() {\r\n }\r\n BitFlags.test = function (flags, testFlag) {\r\n return (flags & testFlag) == testFlag;\r\n };\r\n return BitFlags;\r\n}());\r\nBitFlags.FLAG1 = 1;\r\nBitFlags.FLAG2 = 2;\r\nBitFlags.FLAG3 = 4;\r\nBitFlags.FLAG4 = 8;\r\nBitFlags.FLAG5 = 16;\r\nBitFlags.FLAG6 = 32;\r\nBitFlags.FLAG7 = 64;\r\nBitFlags.FLAG8 = 128;\r\nBitFlags.FLAG9 = 256;\r\nBitFlags.FLAG10 = 512;\r\nBitFlags.FLAG11 = 1024;\r\nBitFlags.FLAG12 = 2048;\r\nBitFlags.FLAG13 = 4096;\r\nBitFlags.FLAG14 = 8192;\r\nBitFlags.FLAG15 = 16384;\r\nBitFlags.FLAG16 = 32768;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/AWDParser.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesBuffer, Matrix3D, Vector3D, URLLoaderDataFormat, URLRequest, ParserBase, ParserUtils } from \"@awayjs/core\";\r\nimport { Shape, BitmapImage2D, TriangleElements, DefaultMaterialManager, Single2DTexture } from \"@awayjs/graphics\";\r\nimport { DisplayObjectContainer, Sprite } from \"@awayjs/scene\";\r\nimport { MethodMaterial, MethodMaterialMode } from \"@awayjs/materials\";\r\n/**\r\n * Max3DSParser provides a parser for the 3ds data type.\r\n */\r\nvar Max3DSParser = (function (_super) {\r\n tslib_1.__extends(Max3DSParser, _super);\r\n /**\r\n * Creates a new Max3DSParser object.\r\n *\r\n * @param useSmoothingGroups Determines whether the parser looks for smoothing groups in the 3ds file or assumes uniform smoothing. Defaults to true.\r\n */\r\n function Max3DSParser(useSmoothingGroups) {\r\n if (useSmoothingGroups === void 0) { useSmoothingGroups = true; }\r\n var _this = _super.call(this, URLLoaderDataFormat.ARRAY_BUFFER) || this;\r\n _this._useSmoothingGroups = useSmoothingGroups;\r\n return _this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n Max3DSParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"3ds\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n Max3DSParser.supportsData = function (data) {\r\n var ba;\r\n try {\r\n //TODO!!!: crashes when trying to check against AudioData\r\n ba = ParserUtils.toByteArray(data);\r\n if (ba) {\r\n ba.position = 0;\r\n if (ba.readShort() == 0x4d4d)\r\n return true;\r\n }\r\n }\r\n catch (err) {\r\n return false;\r\n }\r\n return false;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Max3DSParser.prototype._iResolveDependency = function (resourceDependency) {\r\n if (resourceDependency.assets.length == 1) {\r\n var asset;\r\n asset = resourceDependency.assets[0];\r\n if (asset.isAsset(BitmapImage2D)) {\r\n var tex;\r\n tex = this._textures[resourceDependency.id];\r\n tex.texture = new Single2DTexture(asset);\r\n }\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Max3DSParser.prototype._iResolveDependencyFailure = function (resourceDependency) {\r\n // TODO: Implement\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Max3DSParser.prototype._pProceedParsing = function () {\r\n if (!this._byteData) {\r\n this._byteData = this._pGetByteData();\r\n this._byteData.position = 0;\r\n //----------------------------------------------------------------------------\r\n // LITTLE_ENDIAN - Default for ArrayBuffer / Not implemented in ByteArray\r\n //----------------------------------------------------------------------------\r\n //this._byteData.endian = Endian.LITTLE_ENDIAN;// Should be default\r\n //----------------------------------------------------------------------------\r\n this._textures = {};\r\n this._materials = {};\r\n this._unfinalized_objects = {};\r\n }\r\n // TODO: With this construct, the loop will run no-op for as long\r\n // as there is time once file has finished reading. Consider a nice\r\n // way to stop loop when byte array is empty, without putting it in\r\n // the while-conditional, which will prevent finalizations from\r\n // happening after the last chunk.\r\n while (this._pHasTime()) {\r\n // If we are currently working on an object, and the most recent chunk was\r\n // the last one in that object, finalize the current object.\r\n if (this._cur_mat && this._byteData.position >= this._cur_mat_end)\r\n this.finalizeCurrentMaterial();\r\n else if (this._cur_obj && this._byteData.position >= this._cur_obj_end) {\r\n // Can't finalize at this point, because we have to wait until the full\r\n // animation section has been parsed for any potential pivot definitions\r\n this._unfinalized_objects[this._cur_obj.name] = this._cur_obj;\r\n this._cur_obj_end = Number.MAX_VALUE /*uint*/;\r\n this._cur_obj = null;\r\n }\r\n if (this._byteData.getBytesAvailable() > 0) {\r\n var cid /*uint*/;\r\n var len /*uint*/;\r\n var end /*uint*/;\r\n cid = this._byteData.readUnsignedShort();\r\n len = this._byteData.readUnsignedInt();\r\n end = this._byteData.position + (len - 6);\r\n switch (cid) {\r\n case 0x4D4D: // MAIN3DS\r\n case 0x3D3D: // EDIT3DS\r\n case 0xB000:\r\n // This types are \"container chunks\" and contain only\r\n // sub-chunks (no data on their own.) This means that\r\n // there is nothing more to parse at this point, and\r\n // instead we should progress to the next chunk, which\r\n // will be the first sub-chunk of this one.\r\n continue;\r\n case 0xAFFF:\r\n this._cur_mat_end = end;\r\n this._cur_mat = this.parseMaterial();\r\n break;\r\n case 0x4000:\r\n this._cur_obj_end = end;\r\n this._cur_obj = new ObjectVO();\r\n this._cur_obj.name = this.readNulTermstring();\r\n this._cur_obj.materials = new Array();\r\n this._cur_obj.materialFaces = {};\r\n break;\r\n case 0x4100:\r\n this._cur_obj.type = Sprite.assetType;\r\n break;\r\n case 0x4110:\r\n this.parseVertexList();\r\n break;\r\n case 0x4120:\r\n this.parseFaceList();\r\n break;\r\n case 0x4140:\r\n this.parseUVList();\r\n break;\r\n case 0x4130:\r\n this.parseFaceMaterialList();\r\n break;\r\n case 0x4160:\r\n this._cur_obj.transform = this.readTransform();\r\n break;\r\n case 0xB002:\r\n this.parseObjectAnimation(end);\r\n break;\r\n case 0x4150:\r\n this.parseSmoothingGroups();\r\n break;\r\n default:\r\n // Skip this (unknown) chunk\r\n this._byteData.position += (len - 6);\r\n break;\r\n }\r\n // Pause parsing if there were any dependencies found during this\r\n // iteration (i.e. if there are any dependencies that need to be\r\n // retrieved at this time.)\r\n if (this.dependencies.length) {\r\n this._pPauseAndRetrieveDependencies();\r\n break;\r\n }\r\n }\r\n }\r\n // More parsing is required if the entire byte array has not yet\r\n // been read, or if there is a currently non-finalized object in\r\n // the pipeline.\r\n if (this._byteData.getBytesAvailable() || this._cur_obj || this._cur_mat) {\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n else {\r\n var name;\r\n // Finalize any remaining objects before ending.\r\n for (name in this._unfinalized_objects) {\r\n var obj;\r\n obj = this.constructObject(this._unfinalized_objects[name]);\r\n if (obj) {\r\n //add to the content property\r\n this._pContent.addChild(obj);\r\n this._pFinalizeAsset(obj, name);\r\n }\r\n }\r\n return ParserBase.PARSING_DONE;\r\n }\r\n };\r\n Max3DSParser.prototype._pStartParsing = function (frameLimit) {\r\n //create a content object for Loaders\r\n this._pContent = new DisplayObjectContainer();\r\n _super.prototype._pStartParsing.call(this, frameLimit);\r\n };\r\n Max3DSParser.prototype.parseMaterial = function () {\r\n var mat;\r\n mat = new MaterialVO();\r\n while (this._byteData.position < this._cur_mat_end) {\r\n var cid /*uint*/;\r\n var len /*uint*/;\r\n var end /*uint*/;\r\n cid = this._byteData.readUnsignedShort();\r\n len = this._byteData.readUnsignedInt();\r\n end = this._byteData.position + (len - 6);\r\n switch (cid) {\r\n case 0xA000:\r\n mat.name = this.readNulTermstring();\r\n break;\r\n case 0xA010:\r\n mat.ambientColor = this.readColor();\r\n break;\r\n case 0xA020:\r\n mat.diffuseColor = this.readColor();\r\n break;\r\n case 0xA030:\r\n mat.specularColor = this.readColor();\r\n break;\r\n case 0xA081:\r\n mat.twoSided = true;\r\n break;\r\n case 0xA200:\r\n mat.colorMap = this.parseTexture(end);\r\n break;\r\n case 0xA204:\r\n mat.specularMap = this.parseTexture(end);\r\n break;\r\n default:\r\n this._byteData.position = end;\r\n break;\r\n }\r\n }\r\n return mat;\r\n };\r\n Max3DSParser.prototype.parseTexture = function (end /*uint*/) {\r\n var tex;\r\n tex = new TextureVO();\r\n while (this._byteData.position < end) {\r\n var cid /*uint*/;\r\n var len /*uint*/;\r\n cid = this._byteData.readUnsignedShort();\r\n len = this._byteData.readUnsignedInt();\r\n switch (cid) {\r\n case 0xA300:\r\n tex.url = this.readNulTermstring();\r\n break;\r\n default:\r\n // Skip this unknown texture sub-chunk\r\n this._byteData.position += (len - 6);\r\n break;\r\n }\r\n }\r\n this._textures[tex.url] = tex;\r\n this._pAddDependency(tex.url, new URLRequest(tex.url));\r\n return tex;\r\n };\r\n Max3DSParser.prototype.parseVertexList = function () {\r\n var i /*uint*/;\r\n var len /*uint*/;\r\n var count /*uint*/;\r\n count = this._byteData.readUnsignedShort();\r\n this._cur_obj.verts = new Array(count * 3);\r\n i = 0;\r\n len = this._cur_obj.verts.length;\r\n while (i < len) {\r\n var x, y, z;\r\n x = this._byteData.readFloat();\r\n y = this._byteData.readFloat();\r\n z = this._byteData.readFloat();\r\n this._cur_obj.verts[i++] = x;\r\n this._cur_obj.verts[i++] = z;\r\n this._cur_obj.verts[i++] = y;\r\n }\r\n };\r\n Max3DSParser.prototype.parseFaceList = function () {\r\n var i /*uint*/;\r\n var len /*uint*/;\r\n var count /*uint*/;\r\n count = this._byteData.readUnsignedShort();\r\n this._cur_obj.indices = new Array(count * 3) /*uint*/;\r\n i = 0;\r\n len = this._cur_obj.indices.length;\r\n while (i < len) {\r\n var i0 /*uint*/, i1 /*uint*/, i2 /*uint*/;\r\n i0 = this._byteData.readUnsignedShort();\r\n i1 = this._byteData.readUnsignedShort();\r\n i2 = this._byteData.readUnsignedShort();\r\n this._cur_obj.indices[i++] = i0;\r\n this._cur_obj.indices[i++] = i2;\r\n this._cur_obj.indices[i++] = i1;\r\n // Skip \"face info\", irrelevant in Away3D\r\n this._byteData.position += 2;\r\n }\r\n this._cur_obj.smoothingGroups = new Array(count) /*uint*/;\r\n };\r\n Max3DSParser.prototype.parseSmoothingGroups = function () {\r\n var len = this._cur_obj.indices.length / 3;\r\n var i = 0;\r\n while (i < len) {\r\n this._cur_obj.smoothingGroups[i] = this._byteData.readUnsignedInt();\r\n i++;\r\n }\r\n };\r\n Max3DSParser.prototype.parseUVList = function () {\r\n var i /*uint*/;\r\n var len /*uint*/;\r\n var count /*uint*/;\r\n count = this._byteData.readUnsignedShort();\r\n this._cur_obj.uvs = new Array(count * 2);\r\n i = 0;\r\n len = this._cur_obj.uvs.length;\r\n while (i < len) {\r\n this._cur_obj.uvs[i++] = this._byteData.readFloat();\r\n this._cur_obj.uvs[i++] = 1.0 - this._byteData.readFloat();\r\n }\r\n };\r\n Max3DSParser.prototype.parseFaceMaterialList = function () {\r\n var mat;\r\n var count /*uint*/;\r\n var i /*uint*/;\r\n var faces /*uint*/;\r\n mat = this.readNulTermstring();\r\n count = this._byteData.readUnsignedShort();\r\n faces = new Array(count) /*uint*/;\r\n i = 0;\r\n while (i < faces.length)\r\n faces[i++] = this._byteData.readUnsignedShort();\r\n this._cur_obj.materials.push(mat);\r\n this._cur_obj.materialFaces[mat] = faces;\r\n };\r\n Max3DSParser.prototype.parseObjectAnimation = function (end) {\r\n var vo;\r\n var obj;\r\n var pivot;\r\n var name;\r\n var hier /*uint*/;\r\n // Pivot defaults to origin\r\n pivot = new Vector3D;\r\n while (this._byteData.position < end) {\r\n var cid /*uint*/;\r\n var len /*uint*/;\r\n cid = this._byteData.readUnsignedShort();\r\n len = this._byteData.readUnsignedInt();\r\n switch (cid) {\r\n case 0xb010:\r\n name = this.readNulTermstring();\r\n this._byteData.position += 4;\r\n hier = this._byteData.readShort();\r\n break;\r\n case 0xb013:\r\n pivot.x = this._byteData.readFloat();\r\n pivot.z = this._byteData.readFloat();\r\n pivot.y = this._byteData.readFloat();\r\n break;\r\n default:\r\n this._byteData.position += (len - 6);\r\n break;\r\n }\r\n }\r\n // If name is \"$$$DUMMY\" this is an empty object (e.g. a container)\r\n // and will be ignored in this version of the parser\r\n // TODO: Implement containers in 3DS parser.\r\n if (name != '$$$DUMMY' && this._unfinalized_objects.hasOwnProperty(name)) {\r\n vo = this._unfinalized_objects[name];\r\n obj = this.constructObject(vo, pivot);\r\n if (obj) {\r\n //add to the content property\r\n this._pContent.addChild(obj);\r\n this._pFinalizeAsset(obj, vo.name);\r\n }\r\n delete this._unfinalized_objects[name];\r\n }\r\n };\r\n Max3DSParser.prototype.constructObject = function (obj, pivot) {\r\n if (pivot === void 0) { pivot = null; }\r\n if (obj.type == Sprite.assetType) {\r\n var i /*uint*/;\r\n var sub;\r\n var graphics;\r\n var mat;\r\n var sprite;\r\n var mtx;\r\n var vertices;\r\n var faces;\r\n if (obj.materials.length > 1)\r\n console.log(\"The Away3D 3DS parser does not support multiple materials per sprite at this point.\");\r\n // Ignore empty objects\r\n if (!obj.indices || obj.indices.length == 0)\r\n return null;\r\n vertices = new Array(obj.verts.length / 3);\r\n faces = new Array(obj.indices.length / 3);\r\n this.prepareData(vertices, faces, obj);\r\n if (this._useSmoothingGroups)\r\n this.applySmoothGroups(vertices, faces);\r\n obj.verts = new Array(vertices.length * 3);\r\n for (i = 0; i < vertices.length; i++) {\r\n obj.verts[i * 3] = vertices[i].x;\r\n obj.verts[i * 3 + 1] = vertices[i].y;\r\n obj.verts[i * 3 + 2] = vertices[i].z;\r\n }\r\n obj.indices = new Array(faces.length * 3) /*uint*/;\r\n for (i = 0; i < faces.length; i++) {\r\n obj.indices[i * 3] = faces[i].a;\r\n obj.indices[i * 3 + 1] = faces[i].b;\r\n obj.indices[i * 3 + 2] = faces[i].c;\r\n }\r\n if (obj.uvs) {\r\n // If the object had UVs to start with, use UVs generated by\r\n // smoothing group splitting algorithm. Otherwise those UVs\r\n // will be nonsense and should be skipped.\r\n obj.uvs = new Array(vertices.length * 2);\r\n for (i = 0; i < vertices.length; i++) {\r\n obj.uvs[i * 2] = vertices[i].u;\r\n obj.uvs[i * 2 + 1] = vertices[i].v;\r\n }\r\n }\r\n if (obj.materials.length > 0) {\r\n var mname;\r\n mname = obj.materials[0];\r\n mat = this._materials[mname].material;\r\n }\r\n // Build sprite and return it\r\n sprite = new Sprite(mat);\r\n sprite.transform.matrix3D = new Matrix3D(obj.transform);\r\n graphics = sprite.graphics;\r\n // Construct elements (potentially splitting buffers)\r\n // and add them to graphics.\r\n sub = new TriangleElements(new AttributesBuffer());\r\n sub.setIndices(obj.indices);\r\n sub.setPositions(obj.verts);\r\n sub.setUVs(obj.uvs);\r\n graphics.addShape(new Shape(sub));\r\n // Apply pivot translation to graphics if a pivot was\r\n // found while parsing the keyframe chunk earlier.\r\n if (pivot) {\r\n if (obj.transform) {\r\n // If a transform was found while parsing the\r\n // object chunk, use it to find the local pivot vector\r\n mtx = new Matrix3D();\r\n mtx.copyRawDataFrom(obj.transform);\r\n mtx._rawData[12] = 0;\r\n mtx._rawData[13] = 0;\r\n mtx._rawData[14] = 0;\r\n pivot = mtx.transformVector(pivot);\r\n }\r\n pivot.scaleBy(-1);\r\n mtx = new Matrix3D();\r\n mtx.appendTranslation(pivot.x, pivot.y, pivot.z);\r\n graphics.applyTransformation(mtx);\r\n }\r\n // Apply transformation to graphics if a transformation\r\n // was found while parsing the object chunk earlier.\r\n if (obj.transform) {\r\n mtx = new Matrix3D();\r\n mtx.copyRawDataFrom(obj.transform);\r\n mtx.invert();\r\n graphics.applyTransformation(mtx);\r\n }\r\n // Final transform applied to graphics. Finalize the graphics,\r\n // which will no longer be modified after this point.\r\n this._pFinalizeAsset(graphics, obj.name.concat('_graphics'));\r\n return sprite;\r\n }\r\n // If reached, unknown\r\n return null;\r\n };\r\n Max3DSParser.prototype.prepareData = function (vertices, faces, obj) {\r\n // convert raw ObjectVO's data to structured VertexVO and FaceVO\r\n var i /*int*/;\r\n var j /*int*/;\r\n var k /*int*/;\r\n var len = obj.verts.length;\r\n for (i = 0, j = 0, k = 0; i < len;) {\r\n var v = new VertexVO;\r\n v.x = obj.verts[i++];\r\n v.y = obj.verts[i++];\r\n v.z = obj.verts[i++];\r\n if (obj.uvs) {\r\n v.u = obj.uvs[j++];\r\n v.v = obj.uvs[j++];\r\n }\r\n vertices[k++] = v;\r\n }\r\n len = obj.indices.length;\r\n for (i = 0, k = 0; i < len;) {\r\n var f = new FaceVO();\r\n f.a = obj.indices[i++];\r\n f.b = obj.indices[i++];\r\n f.c = obj.indices[i++];\r\n f.smoothGroup = obj.smoothingGroups[k] || 0;\r\n faces[k++] = f;\r\n }\r\n };\r\n Max3DSParser.prototype.applySmoothGroups = function (vertices, faces) {\r\n // clone vertices according to following rule:\r\n // clone if vertex's in faces from groups 1+2 and 3\r\n // don't clone if vertex's in faces from groups 1+2, 3 and 1+3\r\n var i /*int*/;\r\n var j /*int*/;\r\n var k /*int*/;\r\n var l /*int*/;\r\n var len /*int*/;\r\n var numVerts = vertices.length;\r\n var numFaces = faces.length;\r\n // extract groups data for vertices\r\n var vGroups = new Array(numVerts) /*uint*/;\r\n for (i = 0; i < numVerts; i++)\r\n vGroups[i] = new Array() /*uint*/;\r\n for (i = 0; i < numFaces; i++) {\r\n var face = faces[i];\r\n for (j = 0; j < 3; j++) {\r\n var groups = vGroups[(j == 0) ? face.a : ((j == 1) ? face.b : face.c)];\r\n var group = face.smoothGroup;\r\n for (k = groups.length - 1; k >= 0; k--) {\r\n if ((group & groups[k]) > 0) {\r\n group |= groups[k];\r\n groups.splice(k, 1);\r\n k = groups.length - 1;\r\n }\r\n }\r\n groups.push(group);\r\n }\r\n }\r\n // clone vertices\r\n var vClones = new Array(numVerts) /*uint*/;\r\n for (i = 0; i < numVerts; i++) {\r\n if ((len = vGroups[i].length) < 1)\r\n continue;\r\n var clones = new Array(len) /*uint*/;\r\n vClones[i] = clones;\r\n clones[0] = i;\r\n var v0 = vertices[i];\r\n for (j = 1; j < len; j++) {\r\n var v1 = new VertexVO;\r\n v1.x = v0.x;\r\n v1.y = v0.y;\r\n v1.z = v0.z;\r\n v1.u = v0.u;\r\n v1.v = v0.v;\r\n clones[j] = vertices.length;\r\n vertices.push(v1);\r\n }\r\n }\r\n numVerts = vertices.length;\r\n for (i = 0; i < numFaces; i++) {\r\n face = faces[i];\r\n group = face.smoothGroup;\r\n for (j = 0; j < 3; j++) {\r\n k = (j == 0) ? face.a : ((j == 1) ? face.b : face.c);\r\n groups = vGroups[k];\r\n len = groups.length;\r\n clones = vClones[k];\r\n for (l = 0; l < len; l++) {\r\n if (((group == 0) && (groups[l] == 0)) || ((group & groups[l]) > 0)) {\r\n var index = clones[l];\r\n if (group == 0) {\r\n // vertex is unique if no smoothGroup found\r\n groups.splice(l, 1);\r\n clones.splice(l, 1);\r\n }\r\n if (j == 0)\r\n face.a = index;\r\n else if (j == 1)\r\n face.b = index;\r\n else\r\n face.c = index;\r\n l = len;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n Max3DSParser.prototype.finalizeCurrentMaterial = function () {\r\n var mat;\r\n mat = new MethodMaterial(this._cur_mat.ambientColor);\r\n if (this._cur_mat.colorMap)\r\n mat.ambientMethod.texture = this._cur_mat.colorMap.texture || DefaultMaterialManager.getDefaultTexture();\r\n mat.diffuseMethod.color = this._cur_mat.diffuseColor;\r\n mat.specularMethod.color = this._cur_mat.specularColor;\r\n if (this.materialMode >= 2)\r\n mat.mode = MethodMaterialMode.MULTI_PASS;\r\n mat.bothSides = this._cur_mat.twoSided;\r\n this._pFinalizeAsset(mat, this._cur_mat.name);\r\n this._materials[this._cur_mat.name] = this._cur_mat;\r\n this._cur_mat.material = mat;\r\n this._cur_mat = null;\r\n };\r\n Max3DSParser.prototype.readNulTermstring = function () {\r\n var chr /*int*/;\r\n var str = \"\";\r\n while ((chr = this._byteData.readUnsignedByte()) > 0)\r\n str += String.fromCharCode(chr);\r\n return str;\r\n };\r\n Max3DSParser.prototype.readTransform = function () {\r\n var data = new Float32Array(16);\r\n // X axis\r\n data[0] = this._byteData.readFloat(); // X\r\n data[2] = this._byteData.readFloat(); // Z\r\n data[1] = this._byteData.readFloat(); // Y\r\n data[3] = 0;\r\n // Z axis\r\n data[8] = this._byteData.readFloat(); // X\r\n data[10] = this._byteData.readFloat(); // Z\r\n data[9] = this._byteData.readFloat(); // Y\r\n data[11] = 0;\r\n // Y Axis\r\n data[4] = this._byteData.readFloat(); // X\r\n data[6] = this._byteData.readFloat(); // Z\r\n data[5] = this._byteData.readFloat(); // Y\r\n data[7] = 0;\r\n // Translation\r\n data[12] = this._byteData.readFloat(); // X\r\n data[14] = this._byteData.readFloat(); // Z\r\n data[13] = this._byteData.readFloat(); // Y\r\n data[15] = 1;\r\n return data;\r\n };\r\n Max3DSParser.prototype.readColor = function () {\r\n var cid /*int*/;\r\n var len /*int*/;\r\n var r /*int*/, g /*int*/, b /*int*/;\r\n cid = this._byteData.readUnsignedShort();\r\n len = this._byteData.readUnsignedInt();\r\n switch (cid) {\r\n case 0x0010:\r\n r = this._byteData.readFloat() * 255;\r\n g = this._byteData.readFloat() * 255;\r\n b = this._byteData.readFloat() * 255;\r\n break;\r\n case 0x0011:\r\n r = this._byteData.readUnsignedByte();\r\n g = this._byteData.readUnsignedByte();\r\n b = this._byteData.readUnsignedByte();\r\n break;\r\n default:\r\n this._byteData.position += (len - 6);\r\n break;\r\n }\r\n return (r << 16) | (g << 8) | b;\r\n };\r\n return Max3DSParser;\r\n}(ParserBase));\r\nexport { Max3DSParser };\r\n/**\r\n *\r\n */\r\nvar FaceVO = (function () {\r\n function FaceVO() {\r\n }\r\n return FaceVO;\r\n}());\r\nexport { FaceVO };\r\n/**\r\n *\r\n */\r\nvar MaterialVO = (function () {\r\n function MaterialVO() {\r\n }\r\n return MaterialVO;\r\n}());\r\nexport { MaterialVO };\r\n/**\r\n *\r\n */\r\nvar ObjectVO = (function () {\r\n function ObjectVO() {\r\n }\r\n return ObjectVO;\r\n}());\r\nexport { ObjectVO };\r\n/**\r\n *\r\n */\r\nvar TextureVO = (function () {\r\n function TextureVO() {\r\n }\r\n return TextureVO;\r\n}());\r\nexport { TextureVO };\r\n/**\r\n *\r\n */\r\nvar VertexVO = (function () {\r\n function VertexVO() {\r\n }\r\n return VertexVO;\r\n}());\r\nexport { VertexVO };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/Max3DSParser.js","import * as tslib_1 from \"tslib\";\r\nimport { URLLoaderDataFormat, URLRequest, ParserBase, ParserUtils, XmlUtils } from \"@awayjs/core\";\r\nimport { Sampler2D } from \"@awayjs/graphics\";\r\nimport { BitmapFontTable, Font } from \"@awayjs/scene\";\r\nimport { MethodMaterial } from \"@awayjs/materials\";\r\n/**\r\n * TextureAtlasParser provides a \"parser\" for natively supported image types (jpg, png). While it simply loads bytes into\r\n * a loader object, it wraps it in a BitmapImage2DResource so resource management can happen consistently without\r\n * exception cases.\r\n */\r\nvar FNTParser = (function (_super) {\r\n tslib_1.__extends(FNTParser, _super);\r\n /**\r\n * Creates a new TextureAtlasParser object.\r\n * @param uri The url or id of the data or file to be parsed.\r\n * @param extra The holder for extra contextual data that the parser might need.\r\n */\r\n function FNTParser() {\r\n var _this = _super.call(this, URLLoaderDataFormat.TEXT) || this;\r\n _this._parseState = 0;\r\n return _this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n FNTParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"fnt\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n FNTParser.supportsData = function (data) {\r\n try {\r\n var content = ParserUtils.toString(data);\r\n if (content.indexOf(\"font\") != -1 || content.indexOf(\"Font\") != -1) {\r\n //console.log(\"supportsData fnt\");\r\n return true;\r\n }\r\n return false;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n FNTParser.prototype._iResolveDependency = function (resourceDependency) {\r\n if (resourceDependency.assets.length) {\r\n var asset = resourceDependency.assets[0];\r\n asset.width = this._bitmapFontTable.texture_width;\r\n asset.height = this._bitmapFontTable.texture_height;\r\n var mat = new MethodMaterial(asset);\r\n mat.bothSides = true;\r\n mat.alphaBlending = true;\r\n mat.useColorTransform = true;\r\n mat.style.sampler = new Sampler2D(false, true, true);\r\n this._bitmapFontTable.addMaterial(mat);\r\n this._pFinalizeAsset(resourceDependency.assets[0]);\r\n this._pFinalizeAsset(mat);\r\n this._parseState = FNTParserState.PARSE_CHARS;\r\n }\r\n else {\r\n this._parseState = FNTParserState.PARSE_COMPLETE;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n FNTParser.prototype._iResolveDependencyFailure = function (resourceDependency) {\r\n this._parseState = FNTParserState.PARSE_COMPLETE;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n FNTParser.prototype._pProceedParsing = function () {\r\n var nodes;\r\n switch (this._parseState) {\r\n case FNTParserState.PARSE_XML:\r\n try {\r\n this._doc = XmlUtils.getChildrenWithTag(XmlUtils.strToXml(this._pGetTextData()), \"font\")[0];\r\n var page_node = XmlUtils.getChildrenWithTag(this._doc, \"pages\")[0];\r\n var all_pages = XmlUtils.getChildrenWithTag(page_node, \"page\");\r\n var len = all_pages.length;\r\n // todo: correctly support multiple pages\r\n for (var i = 0; i < len; i++) {\r\n this._imagePath = XmlUtils.readAttributeValue(all_pages[i], \"file\");\r\n }\r\n var char_node = XmlUtils.getChildrenWithTag(this._doc, \"chars\")[0];\r\n this._chars = XmlUtils.getChildrenWithTag(char_node, \"char\");\r\n this._parseState = FNTParserState.PARSE_IMAGE;\r\n var info_node = XmlUtils.getChildrenWithTag(this._doc, \"info\")[0];\r\n var common_node = XmlUtils.getChildrenWithTag(this._doc, \"common\")[0];\r\n var font_name = XmlUtils.readAttributeValue(info_node, \"face\");\r\n //this._font = AssetLibrary.getAsset(font_name);\r\n //if(this._font==undefined){\r\n this._font = new Font();\r\n this._font.name = font_name;\r\n //}\r\n var bold = XmlUtils.readAttributeValue(info_node, \"bold\");\r\n if (bold != \"0\")\r\n font_name += \"_bold\";\r\n var italic = XmlUtils.readAttributeValue(info_node, \"italic\");\r\n if (italic != \"0\")\r\n font_name += \"_italic\";\r\n this._bitmapFontTable = this._font.get_font_table(font_name, BitmapFontTable.assetType);\r\n var size = XmlUtils.readAttributeValue(info_node, \"size\");\r\n this._bitmapFontTable._init_size = parseInt(size);\r\n var scaleH = XmlUtils.readAttributeValue(common_node, \"scaleH\");\r\n this._bitmapFontTable.texture_height = parseInt(scaleH);\r\n var scaleW = XmlUtils.readAttributeValue(common_node, \"scaleW\");\r\n this._bitmapFontTable.texture_width = parseInt(scaleW);\r\n var adjustSize = XmlUtils.readAttributeValue(common_node, \"adjustSize\");\r\n if (adjustSize != \"\")\r\n this._bitmapFontTable._adjust_size = parseFloat(adjustSize);\r\n }\r\n catch (Error) {\r\n return ParserBase.PARSING_DONE;\r\n }\r\n break;\r\n case FNTParserState.PARSE_IMAGE:\r\n if (this._imagePath) {\r\n this._pAddDependency(this._imagePath, new URLRequest(this._imagePath));\r\n this._pPauseAndRetrieveDependencies();\r\n }\r\n else {\r\n return ParserBase.PARSING_DONE;\r\n }\r\n break;\r\n case FNTParserState.PARSE_CHARS:\r\n var element;\r\n var x, y, width, height, xoff, yoff, xadv, page, chnl;\r\n var id;\r\n var len = this._chars.length;\r\n for (var i = 0; i < len; i++) {\r\n element = this._chars[i];\r\n x = parseInt(XmlUtils.readAttributeValue(element, \"x\"));\r\n y = parseInt(XmlUtils.readAttributeValue(element, \"y\"));\r\n width = parseInt(XmlUtils.readAttributeValue(element, \"width\"));\r\n height = parseInt(XmlUtils.readAttributeValue(element, \"height\"));\r\n xoff = parseInt(XmlUtils.readAttributeValue(element, \"xoffset\"));\r\n yoff = parseInt(XmlUtils.readAttributeValue(element, \"yoffset\"));\r\n xadv = parseInt(XmlUtils.readAttributeValue(element, \"xadvance\"));\r\n page = parseInt(XmlUtils.readAttributeValue(element, \"page\"));\r\n chnl = parseInt(XmlUtils.readAttributeValue(element, \"chnl\"));\r\n id = XmlUtils.readAttributeValue(element, \"id\");\r\n this._bitmapFontTable.setChar(id, x, y, width, height, xoff, yoff, xadv, page, chnl);\r\n }\r\n this._pFinalizeAsset(this._font, this._font.name);\r\n this._parseState = FNTParserState.PARSE_COMPLETE;\r\n break;\r\n case FNTParserState.PARSE_COMPLETE:\r\n return ParserBase.PARSING_DONE;\r\n }\r\n return ParserBase.MORE_TO_PARSE;\r\n };\r\n return FNTParser;\r\n}(ParserBase));\r\nexport { FNTParser };\r\nvar FNTParserState = (function () {\r\n function FNTParserState() {\r\n }\r\n return FNTParserState;\r\n}());\r\nFNTParserState.PARSE_XML = 0;\r\nFNTParserState.PARSE_IMAGE = 1;\r\nFNTParserState.PARSE_CHARS = 2;\r\nFNTParserState.PARSE_COMPLETE = 3;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/FNTParser.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetLibrary, URLLoaderDataFormat, ParserBase, ParserUtils } from \"@awayjs/core\";\r\nimport { Font, TesselatedFontTable } from \"@awayjs/scene\";\r\nvar opentype;\r\n/**\r\n * FontParser should parse Fonts into TesselatedFontTable for usage with webGL, or just load the Font as css class for usage with canvas and no webGL\r\n */\r\nvar FontParser = (function (_super) {\r\n tslib_1.__extends(FontParser, _super);\r\n /**\r\n * Creates a new TextureAtlasParser object.\r\n * @param uri The url or id of the data or file to be parsed.\r\n * @param extra The holder for extra contextual data that the parser might need.\r\n */\r\n function FontParser(useWebGL) {\r\n if (useWebGL === void 0) { useWebGL = true; }\r\n var _this = _super.call(this, URLLoaderDataFormat.ARRAY_BUFFER) || this;\r\n _this._useWebGL = false;\r\n _this._useWebGL = useWebGL;\r\n return _this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n FontParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n var supports = ((extension == \"ttf\") || (extension == \"otf\"));\r\n if (supports) {\r\n console.log(\"FontParse encountered file with supported extension: = \" + extension);\r\n }\r\n return ((extension == \"ttf\") || (extension == \"otf\"));\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n FontParser.supportsData = function (data) {\r\n console.log(\"ParserFont = \" + ParserUtils.toString(data, 20));\r\n try {\r\n /*\r\n var content:string = ParserUtils.toString(data);\r\n if(content.indexOf(\"font\") != -1 || content.indexOf(\"Font\") != -1){\r\n console.log(\"supportsData fnt\");\r\n return true;\r\n\r\n }\r\n */\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n FontParser.prototype._iResolveDependency = function (resourceDependency) {\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n FontParser.prototype._iResolveDependencyFailure = function (resourceDependency) {\r\n };\r\n FontParser.prototype.sortKeys = function (dict) {\r\n var keys = [];\r\n for (var key in dict) {\r\n keys.push(key);\r\n }\r\n keys.sort();\r\n return keys;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n FontParser.prototype._pProceedParsing = function () {\r\n //console.log(\"proceed parsing = \"+this._iFileName);\r\n opentype = window[\"opentype\"];\r\n if (opentype) {\r\n //console.log(\"parsing font = \"+this._iFileName+\" / bytelength = \"+this._pGetByteData().getBytesAvailable());\r\n var font_name = \"\";\r\n var font_style_name = \"\";\r\n var font = opentype.parse(this.data);\r\n var tablename, table, property, value, fontname;\r\n var head = font.tables.head;\r\n /*\r\n */\r\n for (tablename in font.tables) {\r\n table = font.tables[tablename];\r\n if (tablename == 'name') {\r\n var properties = this.sortKeys(table);\r\n for (var i = 0; i < properties.length; i++) {\r\n var property = properties[i];\r\n var translations = table[property];\r\n var langs = this.sortKeys(translations);\r\n for (var j = 0; j < langs.length; j++) {\r\n var lang = langs[j];\r\n if (property == \"fontFamily\") {\r\n font_name = translations[lang];\r\n }\r\n else if (property == \"fontSubfamily\") {\r\n font_style_name = translations[lang];\r\n }\r\n console.log(\" \" + property + \": \" + lang + \" : \" + translations[lang]);\r\n }\r\n }\r\n }\r\n }\r\n if (font_name == \"\") {\r\n console.log(\"FontParser.ts '\" + this._iFileName + \"': Could not read fontname !!!\");\r\n }\r\n if (font_style_name == \"\") {\r\n console.log(\"FontParser.ts '\" + this._iFileName + \"': Could not read font_style_name !!!\");\r\n }\r\n var new_font = AssetLibrary.getAsset(font_name);\r\n var newfont = false;\r\n if (new_font == undefined) {\r\n new_font = new Font();\r\n newfont = true;\r\n }\r\n new_font.name = font_name;\r\n var new_font_style = new_font.get_font_table(font_style_name, TesselatedFontTable.assetType, font);\r\n }\r\n if (document) {\r\n var s = document.createElement('style');\r\n s.type = \"text/css\";\r\n document.getElementsByTagName('head')[0].appendChild(s);\r\n s.style.cssText = \"@font-face {\\\r\n\t\t\t\t\tfont-family: ''\" + this._iFileName + \"';\\\r\n\t\t\t\t\tsrc: url('\" + this._iFileName + \"');\\\r\n\t\t\t\t\t};\";\r\n }\r\n this._pFinalizeAsset(new_font, new_font.name);\r\n return ParserBase.PARSING_DONE;\r\n };\r\n return FontParser;\r\n}(ParserBase));\r\nexport { FontParser };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/FontParser.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesBuffer, URLLoaderDataFormat, URLRequest, ParserBase, ParserUtils } from \"@awayjs/core\";\r\nimport { Graphics, Shape, TriangleElements, DefaultMaterialManager } from \"@awayjs/graphics\";\r\nimport { DisplayObjectContainer, Sprite } from \"@awayjs/scene\";\r\nimport { VertexClipNode, VertexAnimationSet } from \"@awayjs/renderer\";\r\nimport { MethodMaterial, MethodMaterialMode } from \"@awayjs/materials\";\r\n/**\r\n * MD2Parser provides a parser for the MD2 data type.\r\n */\r\nvar MD2Parser = (function (_super) {\r\n tslib_1.__extends(MD2Parser, _super);\r\n /**\r\n * Creates a new MD2Parser object.\r\n * @param textureType The extension of the texture (e.g. jpg/png/...)\r\n * @param ignoreTexturePath If true, the path of the texture is ignored\r\n */\r\n function MD2Parser(textureType, ignoreTexturePath) {\r\n if (textureType === void 0) { textureType = \"jpg\"; }\r\n if (ignoreTexturePath === void 0) { ignoreTexturePath = true; }\r\n var _this = _super.call(this, URLLoaderDataFormat.ARRAY_BUFFER) || this;\r\n _this._clipNodes = new Object();\r\n // the current elements being built\r\n _this._animationSet = new VertexAnimationSet();\r\n _this.materialFinal = false;\r\n _this.graphicsCreated = false;\r\n _this._textureType = textureType;\r\n _this._ignoreTexturePath = ignoreTexturePath;\r\n return _this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n MD2Parser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"md2\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n MD2Parser.supportsData = function (data) {\r\n return (ParserUtils.toString(data, 4) == 'IDP2');\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MD2Parser.prototype._iResolveDependency = function (resourceDependency) {\r\n if (resourceDependency.assets.length != 1)\r\n return;\r\n var material = new MethodMaterial(resourceDependency.assets[0]);\r\n if (this.materialMode >= 2)\r\n material.mode = MethodMaterialMode.MULTI_PASS;\r\n //add to the content property\r\n this._pContent.addChild(this._sprite);\r\n material.name = this._sprite.material.name;\r\n this._sprite.material = material;\r\n this._pFinalizeAsset(material);\r\n this._pFinalizeAsset(this._sprite.graphics);\r\n this._pFinalizeAsset(this._sprite);\r\n this.materialFinal = true;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MD2Parser.prototype._iResolveDependencyFailure = function (resourceDependency) {\r\n // apply system default\r\n if (this.materialMode < 2) {\r\n this._sprite.material = DefaultMaterialManager.getDefaultMaterial();\r\n }\r\n else {\r\n this._sprite.material = new MethodMaterial(DefaultMaterialManager.getDefaultImage2D());\r\n this._sprite.material.mode = MethodMaterialMode.MULTI_PASS;\r\n }\r\n //add to the content property\r\n this._pContent.addChild(this._sprite);\r\n this._pFinalizeAsset(this._sprite.graphics);\r\n this._pFinalizeAsset(this._sprite);\r\n this.materialFinal = true;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MD2Parser.prototype._pProceedParsing = function () {\r\n if (!this._startedParsing) {\r\n this._byteData = this._pGetByteData();\r\n this._startedParsing = true;\r\n // Reset bytearray read position (which may have been\r\n // moved forward by the supportsData() function.)\r\n this._byteData.position = 0;\r\n }\r\n while (this._pHasTime()) {\r\n if (!this._parsedHeader) {\r\n //----------------------------------------------------------------------------\r\n // LITTLE_ENDIAN - Default for ArrayBuffer / Not implemented in ByteArray\r\n //----------------------------------------------------------------------------\r\n //this._byteData.endian = Endian.LITTLE_ENDIAN;\r\n // TODO: Create a sprite only when encountered (if it makes sense\r\n // for this file format) and return it using this._pFinalizeAsset()\r\n this._sprite = new Sprite();\r\n this._graphics = this._sprite.graphics;\r\n if (this.materialMode < 2) {\r\n this._sprite.material = DefaultMaterialManager.getDefaultMaterial();\r\n }\r\n else {\r\n this._sprite.material = new MethodMaterial(DefaultMaterialManager.getDefaultImage2D());\r\n this._sprite.material.mode = MethodMaterialMode.MULTI_PASS;\r\n }\r\n //_graphics.animation = new VertexAnimation(2, VertexAnimationMode.ABSOLUTE);\r\n //_animator = new VertexAnimator(VertexAnimationState(_sprite.animationState));\r\n // Parse header and decompress body\r\n this.parseHeader();\r\n this.parseMaterialNames();\r\n }\r\n else if (!this._parsedUV) {\r\n this.parseUV();\r\n }\r\n else if (!this._parsedFaces) {\r\n this.parseFaces();\r\n }\r\n else if (!this._parsedFrames) {\r\n this.parseFrames();\r\n }\r\n else if ((this.graphicsCreated) && (this.materialFinal)) {\r\n return ParserBase.PARSING_DONE;\r\n }\r\n else if (!this.graphicsCreated) {\r\n this.graphicsCreated = true;\r\n //create default subgraphics\r\n this._graphics.addShape(new Shape(this._firstElements.clone()));\r\n // Force name to be chosen by this._pFinalizeAsset()\r\n this._sprite.name = \"\";\r\n if (this.materialFinal) {\r\n //add to the content property\r\n this._pContent.addChild(this._sprite);\r\n this._pFinalizeAsset(this._sprite.graphics);\r\n this._pFinalizeAsset(this._sprite);\r\n }\r\n this._pPauseAndRetrieveDependencies();\r\n }\r\n }\r\n return ParserBase.MORE_TO_PARSE;\r\n };\r\n MD2Parser.prototype._pStartParsing = function (frameLimit) {\r\n //create a content object for Loaders\r\n this._pContent = new DisplayObjectContainer();\r\n _super.prototype._pStartParsing.call(this, frameLimit);\r\n };\r\n /**\r\n * Reads in all that MD2 Header data that is declared as private variables.\r\n * I know its a lot, and it looks ugly, but only way to do it in Flash\r\n */\r\n MD2Parser.prototype.parseHeader = function () {\r\n this._ident = this._byteData.readInt();\r\n this._version = this._byteData.readInt();\r\n this._skinWidth = this._byteData.readInt();\r\n this._skinHeight = this._byteData.readInt();\r\n //skip this._frameSize\r\n this._byteData.readInt();\r\n this._numSkins = this._byteData.readInt();\r\n this._numVertices = this._byteData.readInt();\r\n this._numST = this._byteData.readInt();\r\n this._numTris = this._byteData.readInt();\r\n //skip this._numGlCmds\r\n this._byteData.readInt();\r\n this._numFrames = this._byteData.readInt();\r\n this._offsetSkins = this._byteData.readInt();\r\n this._offsetST = this._byteData.readInt();\r\n this._offsetTris = this._byteData.readInt();\r\n this._offsetFrames = this._byteData.readInt();\r\n //skip this._offsetGlCmds\r\n this._byteData.readInt();\r\n this._offsetEnd = this._byteData.readInt();\r\n this._parsedHeader = true;\r\n };\r\n /**\r\n * Parses the file names for the materials.\r\n */\r\n MD2Parser.prototype.parseMaterialNames = function () {\r\n var url;\r\n var name;\r\n var extIndex /*int*/;\r\n var slashIndex /*int*/;\r\n this._materialNames = new Array();\r\n this._byteData.position = this._offsetSkins;\r\n var regExp = new RegExp(\"[^a-zA-Z0-9\\\\_\\/.]\", \"g\");\r\n for (var i = 0; i < this._numSkins; ++i) {\r\n name = this._byteData.readUTFBytes(64);\r\n name = name.replace(regExp, \"\");\r\n extIndex = name.lastIndexOf(\".\");\r\n if (this._ignoreTexturePath)\r\n slashIndex = name.lastIndexOf(\"/\");\r\n if (name.toLowerCase().indexOf(\".jpg\") == -1 && name.toLowerCase().indexOf(\".png\") == -1) {\r\n name = name.substring(slashIndex + 1, extIndex);\r\n url = name + \".\" + this._textureType;\r\n }\r\n else {\r\n url = name;\r\n }\r\n this._materialNames[i] = name;\r\n // only support 1 skin TODO: really?\r\n if (this.dependencies.length == 0)\r\n this._pAddDependency(name, new URLRequest(url));\r\n }\r\n if (this._materialNames.length > 0)\r\n this._sprite.material.name = this._materialNames[0];\r\n else\r\n this.materialFinal = true;\r\n };\r\n /**\r\n * Parses the uv data for the sprite.\r\n */\r\n MD2Parser.prototype.parseUV = function () {\r\n var j = 0;\r\n this._uvs = new Array(this._numST * 2);\r\n this._byteData.position = this._offsetST;\r\n for (var i = 0; i < this._numST; i++) {\r\n this._uvs[j++] = this._byteData.readShort() / this._skinWidth;\r\n this._uvs[j++] = this._byteData.readShort() / this._skinHeight;\r\n }\r\n this._parsedUV = true;\r\n };\r\n /**\r\n * Parses unique indices for the faces.\r\n */\r\n MD2Parser.prototype.parseFaces = function () {\r\n var a /*uint*/, b /*uint*/, c /*uint*/, ta /*uint*/, tb /*uint*/, tc /*uint*/;\r\n var i /*uint*/;\r\n this._vertIndices = new Array();\r\n this._uvIndices = new Array();\r\n this._indices = new Array() /*uint*/;\r\n this._byteData.position = this._offsetTris;\r\n for (i = 0; i < this._numTris; i++) {\r\n //collect vertex indices\r\n a = this._byteData.readUnsignedShort();\r\n b = this._byteData.readUnsignedShort();\r\n c = this._byteData.readUnsignedShort();\r\n //collect uv indices\r\n ta = this._byteData.readUnsignedShort();\r\n tb = this._byteData.readUnsignedShort();\r\n tc = this._byteData.readUnsignedShort();\r\n this.addIndex(a, ta);\r\n this.addIndex(b, tb);\r\n this.addIndex(c, tc);\r\n }\r\n var len = this._uvIndices.length;\r\n this._finalUV = new Array(len * 2);\r\n for (i = 0; i < len; ++i) {\r\n this._finalUV[i << 1] = this._uvs[this._uvIndices[i] << 1];\r\n this._finalUV[(i << 1) + 1] = this._uvs[(this._uvIndices[i] << 1) + 1];\r\n }\r\n this._parsedFaces = true;\r\n };\r\n /**\r\n * Adds a face index to the list if it doesn't exist yet, based on vertexIndex and uvIndex, and adds the\r\n * corresponding vertex and uv data in the correct location.\r\n * @param vertexIndex The original index in the vertex list.\r\n * @param uvIndex The original index in the uv list.\r\n */\r\n MD2Parser.prototype.addIndex = function (vertexIndex /*uint*/, uvIndex /*uint*/) {\r\n var index = this.findIndex(vertexIndex, uvIndex);\r\n if (index == -1) {\r\n this._indices.push(this._vertIndices.length);\r\n this._vertIndices.push(vertexIndex);\r\n this._uvIndices.push(uvIndex);\r\n }\r\n else\r\n this._indices.push(index);\r\n };\r\n /**\r\n * Finds the final index corresponding to the original MD2's vertex and uv indices. Returns -1 if it wasn't added yet.\r\n * @param vertexIndex The original index in the vertex list.\r\n * @param uvIndex The original index in the uv list.\r\n * @return The index of the final sprite corresponding to the original vertex and uv index. -1 if it doesn't exist yet.\r\n */\r\n MD2Parser.prototype.findIndex = function (vertexIndex /*uint*/, uvIndex /*uint*/) {\r\n var len = this._vertIndices.length;\r\n for (var i = 0; i < len; ++i) {\r\n if (this._vertIndices[i] == vertexIndex && this._uvIndices[i] == uvIndex)\r\n return i;\r\n }\r\n return -1;\r\n };\r\n /**\r\n * Parses all the frame elements.\r\n */\r\n MD2Parser.prototype.parseFrames = function () {\r\n var sx, sy, sz;\r\n var tx, ty, tz;\r\n var graphics;\r\n var elements;\r\n var vertLen = this._vertIndices.length;\r\n var fvertices;\r\n var tvertices;\r\n var i /*uint*/, j /*int*/, k /*uint*/;\r\n //var ch : number /*uint*/;\r\n var name = \"\";\r\n var prevClip = null;\r\n this._byteData.position = this._offsetFrames;\r\n for (i = 0; i < this._numFrames; i++) {\r\n tvertices = new Array();\r\n fvertices = new Array(vertLen * 3);\r\n sx = this._byteData.readFloat();\r\n sy = this._byteData.readFloat();\r\n sz = this._byteData.readFloat();\r\n tx = this._byteData.readFloat();\r\n ty = this._byteData.readFloat();\r\n tz = this._byteData.readFloat();\r\n name = this.readFrameName();\r\n // Note, the extra data.position++ in the for loop is there\r\n // to skip over a byte that holds the \"vertex normal index\"\r\n for (j = 0; j < this._numVertices; j++, this._byteData.position++)\r\n tvertices.push(sx * this._byteData.readUnsignedByte() + tx, sy * this._byteData.readUnsignedByte() + ty, sz * this._byteData.readUnsignedByte() + tz);\r\n k = 0;\r\n for (j = 0; j < vertLen; j++) {\r\n fvertices[k++] = tvertices[this._vertIndices[j] * 3];\r\n fvertices[k++] = tvertices[this._vertIndices[j] * 3 + 2];\r\n fvertices[k++] = tvertices[this._vertIndices[j] * 3 + 1];\r\n }\r\n elements = new TriangleElements(new AttributesBuffer());\r\n elements.setIndices(this._indices);\r\n elements.setPositions(fvertices);\r\n elements.setUVs(this._finalUV);\r\n // cause explicit updates\r\n elements.setNormals(null);\r\n elements.setTangents(null);\r\n // turn auto updates off because they may be animated and set explicitly\r\n elements.autoDeriveNormals = false;\r\n elements.autoDeriveTangents = false;\r\n if (this._firstElements == null)\r\n this._firstElements = elements;\r\n graphics = new Graphics();\r\n graphics.addShape(new Shape(elements));\r\n var clip = this._clipNodes[name];\r\n if (!clip) {\r\n // If another sequence was parsed before this one, starting\r\n // a new state means the previous one is complete and can\r\n // hence be finalized.\r\n if (prevClip) {\r\n this._pFinalizeAsset(prevClip);\r\n this._animationSet.addAnimation(prevClip);\r\n }\r\n clip = new VertexClipNode();\r\n clip.name = name;\r\n clip.stitchFinalFrame = true;\r\n this._clipNodes[name] = clip;\r\n prevClip = clip;\r\n }\r\n clip.addFrame(graphics, 1000 / MD2Parser.FPS);\r\n }\r\n // Finalize the last state\r\n if (prevClip) {\r\n this._pFinalizeAsset(prevClip);\r\n this._animationSet.addAnimation(prevClip);\r\n }\r\n // Force this._pFinalizeAsset() to decide name\r\n this._pFinalizeAsset(this._animationSet);\r\n this._parsedFrames = true;\r\n };\r\n MD2Parser.prototype.readFrameName = function () {\r\n var name = \"\";\r\n var k = 0;\r\n for (var j = 0; j < 16; j++) {\r\n var ch = this._byteData.readUnsignedByte();\r\n if (Math.floor(ch) > 0x39 && Math.floor(ch) <= 0x7A && k == 0)\r\n name += String.fromCharCode(ch);\r\n if (Math.floor(ch) >= 0x30 && Math.floor(ch) <= 0x39)\r\n k++;\r\n }\r\n return name;\r\n };\r\n return MD2Parser;\r\n}(ParserBase));\r\nexport { MD2Parser };\r\nMD2Parser.FPS = 6;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/MD2Parser.js","import * as tslib_1 from \"tslib\";\r\nimport { Quaternion, Vector3D, URLLoaderDataFormat, ParserBase } from \"@awayjs/core\";\r\nimport { JointPose, SkeletonPose, SkeletonClipNode } from \"@awayjs/renderer\";\r\n/**\r\n * MD5AnimParser provides a parser for the md5anim data type, providing an animation sequence for the md5 format.\r\n *\r\n * todo: optimize\r\n */\r\nvar MD5AnimParser = (function (_super) {\r\n tslib_1.__extends(MD5AnimParser, _super);\r\n /**\r\n * Creates a new MD5AnimParser object.\r\n * @param uri The url or id of the data or file to be parsed.\r\n * @param extra The holder for extra contextual data that the parser might need.\r\n */\r\n function MD5AnimParser(additionalRotationAxis, additionalRotationRadians) {\r\n if (additionalRotationAxis === void 0) { additionalRotationAxis = null; }\r\n if (additionalRotationRadians === void 0) { additionalRotationRadians = 0; }\r\n var _this = _super.call(this, URLLoaderDataFormat.TEXT) || this;\r\n _this._parseIndex = 0;\r\n _this._line = 0;\r\n _this._charLineIndex = 0;\r\n _this._rotationQuat = new Quaternion();\r\n var t1 = new Quaternion();\r\n var t2 = new Quaternion();\r\n t1.fromAxisAngle(Vector3D.X_AXIS, -Math.PI * .5);\r\n t2.fromAxisAngle(Vector3D.Y_AXIS, -Math.PI * .5);\r\n _this._rotationQuat.multiply(t2, t1);\r\n if (additionalRotationAxis) {\r\n _this._rotationQuat.multiply(t2, t1);\r\n t1.fromAxisAngle(additionalRotationAxis, additionalRotationRadians);\r\n _this._rotationQuat.multiply(t1, _this._rotationQuat);\r\n }\r\n return _this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n MD5AnimParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"md5anim\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n MD5AnimParser.supportsData = function (data) {\r\n return false;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MD5AnimParser.prototype._pProceedParsing = function () {\r\n var token;\r\n if (!this._startedParsing) {\r\n this._textData = this._pGetTextData();\r\n this._startedParsing = true;\r\n }\r\n while (this._pHasTime()) {\r\n token = this.getNextToken();\r\n switch (token) {\r\n case MD5AnimParser.COMMENT_TOKEN:\r\n this.ignoreLine();\r\n break;\r\n case \"\":\r\n // can occur at the end of a file\r\n break;\r\n case MD5AnimParser.VERSION_TOKEN:\r\n this._version = this.getNextInt();\r\n if (this._version != 10)\r\n throw new Error(\"Unknown version number encountered!\");\r\n break;\r\n case MD5AnimParser.COMMAND_LINE_TOKEN:\r\n this.parseCMD();\r\n break;\r\n case MD5AnimParser.NUM_FRAMES_TOKEN:\r\n this._numFrames = this.getNextInt();\r\n this._bounds = new Array();\r\n this._frameData = new Array();\r\n break;\r\n case MD5AnimParser.NUM_JOINTS_TOKEN:\r\n this._numJoints = this.getNextInt();\r\n this._hierarchy = new Array(this._numJoints);\r\n this._baseFrameData = new Array(this._numJoints);\r\n break;\r\n case MD5AnimParser.FRAME_RATE_TOKEN:\r\n this._frameRate = this.getNextInt();\r\n break;\r\n case MD5AnimParser.NUM_ANIMATED_COMPONENTS_TOKEN:\r\n this._numAnimatedComponents = this.getNextInt();\r\n break;\r\n case MD5AnimParser.HIERARCHY_TOKEN:\r\n this.parseHierarchy();\r\n break;\r\n case MD5AnimParser.BOUNDS_TOKEN:\r\n this.parseBounds();\r\n break;\r\n case MD5AnimParser.BASE_FRAME_TOKEN:\r\n this.parseBaseFrame();\r\n break;\r\n case MD5AnimParser.FRAME_TOKEN:\r\n this.parseFrame();\r\n break;\r\n default:\r\n if (!this._reachedEOF)\r\n this.sendUnknownKeywordError();\r\n }\r\n if (this._reachedEOF) {\r\n this._clip = new SkeletonClipNode();\r\n this.translateClip();\r\n this._pFinalizeAsset(this._clip);\r\n return ParserBase.PARSING_DONE;\r\n }\r\n }\r\n return ParserBase.MORE_TO_PARSE;\r\n };\r\n /**\r\n * Converts all key frame data to an SkinnedAnimationSequence.\r\n */\r\n MD5AnimParser.prototype.translateClip = function () {\r\n for (var i = 0; i < this._numFrames; ++i)\r\n this._clip.addFrame(this.translatePose(this._frameData[i]), 1000 / this._frameRate);\r\n };\r\n /**\r\n * Converts a single key frame data to a SkeletonPose.\r\n * @param frameData The actual frame data.\r\n * @return A SkeletonPose containing the frame data's pose.\r\n */\r\n MD5AnimParser.prototype.translatePose = function (frameData) {\r\n var hierarchy;\r\n var pose;\r\n var base;\r\n var flags /*int*/;\r\n var j /*int*/;\r\n var translate = new Vector3D();\r\n var orientation = new Quaternion();\r\n var components = frameData.components;\r\n var skelPose = new SkeletonPose();\r\n var jointPoses = skelPose.jointPoses;\r\n for (var i = 0; i < this._numJoints; ++i) {\r\n j = 0;\r\n pose = new JointPose();\r\n hierarchy = this._hierarchy[i];\r\n base = this._baseFrameData[i];\r\n flags = hierarchy.flags;\r\n translate.x = base.position.x;\r\n translate.y = base.position.y;\r\n translate.z = base.position.z;\r\n orientation.x = base.orientation.x;\r\n orientation.y = base.orientation.y;\r\n orientation.z = base.orientation.z;\r\n if (flags & 1)\r\n translate.x = components[hierarchy.startIndex + (j++)];\r\n if (flags & 2)\r\n translate.y = components[hierarchy.startIndex + (j++)];\r\n if (flags & 4)\r\n translate.z = components[hierarchy.startIndex + (j++)];\r\n if (flags & 8)\r\n orientation.x = components[hierarchy.startIndex + (j++)];\r\n if (flags & 16)\r\n orientation.y = components[hierarchy.startIndex + (j++)];\r\n if (flags & 32)\r\n orientation.z = components[hierarchy.startIndex + (j++)];\r\n var w = 1 - orientation.x * orientation.x - orientation.y * orientation.y - orientation.z * orientation.z;\r\n orientation.w = w < 0 ? 0 : -Math.sqrt(w);\r\n if (hierarchy.parentIndex < 0) {\r\n pose.orientation.multiply(this._rotationQuat, orientation);\r\n pose.translation = this._rotationQuat.rotatePoint(translate);\r\n }\r\n else {\r\n pose.orientation.copyFrom(orientation);\r\n pose.translation.x = translate.x;\r\n pose.translation.y = translate.y;\r\n pose.translation.z = translate.z;\r\n }\r\n pose.orientation.y = -pose.orientation.y;\r\n pose.orientation.z = -pose.orientation.z;\r\n pose.translation.x = -pose.translation.x;\r\n jointPoses[i] = pose;\r\n }\r\n return skelPose;\r\n };\r\n /**\r\n * Parses the skeleton's hierarchy data.\r\n */\r\n MD5AnimParser.prototype.parseHierarchy = function () {\r\n var ch;\r\n var data;\r\n var token = this.getNextToken();\r\n var i = 0;\r\n if (token != \"{\")\r\n this.sendUnknownKeywordError();\r\n do {\r\n if (this._reachedEOF)\r\n this.sendEOFError();\r\n data = new HierarchyData();\r\n data.name = this.parseLiteralstring();\r\n data.parentIndex = this.getNextInt();\r\n data.flags = this.getNextInt();\r\n data.startIndex = this.getNextInt();\r\n this._hierarchy[i++] = data;\r\n ch = this.getNextChar();\r\n if (ch == \"/\") {\r\n this.putBack();\r\n ch = this.getNextToken();\r\n if (ch == MD5AnimParser.COMMENT_TOKEN)\r\n this.ignoreLine();\r\n ch = this.getNextChar();\r\n }\r\n if (ch != \"}\")\r\n this.putBack();\r\n } while (ch != \"}\");\r\n };\r\n /**\r\n * Parses frame bounds.\r\n */\r\n MD5AnimParser.prototype.parseBounds = function () {\r\n var ch;\r\n var data;\r\n var token = this.getNextToken();\r\n var i = 0;\r\n if (token != \"{\")\r\n this.sendUnknownKeywordError();\r\n do {\r\n if (this._reachedEOF)\r\n this.sendEOFError();\r\n data = new BoundsData();\r\n data.min = this.parseVector3D();\r\n data.max = this.parseVector3D();\r\n this._bounds[i++] = data;\r\n ch = this.getNextChar();\r\n if (ch == \"/\") {\r\n this.putBack();\r\n ch = this.getNextToken();\r\n if (ch == MD5AnimParser.COMMENT_TOKEN)\r\n this.ignoreLine();\r\n ch = this.getNextChar();\r\n }\r\n if (ch != \"}\")\r\n this.putBack();\r\n } while (ch != \"}\");\r\n };\r\n /**\r\n * Parses the base frame.\r\n */\r\n MD5AnimParser.prototype.parseBaseFrame = function () {\r\n var ch;\r\n var data;\r\n var token = this.getNextToken();\r\n var i = 0;\r\n if (token != \"{\")\r\n this.sendUnknownKeywordError();\r\n do {\r\n if (this._reachedEOF)\r\n this.sendEOFError();\r\n data = new BaseFrameData();\r\n data.position = this.parseVector3D();\r\n data.orientation = this.parseQuaternion();\r\n this._baseFrameData[i++] = data;\r\n ch = this.getNextChar();\r\n if (ch == \"/\") {\r\n this.putBack();\r\n ch = this.getNextToken();\r\n if (ch == MD5AnimParser.COMMENT_TOKEN)\r\n this.ignoreLine();\r\n ch = this.getNextChar();\r\n }\r\n if (ch != \"}\")\r\n this.putBack();\r\n } while (ch != \"}\");\r\n };\r\n /**\r\n * Parses a single frame.\r\n */\r\n MD5AnimParser.prototype.parseFrame = function () {\r\n var ch;\r\n var data;\r\n var token;\r\n var frameIndex /*int*/;\r\n frameIndex = this.getNextInt();\r\n token = this.getNextToken();\r\n if (token != \"{\")\r\n this.sendUnknownKeywordError();\r\n do {\r\n if (this._reachedEOF)\r\n this.sendEOFError();\r\n data = new FrameData();\r\n data.components = new Array(this._numAnimatedComponents);\r\n for (var i = 0; i < this._numAnimatedComponents; ++i)\r\n data.components[i] = this.getNextNumber();\r\n this._frameData[frameIndex] = data;\r\n ch = this.getNextChar();\r\n if (ch == \"/\") {\r\n this.putBack();\r\n ch = this.getNextToken();\r\n if (ch == MD5AnimParser.COMMENT_TOKEN)\r\n this.ignoreLine();\r\n ch = this.getNextChar();\r\n }\r\n if (ch != \"}\")\r\n this.putBack();\r\n } while (ch != \"}\");\r\n };\r\n /**\r\n * Puts back the last read character into the data stream.\r\n */\r\n MD5AnimParser.prototype.putBack = function () {\r\n this._parseIndex--;\r\n this._charLineIndex--;\r\n this._reachedEOF = this._parseIndex >= this._textData.length;\r\n };\r\n /**\r\n * Gets the next token in the data stream.\r\n */\r\n MD5AnimParser.prototype.getNextToken = function () {\r\n var ch;\r\n var token = \"\";\r\n while (!this._reachedEOF) {\r\n ch = this.getNextChar();\r\n if (ch == \" \" || ch == \"\\r\" || ch == \"\\n\" || ch == \"\\t\") {\r\n if (token != MD5AnimParser.COMMENT_TOKEN)\r\n this.skipWhiteSpace();\r\n if (token != \"\")\r\n return token;\r\n }\r\n else\r\n token += ch;\r\n if (token == MD5AnimParser.COMMENT_TOKEN)\r\n return token;\r\n }\r\n return token;\r\n };\r\n /**\r\n * Skips all whitespace in the data stream.\r\n */\r\n MD5AnimParser.prototype.skipWhiteSpace = function () {\r\n var ch;\r\n do\r\n ch = this.getNextChar();\r\n while (ch == \"\\n\" || ch == \" \" || ch == \"\\r\" || ch == \"\\t\");\r\n this.putBack();\r\n };\r\n /**\r\n * Skips to the next line.\r\n */\r\n MD5AnimParser.prototype.ignoreLine = function () {\r\n var ch;\r\n while (!this._reachedEOF && ch != \"\\n\")\r\n ch = this.getNextChar();\r\n };\r\n /**\r\n * Retrieves the next single character in the data stream.\r\n */\r\n MD5AnimParser.prototype.getNextChar = function () {\r\n var ch = this._textData.charAt(this._parseIndex++);\r\n if (ch == \"\\n\") {\r\n ++this._line;\r\n this._charLineIndex = 0;\r\n }\r\n else if (ch != \"\\r\")\r\n ++this._charLineIndex;\r\n if (this._parseIndex == this._textData.length)\r\n this._reachedEOF = true;\r\n return ch;\r\n };\r\n /**\r\n * Retrieves the next integer in the data stream.\r\n */\r\n MD5AnimParser.prototype.getNextInt = function () {\r\n var i = parseInt(this.getNextToken());\r\n if (isNaN(i))\r\n this.sendParseError(\"int type\");\r\n return i;\r\n };\r\n /**\r\n * Retrieves the next floating point number in the data stream.\r\n */\r\n MD5AnimParser.prototype.getNextNumber = function () {\r\n var f = parseFloat(this.getNextToken());\r\n if (isNaN(f))\r\n this.sendParseError(\"float type\");\r\n return f;\r\n };\r\n /**\r\n * Retrieves the next 3d vector in the data stream.\r\n */\r\n MD5AnimParser.prototype.parseVector3D = function () {\r\n var vec = new Vector3D();\r\n var ch = this.getNextToken();\r\n if (ch != \"(\")\r\n this.sendParseError(\"(\");\r\n vec.x = this.getNextNumber();\r\n vec.y = this.getNextNumber();\r\n vec.z = this.getNextNumber();\r\n if (this.getNextToken() != \")\")\r\n this.sendParseError(\")\");\r\n return vec;\r\n };\r\n /**\r\n * Retrieves the next quaternion in the data stream.\r\n */\r\n MD5AnimParser.prototype.parseQuaternion = function () {\r\n var quat = new Quaternion();\r\n var ch = this.getNextToken();\r\n if (ch != \"(\")\r\n this.sendParseError(\"(\");\r\n quat.x = this.getNextNumber();\r\n quat.y = this.getNextNumber();\r\n quat.z = this.getNextNumber();\r\n // quat supposed to be unit length\r\n var t = 1 - (quat.x * quat.x) - (quat.y * quat.y) - (quat.z * quat.z);\r\n quat.w = t < 0 ? 0 : -Math.sqrt(t);\r\n if (this.getNextToken() != \")\")\r\n this.sendParseError(\")\");\r\n return quat;\r\n };\r\n /**\r\n * Parses the command line data.\r\n */\r\n MD5AnimParser.prototype.parseCMD = function () {\r\n // just ignore the command line property\r\n this.parseLiteralstring();\r\n };\r\n /**\r\n * Retrieves the next literal string in the data stream. A literal string is a sequence of characters bounded\r\n * by double quotes.\r\n */\r\n MD5AnimParser.prototype.parseLiteralstring = function () {\r\n this.skipWhiteSpace();\r\n var ch = this.getNextChar();\r\n var str = \"\";\r\n if (ch != \"\\\"\")\r\n this.sendParseError(\"\\\"\");\r\n do {\r\n if (this._reachedEOF)\r\n this.sendEOFError();\r\n ch = this.getNextChar();\r\n if (ch != \"\\\"\")\r\n str += ch;\r\n } while (ch != \"\\\"\");\r\n return str;\r\n };\r\n /**\r\n * Throws an end-of-file error when a premature end of file was encountered.\r\n */\r\n MD5AnimParser.prototype.sendEOFError = function () {\r\n throw new Error(\"Unexpected end of file\");\r\n };\r\n /**\r\n * Throws an error when an unexpected token was encountered.\r\n * @param expected The token type that was actually expected.\r\n */\r\n MD5AnimParser.prototype.sendParseError = function (expected) {\r\n throw new Error(\"Unexpected token at line \" + (this._line + 1) + \", character \" + this._charLineIndex + \". \" + expected + \" expected, but \" + this._textData.charAt(this._parseIndex - 1) + \" encountered\");\r\n };\r\n /**\r\n * Throws an error when an unknown keyword was encountered.\r\n */\r\n MD5AnimParser.prototype.sendUnknownKeywordError = function () {\r\n throw new Error(\"Unknown keyword at line \" + (this._line + 1) + \", character \" + this._charLineIndex + \". \");\r\n };\r\n return MD5AnimParser;\r\n}(ParserBase));\r\nexport { MD5AnimParser };\r\nMD5AnimParser.VERSION_TOKEN = \"MD5Version\";\r\nMD5AnimParser.COMMAND_LINE_TOKEN = \"commandline\";\r\nMD5AnimParser.NUM_FRAMES_TOKEN = \"numFrames\";\r\nMD5AnimParser.NUM_JOINTS_TOKEN = \"numJoints\";\r\nMD5AnimParser.FRAME_RATE_TOKEN = \"frameRate\";\r\nMD5AnimParser.NUM_ANIMATED_COMPONENTS_TOKEN = \"numAnimatedComponents\";\r\nMD5AnimParser.HIERARCHY_TOKEN = \"hierarchy\";\r\nMD5AnimParser.BOUNDS_TOKEN = \"bounds\";\r\nMD5AnimParser.BASE_FRAME_TOKEN = \"baseframe\";\r\nMD5AnimParser.FRAME_TOKEN = \"frame\";\r\nMD5AnimParser.COMMENT_TOKEN = \"//\";\r\n/**\r\n *\r\n */\r\nvar BaseFrameData = (function () {\r\n function BaseFrameData() {\r\n }\r\n return BaseFrameData;\r\n}());\r\nexport { BaseFrameData };\r\n/**\r\n *\r\n */\r\nvar BoundsData = (function () {\r\n function BoundsData() {\r\n }\r\n return BoundsData;\r\n}());\r\nexport { BoundsData };\r\n/**\r\n *\r\n */\r\nvar FrameData = (function () {\r\n function FrameData() {\r\n }\r\n return FrameData;\r\n}());\r\nexport { FrameData };\r\n/**\r\n *\r\n */\r\nvar HierarchyData = (function () {\r\n function HierarchyData() {\r\n }\r\n return HierarchyData;\r\n}());\r\nexport { HierarchyData };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/MD5AnimParser.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesBuffer, Quaternion, Vector3D, URLLoaderDataFormat, ParserBase } from \"@awayjs/core\";\r\nimport { Shape, TriangleElements } from \"@awayjs/graphics\";\r\nimport { DisplayObjectContainer, Sprite } from \"@awayjs/scene\";\r\nimport { SkeletonAnimationSet, Skeleton, SkeletonJoint } from \"@awayjs/renderer\";\r\n// todo: create animation system, parse skeleton\r\n/**\r\n * MD5MeshParser provides a parser for the md5mesh data type, providing the graphics of the md5 format.\r\n *\r\n * todo: optimize\r\n */\r\nvar MD5MeshParser = (function (_super) {\r\n tslib_1.__extends(MD5MeshParser, _super);\r\n /**\r\n * Creates a new MD5MeshParser object.\r\n */\r\n function MD5MeshParser(additionalRotationAxis, additionalRotationRadians) {\r\n if (additionalRotationAxis === void 0) { additionalRotationAxis = null; }\r\n if (additionalRotationRadians === void 0) { additionalRotationRadians = 0; }\r\n var _this = _super.call(this, URLLoaderDataFormat.TEXT) || this;\r\n _this._parseIndex = 0;\r\n _this._line = 0;\r\n _this._charLineIndex = 0;\r\n _this._rotationQuat = new Quaternion();\r\n _this._rotationQuat.fromAxisAngle(Vector3D.X_AXIS, -Math.PI * .5);\r\n if (additionalRotationAxis) {\r\n var quat = new Quaternion();\r\n quat.fromAxisAngle(additionalRotationAxis, additionalRotationRadians);\r\n _this._rotationQuat.multiply(_this._rotationQuat, quat);\r\n }\r\n return _this;\r\n }\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n MD5MeshParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"md5sprite\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n MD5MeshParser.supportsData = function (data) {\r\n return false;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MD5MeshParser.prototype._pProceedParsing = function () {\r\n var token;\r\n if (!this._startedParsing) {\r\n this._textData = this._pGetTextData();\r\n this._startedParsing = true;\r\n }\r\n while (this._pHasTime()) {\r\n token = this.getNextToken();\r\n switch (token) {\r\n case MD5MeshParser.COMMENT_TOKEN:\r\n this.ignoreLine();\r\n break;\r\n case MD5MeshParser.VERSION_TOKEN:\r\n this._version = this.getNextInt();\r\n if (this._version != 10)\r\n throw new Error(\"Unknown version number encountered!\");\r\n break;\r\n case MD5MeshParser.COMMAND_LINE_TOKEN:\r\n this.parseCMD();\r\n break;\r\n case MD5MeshParser.NUM_JOINTS_TOKEN:\r\n this._numJoints = this.getNextInt();\r\n this._bindPoses = new Array(this._numJoints);\r\n break;\r\n case MD5MeshParser.NUM_MESHES_TOKEN:\r\n this._numMeshes = this.getNextInt();\r\n break;\r\n case MD5MeshParser.JOINTS_TOKEN:\r\n this.parseJoints();\r\n break;\r\n case MD5MeshParser.MESH_TOKEN:\r\n this.parseMesh();\r\n break;\r\n default:\r\n if (!this._reachedEOF)\r\n this.sendUnknownKeywordError();\r\n }\r\n if (this._reachedEOF) {\r\n this.calculateMaxJointCount();\r\n this._animationSet = new SkeletonAnimationSet(this._maxJointCount);\r\n this._sprite = new Sprite();\r\n this._graphics = this._sprite.graphics;\r\n for (var i = 0; i < this._elementsData.length; ++i)\r\n this._graphics.addShape(new Shape(this.translateElements(this._elementsData[i].positionData, this._elementsData[i].weightData, this._elementsData[i].indices)));\r\n //_graphics.animation = _animation;\r\n //\t\t\t\t\t_sprite.animationController = _animationController;\r\n //add to the content property\r\n this._pContent.addChild(this._sprite);\r\n this._pFinalizeAsset(this._graphics);\r\n this._pFinalizeAsset(this._sprite);\r\n this._pFinalizeAsset(this._skeleton);\r\n this._pFinalizeAsset(this._animationSet);\r\n return ParserBase.PARSING_DONE;\r\n }\r\n }\r\n return ParserBase.MORE_TO_PARSE;\r\n };\r\n MD5MeshParser.prototype._pStartParsing = function (frameLimit) {\r\n //create a content object for Loaders\r\n this._pContent = new DisplayObjectContainer();\r\n _super.prototype._pStartParsing.call(this, frameLimit);\r\n };\r\n MD5MeshParser.prototype.calculateMaxJointCount = function () {\r\n this._maxJointCount = 0;\r\n var numElementsData = this._elementsData.length;\r\n for (var i = 0; i < numElementsData; ++i) {\r\n var elementsData = this._elementsData[i];\r\n var positionData = elementsData.positionData;\r\n var numVerts = positionData.length;\r\n for (var j = 0; j < numVerts; ++j) {\r\n var zeroWeights = this.countZeroWeightJoints(positionData[j], elementsData.weightData);\r\n var totalJoints = positionData[j].countWeight - zeroWeights;\r\n if (totalJoints > this._maxJointCount)\r\n this._maxJointCount = totalJoints;\r\n }\r\n }\r\n };\r\n MD5MeshParser.prototype.countZeroWeightJoints = function (position, weights) {\r\n var start = position.startWeight;\r\n var end = position.startWeight + position.countWeight;\r\n var count = 0;\r\n var weight;\r\n for (var i = start; i < end; ++i) {\r\n weight = weights[i].bias;\r\n if (weight == 0)\r\n ++count;\r\n }\r\n return count;\r\n };\r\n /**\r\n * Parses the skeleton's joints.\r\n */\r\n MD5MeshParser.prototype.parseJoints = function () {\r\n var ch;\r\n var joint;\r\n var pos;\r\n var quat;\r\n var i = 0;\r\n var token = this.getNextToken();\r\n if (token != \"{\")\r\n this.sendUnknownKeywordError();\r\n this._skeleton = new Skeleton();\r\n do {\r\n if (this._reachedEOF)\r\n this.sendEOFError();\r\n joint = new SkeletonJoint();\r\n joint.name = this.parseLiteralstring();\r\n joint.parentIndex = this.getNextInt();\r\n pos = this.parseVector3D();\r\n pos = this._rotationQuat.rotatePoint(pos);\r\n quat = this.parseQuaternion();\r\n // todo: check if this is correct, or maybe we want to actually store it as quats?\r\n this._bindPoses[i] = quat.toMatrix3D();\r\n this._bindPoses[i].appendTranslation(pos.x, pos.y, pos.z);\r\n var inv = this._bindPoses[i].clone();\r\n inv.invert();\r\n joint.inverseBindPose = inv._rawData;\r\n this._skeleton.joints[i++] = joint;\r\n ch = this.getNextChar();\r\n if (ch == \"/\") {\r\n this.putBack();\r\n ch = this.getNextToken();\r\n if (ch == MD5MeshParser.COMMENT_TOKEN)\r\n this.ignoreLine();\r\n ch = this.getNextChar();\r\n }\r\n if (ch != \"}\")\r\n this.putBack();\r\n } while (ch != \"}\");\r\n };\r\n /**\r\n * Puts back the last read character into the data stream.\r\n */\r\n MD5MeshParser.prototype.putBack = function () {\r\n this._parseIndex--;\r\n this._charLineIndex--;\r\n this._reachedEOF = this._parseIndex >= this._textData.length;\r\n };\r\n /**\r\n * Parses the mesh graphics.\r\n */\r\n MD5MeshParser.prototype.parseMesh = function () {\r\n var token = this.getNextToken();\r\n var ch;\r\n var positionData;\r\n var weights;\r\n var indices /*uint*/;\r\n if (token != \"{\")\r\n this.sendUnknownKeywordError();\r\n if (this._shaders == null)\r\n this._shaders = new Array();\r\n while (ch != \"}\") {\r\n ch = this.getNextToken();\r\n switch (ch) {\r\n case MD5MeshParser.COMMENT_TOKEN:\r\n this.ignoreLine();\r\n break;\r\n case MD5MeshParser.MESH_SHADER_TOKEN:\r\n this._shaders.push(this.parseLiteralstring());\r\n break;\r\n case MD5MeshParser.MESH_NUM_VERTS_TOKEN:\r\n positionData = new Array(this.getNextInt());\r\n break;\r\n case MD5MeshParser.MESH_NUM_TRIS_TOKEN:\r\n indices = new Array(this.getNextInt() * 3) /*uint*/;\r\n break;\r\n case MD5MeshParser.MESH_NUM_WEIGHTS_TOKEN:\r\n weights = new Array(this.getNextInt());\r\n break;\r\n case MD5MeshParser.MESH_VERT_TOKEN:\r\n this.parseVertex(positionData);\r\n break;\r\n case MD5MeshParser.MESH_TRI_TOKEN:\r\n this.parseTri(indices);\r\n break;\r\n case MD5MeshParser.MESH_WEIGHT_TOKEN:\r\n this.parseJoint(weights);\r\n break;\r\n }\r\n }\r\n if (this._elementsData == null)\r\n this._elementsData = new Array();\r\n var i = this._elementsData.length;\r\n this._elementsData[i] = new ElementsData();\r\n this._elementsData[i].positionData = positionData;\r\n this._elementsData[i].weightData = weights;\r\n this._elementsData[i].indices = indices;\r\n };\r\n /**\r\n * Converts the sprite data to a SkinnedSub instance.\r\n * @param positionData The sprite's positions.\r\n * @param weights The joint weights per position.\r\n * @param indices The indices for the faces.\r\n * @return A TriangleElements instance containing all elements data for the current sprite.\r\n */\r\n MD5MeshParser.prototype.translateElements = function (positionData, weights, indices /*uint*/) {\r\n var len = positionData.length;\r\n var v1 /*int*/, v2 /*int*/, v3 /*int*/;\r\n var position;\r\n var weight;\r\n var bindPose;\r\n var pos;\r\n var elements = new TriangleElements(new AttributesBuffer());\r\n var uvs = new Array(len * 2);\r\n var positions = new Array(len * 3);\r\n var jointIndices = new Array(len * this._maxJointCount);\r\n var jointWeights = new Array(len * this._maxJointCount);\r\n var l = 0;\r\n var nonZeroWeights /*int*/;\r\n for (var i = 0; i < len; ++i) {\r\n position = positionData[i];\r\n v1 = position.index * 3;\r\n v2 = v1 + 1;\r\n v3 = v1 + 2;\r\n positions[v1] = positions[v2] = positions[v3] = 0;\r\n nonZeroWeights = 0;\r\n for (var j = 0; j < position.countWeight; ++j) {\r\n weight = weights[position.startWeight + j];\r\n if (weight.bias > 0) {\r\n bindPose = this._bindPoses[weight.joint];\r\n pos = bindPose.transformVector(weight.pos);\r\n positions[v1] += pos.x * weight.bias;\r\n positions[v2] += pos.y * weight.bias;\r\n positions[v3] += pos.z * weight.bias;\r\n // indices need to be multiplied by 3 (amount of matrix registers)\r\n jointIndices[l] = weight.joint * 3;\r\n jointWeights[l++] = weight.bias;\r\n ++nonZeroWeights;\r\n }\r\n }\r\n for (j = nonZeroWeights; j < this._maxJointCount; ++j) {\r\n jointIndices[l] = 0;\r\n jointWeights[l++] = 0;\r\n }\r\n v1 = position.index << 1;\r\n uvs[v1++] = position.s;\r\n uvs[v1] = position.t;\r\n }\r\n elements.jointsPerVertex = this._maxJointCount;\r\n elements.setIndices(indices);\r\n elements.setPositions(positions);\r\n elements.setUVs(uvs);\r\n elements.setJointIndices(jointIndices);\r\n elements.setJointWeights(jointWeights);\r\n // cause explicit updates\r\n elements.setNormals(null);\r\n elements.setTangents(null);\r\n // turn auto updates off because they may be animated and set explicitly\r\n elements.autoDeriveTangents = false;\r\n elements.autoDeriveNormals = false;\r\n return elements;\r\n };\r\n /**\r\n * Retrieve the next triplet of position indices that form a face.\r\n * @param indices The index list in which to store the read data.\r\n */\r\n MD5MeshParser.prototype.parseTri = function (indices /*uint*/) {\r\n var index = this.getNextInt() * 3;\r\n indices[index] = this.getNextInt();\r\n indices[index + 1] = this.getNextInt();\r\n indices[index + 2] = this.getNextInt();\r\n };\r\n /**\r\n * Reads a new joint data set for a single joint.\r\n * @param weights the target list to contain the weight data.\r\n */\r\n MD5MeshParser.prototype.parseJoint = function (weights) {\r\n var weight = new JointData();\r\n weight.index = this.getNextInt();\r\n weight.joint = this.getNextInt();\r\n weight.bias = this.getNextNumber();\r\n weight.pos = this.parseVector3D();\r\n weights[weight.index] = weight;\r\n };\r\n /**\r\n * Reads the data for a single position.\r\n * @param positionData The list to contain the position data.\r\n */\r\n MD5MeshParser.prototype.parseVertex = function (positionData) {\r\n var position = new PositionData();\r\n position.index = this.getNextInt();\r\n this.parseUV(position);\r\n position.startWeight = this.getNextInt();\r\n position.countWeight = this.getNextInt();\r\n //\t\t\tif (position.countWeight > _maxJointCount) _maxJointCount = position.countWeight;\r\n positionData[position.index] = position;\r\n };\r\n /**\r\n * Reads the next uv coordinate.\r\n * @param positionData The positionData to contain the UV coordinates.\r\n */\r\n MD5MeshParser.prototype.parseUV = function (positionData) {\r\n var ch = this.getNextToken();\r\n if (ch != \"(\")\r\n this.sendParseError(\"(\");\r\n positionData.s = this.getNextNumber();\r\n positionData.t = this.getNextNumber();\r\n if (this.getNextToken() != \")\")\r\n this.sendParseError(\")\");\r\n };\r\n /**\r\n * Gets the next token in the data stream.\r\n */\r\n MD5MeshParser.prototype.getNextToken = function () {\r\n var ch;\r\n var token = \"\";\r\n while (!this._reachedEOF) {\r\n ch = this.getNextChar();\r\n if (ch == \" \" || ch == \"\\r\" || ch == \"\\n\" || ch == \"\\t\") {\r\n if (token != MD5MeshParser.COMMENT_TOKEN)\r\n this.skipWhiteSpace();\r\n if (token != \"\")\r\n return token;\r\n }\r\n else\r\n token += ch;\r\n if (token == MD5MeshParser.COMMENT_TOKEN)\r\n return token;\r\n }\r\n return token;\r\n };\r\n /**\r\n * Skips all whitespace in the data stream.\r\n */\r\n MD5MeshParser.prototype.skipWhiteSpace = function () {\r\n var ch;\r\n do\r\n ch = this.getNextChar();\r\n while (ch == \"\\n\" || ch == \" \" || ch == \"\\r\" || ch == \"\\t\");\r\n this.putBack();\r\n };\r\n /**\r\n * Skips to the next line.\r\n */\r\n MD5MeshParser.prototype.ignoreLine = function () {\r\n var ch;\r\n while (!this._reachedEOF && ch != \"\\n\")\r\n ch = this.getNextChar();\r\n };\r\n /**\r\n * Retrieves the next single character in the data stream.\r\n */\r\n MD5MeshParser.prototype.getNextChar = function () {\r\n var ch = this._textData.charAt(this._parseIndex++);\r\n if (ch == \"\\n\") {\r\n ++this._line;\r\n this._charLineIndex = 0;\r\n }\r\n else if (ch != \"\\r\")\r\n ++this._charLineIndex;\r\n if (this._parseIndex >= this._textData.length)\r\n this._reachedEOF = true;\r\n return ch;\r\n };\r\n /**\r\n * Retrieves the next integer in the data stream.\r\n */\r\n MD5MeshParser.prototype.getNextInt = function () {\r\n var i = parseInt(this.getNextToken());\r\n if (isNaN(i))\r\n this.sendParseError(\"int type\");\r\n return i;\r\n };\r\n /**\r\n * Retrieves the next floating point number in the data stream.\r\n */\r\n MD5MeshParser.prototype.getNextNumber = function () {\r\n var f = parseFloat(this.getNextToken());\r\n if (isNaN(f))\r\n this.sendParseError(\"float type\");\r\n return f;\r\n };\r\n /**\r\n * Retrieves the next 3d vector in the data stream.\r\n */\r\n MD5MeshParser.prototype.parseVector3D = function () {\r\n var vec = new Vector3D();\r\n var ch = this.getNextToken();\r\n if (ch != \"(\")\r\n this.sendParseError(\"(\");\r\n vec.x = -this.getNextNumber();\r\n vec.y = this.getNextNumber();\r\n vec.z = this.getNextNumber();\r\n if (this.getNextToken() != \")\")\r\n this.sendParseError(\")\");\r\n return vec;\r\n };\r\n /**\r\n * Retrieves the next quaternion in the data stream.\r\n */\r\n MD5MeshParser.prototype.parseQuaternion = function () {\r\n var quat = new Quaternion();\r\n var ch = this.getNextToken();\r\n if (ch != \"(\")\r\n this.sendParseError(\"(\");\r\n quat.x = this.getNextNumber();\r\n quat.y = -this.getNextNumber();\r\n quat.z = -this.getNextNumber();\r\n // quat supposed to be unit length\r\n var t = 1 - quat.x * quat.x - quat.y * quat.y - quat.z * quat.z;\r\n quat.w = t < 0 ? 0 : -Math.sqrt(t);\r\n if (this.getNextToken() != \")\")\r\n this.sendParseError(\")\");\r\n var rotQuat = new Quaternion();\r\n rotQuat.multiply(this._rotationQuat, quat);\r\n return rotQuat;\r\n };\r\n /**\r\n * Parses the command line data.\r\n */\r\n MD5MeshParser.prototype.parseCMD = function () {\r\n // just ignore the command line property\r\n this.parseLiteralstring();\r\n };\r\n /**\r\n * Retrieves the next literal string in the data stream. A literal string is a sequence of characters bounded\r\n * by double quotes.\r\n */\r\n MD5MeshParser.prototype.parseLiteralstring = function () {\r\n this.skipWhiteSpace();\r\n var ch = this.getNextChar();\r\n var str = \"\";\r\n if (ch != \"\\\"\")\r\n this.sendParseError(\"\\\"\");\r\n do {\r\n if (this._reachedEOF)\r\n this.sendEOFError();\r\n ch = this.getNextChar();\r\n if (ch != \"\\\"\")\r\n str += ch;\r\n } while (ch != \"\\\"\");\r\n return str;\r\n };\r\n /**\r\n * Throws an end-of-file error when a premature end of file was encountered.\r\n */\r\n MD5MeshParser.prototype.sendEOFError = function () {\r\n throw new Error(\"Unexpected end of file\");\r\n };\r\n /**\r\n * Throws an error when an unexpected token was encountered.\r\n * @param expected The token type that was actually expected.\r\n */\r\n MD5MeshParser.prototype.sendParseError = function (expected) {\r\n throw new Error(\"Unexpected token at line \" + (this._line + 1) + \", character \" + this._charLineIndex + \". \" + expected + \" expected, but \" + this._textData.charAt(this._parseIndex - 1) + \" encountered\");\r\n };\r\n /**\r\n * Throws an error when an unknown keyword was encountered.\r\n */\r\n MD5MeshParser.prototype.sendUnknownKeywordError = function () {\r\n throw new Error(\"Unknown keyword at line \" + (this._line + 1) + \", character \" + this._charLineIndex + \". \");\r\n };\r\n return MD5MeshParser;\r\n}(ParserBase));\r\nexport { MD5MeshParser };\r\nMD5MeshParser.VERSION_TOKEN = \"MD5Version\";\r\nMD5MeshParser.COMMAND_LINE_TOKEN = \"commandline\";\r\nMD5MeshParser.NUM_JOINTS_TOKEN = \"numJoints\";\r\nMD5MeshParser.NUM_MESHES_TOKEN = \"numMeshes\";\r\nMD5MeshParser.COMMENT_TOKEN = \"//\";\r\nMD5MeshParser.JOINTS_TOKEN = \"joints\";\r\nMD5MeshParser.MESH_TOKEN = \"mesh\";\r\nMD5MeshParser.MESH_SHADER_TOKEN = \"shader\";\r\nMD5MeshParser.MESH_NUM_VERTS_TOKEN = \"numverts\";\r\nMD5MeshParser.MESH_VERT_TOKEN = \"vert\";\r\nMD5MeshParser.MESH_NUM_TRIS_TOKEN = \"numtris\";\r\nMD5MeshParser.MESH_TRI_TOKEN = \"tri\";\r\nMD5MeshParser.MESH_NUM_WEIGHTS_TOKEN = \"numweights\";\r\nMD5MeshParser.MESH_WEIGHT_TOKEN = \"weight\";\r\nvar PositionData = (function () {\r\n function PositionData() {\r\n }\r\n return PositionData;\r\n}());\r\nexport { PositionData };\r\nvar JointData = (function () {\r\n function JointData() {\r\n }\r\n return JointData;\r\n}());\r\nexport { JointData };\r\nvar ElementsData = (function () {\r\n function ElementsData() {\r\n }\r\n return ElementsData;\r\n}());\r\nexport { ElementsData };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/MD5MeshParser.js","import * as tslib_1 from \"tslib\";\r\nimport { AttributesBuffer, URLLoaderDataFormat, URLRequest, ParserBase, ParserUtils } from \"@awayjs/core\";\r\nimport { Sampler2D, Shape, BitmapImage2D, TriangleElements, DefaultMaterialManager, Single2DTexture } from \"@awayjs/graphics\";\r\nimport { DisplayObjectContainer, Sprite } from \"@awayjs/scene\";\r\nimport { MethodMaterial, MethodMaterialMode, SpecularBasicMethod } from \"@awayjs/materials\";\r\n/**\r\n * OBJParser provides a parser for the OBJ data type.\r\n */\r\nvar OBJParser = (function (_super) {\r\n tslib_1.__extends(OBJParser, _super);\r\n /**\r\n * Creates a new OBJParser object.\r\n * @param uri The url or id of the data or file to be parsed.\r\n * @param extra The holder for extra contextual data that the parser might need.\r\n */\r\n function OBJParser(scale) {\r\n if (scale === void 0) { scale = 1; }\r\n var _this = _super.call(this, URLLoaderDataFormat.TEXT) || this;\r\n _this._mtlLibLoaded = true;\r\n _this._activeMaterialID = \"\";\r\n _this._scale = scale;\r\n return _this;\r\n }\r\n Object.defineProperty(OBJParser.prototype, \"scale\", {\r\n /**\r\n * Scaling factor applied directly to vertices data\r\n * @param value The scaling factor.\r\n */\r\n set: function (value) {\r\n this._scale = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Indicates whether or not a given file extension is supported by the parser.\r\n * @param extension The file extension of a potential file to be parsed.\r\n * @return Whether or not the given file type is supported.\r\n */\r\n OBJParser.supportsType = function (extension) {\r\n extension = extension.toLowerCase();\r\n return extension == \"obj\";\r\n };\r\n /**\r\n * Tests whether a data block can be parsed by the parser.\r\n * @param data The data block to potentially be parsed.\r\n * @return Whether or not the given data is supported.\r\n */\r\n OBJParser.supportsData = function (data) {\r\n var content = ParserUtils.toString(data);\r\n var hasV = false;\r\n var hasF = false;\r\n if (content) {\r\n hasV = content.indexOf(\"\\nv \") != -1;\r\n hasF = content.indexOf(\"\\nf \") != -1;\r\n }\r\n return hasV && hasF;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n OBJParser.prototype._iResolveDependency = function (resourceDependency) {\r\n if (resourceDependency.id == 'mtl') {\r\n var str = ParserUtils.toString(resourceDependency.data);\r\n this.parseMtl(str);\r\n }\r\n else {\r\n var asset;\r\n if (resourceDependency.assets.length != 1) {\r\n return;\r\n }\r\n asset = resourceDependency.assets[0];\r\n if (asset.isAsset(BitmapImage2D)) {\r\n var lm = new LoadedMaterial();\r\n lm.materialID = resourceDependency.id;\r\n lm.texture = new Single2DTexture(asset);\r\n this._materialLoaded.push(lm);\r\n if (this._sprites.length > 0) {\r\n this.applyMaterial(lm);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n OBJParser.prototype._iResolveDependencyFailure = function (resourceDependency) {\r\n if (resourceDependency.id == \"mtl\") {\r\n this._mtlLib = false;\r\n this._mtlLibLoaded = false;\r\n }\r\n else {\r\n var lm = new LoadedMaterial();\r\n lm.materialID = resourceDependency.id;\r\n this._materialLoaded.push(lm);\r\n }\r\n if (this._sprites.length > 0)\r\n this.applyMaterial(lm);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n OBJParser.prototype._pProceedParsing = function () {\r\n var line;\r\n var creturn = String.fromCharCode(10);\r\n var trunk;\r\n if (!this._startedParsing) {\r\n this._textData = this._pGetTextData();\r\n // Merge linebreaks that are immediately preceeded by\r\n // the \"escape\" backward slash into single lines.\r\n this._textData = this._textData.replace(/\\\\[\\r\\n]+\\s*/gm, ' ');\r\n }\r\n if (this._textData.indexOf(creturn) == -1)\r\n creturn = String.fromCharCode(13);\r\n if (!this._startedParsing) {\r\n this._startedParsing = true;\r\n this._vertices = new Array();\r\n this._vertexNormals = new Array();\r\n this._materialIDs = new Array();\r\n this._materialLoaded = new Array();\r\n this._sprites = new Array();\r\n this._uvs = new Array();\r\n this._stringLength = this._textData.length;\r\n this._charIndex = this._textData.indexOf(creturn, 0);\r\n this._oldIndex = 0;\r\n this._objects = new Array();\r\n this._objectIndex = 0;\r\n }\r\n while (this._charIndex < this._stringLength && this._pHasTime()) {\r\n this._charIndex = this._textData.indexOf(creturn, this._oldIndex);\r\n if (this._charIndex == -1)\r\n this._charIndex = this._stringLength;\r\n line = this._textData.substring(this._oldIndex, this._charIndex);\r\n line = line.split('\\r').join(\"\");\r\n line = line.replace(\" \", \" \");\r\n trunk = line.split(\" \");\r\n this._oldIndex = this._charIndex + 1;\r\n this.parseLine(trunk);\r\n // If whatever was parsed on this line resulted in the\r\n // parsing being paused to retrieve dependencies, break\r\n // here and do not continue parsing until un-paused.\r\n if (this.parsingPaused) {\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n }\r\n if (this._charIndex >= this._stringLength) {\r\n if (this._mtlLib && !this._mtlLibLoaded) {\r\n return ParserBase.MORE_TO_PARSE;\r\n }\r\n this.translate();\r\n this.applyMaterials();\r\n return ParserBase.PARSING_DONE;\r\n }\r\n return ParserBase.MORE_TO_PARSE;\r\n };\r\n OBJParser.prototype._pStartParsing = function (frameLimit) {\r\n //create a content object for Loaders\r\n this._pContent = new DisplayObjectContainer();\r\n _super.prototype._pStartParsing.call(this, frameLimit);\r\n };\r\n /**\r\n * Parses a single line in the OBJ file.\r\n */\r\n OBJParser.prototype.parseLine = function (trunk) {\r\n switch (trunk[0]) {\r\n case \"mtllib\":\r\n this._mtlLib = true;\r\n this._mtlLibLoaded = false;\r\n this.loadMtl(trunk[1]);\r\n break;\r\n case \"g\":\r\n this.createGroup(trunk);\r\n break;\r\n case \"o\":\r\n this.createObject(trunk);\r\n break;\r\n case \"usemtl\":\r\n if (this._mtlLib) {\r\n if (!trunk[1])\r\n trunk[1] = \"def000\";\r\n this._materialIDs.push(trunk[1]);\r\n this._activeMaterialID = trunk[1];\r\n if (this._currentGroup)\r\n this._currentGroup.materialID = this._activeMaterialID;\r\n }\r\n break;\r\n case \"v\":\r\n this.parseVertex(trunk);\r\n break;\r\n case \"vt\":\r\n this.parseUV(trunk);\r\n break;\r\n case \"vn\":\r\n this.parseVertexNormal(trunk);\r\n break;\r\n case \"f\":\r\n this.parseFace(trunk);\r\n }\r\n };\r\n /**\r\n * Converts the parsed data into an Away3D scenegraph structure\r\n */\r\n OBJParser.prototype.translate = function () {\r\n for (var objIndex = 0; objIndex < this._objects.length; ++objIndex) {\r\n var groups = this._objects[objIndex].groups;\r\n var numGroups = groups.length;\r\n var materialGroups;\r\n var numMaterialGroups;\r\n var graphics;\r\n var sprite;\r\n var m;\r\n var sm;\r\n var bmMaterial;\r\n for (var g = 0; g < numGroups; ++g) {\r\n bmMaterial = new MethodMaterial(DefaultMaterialManager.getDefaultImage2D());\r\n //check for multipass\r\n if (this.materialMode >= 2)\r\n bmMaterial.mode = MethodMaterialMode.MULTI_PASS;\r\n sprite = new Sprite(bmMaterial);\r\n graphics = sprite.graphics;\r\n materialGroups = groups[g].materialGroups;\r\n numMaterialGroups = materialGroups.length;\r\n for (m = 0; m < numMaterialGroups; ++m)\r\n this.translateMaterialGroup(materialGroups[m], graphics);\r\n if (graphics.count == 0)\r\n continue;\r\n // Finalize and force type-based name\r\n this._pFinalizeAsset(graphics); //, \"\");\r\n if (this._objects[objIndex].name) {\r\n // this is a full independent object ('o' tag in OBJ file)\r\n sprite.name = this._objects[objIndex].name;\r\n }\r\n else if (groups[g].name) {\r\n // this is a group so the sub groups contain the actual sprite object names ('g' tag in OBJ file)\r\n sprite.name = groups[g].name;\r\n }\r\n else {\r\n // No name stored. Use empty string which will force it\r\n // to be overridden by finalizeAsset() to type default.\r\n sprite.name = \"\";\r\n }\r\n this._sprites.push(sprite);\r\n if (groups[g].materialID != \"\")\r\n bmMaterial.name = groups[g].materialID + \"~\" + sprite.name;\r\n else\r\n bmMaterial.name = this._lastMtlID + \"~\" + sprite.name;\r\n if (sprite.graphics.count > 1) {\r\n for (sm = 1; sm < sprite.graphics.count; ++sm)\r\n sprite.graphics.getShapeAt(sm).material = bmMaterial;\r\n }\r\n //add to the content property\r\n this._pContent.addChild(sprite);\r\n this._pFinalizeAsset(sprite);\r\n }\r\n }\r\n };\r\n /**\r\n * Translates an obj's material group to a subgraphics.\r\n * @param materialGroup The material group data to convert.\r\n * @param graphics The Graphics to contain the converted Elements.\r\n */\r\n OBJParser.prototype.translateMaterialGroup = function (materialGroup, graphics) {\r\n var faces = materialGroup.faces;\r\n var face;\r\n var numFaces = faces.length;\r\n var numVerts;\r\n var elements;\r\n var vertices = new Array();\r\n var uvs = new Array();\r\n var normals = new Array();\r\n var indices = new Array();\r\n this._realIndices = [];\r\n this._vertexIndex = 0;\r\n var j;\r\n for (var i = 0; i < numFaces; ++i) {\r\n face = faces[i];\r\n numVerts = face.indexIds.length - 1;\r\n for (j = 1; j < numVerts; ++j) {\r\n this.translateVertexData(face, j, vertices, uvs, indices, normals);\r\n this.translateVertexData(face, 0, vertices, uvs, indices, normals);\r\n this.translateVertexData(face, j + 1, vertices, uvs, indices, normals);\r\n }\r\n }\r\n if (vertices.length > 0) {\r\n elements = new TriangleElements(new AttributesBuffer());\r\n elements.autoDeriveNormals = normals.length ? false : true;\r\n elements.setIndices(indices);\r\n elements.setPositions(vertices);\r\n elements.setNormals(normals);\r\n elements.setUVs(uvs);\r\n graphics.addShape(new Shape(elements));\r\n }\r\n };\r\n OBJParser.prototype.translateVertexData = function (face, vertexIndex, vertices, uvs, indices /*uint*/, normals) {\r\n var index;\r\n var vertex;\r\n var vertexNormal;\r\n var uv;\r\n if (!this._realIndices[face.indexIds[vertexIndex]]) {\r\n index = this._vertexIndex;\r\n this._realIndices[face.indexIds[vertexIndex]] = ++this._vertexIndex;\r\n vertex = this._vertices[face.vertexIndices[vertexIndex] - 1];\r\n vertices.push(vertex.x * this._scale, vertex.y * this._scale, vertex.z * this._scale);\r\n if (face.normalIndices.length > 0) {\r\n vertexNormal = this._vertexNormals[face.normalIndices[vertexIndex] - 1];\r\n normals.push(vertexNormal.x, vertexNormal.y, vertexNormal.z);\r\n }\r\n if (face.uvIndices.length > 0) {\r\n try {\r\n uv = this._uvs[face.uvIndices[vertexIndex] - 1];\r\n uvs.push(uv.u, uv.v);\r\n }\r\n catch (e) {\r\n switch (vertexIndex) {\r\n case 0:\r\n uvs.push(0, 1);\r\n break;\r\n case 1:\r\n uvs.push(.5, 0);\r\n break;\r\n case 2:\r\n uvs.push(1, 1);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n index = this._realIndices[face.indexIds[vertexIndex]] - 1;\r\n }\r\n indices.push(index);\r\n };\r\n /**\r\n * Creates a new object group.\r\n * @param trunk The data block containing the object tag and its parameters\r\n */\r\n OBJParser.prototype.createObject = function (trunk) {\r\n this._currentGroup = null;\r\n this._currentMaterialGroup = null;\r\n this._objects.push(this._currentObject = new ObjectGroup());\r\n if (trunk)\r\n this._currentObject.name = trunk[1];\r\n };\r\n /**\r\n * Creates a new group.\r\n * @param trunk The data block containing the group tag and its parameters\r\n */\r\n OBJParser.prototype.createGroup = function (trunk) {\r\n if (!this._currentObject)\r\n this.createObject(null);\r\n this._currentGroup = new Group();\r\n this._currentGroup.materialID = this._activeMaterialID;\r\n if (trunk)\r\n this._currentGroup.name = trunk[1];\r\n this._currentObject.groups.push(this._currentGroup);\r\n this.createMaterialGroup(null);\r\n };\r\n /**\r\n * Creates a new material group.\r\n * @param trunk The data block containing the material tag and its parameters\r\n */\r\n OBJParser.prototype.createMaterialGroup = function (trunk) {\r\n this._currentMaterialGroup = new MaterialGroup();\r\n if (trunk)\r\n this._currentMaterialGroup.url = trunk[1];\r\n this._currentGroup.materialGroups.push(this._currentMaterialGroup);\r\n };\r\n /**\r\n * Reads the next vertex coordinates.\r\n * @param trunk The data block containing the vertex tag and its parameters\r\n */\r\n OBJParser.prototype.parseVertex = function (trunk) {\r\n //for the very rare cases of other delimiters/charcodes seen in some obj files\r\n var v1, v2, v3;\r\n if (trunk.length > 4) {\r\n var nTrunk = [];\r\n var val;\r\n for (var i = 1; i < trunk.length; ++i) {\r\n val = parseFloat(trunk[i]);\r\n if (!isNaN(val))\r\n nTrunk.push(val);\r\n }\r\n v1 = nTrunk[0];\r\n v2 = nTrunk[1];\r\n v3 = -nTrunk[2];\r\n this._vertices.push(new Vertex(v1, v2, v3));\r\n }\r\n else {\r\n v1 = parseFloat(trunk[1]);\r\n v2 = parseFloat(trunk[2]);\r\n v3 = -parseFloat(trunk[3]);\r\n this._vertices.push(new Vertex(v1, v2, v3));\r\n }\r\n };\r\n /**\r\n * Reads the next uv coordinates.\r\n * @param trunk The data block containing the uv tag and its parameters\r\n */\r\n OBJParser.prototype.parseUV = function (trunk) {\r\n if (trunk.length > 3) {\r\n var nTrunk = [];\r\n var val;\r\n for (var i = 1; i < trunk.length; ++i) {\r\n val = parseFloat(trunk[i]);\r\n if (!isNaN(val))\r\n nTrunk.push(val);\r\n }\r\n this._uvs.push(new UV(nTrunk[0], 1 - nTrunk[1]));\r\n }\r\n else {\r\n this._uvs.push(new UV(parseFloat(trunk[1]), 1 - parseFloat(trunk[2])));\r\n }\r\n };\r\n /**\r\n * Reads the next vertex normal coordinates.\r\n * @param trunk The data block containing the vertex normal tag and its parameters\r\n */\r\n OBJParser.prototype.parseVertexNormal = function (trunk) {\r\n if (trunk.length > 4) {\r\n var nTrunk = [];\r\n var val;\r\n for (var i = 1; i < trunk.length; ++i) {\r\n val = parseFloat(trunk[i]);\r\n if (!isNaN(val))\r\n nTrunk.push(val);\r\n }\r\n this._vertexNormals.push(new Vertex(nTrunk[0], nTrunk[1], -nTrunk[2]));\r\n }\r\n else {\r\n this._vertexNormals.push(new Vertex(parseFloat(trunk[1]), parseFloat(trunk[2]), -parseFloat(trunk[3])));\r\n }\r\n };\r\n /**\r\n * Reads the next face's indices.\r\n * @param trunk The data block containing the face tag and its parameters\r\n */\r\n OBJParser.prototype.parseFace = function (trunk) {\r\n var len = trunk.length;\r\n var face = new FaceData();\r\n if (!this._currentGroup) {\r\n this.createGroup(null);\r\n }\r\n var indices;\r\n for (var i = 1; i < len; ++i) {\r\n if (trunk[i] == \"\") {\r\n continue;\r\n }\r\n indices = trunk[i].split(\"/\");\r\n face.vertexIndices.push(this.parseIndex(parseInt(indices[0]), this._vertices.length));\r\n if (indices[1] && String(indices[1]).length > 0)\r\n face.uvIndices.push(this.parseIndex(parseInt(indices[1]), this._uvs.length));\r\n if (indices[2] && String(indices[2]).length > 0)\r\n face.normalIndices.push(this.parseIndex(parseInt(indices[2]), this._vertexNormals.length));\r\n face.indexIds.push(trunk[i]);\r\n }\r\n this._currentMaterialGroup.faces.push(face);\r\n };\r\n /**\r\n * This is a hack around negative face coords\r\n */\r\n OBJParser.prototype.parseIndex = function (index, length) {\r\n if (index < 0)\r\n return index + length + 1;\r\n else\r\n return index;\r\n };\r\n OBJParser.prototype.parseMtl = function (data) {\r\n var materialDefinitions = data.split('newmtl');\r\n var lines;\r\n var trunk;\r\n var j;\r\n var basicSpecularMethod;\r\n var useSpecular;\r\n var useColor;\r\n var diffuseColor;\r\n var color;\r\n var specularColor;\r\n var specular;\r\n var alpha;\r\n var mapkd;\r\n for (var i = 0; i < materialDefinitions.length; ++i) {\r\n lines = (materialDefinitions[i].split('\\r')).join(\"\").split('\\n');\r\n //lines = (materialDefinitions[i].split('\\r') as Array).join(\"\").split('\\n');\r\n if (lines.length == 1)\r\n lines = materialDefinitions[i].split(String.fromCharCode(13));\r\n diffuseColor = color = specularColor = 0xFFFFFF;\r\n specular = 0;\r\n useSpecular = false;\r\n useColor = false;\r\n alpha = 1;\r\n mapkd = \"\";\r\n for (j = 0; j < lines.length; ++j) {\r\n lines[j] = lines[j].replace(/\\s+$/, \"\");\r\n if (lines[j].substring(0, 1) != \"#\" && (j == 0 || lines[j] != \"\")) {\r\n trunk = lines[j].split(\" \");\r\n if (String(trunk[0]).charCodeAt(0) == 9 || String(trunk[0]).charCodeAt(0) == 32)\r\n trunk[0] = trunk[0].substring(1, trunk[0].length);\r\n if (j == 0) {\r\n this._lastMtlID = trunk.join(\"\");\r\n this._lastMtlID = (this._lastMtlID == \"\") ? \"def000\" : this._lastMtlID;\r\n }\r\n else {\r\n switch (trunk[0]) {\r\n case \"Ka\":\r\n if (trunk[1] && !isNaN(Number(trunk[1])) && trunk[2] && !isNaN(Number(trunk[2])) && trunk[3] && !isNaN(Number(trunk[3])))\r\n color = trunk[1] * 255 << 16 | trunk[2] * 255 << 8 | trunk[3] * 255;\r\n break;\r\n case \"Ks\":\r\n if (trunk[1] && !isNaN(Number(trunk[1])) && trunk[2] && !isNaN(Number(trunk[2])) && trunk[3] && !isNaN(Number(trunk[3]))) {\r\n specularColor = trunk[1] * 255 << 16 | trunk[2] * 255 << 8 | trunk[3] * 255;\r\n useSpecular = true;\r\n }\r\n break;\r\n case \"Ns\":\r\n if (trunk[1] && !isNaN(Number(trunk[1])))\r\n specular = Number(trunk[1]) * 0.001;\r\n if (specular == 0)\r\n useSpecular = false;\r\n break;\r\n case \"Kd\":\r\n if (trunk[1] && !isNaN(Number(trunk[1])) && trunk[2] && !isNaN(Number(trunk[2])) && trunk[3] && !isNaN(Number(trunk[3]))) {\r\n diffuseColor = trunk[1] * 255 << 16 | trunk[2] * 255 << 8 | trunk[3] * 255;\r\n useColor = true;\r\n }\r\n break;\r\n case \"tr\":\r\n case \"d\":\r\n if (trunk[1] && !isNaN(Number(trunk[1])))\r\n alpha = Number(trunk[1]);\r\n break;\r\n case \"map_Kd\":\r\n mapkd = this.parseMapKdString(trunk);\r\n mapkd = mapkd.replace(/\\\\/g, \"/\");\r\n }\r\n }\r\n }\r\n }\r\n if (mapkd != \"\") {\r\n if (useSpecular) {\r\n basicSpecularMethod = new SpecularBasicMethod();\r\n basicSpecularMethod.color = specularColor;\r\n basicSpecularMethod.strength = specular;\r\n var specularData = new SpecularData();\r\n specularData.alpha = alpha;\r\n specularData.basicSpecularMethod = basicSpecularMethod;\r\n specularData.materialID = this._lastMtlID;\r\n if (!this._materialSpecularData)\r\n this._materialSpecularData = new Array();\r\n this._materialSpecularData.push(specularData);\r\n }\r\n this._pAddDependency(this._lastMtlID, new URLRequest(mapkd));\r\n }\r\n else if (useColor && !isNaN(color)) {\r\n var lm = new LoadedMaterial();\r\n lm.materialID = this._lastMtlID;\r\n if (alpha == 0)\r\n console.log(\"Warning: an alpha value of 0 was found in mtl color tag (Tr or d) ref:\" + this._lastMtlID + \", sprite(es) using it will be invisible!\");\r\n var cm = new MethodMaterial(color);\r\n if (this.materialMode < 2) {\r\n cm.alpha = alpha;\r\n }\r\n else {\r\n cm.mode = MethodMaterialMode.MULTI_PASS;\r\n }\r\n cm.diffuseMethod.color = diffuseColor;\r\n if (useSpecular) {\r\n cm.specularMethod.color = specularColor;\r\n cm.specularMethod.strength = specular;\r\n }\r\n lm.cm = cm;\r\n this._materialLoaded.push(lm);\r\n if (this._sprites.length > 0)\r\n this.applyMaterial(lm);\r\n }\r\n }\r\n this._mtlLibLoaded = true;\r\n };\r\n OBJParser.prototype.parseMapKdString = function (trunk) {\r\n var url = \"\";\r\n var i;\r\n var breakflag;\r\n for (i = 1; i < trunk.length;) {\r\n switch (trunk[i]) {\r\n case \"-blendu\":\r\n case \"-blendv\":\r\n case \"-cc\":\r\n case \"-clamp\":\r\n case \"-texres\":\r\n i += 2; //Skip ahead 1 attribute\r\n break;\r\n case \"-mm\":\r\n i += 3; //Skip ahead 2 attributes\r\n break;\r\n case \"-o\":\r\n case \"-s\":\r\n case \"-t\":\r\n i += 4; //Skip ahead 3 attributes\r\n continue;\r\n default:\r\n breakflag = true;\r\n break;\r\n }\r\n if (breakflag)\r\n break;\r\n }\r\n //Reconstruct URL/filename\r\n for (i; i < trunk.length; i++) {\r\n url += trunk[i];\r\n url += \" \";\r\n }\r\n //Remove the extraneous space and/or newline from the right side\r\n url = url.replace(/\\s+$/, \"\");\r\n return url;\r\n };\r\n OBJParser.prototype.loadMtl = function (mtlurl) {\r\n // Add raw-data dependency to queue and load dependencies now,\r\n // which will pause the parsing in the meantime.\r\n this._pAddDependency('mtl', new URLRequest(mtlurl), null, null, true);\r\n this._pPauseAndRetrieveDependencies(); //\r\n };\r\n OBJParser.prototype.applyMaterial = function (lm) {\r\n var decomposeID;\r\n var sprite;\r\n var tm;\r\n var j;\r\n var specularData;\r\n for (var i = 0; i < this._sprites.length; ++i) {\r\n sprite = this._sprites[i];\r\n decomposeID = sprite.material.name.split(\"~\");\r\n if (decomposeID[0] == lm.materialID) {\r\n if (lm.cm) {\r\n if (sprite.material)\r\n sprite.material = null;\r\n sprite.material = lm.cm;\r\n }\r\n else if (lm.texture) {\r\n tm = sprite.material;\r\n tm.ambientMethod.texture = lm.texture;\r\n tm.style.color = lm.color;\r\n tm.alpha = lm.alpha;\r\n tm.style.sampler = new Sampler2D(true);\r\n if (this.materialMode < 2)\r\n tm.alpha = lm.alpha;\r\n else\r\n tm.mode = MethodMaterialMode.MULTI_PASS;\r\n if (lm.specularMethod) {\r\n // By setting the specularMethod property to null before assigning\r\n // the actual method instance, we avoid having the properties of\r\n // the new method being overridden with the settings from the old\r\n // one, which is default behavior of the setter.\r\n tm.specularMethod = null;\r\n tm.specularMethod = lm.specularMethod;\r\n }\r\n else if (this._materialSpecularData) {\r\n for (j = 0; j < this._materialSpecularData.length; ++j) {\r\n specularData = this._materialSpecularData[j];\r\n if (specularData.materialID == lm.materialID) {\r\n tm.specularMethod = null; // Prevent property overwrite (see above)\r\n tm.specularMethod = specularData.basicSpecularMethod;\r\n tm.specularMethod.color = specularData.color;\r\n tm.specularMethod.strength = specularData.alpha;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n sprite.material.name = decomposeID[1] ? decomposeID[1] : decomposeID[0];\r\n this._sprites.splice(i, 1);\r\n --i;\r\n }\r\n }\r\n if (lm.cm || tm)\r\n this._pFinalizeAsset(lm.cm || tm);\r\n };\r\n OBJParser.prototype.applyMaterials = function () {\r\n if (this._materialLoaded.length == 0)\r\n return;\r\n for (var i = 0; i < this._materialLoaded.length; ++i)\r\n this.applyMaterial(this._materialLoaded[i]);\r\n };\r\n return OBJParser;\r\n}(ParserBase));\r\nexport { OBJParser };\r\nvar ObjectGroup = (function () {\r\n function ObjectGroup() {\r\n this.groups = new Array();\r\n }\r\n return ObjectGroup;\r\n}());\r\nexport { ObjectGroup };\r\nvar Group = (function () {\r\n function Group() {\r\n this.materialGroups = new Array();\r\n }\r\n return Group;\r\n}());\r\nexport { Group };\r\nvar MaterialGroup = (function () {\r\n function MaterialGroup() {\r\n this.faces = new Array();\r\n }\r\n return MaterialGroup;\r\n}());\r\nexport { MaterialGroup };\r\nvar SpecularData = (function () {\r\n function SpecularData() {\r\n this.color = 0xFFFFFF;\r\n this.alpha = 1;\r\n }\r\n return SpecularData;\r\n}());\r\nexport { SpecularData };\r\nvar LoadedMaterial = (function () {\r\n function LoadedMaterial() {\r\n this.color = 0xFFFFFF;\r\n this.alpha = 1;\r\n }\r\n return LoadedMaterial;\r\n}());\r\nexport { LoadedMaterial };\r\nvar FaceData = (function () {\r\n function FaceData() {\r\n this.vertexIndices = new Array();\r\n this.uvIndices = new Array();\r\n this.normalIndices = new Array();\r\n this.indexIds = new Array(); // used for real index lookups\r\n }\r\n return FaceData;\r\n}());\r\nexport { FaceData };\r\n/**\r\n* Texture coordinates value object.\r\n*/\r\nvar UV = (function () {\r\n /**\r\n * Creates a new UV object.\r\n *\r\n * @param u [optional] The horizontal coordinate of the texture value. Defaults to 0.\r\n * @param v [optional] The vertical coordinate of the texture value. Defaults to 0.\r\n */\r\n function UV(u, v) {\r\n if (u === void 0) { u = 0; }\r\n if (v === void 0) { v = 0; }\r\n this._u = u;\r\n this._v = v;\r\n }\r\n Object.defineProperty(UV.prototype, \"v\", {\r\n /**\r\n * Defines the vertical coordinate of the texture value.\r\n */\r\n get: function () {\r\n return this._v;\r\n },\r\n set: function (value) {\r\n this._v = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UV.prototype, \"u\", {\r\n /**\r\n * Defines the horizontal coordinate of the texture value.\r\n */\r\n get: function () {\r\n return this._u;\r\n },\r\n set: function (value) {\r\n this._u = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * returns a new UV value Object\r\n */\r\n UV.prototype.clone = function () {\r\n return new UV(this._u, this._v);\r\n };\r\n /**\r\n * returns the value object as a string for trace/debug purpose\r\n */\r\n UV.prototype.toString = function () {\r\n return this._u + \",\" + this._v;\r\n };\r\n return UV;\r\n}());\r\nexport { UV };\r\nvar Vertex = (function () {\r\n /**\r\n * Creates a new Vertex value object.\r\n *\r\n * @param x [optional] The x value. Defaults to 0.\r\n * @param y [optional] The y value. Defaults to 0.\r\n * @param z [optional] The z value. Defaults to 0.\r\n * @param index [optional] The index value. Defaults is NaN.\r\n */\r\n function Vertex(x, y, z, index) {\r\n if (x === void 0) { x = 0; }\r\n if (y === void 0) { y = 0; }\r\n if (z === void 0) { z = 0; }\r\n if (index === void 0) { index = 0; }\r\n this._x = x;\r\n this._y = y;\r\n this._z = z;\r\n this._index = index;\r\n }\r\n Object.defineProperty(Vertex.prototype, \"index\", {\r\n get: function () {\r\n return this._index;\r\n },\r\n /**\r\n * To define/store the index of value object\r\n * @param ind The index\r\n */\r\n set: function (ind) {\r\n this._index = ind;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Vertex.prototype, \"x\", {\r\n /**\r\n * To define/store the x value of the value object\r\n * @param value The x value\r\n */\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (value) {\r\n this._x = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Vertex.prototype, \"y\", {\r\n /**\r\n * To define/store the y value of the value object\r\n * @param value The y value\r\n */\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (value) {\r\n this._y = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Vertex.prototype, \"z\", {\r\n /**\r\n * To define/store the z value of the value object\r\n * @param value The z value\r\n */\r\n get: function () {\r\n return this._z;\r\n },\r\n set: function (value) {\r\n this._z = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * returns a new Vertex value Object\r\n */\r\n Vertex.prototype.clone = function () {\r\n return new Vertex(this._x, this._y, this._z);\r\n };\r\n return Vertex;\r\n}());\r\nexport { Vertex };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/OBJParser.js","import { Loader } from \"@awayjs/core\";\r\nimport { AWDParser } from \"./AWDParser\";\r\nimport { Max3DSParser } from \"./Max3DSParser\";\r\nimport { MD2Parser } from \"./MD2Parser\";\r\nimport { OBJParser } from \"./OBJParser\";\r\nimport { FNTParser } from \"./FNTParser\";\r\n/**\r\n *\r\n */\r\nvar Parsers = (function () {\r\n function Parsers() {\r\n }\r\n /**\r\n * Short-hand function to enable all bundled parsers for auto-detection. In practice,\r\n * this is the same as invoking enableParsers(Parsers.ALL_BUNDLED) on any of the\r\n * loader classes SingleFileLoader, LoaderSession, AssetLibrary or Loader3D.\r\n *\r\n * See notes about file size in the documentation for the ALL_BUNDLED constant.\r\n *\r\n * @see away.parsers.Parsers.ALL_BUNDLED\r\n */\r\n Parsers.enableAllBundled = function () {\r\n Loader.enableParsers(Parsers.ALL_BUNDLED);\r\n };\r\n return Parsers;\r\n}());\r\nexport { Parsers };\r\n/**\r\n * A list of all parsers that come bundled with Away3D. Use this to quickly\r\n * enable support for all bundled parsers to the file format auto-detection\r\n * feature, using any of the enableParsers() methods on loaders, e.g.:\r\n *\r\n * AssetLibrary.enableParsers(Parsers.ALL_BUNDLED);\r\n *\r\n * Beware however that this requires all parser classes to be included in the\r\n * SWF file, which will add 50-100 kb to the file. When only a limited set of\r\n * file formats are used, SWF file size can be saved by adding the parsers\r\n * individually using AssetLibrary.enableParser()\r\n *\r\n * A third way is to specify a parser for each loaded file, thereby bypassing\r\n * the auto-detection mechanisms altogether, while at the same time allowing\r\n * any properties that are unique to that parser to be set for that load.\r\n *\r\n * The bundled parsers are:\r\n *\r\n *
    \r\n *
  • AC3D (.ac)
  • \r\n *
  • Away Data version 1 ASCII and version 2 binary (.awd). AWD1 BSP unsupported
  • \r\n *
  • 3DMax (.3ds)
  • \r\n *
  • DXF (.dxf)
  • \r\n *
  • Quake 2 MD2 models (.md2)
  • \r\n *
  • Doom 3 MD5 animation clips (.md5anim)
  • \r\n *
  • Doom 3 MD5 sprites (.md5sprite)
  • \r\n *
  • Wavefront OBJ (.obj)
  • \r\n *
  • Collada (.dae)
  • \r\n *
  • Images (.jpg, .png)
  • \r\n *
\r\n *\r\n * @see away.library.AssetLibrary.enableParser\r\n */\r\nParsers.ALL_BUNDLED = Array(AWDParser, Max3DSParser, MD2Parser, OBJParser, FNTParser);\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/Parsers.js","import { Vector3D } from \"@awayjs/core\";\r\nimport { TouchPoint, MouseEvent, FrameScriptManager } from \"@awayjs/scene\";\r\n/**\r\n * MouseManager enforces a singleton pattern and is not intended to be instanced.\r\n * it provides a manager class for detecting mouse hits on scene objects and sending out mouse events.\r\n */\r\nvar MouseManager = (function () {\r\n /**\r\n * Creates a new MouseManager object.\r\n */\r\n function MouseManager() {\r\n var _this = this;\r\n this._viewLookup = new Array();\r\n this._containerLookup = new Array();\r\n this._nullVector = new Vector3D();\r\n this._queuedEvents = new Array();\r\n this._mouseUp = new MouseEvent(MouseEvent.MOUSE_UP);\r\n this._mouseClick = new MouseEvent(MouseEvent.CLICK);\r\n this._mouseOut = new MouseEvent(MouseEvent.MOUSE_OUT);\r\n this._mouseDown = new MouseEvent(MouseEvent.MOUSE_DOWN);\r\n this._mouseMove = new MouseEvent(MouseEvent.MOUSE_MOVE);\r\n this._mouseOver = new MouseEvent(MouseEvent.MOUSE_OVER);\r\n this._mouseWheel = new MouseEvent(MouseEvent.MOUSE_WHEEL);\r\n this._mouseDoubleClick = new MouseEvent(MouseEvent.DOUBLE_CLICK);\r\n this.onClickDelegate = function (event) { return _this.onClick(event); };\r\n this.onDoubleClickDelegate = function (event) { return _this.onDoubleClick(event); };\r\n this.onMouseDownDelegate = function (event) { return _this.onMouseDown(event); };\r\n this.onMouseMoveDelegate = function (event) { return _this.onMouseMove(event); };\r\n this.onMouseUpDelegate = function (event) { return _this.onMouseUp(event); };\r\n this.onMouseWheelDelegate = function (event) { return _this.onMouseWheel(event); };\r\n this.onMouseOverDelegate = function (event) { return _this.onMouseOver(event); };\r\n this.onMouseOutDelegate = function (event) { return _this.onMouseOut(event); };\r\n }\r\n MouseManager.prototype.registerContainer = function (container) {\r\n if (container && this._containerLookup.indexOf(container) == -1) {\r\n container.addEventListener(\"click\", this.onClickDelegate);\r\n container.addEventListener(\"dblclick\", this.onDoubleClickDelegate);\r\n container.addEventListener(\"touchstart\", this.onMouseDownDelegate);\r\n container.addEventListener(\"mousedown\", this.onMouseDownDelegate);\r\n container.addEventListener(\"touchmove\", this.onMouseMoveDelegate);\r\n container.addEventListener(\"mousemove\", this.onMouseMoveDelegate);\r\n container.addEventListener(\"mouseup\", this.onMouseUpDelegate);\r\n container.addEventListener(\"touchend\", this.onMouseUpDelegate);\r\n container.addEventListener(\"mousewheel\", this.onMouseWheelDelegate);\r\n container.addEventListener(\"mouseover\", this.onMouseOverDelegate);\r\n container.addEventListener(\"mouseout\", this.onMouseOutDelegate);\r\n this._containerLookup.push(container);\r\n }\r\n };\r\n MouseManager.prototype.unregisterContainer = function (container) {\r\n if (container && this._containerLookup.indexOf(container) != -1) {\r\n container.removeEventListener(\"click\", this.onClickDelegate);\r\n container.removeEventListener(\"dblclick\", this.onDoubleClickDelegate);\r\n container.removeEventListener(\"touchstart\", this.onMouseDownDelegate);\r\n container.removeEventListener(\"mousedown\", this.onMouseDownDelegate);\r\n container.removeEventListener(\"touchmove\", this.onMouseMoveDelegate);\r\n container.removeEventListener(\"mousemove\", this.onMouseMoveDelegate);\r\n container.removeEventListener(\"touchend\", this.onMouseUpDelegate);\r\n container.removeEventListener(\"mouseup\", this.onMouseUpDelegate);\r\n container.removeEventListener(\"mousewheel\", this.onMouseWheelDelegate);\r\n container.removeEventListener(\"mouseover\", this.onMouseOverDelegate);\r\n container.removeEventListener(\"mouseout\", this.onMouseOutDelegate);\r\n this._containerLookup.slice(this._containerLookup.indexOf(container), 1);\r\n }\r\n };\r\n MouseManager.getInstance = function () {\r\n if (this._instance)\r\n return this._instance;\r\n return (this._instance = new MouseManager());\r\n };\r\n MouseManager.prototype.fireMouseEvents = function (forceMouseMove) {\r\n // If colliding object has changed, queue over/out events.\r\n if (this._iCollision != this._previousCollidingObject) {\r\n if (this._previousCollidingObject)\r\n this.queueDispatch(this._mouseOut, this._mouseMoveEvent, this._previousCollidingObject);\r\n if (this._iCollision)\r\n this.queueDispatch(this._mouseOver, this._mouseMoveEvent);\r\n }\r\n // Fire mouse move events here if forceMouseMove is on.\r\n if (forceMouseMove && this._iCollision)\r\n this.queueDispatch(this._mouseMove, this._mouseMoveEvent);\r\n var event;\r\n var dispatcher;\r\n // Dispatch all queued events.\r\n var len = this._queuedEvents.length;\r\n for (var i = 0; i < len; ++i) {\r\n event = this._queuedEvents[i];\r\n dispatcher = event.entity;\r\n // bubble event up the heirarchy until the top level parent is reached\r\n while (dispatcher) {\r\n //console.log(\"dispatcher\", dispatcher, dispatcher.adapter.constructor.name);\r\n if (dispatcher._iIsMouseEnabled()) {\r\n dispatcher.dispatchEvent(event);\r\n }\r\n dispatcher = dispatcher.parent;\r\n }\r\n // not totally sure, but i think just calling it is easier and cheaper than any options for that\r\n // if nothing is queued, the function will return directly anyway\r\n FrameScriptManager.execute_queue();\r\n }\r\n this._queuedEvents.length = 0;\r\n this._previousCollidingObject = this._iCollision;\r\n this._iUpdateDirty = false;\r\n };\r\n //\t\tpublic addViewLayer(view:View)\r\n //\t\t{\r\n //\t\t\tvar stg:Stage = view.stage;\r\n //\r\n //\t\t\t// Add instance to mouse3dmanager to fire mouse events for multiple views\r\n //\t\t\tif (!view.stageGL.mouse3DManager)\r\n //\t\t\t\tview.stageGL.mouse3DManager = this;\r\n //\r\n //\t\t\tif (!hasKey(view))\r\n //\t\t\t\t_view3Ds[view] = 0;\r\n //\r\n //\t\t\t_childDepth = 0;\r\n //\t\t\ttraverseDisplayObjects(stg);\r\n //\t\t\t_viewCount = _childDepth;\r\n //\t\t}\r\n MouseManager.prototype.registerView = function (view) {\r\n if (view)\r\n this._viewLookup.push(view);\r\n };\r\n MouseManager.prototype.unregisterView = function (view) {\r\n if (view)\r\n this._viewLookup.slice(this._viewLookup.indexOf(view), 1);\r\n };\r\n MouseManager.prototype.addEventsForViewBinary = function (touchMessage, viewIdx) {\r\n if (viewIdx === void 0) { viewIdx = 0; }\r\n var newTouchEvent = {};\r\n newTouchEvent.clientX = null; // we get the x position from the active touch\r\n newTouchEvent.clientY = null; // we get the y position from the active touch\r\n newTouchEvent.touches = [];\r\n newTouchEvent.changedTouches = [];\r\n newTouchEvent.preventDefault = function () { };\r\n var messageView = new Float32Array(touchMessage);\r\n // transfer touches to event\r\n var i = 0;\r\n var cnt = 0;\r\n var touchCnt = 0;\r\n cnt++; //we temporary added 1 float to transfer fps from java to js. skip this\r\n var numTouches = messageView[cnt++];\r\n var touchtype = messageView[cnt++];\r\n var activeTouchID = messageView[cnt++];\r\n var x = 0;\r\n var y = 0;\r\n if ((touchtype != 1) && (touchtype != 6) && (touchtype != 12) && (touchtype != 262) && (touchtype != 518)) {\r\n // if this is not a UP command, we add all touches\r\n for (i = 0; i < numTouches; i++) {\r\n var newTouch = {};\r\n newTouch.identifier = messageView[cnt++];\r\n newTouch.clientX = messageView[cnt++];\r\n newTouch.clientY = messageView[cnt++];\r\n newTouchEvent.touches[i] = newTouch;\r\n }\r\n newTouchEvent.changedTouches[0] = newTouchEvent.touches[activeTouchID];\r\n x = newTouchEvent.changedTouches[0].clientX;\r\n y = newTouchEvent.changedTouches[0].clientY;\r\n }\r\n else {\r\n // if this is a UP command, we add all touches, except the active one\r\n if (numTouches == 1) {\r\n var newTouch = {};\r\n newTouch.identifier = messageView[cnt++];\r\n newTouch.clientX = messageView[cnt++];\r\n newTouch.clientY = messageView[cnt++];\r\n newTouchEvent.clientX = newTouch.clientX;\r\n newTouchEvent.clientY = newTouch.clientY;\r\n x = newTouchEvent.clientX;\r\n y = newTouchEvent.clientY;\r\n }\r\n else {\r\n for (i = 0; i < numTouches; i++) {\r\n var newTouch = {};\r\n newTouch.identifier = messageView[cnt++];\r\n newTouch.clientX = messageView[cnt++];\r\n newTouch.clientY = messageView[cnt++];\r\n if (i != activeTouchID) {\r\n newTouchEvent.touches[touchCnt] = newTouch;\r\n }\r\n else {\r\n newTouchEvent.clientX = newTouch.clientX;\r\n newTouchEvent.clientY = newTouch.clientY;\r\n x = newTouchEvent.clientX;\r\n y = newTouchEvent.clientY;\r\n }\r\n }\r\n }\r\n }\r\n //console.log(\"Touch ID:\"+touchtype+\" activeTouchID \"+activeTouchID+\" numTouches \"+numTouches+\" x\"+x+\" y\"+y);\r\n /*\r\n public static final int ACTION_DOWN = 0;\r\n public static final int ACTION_POINTER_1_DOWN = 5;\r\n public static final int ACTION_POINTER_DOWN = 5;\r\n public static final int ACTION_BUTTON_PRESS = 11;\r\n public static final int ACTION_POINTER_2_DOWN = 261;\r\n public static final int ACTION_POINTER_3_DOWN = 517;\r\n\r\n\r\n public static final int ACTION_UP = 1;\r\n public static final int ACTION_POINTER_1_UP = 6;\r\n public static final int ACTION_POINTER_UP = 6;\r\n public static final int ACTION_BUTTON_RELEASE = 12;\r\n public static final int ACTION_POINTER_2_UP = 262;\r\n public static final int ACTION_POINTER_3_UP = 518;\r\n\r\n public static final int ACTION_MOVE = 2;\r\n\r\n\r\n */\r\n if ((touchtype == 0) || (touchtype == 5) || (touchtype == 11) || (touchtype == 261) || (touchtype == 517)) {\r\n this.onMouseDown(newTouchEvent);\r\n }\r\n else if ((touchtype == 1) || (touchtype == 6) || (touchtype == 12) || (touchtype == 262) || (touchtype == 518)) {\r\n this.onMouseUp(newTouchEvent);\r\n }\r\n else if (touchtype == 2) {\r\n this.onMouseMove(newTouchEvent);\r\n }\r\n else {\r\n console.log(\"recieved unknown touch event-type: \" + touchtype);\r\n }\r\n };\r\n MouseManager.prototype.fireEventsForViewFromString = function (touchMessage, viewIdx) {\r\n if (viewIdx === void 0) { viewIdx = 0; }\r\n var newTouchEvent = {};\r\n newTouchEvent.clientX = null; // set the x position from the active touch\r\n newTouchEvent.clientY = null; // set the y position from the active touch\r\n newTouchEvent.preventDefault = function () { };\r\n var touchesFromMessage = touchMessage.split(\",\");\r\n // transfer touches to event\r\n var i = 0;\r\n var cnt = 0;\r\n var numTouches = parseInt(touchesFromMessage[cnt++]);\r\n var touchtype = parseInt(touchesFromMessage[cnt++]);\r\n var activeTouch = parseInt(touchesFromMessage[cnt++]);\r\n newTouchEvent.touches = [];\r\n newTouchEvent.changedTouches = [];\r\n if ((touchtype != 1) && (touchtype != 6)) {\r\n for (i = 0; i < numTouches; i++) {\r\n var newTouch = {};\r\n newTouch.identifier = touchesFromMessage[cnt++];\r\n newTouch.clientX = touchesFromMessage[cnt++];\r\n newTouch.clientY = touchesFromMessage[cnt++];\r\n newTouchEvent.touches[i] = newTouch;\r\n newTouchEvent.changedTouches[i] = newTouch;\r\n }\r\n ;\r\n newTouchEvent.changedTouches[i] = newTouchEvent.touches[activeTouch];\r\n }\r\n else {\r\n for (i = 0; i < numTouches; i++) {\r\n if (i != activeTouch) {\r\n var newTouch = {};\r\n newTouch.identifier = touchesFromMessage[cnt++];\r\n newTouch.clientX = touchesFromMessage[cnt++];\r\n newTouch.clientY = touchesFromMessage[cnt++];\r\n newTouchEvent.touches[i] = newTouch;\r\n newTouchEvent.changedTouches[i] = newTouch;\r\n }\r\n else {\r\n newTouchEvent.clientX = touchesFromMessage[cnt++];\r\n newTouchEvent.clientY = touchesFromMessage[cnt++];\r\n cnt++;\r\n }\r\n }\r\n ;\r\n }\r\n if (touchtype == 0) {\r\n this.onMouseDown(newTouchEvent);\r\n }\r\n else if (touchtype == 1) {\r\n this.onMouseUp(newTouchEvent);\r\n }\r\n else if (touchtype == 2) {\r\n this.onMouseMove(newTouchEvent);\r\n }\r\n else if (touchtype == 261) {\r\n this.onMouseDown(newTouchEvent);\r\n }\r\n else if (touchtype == 6) {\r\n this.onMouseUp(newTouchEvent);\r\n }\r\n };\r\n // ---------------------------------------------------------------------\r\n // Private.\r\n // ---------------------------------------------------------------------\r\n MouseManager.prototype.queueDispatch = function (event, sourceEvent, collision) {\r\n if (collision === void 0) { collision = null; }\r\n // 2D properties.\r\n if (sourceEvent) {\r\n event.delta = sourceEvent.wheelDelta;\r\n event.ctrlKey = sourceEvent.ctrlKey;\r\n event.altKey = sourceEvent.altKey;\r\n event.shiftKey = sourceEvent.shiftKey;\r\n event.screenX = (sourceEvent.clientX != null) ? sourceEvent.clientX : sourceEvent.changedTouches[0].clientX;\r\n event.screenY = (sourceEvent.clientY != null) ? sourceEvent.clientY : sourceEvent.changedTouches[0].clientY;\r\n }\r\n if (collision == null)\r\n collision = this._iCollision;\r\n // 3D properties.\r\n if (collision) {\r\n // Object.\r\n event.entity = collision.entity;\r\n event.renderable = collision.renderable;\r\n // UV.\r\n event.uv = collision.uv;\r\n // Position.\r\n event.position = collision.position ? collision.position.clone() : null;\r\n // Normal.\r\n event.normal = collision.normal ? collision.normal.clone() : null;\r\n // Face index.\r\n event.elementIndex = collision.elementIndex;\r\n }\r\n else {\r\n // Set all to null.\r\n event.uv = null;\r\n event.entity = null;\r\n event.position = this._nullVector;\r\n event.normal = this._nullVector;\r\n event.elementIndex = 0;\r\n }\r\n // Store event to be dispatched later.\r\n this._queuedEvents.push(event);\r\n };\r\n // ---------------------------------------------------------------------\r\n // Listeners.\r\n // ---------------------------------------------------------------------\r\n MouseManager.prototype.onMouseMove = function (event) {\r\n event.preventDefault();\r\n this.updateColliders(event);\r\n if (this._iCollision)\r\n this.queueDispatch(this._mouseMove, this._mouseMoveEvent = event);\r\n };\r\n MouseManager.prototype.onMouseOut = function (event) {\r\n this.updateColliders(event);\r\n if (this._iCollision)\r\n this.queueDispatch(this._mouseOut, event);\r\n };\r\n MouseManager.prototype.onMouseOver = function (event) {\r\n this.updateColliders(event);\r\n if (this._iCollision)\r\n this.queueDispatch(this._mouseOver, event);\r\n };\r\n MouseManager.prototype.onClick = function (event) {\r\n this.updateColliders(event);\r\n if (this._iCollision)\r\n this.queueDispatch(this._mouseClick, event);\r\n };\r\n MouseManager.prototype.onDoubleClick = function (event) {\r\n this.updateColliders(event);\r\n if (this._iCollision)\r\n this.queueDispatch(this._mouseDoubleClick, event);\r\n };\r\n MouseManager.prototype.onMouseDown = function (event) {\r\n event.preventDefault();\r\n this.updateColliders(event);\r\n if (this._iCollision)\r\n this.queueDispatch(this._mouseDown, event);\r\n };\r\n MouseManager.prototype.onMouseUp = function (event) {\r\n event.preventDefault();\r\n this.updateColliders(event);\r\n if (this._iCollision)\r\n this.queueDispatch(this._mouseUp, event);\r\n };\r\n MouseManager.prototype.onMouseWheel = function (event) {\r\n this.updateColliders(event);\r\n if (this._iCollision)\r\n this.queueDispatch(this._mouseWheel, event);\r\n };\r\n MouseManager.prototype.updateColliders = function (event) {\r\n var view;\r\n var mouseX = (event.clientX != null) ? event.clientX : event.changedTouches[0].clientX;\r\n var mouseY = (event.clientY != null) ? event.clientY : event.changedTouches[0].clientY;\r\n var len = this._viewLookup.length;\r\n for (var i = 0; i < len; i++) {\r\n view = this._viewLookup[i];\r\n view._pTouchPoints.length = 0;\r\n if (event.touches) {\r\n var touch;\r\n var len = event.touches.length;\r\n for (var i = 0; i < len; i++) {\r\n touch = event.touches[i];\r\n view._pTouchPoints.push(new TouchPoint(touch.clientX + view.x, touch.clientY + view.y, touch.identifier));\r\n }\r\n }\r\n if (this._iUpdateDirty)\r\n continue;\r\n if (mouseX < view.x || mouseX > view.x + view.width || mouseY < view.y || mouseY > view.y + view.height) {\r\n view._pMouseX = null;\r\n view._pMouseY = null;\r\n }\r\n else {\r\n view._pMouseX = mouseX + view.x;\r\n view._pMouseY = mouseY + view.y;\r\n view.updateCollider();\r\n if (view.layeredView && this._iCollision)\r\n break;\r\n }\r\n }\r\n this._iUpdateDirty = true;\r\n };\r\n return MouseManager;\r\n}());\r\nexport { MouseManager };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/managers/MouseManager.js","import * as tslib_1 from \"tslib\";\r\nimport { AbstractionBase } from \"@awayjs/core\";\r\nimport { DisplayObjectEvent, AxisAlignedBoundingBox, BoundingSphere, BoundsType, NullBounds } from \"@awayjs/scene\";\r\n/**\r\n * @class away.partition.EntityNode\r\n */\r\nvar DisplayObjectNode = (function (_super) {\r\n tslib_1.__extends(DisplayObjectNode, _super);\r\n function DisplayObjectNode(entity, pool) {\r\n var _this = _super.call(this, entity, pool) || this;\r\n _this.numEntities = 0;\r\n _this.isSceneGraphNode = false;\r\n _this._boundsDirty = true;\r\n _this._onInvalidatePartitionBoundsDelegate = function (event) { return _this._onInvalidatePartitionBounds(event); };\r\n _this._entity = entity;\r\n _this._entity.addEventListener(DisplayObjectEvent.INVALIDATE_PARTITION_BOUNDS, _this._onInvalidatePartitionBoundsDelegate);\r\n _this._boundsType = _this._entity.boundsType;\r\n return _this;\r\n }\r\n Object.defineProperty(DisplayObjectNode.prototype, \"debugVisible\", {\r\n get: function () {\r\n return this._entity.debugVisible;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayObjectNode.prototype, \"bounds\", {\r\n /**\r\n * @internal\r\n */\r\n get: function () {\r\n if (this._boundsDirty)\r\n this._updateBounds();\r\n return this._bounds;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n * @returns {boolean}\r\n */\r\n DisplayObjectNode.prototype.isCastingShadow = function () {\r\n return this._entity.castsShadows;\r\n };\r\n /**\r\n *\r\n * @returns {boolean}\r\n */\r\n DisplayObjectNode.prototype.isMask = function () {\r\n return this._entity.maskMode;\r\n };\r\n DisplayObjectNode.prototype.onClear = function (event) {\r\n _super.prototype.onClear.call(this, event);\r\n this._entity.removeEventListener(DisplayObjectEvent.INVALIDATE_PARTITION_BOUNDS, this._onInvalidatePartitionBoundsDelegate);\r\n this._entity = null;\r\n if (this._bounds)\r\n this._bounds.dispose();\r\n this._bounds = null;\r\n };\r\n DisplayObjectNode.prototype.onInvalidate = function (event) {\r\n _super.prototype.onInvalidate.call(this, event);\r\n if (this._boundsType != this._entity.boundsType) {\r\n this._boundsType = this._entity.boundsType;\r\n this._boundsDirty = true;\r\n }\r\n };\r\n /**\r\n *\r\n * @param planes\r\n * @param numPlanes\r\n * @returns {boolean}\r\n */\r\n DisplayObjectNode.prototype.isInFrustum = function (planes, numPlanes) {\r\n return true;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n DisplayObjectNode.prototype.isIntersectingRay = function (rayPosition, rayDirection) {\r\n return true;\r\n };\r\n /**\r\n *\r\n * @returns {boolean}\r\n */\r\n DisplayObjectNode.prototype.isRenderable = function () {\r\n return true;\r\n };\r\n DisplayObjectNode.prototype.renderBounds = function (traverser) {\r\n traverser.applyEntity(this.bounds.boundsPrimitive);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n DisplayObjectNode.prototype.acceptTraverser = function (traverser) {\r\n // do nothing here\r\n };\r\n DisplayObjectNode.prototype._onInvalidatePartitionBounds = function (event) {\r\n // do nothing here\r\n };\r\n DisplayObjectNode.prototype._updateBounds = function () {\r\n if (this._bounds)\r\n this._bounds.dispose();\r\n if (this._boundsType == BoundsType.AXIS_ALIGNED_BOX)\r\n this._bounds = new AxisAlignedBoundingBox(this._entity);\r\n else if (this._boundsType == BoundsType.SPHERE)\r\n this._bounds = new BoundingSphere(this._entity);\r\n else if (this._boundsType == BoundsType.NULL)\r\n this._bounds = new NullBounds();\r\n this._boundsDirty = false;\r\n };\r\n return DisplayObjectNode;\r\n}(AbstractionBase));\r\nexport { DisplayObjectNode };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/partition/DisplayObjectNode.js","import * as tslib_1 from \"tslib\";\r\nimport { DisplayObjectNode } from \"./DisplayObjectNode\";\r\n/**\r\n * Maintains scenegraph heirarchy when collecting nodes\r\n */\r\nvar SceneGraphNode = (function (_super) {\r\n tslib_1.__extends(SceneGraphNode, _super);\r\n function SceneGraphNode() {\r\n var _this = _super.apply(this, arguments) || this;\r\n _this.isSceneGraphNode = true;\r\n _this._numNodes = 0;\r\n _this._pChildNodes = new Array();\r\n _this._childDepths = new Array();\r\n _this._numMasks = 0;\r\n _this._childMasks = new Array();\r\n return _this;\r\n }\r\n /**\r\n *\r\n * @param traverser\r\n */\r\n SceneGraphNode.prototype.acceptTraverser = function (traverser) {\r\n //containers nodes are for ordering only, no need to check enterNode or debugVisible\r\n if (this.numEntities == 0)\r\n return;\r\n var i;\r\n for (i = this._numNodes - 1; i >= 0; i--)\r\n this._pChildNodes[i].acceptTraverser(traverser);\r\n for (i = this._numMasks - 1; i >= 0; i--)\r\n this._childMasks[i].acceptTraverser(traverser);\r\n };\r\n /**\r\n *\r\n * @param node\r\n * @internal\r\n */\r\n SceneGraphNode.prototype.iAddNode = function (node) {\r\n node.parent = this;\r\n if (node._entity.maskMode) {\r\n this._childMasks.push(node);\r\n this._numMasks++;\r\n }\r\n else {\r\n var depth = (this._entity != node._entity) ? node._entity._depthID : -16384;\r\n var len = this._childDepths.length;\r\n var index = len;\r\n while (index--)\r\n if (this._childDepths[index] < depth)\r\n break;\r\n index++;\r\n if (index < len) {\r\n this._pChildNodes.splice(index, 0, node);\r\n this._childDepths.splice(index, 0, depth);\r\n }\r\n else {\r\n this._pChildNodes.push(node);\r\n this._childDepths.push(depth);\r\n }\r\n this._numNodes++;\r\n }\r\n var numEntities = node.isSceneGraphNode ? node.numEntities : 1;\r\n node = this;\r\n do {\r\n node.numEntities += numEntities;\r\n } while ((node = node.parent) != null);\r\n };\r\n /**\r\n *\r\n * @param node\r\n * @internal\r\n */\r\n SceneGraphNode.prototype.iRemoveNode = function (node) {\r\n if (node._entity.maskMode) {\r\n this._childMasks.splice(this._childMasks.indexOf(node), 1);\r\n this._numMasks--;\r\n }\r\n else {\r\n var index = this._pChildNodes.indexOf(node);\r\n this._pChildNodes.splice(index, 1);\r\n this._childDepths.splice(index, 1);\r\n this._numNodes--;\r\n }\r\n var numEntities = node.numEntities;\r\n node = this;\r\n do {\r\n node.numEntities -= numEntities;\r\n } while ((node = node.parent) != null);\r\n };\r\n return SceneGraphNode;\r\n}(DisplayObjectNode));\r\nexport { SceneGraphNode };\r\nexport default SceneGraphNode;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/partition/SceneGraphNode.js","/**\r\n * @class away.partition.Partition\r\n */\r\nvar PartitionBase = (function () {\r\n function PartitionBase(root) {\r\n this._abstractionPool = new Object();\r\n this._updateQueue = {};\r\n this._root = root;\r\n }\r\n Object.defineProperty(PartitionBase.prototype, \"root\", {\r\n get: function () {\r\n return this._root;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PartitionBase.prototype.getAbstraction = function (entity) {\r\n return (this._abstractionPool[entity.id] || (this._abstractionPool[entity.id] = new PartitionBase._abstractionClassPool[entity.assetType](entity, this)));\r\n };\r\n /**\r\n *\r\n * @param image\r\n */\r\n PartitionBase.prototype.clearAbstraction = function (entity) {\r\n this._abstractionPool[entity.id] = null;\r\n };\r\n PartitionBase.prototype.traverse = function (traverser) {\r\n this.updateEntities();\r\n if (this._rootNode)\r\n this._rootNode.acceptTraverser(traverser);\r\n };\r\n PartitionBase.prototype.invalidateEntity = function (entity) {\r\n this._updateQueue[entity.id] = entity;\r\n };\r\n PartitionBase.prototype.updateEntity = function (entity) {\r\n entity._iInternalUpdate();\r\n if (entity.isEntity)\r\n this.updateNode(this.getAbstraction(entity));\r\n };\r\n PartitionBase.prototype.updateNode = function (node) {\r\n var targetNode = this.findParentForNode(node);\r\n if (node.parent != targetNode) {\r\n if (node.parent)\r\n node.parent.iRemoveNode(node);\r\n targetNode.iAddNode(node);\r\n }\r\n };\r\n PartitionBase.prototype.clearEntity = function (entity) {\r\n delete this._updateQueue[entity.id];\r\n if (entity.isEntity)\r\n this.clearNode(this.getAbstraction(entity));\r\n };\r\n PartitionBase.prototype.clearNode = function (node) {\r\n if (node.parent) {\r\n node.parent.iRemoveNode(node);\r\n node.parent = null;\r\n }\r\n };\r\n /**\r\n *\r\n * @param entity\r\n * @returns {away.partition.NodeBase}\r\n */\r\n PartitionBase.prototype.findParentForNode = function (node) {\r\n return this._rootNode;\r\n };\r\n PartitionBase.prototype.updateEntities = function () {\r\n var entity;\r\n //required for controllers with autoUpdate set to true and queued events\r\n for (var key in this._updateQueue)\r\n this.updateEntity(this._updateQueue[key]);\r\n //clear updateQueue\r\n this._updateQueue = {};\r\n };\r\n PartitionBase.prototype.dispose = function () {\r\n //TODO\r\n };\r\n /**\r\n *\r\n * @param imageObjectClass\r\n */\r\n PartitionBase.registerAbstraction = function (entityNodeClass, assetClass) {\r\n PartitionBase._abstractionClassPool[assetClass.assetType] = entityNodeClass;\r\n };\r\n return PartitionBase;\r\n}());\r\nexport { PartitionBase };\r\nPartitionBase._abstractionClassPool = new Object();\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/partition/PartitionBase.js","import * as tslib_1 from \"tslib\";\r\nimport { SceneGraphNode } from \"./SceneGraphNode\";\r\nimport { PartitionBase } from \"./PartitionBase\";\r\n/**\r\n * @class away.partition.Partition\r\n */\r\nvar SceneGraphPartition = (function (_super) {\r\n tslib_1.__extends(SceneGraphPartition, _super);\r\n function SceneGraphPartition(root) {\r\n var _this = _super.call(this, root) || this;\r\n _this._sceneGraphNodePool = new SceneGraphNodePool();\r\n return _this;\r\n }\r\n SceneGraphPartition.prototype.traverse = function (traverser) {\r\n _super.prototype.traverse.call(this, traverser);\r\n };\r\n /**\r\n *\r\n * @param entity\r\n * @returns {away.partition.NodeBase}\r\n */\r\n SceneGraphPartition.prototype.findParentForNode = function (node) {\r\n if (this._root == node._entity && node.isSceneGraphNode) {\r\n this._rootNode = node;\r\n return null;\r\n }\r\n if (!node.isSceneGraphNode && node._entity.isContainer)\r\n return this._sceneGraphNodePool.getAbstraction(node._entity);\r\n return this._sceneGraphNodePool.getAbstraction(node._entity.parent);\r\n };\r\n SceneGraphPartition.prototype.updateEntity = function (entity) {\r\n _super.prototype.updateEntity.call(this, entity);\r\n if (entity.isContainer)\r\n this.updateNode(this._sceneGraphNodePool.getAbstraction(entity));\r\n };\r\n SceneGraphPartition.prototype.clearEntity = function (entity) {\r\n _super.prototype.clearEntity.call(this, entity);\r\n if (entity.isContainer)\r\n this.clearNode(this._sceneGraphNodePool.getAbstraction(entity));\r\n };\r\n return SceneGraphPartition;\r\n}(PartitionBase));\r\nexport { SceneGraphPartition };\r\n/**\r\n * @class away.pool.SceneGraphNodePool\r\n */\r\nvar SceneGraphNodePool = (function () {\r\n function SceneGraphNodePool() {\r\n this._abstractionPool = new Object();\r\n }\r\n /**\r\n * //TODO\r\n *\r\n * @param entity\r\n * @returns EntityNode\r\n */\r\n SceneGraphNodePool.prototype.getAbstraction = function (entity) {\r\n return (this._abstractionPool[entity.id] || (this._abstractionPool[entity.id] = new SceneGraphNode(entity, this)));\r\n };\r\n /**\r\n * //TODO\r\n *\r\n * @param entity\r\n */\r\n SceneGraphNodePool.prototype.clearAbstraction = function (entity) {\r\n delete this._abstractionPool[entity.id];\r\n };\r\n return SceneGraphNodePool;\r\n}());\r\nexport { SceneGraphNodePool };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/partition/SceneGraphPartition.js","import * as tslib_1 from \"tslib\";\r\nimport { Vector3D } from \"@awayjs/core\";\r\nimport { TraverserBase } from \"@awayjs/graphics\";\r\n/**\r\n * Picks a 3d object from a view or scene by 3D raycast calculations.\r\n * Performs an initial coarse boundary calculation to return a subset of entities whose bounding volumes intersect with the specified ray,\r\n * then triggers an optional picking collider on individual renderable objects to further determine the precise values of the picking ray collision.\r\n *\r\n * @class away.pick.RaycastPicker\r\n */\r\nvar RaycastPicker = (function (_super) {\r\n tslib_1.__extends(RaycastPicker, _super);\r\n /**\r\n * Creates a new RaycastPicker object.\r\n *\r\n * @param findClosestCollision Determines whether the picker searches for the closest bounds collision along the ray,\r\n * or simply returns the first collision encountered. Defaults to false.\r\n */\r\n function RaycastPicker(findClosestCollision) {\r\n if (findClosestCollision === void 0) { findClosestCollision = false; }\r\n var _this = _super.call(this) || this;\r\n _this._entities = new Array();\r\n /**\r\n * @inheritDoc\r\n */\r\n _this.onlyMouseEnabled = true;\r\n _this._findClosestCollision = findClosestCollision;\r\n return _this;\r\n }\r\n /**\r\n * Returns true if the current node is at least partly in the frustum. If so, the partition node knows to pass on the traverser to its children.\r\n *\r\n * @param node The Partition3DNode object to frustum-test.\r\n */\r\n RaycastPicker.prototype.enterNode = function (node) {\r\n return node.isIntersectingRay(this._rayPosition, this._rayDirection) && !node.isMask();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n RaycastPicker.prototype.getCollision = function (rayPosition, rayDirection, view) {\r\n this._rayPosition = rayPosition;\r\n this._rayDirection = rayDirection;\r\n // collect entities to test\r\n view.traversePartitions(this);\r\n //early out if no collisions detected\r\n if (!this._entities.length)\r\n return null;\r\n //console.log(\"entities: \", this._entities)\r\n var collision = this.getPickingCollision(view);\r\n //discard entities\r\n this._entities.length = 0;\r\n return collision;\r\n };\r\n //\t\tpublic getEntityCollision(position:Vector3D, direction:Vector3D, entities:Array):PickingCollision\r\n //\t\t{\r\n //\t\t\tthis._numRenderables = 0;\r\n //\r\n //\t\t\tvar renderable:IEntity;\r\n //\t\t\tvar l:number = entities.length;\r\n //\r\n //\t\t\tfor (var c:number = 0; c < l; c++) {\r\n //\t\t\t\trenderable = entities[c];\r\n //\r\n //\t\t\t\tif (renderable.isIntersectingRay(position, direction))\r\n //\t\t\t\t\tthis._renderables[this._numRenderables++] = renderable;\r\n //\t\t\t}\r\n //\r\n //\t\t\treturn this.getPickingCollision(this._raycastCollector);\r\n //\t\t}\r\n RaycastPicker.prototype.setIgnoreList = function (entities) {\r\n this._ignoredEntities = entities;\r\n };\r\n RaycastPicker.prototype.isIgnored = function (entity) {\r\n if (this.onlyMouseEnabled && !entity._iIsMouseEnabled())\r\n return true;\r\n if (this._ignoredEntities) {\r\n var len = this._ignoredEntities.length;\r\n for (var i = 0; i < len; i++)\r\n if (this._ignoredEntities[i] == entity)\r\n return true;\r\n }\r\n return false;\r\n };\r\n RaycastPicker.prototype.sortOnNearT = function (entity1, entity2) {\r\n return entity1._iPickingCollision.rayEntryDistance > entity2._iPickingCollision.rayEntryDistance ? 1 : entity1._iPickingCollision.rayEntryDistance < entity2._iPickingCollision.rayEntryDistance ? -1 : 0;\r\n };\r\n RaycastPicker.prototype.getPickingCollision = function (view) {\r\n // Sort entities from closest to furthest to reduce tests.\r\n this._entities = this._entities.sort(this.sortOnNearT); // TODO - test sort filter in JS\r\n // ---------------------------------------------------------------------\r\n // Evaluate triangle collisions when needed.\r\n // Replaces collision data provided by bounds collider with more precise data.\r\n // ---------------------------------------------------------------------\r\n this._bestCollision = null;\r\n var len = this._entities.length;\r\n for (var i = 0; i < len; i++) {\r\n this._entity = this._entities[i];\r\n this._testCollision = this._entity._iPickingCollision;\r\n if (this._bestCollision == null || this._testCollision.rayEntryDistance < this._bestCollision.rayEntryDistance) {\r\n this._testCollider = view.getPartition(this._entity).getAbstraction(this._entity).pickingCollider;\r\n if (this._testCollider) {\r\n this._testCollision.rayEntryDistance = Number.MAX_VALUE;\r\n this._entity._acceptTraverser(this);\r\n // If a collision exists, update the collision data and stop all checks.\r\n if (this._bestCollision && !this._findClosestCollision)\r\n break;\r\n }\r\n else if (!this._testCollision.rayOriginIsInsideBounds) {\r\n // A bounds collision with no picking collider stops all checks.\r\n // Note: a bounds collision with a ray origin inside its bounds is ONLY ever used\r\n // to enable the detection of a corresponsding triangle collision.\r\n // Therefore, bounds collisions with a ray origin inside its bounds can be ignored\r\n // if it has been established that there is NO triangle collider to test\r\n this._bestCollision = this._testCollision;\r\n break;\r\n }\r\n }\r\n }\r\n if (this._bestCollision)\r\n this.updatePosition(this._bestCollision);\r\n return this._bestCollision;\r\n };\r\n RaycastPicker.prototype.updatePosition = function (pickingCollision) {\r\n var collisionPos = pickingCollision.position || (pickingCollision.position = new Vector3D());\r\n var rayDir = pickingCollision.rayDirection;\r\n var rayPos = pickingCollision.rayPosition;\r\n var t = pickingCollision.rayEntryDistance;\r\n collisionPos.x = rayPos.x + t * rayDir.x;\r\n collisionPos.y = rayPos.y + t * rayDir.y;\r\n collisionPos.z = rayPos.z + t * rayDir.z;\r\n };\r\n RaycastPicker.prototype.dispose = function () {\r\n //TODO\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n RaycastPicker.prototype.applyEntity = function (entity) {\r\n if (!this.isIgnored(entity))\r\n this._entities.push(entity);\r\n };\r\n RaycastPicker.prototype.applyBillboard = function (billboard) {\r\n if (this._testCollider.testBillboardCollision(billboard, billboard.material, this._testCollision))\r\n this._bestCollision = this._testCollision;\r\n };\r\n RaycastPicker.prototype.applyLineShape = function (shape) {\r\n if (this._testCollider.testLineCollision(shape.elements, shape.material || this._entity.material, this._testCollision, shape.count || shape.elements.numVertices, shape.offset))\r\n this._bestCollision = this._testCollision;\r\n };\r\n RaycastPicker.prototype.applyTriangleShape = function (shape) {\r\n if (this._testCollider.testTriangleCollision(shape.elements, shape.material || this._entity.material, this._testCollision, shape.count || shape.elements.numVertices, shape.offset))\r\n this._bestCollision = this._testCollision;\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n RaycastPicker.prototype.applyDirectionalLight = function (entity) {\r\n //don't do anything here\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n RaycastPicker.prototype.applyLightProbe = function (entity) {\r\n //don't do anything here\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n RaycastPicker.prototype.applyPointLight = function (entity) {\r\n //don't do anything here\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n RaycastPicker.prototype.applySkybox = function (entity) {\r\n //don't do anything here\r\n };\r\n return RaycastPicker;\r\n}(TraverserBase));\r\nexport { RaycastPicker };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/pick/RaycastPicker.js","import { NullBounds } from \"@awayjs/scene\";\r\n/**\r\n * @class away.partition.NodeBase\r\n */\r\nvar NodeBase = (function () {\r\n /**\r\n *\r\n */\r\n function NodeBase() {\r\n this._bounds = new NullBounds();\r\n this._pChildNodes = new Array();\r\n this._pNumChildNodes = 0;\r\n this.numEntities = 0;\r\n }\r\n Object.defineProperty(NodeBase.prototype, \"debugVisible\", {\r\n get: function () {\r\n return false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NodeBase.prototype, \"bounds\", {\r\n /**\r\n * @internal\r\n */\r\n get: function () {\r\n return this._bounds; //TODO\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n * @param planes\r\n * @param numPlanes\r\n * @returns {boolean}\r\n * @internal\r\n */\r\n NodeBase.prototype.isInFrustum = function (planes, numPlanes) {\r\n return true;\r\n };\r\n /**\r\n *\r\n * @param rayPosition\r\n * @param rayDirection\r\n * @returns {boolean}\r\n */\r\n NodeBase.prototype.isIntersectingRay = function (rayPosition, rayDirection) {\r\n return true;\r\n };\r\n /**\r\n *\r\n * @returns {boolean}\r\n */\r\n NodeBase.prototype.isRenderable = function () {\r\n return true;\r\n };\r\n /**\r\n *\r\n * @returns {boolean}\r\n */\r\n NodeBase.prototype.isCastingShadow = function () {\r\n return true;\r\n };\r\n NodeBase.prototype.renderBounds = function (traverser) {\r\n //nothing to do here\r\n };\r\n /**\r\n *\r\n * @returns {boolean}\r\n */\r\n NodeBase.prototype.isMask = function () {\r\n return false;\r\n };\r\n NodeBase.prototype.dispose = function () {\r\n this.parent = null;\r\n this._pChildNodes = null;\r\n };\r\n /**\r\n *\r\n * @param traverser\r\n */\r\n NodeBase.prototype.acceptTraverser = function (traverser) {\r\n if (this.numEntities == 0)\r\n return;\r\n if (traverser.enterNode(this)) {\r\n for (var i = 0; i < this._pNumChildNodes; i++)\r\n this._pChildNodes[i].acceptTraverser(traverser);\r\n }\r\n };\r\n /**\r\n *\r\n * @param node\r\n * @internal\r\n */\r\n NodeBase.prototype.iAddNode = function (node) {\r\n node.parent = this;\r\n this.numEntities += node.numEntities;\r\n this._pChildNodes[this._pNumChildNodes++] = node;\r\n var numEntities = node.numEntities;\r\n node = this;\r\n do {\r\n node.numEntities += numEntities;\r\n } while ((node = node.parent) != null);\r\n };\r\n /**\r\n *\r\n * @param node\r\n * @internal\r\n */\r\n NodeBase.prototype.iRemoveNode = function (node) {\r\n var index = this._pChildNodes.indexOf(node);\r\n this._pChildNodes[index] = this._pChildNodes[--this._pNumChildNodes];\r\n this._pChildNodes.pop();\r\n var numEntities = node.numEntities;\r\n node = this;\r\n do {\r\n node.numEntities -= numEntities;\r\n } while ((node = node.parent) != null);\r\n };\r\n return NodeBase;\r\n}());\r\nexport { NodeBase };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/partition/NodeBase.js","import * as tslib_1 from \"tslib\";\r\nimport { NodeBase } from \"./NodeBase\";\r\nimport { PartitionBase } from \"./PartitionBase\";\r\n/**\r\n * @class away.partition.Partition\r\n */\r\nvar BasicPartition = (function (_super) {\r\n tslib_1.__extends(BasicPartition, _super);\r\n function BasicPartition(root) {\r\n var _this = _super.call(this, root) || this;\r\n _this._rootNode = new NodeBase();\r\n return _this;\r\n }\r\n return BasicPartition;\r\n}(PartitionBase));\r\nexport { BasicPartition };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/partition/BasicPartition.js","import { getTimer } from \"@awayjs/core\";\r\nimport { TouchPoint, Camera, CameraEvent, Scene } from \"@awayjs/scene\";\r\nimport { RendererEvent, DefaultRenderer } from \"@awayjs/renderer\";\r\nimport { RaycastPicker } from \"./pick/RaycastPicker\";\r\nimport { MouseManager } from \"./managers/MouseManager\";\r\nimport { BasicPartition } from \"./partition/BasicPartition\";\r\nvar View = (function () {\r\n /*\r\n ***********************************************************************\r\n * Disabled / Not yet implemented\r\n ***********************************************************************\r\n *\r\n * private _background:away.textures.Texture2DBase;\r\n *\r\n * public _pTouch3DManager:away.managers.Touch3DManager;\r\n *\r\n */\r\n function View(renderer, scene, camera) {\r\n if (renderer === void 0) { renderer = null; }\r\n if (scene === void 0) { scene = null; }\r\n if (camera === void 0) { camera = null; }\r\n var _this = this;\r\n this._time = 0;\r\n this._deltaTime = 0;\r\n this._backgroundColor = 0x000000;\r\n this._backgroundAlpha = 1;\r\n this._viewportDirty = true;\r\n this._scissorDirty = true;\r\n this._mousePicker = new RaycastPicker();\r\n this._partitions = new Object();\r\n this._pTouchPoints = new Array();\r\n this._onProjectionChangedDelegate = function (event) { return _this._onProjectionChanged(event); };\r\n this._onViewportUpdatedDelegate = function (event) { return _this._onViewportUpdated(event); };\r\n this._onScissorUpdatedDelegate = function (event) { return _this._onScissorUpdated(event); };\r\n this._mouseManager = MouseManager.getInstance();\r\n this._mouseManager.registerView(this);\r\n this.scene = scene || new Scene();\r\n this.camera = camera || new Camera();\r\n this.renderer = renderer || new DefaultRenderer();\r\n //\t\t\tif (this._shareContext)\r\n //\t\t\t\tthis._mouse3DManager.addViewLayer(this);\r\n }\r\n View.prototype.getPartition = function (entity) {\r\n //use registered partition for the displayobject or fallback for scene\r\n return this._partitions[entity.partition.id] || this._partitions[this._pScene.id];\r\n };\r\n View.prototype.setPartition = function (entity, partition) {\r\n var oldPartition = this._partitions[entity.id];\r\n if (oldPartition == partition)\r\n return;\r\n //clears all existing entities on the partition\r\n entity.isPartition = false;\r\n if (oldPartition) {\r\n oldPartition.dispose();\r\n delete this._partitions[entity.id];\r\n }\r\n if (partition) {\r\n this._partitions[entity.id] = partition;\r\n entity.isPartition = true;\r\n }\r\n };\r\n View.prototype.getCollider = function (entity) {\r\n return this.getPartition(entity).getAbstraction(entity).pickingCollider;\r\n };\r\n View.prototype.setCollider = function (entity, collider) {\r\n this.getPartition(entity).getAbstraction(entity).pickingCollider = collider;\r\n };\r\n Object.defineProperty(View.prototype, \"mouseX\", {\r\n get: function () {\r\n return this._pMouseX;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"mouseY\", {\r\n get: function () {\r\n return this._pMouseY;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"touchPoints\", {\r\n get: function () {\r\n return this._pTouchPoints;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n View.prototype.getLocalMouseX = function (displayObject) {\r\n return displayObject.transform.inverseConcatenatedMatrix3D.transformVector(this.unproject(this._pMouseX, this._pMouseY, 1000)).x;\r\n };\r\n View.prototype.getLocalMouseY = function (displayObject) {\r\n return displayObject.transform.inverseConcatenatedMatrix3D.transformVector(this.unproject(this._pMouseX, this._pMouseY, 1000)).y;\r\n };\r\n View.prototype.getLocalTouchPoints = function (displayObject) {\r\n var localPosition;\r\n var localTouchPoints = new Array();\r\n var len = this._pTouchPoints.length;\r\n for (var i = 0; i < len; i++) {\r\n localPosition = displayObject.transform.inverseConcatenatedMatrix3D.transformVector(this.unproject(this._pTouchPoints[i].x, this._pTouchPoints[i].y, 1000));\r\n localTouchPoints.push(new TouchPoint(localPosition.x, localPosition.y, this._pTouchPoints[i].id));\r\n }\r\n return localTouchPoints;\r\n };\r\n Object.defineProperty(View.prototype, \"renderer\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._pRenderer;\r\n },\r\n set: function (value) {\r\n if (this._pRenderer == value)\r\n return;\r\n if (this._pRenderer) {\r\n //swap the old renderer width and height to the new renderer\r\n value.width = this._pRenderer.width;\r\n value.height = this._pRenderer.height;\r\n this._pRenderer.dispose();\r\n this._pRenderer.removeEventListener(RendererEvent.VIEWPORT_UPDATED, this._onViewportUpdatedDelegate);\r\n this._pRenderer.removeEventListener(RendererEvent.SCISSOR_UPDATED, this._onScissorUpdatedDelegate);\r\n this._mouseManager.unregisterContainer(this._pRenderer.stage.container);\r\n }\r\n this._pRenderer = value;\r\n this._pRenderer.addEventListener(RendererEvent.VIEWPORT_UPDATED, this._onViewportUpdatedDelegate);\r\n this._pRenderer.addEventListener(RendererEvent.SCISSOR_UPDATED, this._onScissorUpdatedDelegate);\r\n this._mouseManager.registerContainer(this._pRenderer.stage.container);\r\n //reset back buffer\r\n this._pRenderer._iBackgroundR = ((this._backgroundColor >> 16) & 0xff) / 0xff;\r\n this._pRenderer._iBackgroundG = ((this._backgroundColor >> 8) & 0xff) / 0xff;\r\n this._pRenderer._iBackgroundB = (this._backgroundColor & 0xff) / 0xff;\r\n this._pRenderer._iBackgroundAlpha = this._backgroundAlpha;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"backgroundColor\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._backgroundColor;\r\n },\r\n set: function (value) {\r\n if (this._backgroundColor == value)\r\n return;\r\n this._backgroundColor = value;\r\n this._pRenderer._iBackgroundR = ((value >> 16) & 0xff) / 0xff;\r\n this._pRenderer._iBackgroundG = ((value >> 8) & 0xff) / 0xff;\r\n this._pRenderer._iBackgroundB = (value & 0xff) / 0xff;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"backgroundAlpha\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n return this._backgroundAlpha;\r\n },\r\n /**\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n if (value > 1)\r\n value = 1;\r\n else if (value < 0)\r\n value = 0;\r\n if (this._backgroundAlpha == value)\r\n return;\r\n this._pRenderer._iBackgroundAlpha = this._backgroundAlpha = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"camera\", {\r\n /**\r\n *\r\n * @returns {Camera3D}\r\n */\r\n get: function () {\r\n return this._pCamera;\r\n },\r\n /**\r\n * Set camera that's used to render the scene for this viewport\r\n */\r\n set: function (value) {\r\n if (this._pCamera == value)\r\n return;\r\n if (this._pCamera)\r\n this._pCamera.removeEventListener(CameraEvent.PROJECTION_CHANGED, this._onProjectionChangedDelegate);\r\n this._pCamera = value;\r\n if (this._pScene)\r\n this._partitions[this._pScene.id].invalidateEntity(this._pCamera);\r\n this._pCamera.addEventListener(CameraEvent.PROJECTION_CHANGED, this._onProjectionChangedDelegate);\r\n this._scissorDirty = true;\r\n this._viewportDirty = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"scene\", {\r\n /**\r\n *\r\n * @returns {away.containers.Scene3D}\r\n */\r\n get: function () {\r\n return this._pScene;\r\n },\r\n /**\r\n * Set the scene that's used to render for this viewport\r\n */\r\n set: function (value) {\r\n if (this._pScene == value)\r\n return;\r\n if (this._pScene) {\r\n this._pScene._iUnregisterView(this);\r\n this._partitions[this._pScene.id].dispose();\r\n }\r\n this._pScene = value;\r\n this._partitions[this._pScene.id] = new BasicPartition(this._pScene);\r\n this._pScene._iRegisterView(this);\r\n if (this._pCamera)\r\n this._partitions[this._pScene.id].invalidateEntity(this._pCamera);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"deltaTime\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n return this._deltaTime;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"width\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._pRenderer.width;\r\n },\r\n set: function (value) {\r\n this._pRenderer.width = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"height\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._pRenderer.height;\r\n },\r\n set: function (value) {\r\n this._pRenderer.height = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"mousePicker\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._mousePicker;\r\n },\r\n set: function (value) {\r\n if (this._mousePicker == value)\r\n return;\r\n if (value == null)\r\n this._mousePicker = new RaycastPicker();\r\n else\r\n this._mousePicker = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"x\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._pRenderer.x;\r\n },\r\n set: function (value) {\r\n this._pRenderer.x = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"y\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._pRenderer.y;\r\n },\r\n set: function (value) {\r\n this._pRenderer.y = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(View.prototype, \"renderedFacesCount\", {\r\n /**\r\n *\r\n * @returns {number}\r\n */\r\n get: function () {\r\n return 0; //TODO\r\n //return this._pEntityCollector._pNumTriangles;//numTriangles;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Renders the view.\r\n */\r\n View.prototype.render = function () {\r\n this.pUpdateTime();\r\n //update view and size data\r\n if (this._scissorDirty) {\r\n this._scissorDirty = false;\r\n this._pCamera.projection.setViewRect(this._pRenderer.scissorRect.x, this._pRenderer.scissorRect.y, this._pRenderer.scissorRect.width, this._pRenderer.scissorRect.height);\r\n }\r\n if (this._viewportDirty) {\r\n this._viewportDirty = false;\r\n this._pCamera.projection.setStageRect(this._pRenderer.viewPort.x, this._pRenderer.viewPort.y, this._pRenderer.viewPort.width, this._pRenderer.viewPort.height);\r\n }\r\n // update picking\r\n if (!this.disableMouseEvents) {\r\n if (this.forceMouseMove && !this._mouseManager._iUpdateDirty)\r\n this._mouseManager._iCollision = this.getViewCollision(this._pMouseX, this._pMouseY, this);\r\n this._mouseManager.fireMouseEvents(this.forceMouseMove);\r\n }\r\n //_touch3DManager.updateCollider();\r\n //render the contents of the scene\r\n this._pRenderer.render(this);\r\n };\r\n /**\r\n *\r\n */\r\n View.prototype.pUpdateTime = function () {\r\n var time = getTimer();\r\n if (this._time == 0)\r\n this._time = time;\r\n this._deltaTime = time - this._time;\r\n this._time = time;\r\n };\r\n /**\r\n *\r\n */\r\n View.prototype.dispose = function () {\r\n this._pRenderer.dispose();\r\n // TODO: imeplement mouseManager / touch3DManager\r\n this._mouseManager.unregisterView(this);\r\n //this._touch3DManager.disableTouchListeners(this);\r\n //this._touch3DManager.dispose();\r\n this._mouseManager = null;\r\n //this._touch3DManager = null;\r\n this._pRenderer = null;\r\n };\r\n /**\r\n *\r\n */\r\n View.prototype._onProjectionChanged = function (event) {\r\n this._scissorDirty = true;\r\n this._viewportDirty = true;\r\n };\r\n /**\r\n *\r\n */\r\n View.prototype._onViewportUpdated = function (event) {\r\n this._viewportDirty = true;\r\n };\r\n /**\r\n *\r\n */\r\n View.prototype._onScissorUpdated = function (event) {\r\n this._scissorDirty = true;\r\n };\r\n View.prototype.project = function (point3d) {\r\n var v = this._pCamera.project(point3d);\r\n v.x = (v.x * this._pRenderer.viewPort.width + this._pRenderer.viewPort.width) / 2;\r\n v.y = (v.y * this._pRenderer.viewPort.height + this._pRenderer.viewPort.height) / 2;\r\n return v;\r\n };\r\n View.prototype.unproject = function (sX, sY, sZ, target) {\r\n if (target === void 0) { target = null; }\r\n return this._pCamera.unproject((2 * sX - this._pRenderer.viewPort.width) / this._pRenderer.viewPort.width, (2 * sY - this._pRenderer.viewPort.height) / this._pRenderer.viewPort.height, sZ, target);\r\n };\r\n /*TODO: implement Background\r\n public get background():away.textures.Texture2DBase\r\n {\r\n return this._background;\r\n }\r\n */\r\n /*TODO: implement Background\r\n public set background( value:away.textures.Texture2DBase )\r\n {\r\n this._background = value;\r\n this._renderer.background = _background;\r\n }\r\n */\r\n // TODO: required dependency stageGL\r\n View.prototype.updateCollider = function () {\r\n if (!this.disableMouseEvents) {\r\n // if (!this._pRenderer.shareContext) {\r\n this._mouseManager._iCollision = this.getViewCollision(this._pMouseX, this._pMouseY, this);\r\n }\r\n };\r\n View.prototype.getViewCollision = function (x, y, view) {\r\n //update ray\r\n var rayPosition = view.unproject(x, y, 0);\r\n var rayDirection = view.unproject(x, y, 1).subtract(rayPosition);\r\n return this._mousePicker.getCollision(rayPosition, rayDirection, this);\r\n };\r\n View.prototype.traversePartitions = function (traverser) {\r\n for (var key in this._partitions)\r\n this._partitions[key].traverse(traverser);\r\n };\r\n View.prototype.registerObject = function (displayObject) {\r\n this.getPartition(displayObject).invalidateEntity(displayObject);\r\n };\r\n View.prototype.unRegisterObject = function (displayObject) {\r\n this.getPartition(displayObject).clearEntity(displayObject);\r\n };\r\n return View;\r\n}());\r\nexport { View };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/View.js","import * as tslib_1 from \"tslib\";\r\nimport { PerspectiveProjection, CoordinateSystem } from \"@awayjs/core\";\r\nimport { DefaultRenderer } from \"@awayjs/renderer\";\r\nimport { BitmapImage2D } from \"@awayjs/graphics\";\r\nimport { Scene, DisplayObject, DisplayObjectContainer } from \"@awayjs/scene\";\r\nimport { SceneGraphPartition } from \"../partition/SceneGraphPartition\";\r\nimport { View } from \"../View\";\r\n/**\r\n *\r\n */\r\nvar ViewImage2D = (function (_super) {\r\n tslib_1.__extends(ViewImage2D, _super);\r\n /**\r\n * Creates a BitmapImage2D object with a specified width and height. If you\r\n * specify a value for the fillColor parameter, every pixel in\r\n * the bitmap is set to that color.\r\n *\r\n *

By default, the bitmap is created as transparent, unless you pass\r\n * the value false for the transparent parameter. After you\r\n * create an opaque bitmap, you cannot change it to a transparent bitmap.\r\n * Every pixel in an opaque bitmap uses only 24 bits of color channel\r\n * information. If you define the bitmap as transparent, every pixel uses 32\r\n * bits of color channel information, including an alpha transparency\r\n * channel.

\r\n *\r\n * @param width The width of the bitmap image in pixels.\r\n * @param height The height of the bitmap image in pixels.\r\n * @param transparent Specifies whether the bitmap image supports per-pixel\r\n * transparency. The default value is true\r\n * (transparent). To create a fully transparent bitmap,\r\n * set the value of the transparent\r\n * parameter to true and the value of the\r\n * fillColor parameter to 0x00000000(or to\r\n * 0). Setting the transparent property to\r\n * false can result in minor improvements\r\n * in rendering performance.\r\n * @param fillColor A 32-bit ARGB color value that you use to fill the\r\n * bitmap image area. The default value is\r\n * 0xFFFFFFFF(solid white).\r\n */\r\n function ViewImage2D(width, height, transparent, fillColor, powerOfTwo, stage) {\r\n if (transparent === void 0) { transparent = true; }\r\n if (fillColor === void 0) { fillColor = 0xffffffff; }\r\n if (powerOfTwo === void 0) { powerOfTwo = true; }\r\n if (stage === void 0) { stage = null; }\r\n var _this = _super.call(this, width, height, transparent, fillColor, powerOfTwo) || this;\r\n _this._fillColor = fillColor;\r\n _this._stage = stage;\r\n return _this;\r\n }\r\n Object.defineProperty(ViewImage2D.prototype, \"assetType\", {\r\n /**\r\n *\r\n * @returns {string}\r\n */\r\n get: function () {\r\n return ViewImage2D.assetType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ViewImage2D.prototype.createView = function () {\r\n //create the view\r\n this._view = new View(new DefaultRenderer(this._stage));\r\n this._view.disableMouseEvents = true;\r\n this._view.width = this._rect.width;\r\n this._view.height = this._rect.height;\r\n this._fillColor = this._fillColor;\r\n this._view.backgroundAlpha = this._transparent ? (this._fillColor & 0xff000000) >>> 24 : 1;\r\n this._view.backgroundColor = this._fillColor & 0xffffff;\r\n this._view.renderer.renderableSorter = null; //new RenderableSort2D();\r\n //create the projection\r\n var projection = new PerspectiveProjection();\r\n projection.coordinateSystem = CoordinateSystem.RIGHT_HANDED;\r\n projection.originX = 0;\r\n projection.originY = 0;\r\n projection.preserveFocalLength = true;\r\n projection.setViewRect(0, 0, this._rect.width, this._rect.height);\r\n projection.setStageRect(0, 0, this._rect.width, this._rect.height);\r\n this._view.camera.projection = projection;\r\n };\r\n /**\r\n * Frees memory that is used to store the BitmapImage2D object.\r\n *\r\n *

When the dispose() method is called on an image, the width\r\n * and height of the image are set to 0. All subsequent calls to methods or\r\n * properties of this BitmapImage2D instance fail, and an exception is thrown.\r\n *

\r\n *\r\n *

BitmapImage2D.dispose() releases the memory occupied by the\r\n * actual bitmap data, immediately(a bitmap can consume up to 64 MB of\r\n * memory). After using BitmapImage2D.dispose(), the BitmapImage2D\r\n * object is no longer usable and an exception may be thrown if\r\n * you call functions on the BitmapImage2D object. However,\r\n * BitmapImage2D.dispose() does not garbage collect the BitmapImage2D\r\n * object(approximately 128 bytes); the memory occupied by the actual\r\n * BitmapImage2D object is released at the time the BitmapImage2D object is\r\n * collected by the garbage collector.

\r\n *\r\n */\r\n ViewImage2D.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n //todo\r\n };\r\n ViewImage2D.prototype.draw = function (source, matrix, colorTransform, blendMode, clipRect, smoothing) {\r\n if (source instanceof DisplayObject) {\r\n var root = new DisplayObjectContainer();\r\n root.addChild(source);\r\n if (matrix) {\r\n root.transform.scaleTo(matrix.a, -matrix.d, 1);\r\n root.transform.moveTo(matrix.tx, matrix.ty, 0);\r\n }\r\n root.transform.colorTransform = colorTransform;\r\n if (!this._view)\r\n this.createView();\r\n this._view.scene = new Scene();\r\n this._view.scene.addChild(root);\r\n this._view.setPartition(root, new SceneGraphPartition(root));\r\n //save snapshot if unlocked\r\n if (!this._locked)\r\n this._view.renderer.queueSnapshot(this);\r\n this._view.renderer.disableClear = !this._locked;\r\n //render\r\n this._view.renderer._iRender(this._view.camera.projection, this._view, this);\r\n return;\r\n }\r\n _super.prototype.draw.call(this, source, matrix, colorTransform, blendMode, clipRect, smoothing);\r\n };\r\n /**\r\n *\r\n * @param width\r\n * @param height\r\n * @private\r\n */\r\n ViewImage2D.prototype._setSize = function (width, height) {\r\n _super.prototype._setSize.call(this, width, height);\r\n if (this._view) {\r\n this._view.width = this._rect.width;\r\n this._view.height = this._rect.height;\r\n this._view.camera.projection.setViewRect(0, 0, this._rect.width, this._rect.height);\r\n this._view.camera.projection.setStageRect(0, 0, this._rect.width, this._rect.height);\r\n }\r\n };\r\n return ViewImage2D;\r\n}(BitmapImage2D));\r\nexport { ViewImage2D };\r\nViewImage2D.assetType = \"[image ViewImage2D]\";\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/image/ViewImage2D.js","import * as tslib_1 from \"tslib\";\r\nimport { Vector3D } from \"@awayjs/core\";\r\nimport { DisplayObjectNode } from \"./DisplayObjectNode\";\r\n/**\r\n * @class away.partition.EntityNode\r\n */\r\nvar EntityNode = (function (_super) {\r\n tslib_1.__extends(EntityNode, _super);\r\n function EntityNode(displayObject, partition) {\r\n var _this = _super.call(this, displayObject, partition) || this;\r\n _this.numEntities = 1;\r\n _this._maskPosition = new Vector3D();\r\n _this._partition = partition;\r\n return _this;\r\n }\r\n EntityNode.prototype.onClear = function (event) {\r\n _super.prototype.onClear.call(this, event);\r\n this._partition = null;\r\n };\r\n /**\r\n *\r\n * @param planes\r\n * @param numPlanes\r\n * @returns {boolean}\r\n */\r\n EntityNode.prototype.isInFrustum = function (planes, numPlanes) {\r\n if (!this._entity._iIsVisible())\r\n return false;\r\n return true; // todo: hack for 2d. attention. might break stuff in 3d.\r\n //return this._bounds.isInFrustum(planes, numPlanes);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n EntityNode.prototype.isIntersectingRay = function (globalRayPosition, globalRayDirection) {\r\n if (!this._entity._iIsVisible() || !this.isIntersectingMasks(globalRayPosition, globalRayDirection, this._entity._iAssignedMasks()))\r\n return false;\r\n var pickingCollision = this._entity._iPickingCollision;\r\n pickingCollision.rayPosition = this._entity.transform.inverseConcatenatedMatrix3D.transformVector(globalRayPosition);\r\n pickingCollision.rayDirection = this._entity.transform.inverseConcatenatedMatrix3D.deltaTransformVector(globalRayDirection);\r\n if (!pickingCollision.normal)\r\n pickingCollision.normal = new Vector3D();\r\n var rayEntryDistance = this.bounds.rayIntersection(pickingCollision.rayPosition, pickingCollision.rayDirection, pickingCollision.normal);\r\n if (rayEntryDistance < 0)\r\n return false;\r\n pickingCollision.rayEntryDistance = rayEntryDistance;\r\n pickingCollision.globalRayPosition = globalRayPosition;\r\n pickingCollision.globalRayDirection = globalRayDirection;\r\n pickingCollision.rayOriginIsInsideBounds = rayEntryDistance == 0;\r\n return true;\r\n };\r\n /**\r\n *\r\n * @returns {boolean}\r\n */\r\n EntityNode.prototype.isRenderable = function () {\r\n return this._entity._iAssignedColorTransform()._isRenderable();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n EntityNode.prototype.acceptTraverser = function (traverser) {\r\n if (traverser.enterNode(this))\r\n traverser[this._entity.traverseName](this._entity);\r\n };\r\n EntityNode.prototype._onInvalidatePartitionBounds = function (event) {\r\n this.bounds.invalidate();\r\n this._partition.invalidateEntity(this._entity);\r\n };\r\n EntityNode.prototype.isIntersectingMasks = function (globalRayPosition, globalRayDirection, masks) {\r\n //horrible hack for 2d masks\r\n if (masks != null) {\r\n this._maskPosition.x = globalRayPosition.x + globalRayDirection.x * 1000;\r\n this._maskPosition.y = globalRayPosition.y + globalRayDirection.y * 1000;\r\n var numLayers = masks.length;\r\n var children;\r\n var numChildren;\r\n var layerHit;\r\n for (var i = 0; i < numLayers; i++) {\r\n children = masks[i];\r\n numChildren = children.length;\r\n layerHit = false;\r\n for (var j = 0; j < numChildren; j++) {\r\n if (children[j].hitTestPoint(this._maskPosition.x, this._maskPosition.y, true, true)) {\r\n layerHit = true;\r\n break;\r\n }\r\n }\r\n if (!layerHit)\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return EntityNode;\r\n}(DisplayObjectNode));\r\nexport { EntityNode };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/partition/EntityNode.js","import * as tslib_1 from \"tslib\";\r\nimport { EntityNode } from \"./EntityNode\";\r\n/**\r\n * @class away.partition.CameraNode\r\n */\r\nvar CameraNode = (function (_super) {\r\n tslib_1.__extends(CameraNode, _super);\r\n function CameraNode() {\r\n return _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n CameraNode.prototype.acceptTraverser = function (traverser) {\r\n // todo: dead end for now, if it has a debug sprite, then sure accept that\r\n };\r\n return CameraNode;\r\n}(EntityNode));\r\nexport { CameraNode };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/partition/CameraNode.js","import * as tslib_1 from \"tslib\";\r\nimport { EntityNode } from \"./EntityNode\";\r\n/**\r\n * SkyboxNode is a space partitioning leaf node that contains a Skybox object.\r\n *\r\n * @class away.partition.SkyboxNode\r\n */\r\nvar SkyboxNode = (function (_super) {\r\n tslib_1.__extends(SkyboxNode, _super);\r\n function SkyboxNode() {\r\n return _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n *\r\n * @param planes\r\n * @param numPlanes\r\n * @returns {boolean}\r\n */\r\n SkyboxNode.prototype.isInFrustum = function (planes, numPlanes) {\r\n if (!this._entity._iIsVisible)\r\n return false;\r\n //a skybox is always in view unless its visibility is set to false\r\n return true;\r\n };\r\n /**\r\n *\r\n * @returns {boolean}\r\n */\r\n SkyboxNode.prototype.isCastingShadow = function () {\r\n return false; //skybox never casts shadows\r\n };\r\n return SkyboxNode;\r\n}(EntityNode));\r\nexport { SkyboxNode };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/partition/SkyboxNode.js","import { Vector3D, Point } from \"@awayjs/core\";\r\n/**\r\n * Pure JS picking collider for display objects. Used with the RaycastPicker picking object.\r\n *\r\n * @see away.base.DisplayObject#pickingCollider\r\n * @see away.pick.RaycastPicker\r\n *\r\n * @class away.pick.JSPickingCollider\r\n */\r\nvar JSPickingCollider = (function () {\r\n /**\r\n * Creates a new JSPickingCollider object.\r\n *\r\n * @param findClosestCollision Determines whether the picking collider searches for the closest collision along the ray. Defaults to false.\r\n */\r\n function JSPickingCollider(findClosestCollision) {\r\n if (findClosestCollision === void 0) { findClosestCollision = false; }\r\n this._findClosestCollision = findClosestCollision;\r\n }\r\n /**\r\n * Tests a Billboard object for a collision with the picking ray.\r\n *\r\n * @param billboard The billboard instance to be tested.\r\n * @param pickingCollision The collision object used to store the collision results\r\n * @param findClosest\r\n */\r\n JSPickingCollider.prototype.testBillboardCollision = function (billboard, material, pickingCollision) {\r\n pickingCollision.renderable = null;\r\n //if (this._testGraphicCollision( this._renderablePool.getItem(billboard), pickingCollision, shortestCollisionDistance)) {\r\n //\tshortestCollisionDistance = pickingCollision.rayEntryDistance;\r\n //\r\n //\tpickingCollision.renderable = billboard;\r\n //\r\n //\treturn true;\r\n //}\r\n return false;\r\n };\r\n /**\r\n * Tests a TriangleElements object for a collision with the picking ray.\r\n *\r\n * @param triangleElements\r\n * @param material\r\n * @param pickingCollision\r\n * @returns {boolean}\r\n */\r\n JSPickingCollider.prototype.testTriangleCollision = function (triangleElements, material, pickingCollision, count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n var rayPosition = pickingCollision.rayPosition;\r\n var rayDirection = pickingCollision.rayDirection;\r\n var t;\r\n var i0, i1, i2;\r\n var rx, ry, rz;\r\n var nx, ny, nz;\r\n var cx, cy, cz;\r\n var coeff, u, v, w;\r\n var p0x, p0y, p0z;\r\n var p1x, p1y, p1z;\r\n var p2x, p2y, p2z;\r\n var s0x, s0y, s0z;\r\n var s1x, s1y, s1z;\r\n var nl, nDotV, D, disToPlane;\r\n var Q1Q2, Q1Q1, Q2Q2, RQ1, RQ2;\r\n var collisionTriangleIndex = -1;\r\n var bothSides = material.bothSides;\r\n var positions = triangleElements.positions.get(count, offset);\r\n var posDim = triangleElements.positions.dimensions;\r\n var posStride = triangleElements.positions.stride;\r\n var indices;\r\n if (triangleElements.indices) {\r\n indices = triangleElements.indices.get(triangleElements.numElements);\r\n count = indices.length;\r\n }\r\n for (var index = 0; index < count; index += 3) {\r\n // evaluate triangle indices\r\n if (indices) {\r\n i0 = indices[index] * posStride;\r\n i1 = indices[index + 1] * posStride;\r\n i2 = indices[index + 2] * posStride;\r\n }\r\n else {\r\n i0 = index * posStride;\r\n i1 = (index + 1) * posStride;\r\n i2 = (index + 2) * posStride;\r\n }\r\n // evaluate triangle positions\r\n p0x = positions[i0];\r\n p1x = positions[i1];\r\n p2x = positions[i2];\r\n s0x = p1x - p0x; // s0 = p1 - p0\r\n s1x = p2x - p0x; // s1 = p2 - p0\r\n p0y = positions[i0 + 1];\r\n p1y = positions[i1 + 1];\r\n p2y = positions[i2 + 1];\r\n s0y = p1y - p0y;\r\n s1y = p2y - p0y;\r\n if (posDim == 3) {\r\n p0z = positions[i0 + 2];\r\n p1z = positions[i1 + 2];\r\n p2z = positions[i2 + 2];\r\n s0z = p1z - p0z;\r\n s1z = p2z - p0z;\r\n // evaluate sides and triangle normal\r\n nx = s0y * s1z - s0z * s1y; // n = s0 x s1\r\n ny = s0z * s1x - s0x * s1z;\r\n nz = s0x * s1y - s0y * s1x;\r\n nl = 1 / Math.sqrt(nx * nx + ny * ny + nz * nz); // normalize n\r\n nx *= nl;\r\n ny *= nl;\r\n nz *= nl;\r\n }\r\n else {\r\n nx = 0;\r\n ny = 0;\r\n nz = 1;\r\n }\r\n // -- plane intersection test --\r\n nDotV = nx * rayDirection.x + ny * +rayDirection.y + nz * rayDirection.z; // rayDirection . normal\r\n if ((!bothSides && nDotV < 0.0) || (bothSides && nDotV != 0.0)) {\r\n // find collision t\r\n D = -(nx * p0x + ny * p0y + nz * p0z);\r\n disToPlane = -(nx * rayPosition.x + ny * rayPosition.y + nz * rayPosition.z + D);\r\n t = disToPlane / nDotV;\r\n // find collision point\r\n cx = rayPosition.x + t * rayDirection.x;\r\n cy = rayPosition.y + t * rayDirection.y;\r\n cz = rayPosition.z + t * rayDirection.z;\r\n // collision point inside triangle? ( using barycentric coordinates )\r\n Q1Q2 = s0x * s1x + s0y * s1y + s0z * s1z;\r\n Q1Q1 = s0x * s0x + s0y * s0y + s0z * s0z;\r\n Q2Q2 = s1x * s1x + s1y * s1y + s1z * s1z;\r\n rx = cx - p0x;\r\n ry = cy - p0y;\r\n rz = cz - p0z;\r\n RQ1 = rx * s0x + ry * s0y + rz * s0z;\r\n RQ2 = rx * s1x + ry * s1y + rz * s1z;\r\n coeff = 1 / (Q1Q1 * Q2Q2 - Q1Q2 * Q1Q2);\r\n v = coeff * (Q2Q2 * RQ1 - Q1Q2 * RQ2);\r\n w = coeff * (-Q1Q2 * RQ1 + Q1Q1 * RQ2);\r\n if (v < 0)\r\n continue;\r\n if (w < 0)\r\n continue;\r\n u = 1 - v - w;\r\n if (!(u < 0) && t > 0 && t < pickingCollision.rayEntryDistance) {\r\n collisionTriangleIndex = index / 3;\r\n pickingCollision.rayEntryDistance = t;\r\n pickingCollision.position = new Vector3D(cx, cy, cz);\r\n pickingCollision.normal = new Vector3D(nx, ny, nz);\r\n if (triangleElements.uvs) {\r\n var uvs = triangleElements.uvs.get(triangleElements.numVertices);\r\n var uvStride = triangleElements.uvs.stride;\r\n var uIndex = indices[index] * uvStride;\r\n var uv0 = new Vector3D(uvs[uIndex], uvs[uIndex + 1]);\r\n uIndex = indices[index + 1] * uvStride;\r\n var uv1 = new Vector3D(uvs[uIndex], uvs[uIndex + 1]);\r\n uIndex = indices[index + 2] * uvStride;\r\n var uv2 = new Vector3D(uvs[uIndex], uvs[uIndex + 1]);\r\n pickingCollision.uv = new Point(u * uv0.x + v * uv1.x + w * uv2.x, u * uv0.y + v * uv1.y + w * uv2.y);\r\n }\r\n pickingCollision.elementIndex = collisionTriangleIndex;\r\n // if not looking for best hit, first found will do...\r\n if (!this._findClosestCollision)\r\n return true;\r\n }\r\n }\r\n }\r\n if (collisionTriangleIndex >= 0)\r\n return true;\r\n return false;\r\n };\r\n //\r\n ///**\r\n // * Tests a CurveElements object for a collision with the picking ray.\r\n // *\r\n // * @param triangleElements\r\n // * @param material\r\n // * @param pickingCollision\r\n // * @returns {boolean}\r\n // */\r\n //public testCurveCollision(curveElements:CurveElements, material:MaterialBase, pickingCollision:PickingCollision, shortestCollisionDistance:number):boolean\r\n //{\r\n //\tvar rayPosition:Vector3D = pickingCollision.localRayPosition;\r\n //\tvar rayDirection:Vector3D = pickingCollision.localRayDirection;\r\n //\r\n //\t//project ray onto x/y plane to generate useful test points from mouse coordinates\r\n //\t//this will only work while all points lie on the x/y plane\r\n //\tvar plane:Vector3D = new Vector3D(0,0,-1,0);\r\n //\r\n //\tvar result:Vector3D = new Vector3D();\r\n //\tvar distance:number = plane.x * rayPosition.x + plane.y * rayPosition.y + plane.z * rayPosition.z + plane.w;//distance(position);\r\n //\tresult.x = rayPosition.x - ( plane.x*distance);\r\n //\tresult.y = rayPosition.y - ( plane.y*distance);\r\n //\tresult.z = rayPosition.z - ( plane.z*distance);\r\n //\tvar normal:Vector3D = new Vector3D(plane.x,plane.y,plane.z);\r\n //\tvar t:number = -(rayPosition.dotProduct(normal))/(rayDirection.dotProduct(normal));\r\n //\trayDirection.scaleBy(t);\r\n //\tvar p:Vector3D = rayPosition.add(rayDirection);\r\n //\r\n //\tvar indices:Uint16Array = curveElements.indices.get(curveElements.numElements);\r\n //\tvar collisionCurveIndex:number = -1;\r\n //\tvar bothSides:boolean = material.bothSides;\r\n //\r\n //\r\n //\tvar positions:Float32Array = curveElements.positions.get(curveElements.numVertices);\r\n //\tvar posDim:number = curveElements.positions.dimensions;\r\n //\tvar curves:Float32Array = curveElements.curves.get(curveElements.numVertices);\r\n //\tvar curveDim:number = curveElements.curves.dimensions;\r\n //\tvar uvs:ArrayBufferView = curveElements.uvs.get(curveElements.numVertices);\r\n //\tvar uvDim:number = curveElements.uvs.dimensions;\r\n //\tvar numIndices:number = indices.length;\r\n //\r\n //\r\n //\tfor(var index:number = 0; index < numIndices; index+=3)\r\n //\t{\r\n //\t\tvar id0:number = indices[index];\r\n //\t\tvar id1:number = indices[index + 1] * posDim;\r\n //\t\tvar id2:number = indices[index + 2] * posDim;\r\n //\r\n //\t\tvar ax:number = positions[id0 * posDim];\r\n //\t\tvar ay:number = positions[id0 * posDim + 1];\r\n //\t\tvar bx:number = positions[id1];\r\n //\t\tvar by:number = positions[id1 + 1];\r\n //\t\tvar cx:number = positions[id2];\r\n //\t\tvar cy:number = positions[id2 + 1];\r\n //\r\n //\t\tvar curvex:number = curves[id0 * curveDim];\r\n //\t\tvar az:number = positions[id0 * posDim + 2];\r\n //\r\n //\t\t//console.log(ax, ay, bx, by, cx, cy);\r\n //\r\n //\t\t//from a to p\r\n //\t\tvar dx:number = ax - p.x;\r\n //\t\tvar dy:number = ay - p.y;\r\n //\r\n //\t\t//edge normal (a-b)\r\n //\t\tvar nx:number = by - ay;\r\n //\t\tvar ny:number = -(bx - ax);\r\n //\r\n //\t\t//console.log(ax,ay,bx,by,cx,cy);\r\n //\r\n //\t\tvar dot:number = (dx * nx) + (dy * ny);\r\n //\t\t//console.log(\"dot a\",dot);\r\n //\t\tif (dot > 0)\r\n //\t\t\tcontinue;\r\n //\r\n //\t\tdx = bx - p.x;\r\n //\t\tdy = by - p.y;\r\n //\t\tnx = cy - by;\r\n //\t\tny = -(cx - bx);\r\n //\r\n //\t\tdot = (dx * nx) + (dy * ny);\r\n //\t\t//console.log(\"dot b\",dot);\r\n //\t\tif (dot > 0)\r\n //\t\t\tcontinue;\r\n //\r\n //\t\tdx = cx - p.x;\r\n //\t\tdy = cy - p.y;\r\n //\t\tnx = ay - cy;\r\n //\t\tny = -(ax - cx);\r\n //\r\n //\t\tdot = (dx * nx) + (dy * ny);\r\n //\t\t//console.log(\"dot c\",dot);\r\n //\t\tif (dot > 0)\r\n //\t\t\tcontinue;\r\n //\r\n //\t\t//check if not solid\r\n //\t\tif (curvex != 2) {\r\n //\r\n //\t\t\tvar v0x:number = bx - ax;\r\n //\t\t\tvar v0y:number = by - ay;\r\n //\t\t\tvar v1x:number = cx - ax;\r\n //\t\t\tvar v1y:number = cy - ay;\r\n //\t\t\tvar v2x:number = p.x - ax;\r\n //\t\t\tvar v2y:number = p.y - ay;\r\n //\r\n //\t\t\tvar den:number = v0x * v1y - v1x * v0y;\r\n //\t\t\tvar v:number = (v2x * v1y - v1x * v2y) / den;\r\n //\t\t\tvar w:number = (v0x * v2y - v2x * v0y) / den;\r\n //\t\t\tvar u:number = 1 - v - w;\r\n //\r\n //\t\t\tvar uu:number = 0.5 * v + w;// (0 * u) + (0.5 * v) + (1 * w);// (lerp(0, 0.5, v) + lerp(0.5, 1, w) + lerp(1, 0, u)) / 1.5;\r\n //\t\t\tvar vv:number = w;// (0 * u) + (0 * v) + (1 * w);// (lerp(0, 1, w) + lerp(1, 0, u)) / 1;\r\n //\r\n //\t\t\tvar d:number = uu * uu - vv;\r\n //\r\n //\t\t\tif ((d > 0 && az == -1) || (d < 0 && az == 1))\r\n //\t\t\t\tcontinue;\r\n //\t\t}\r\n //\t\t//TODO optimize away this pointless check as the distance is always the same\r\n //\t\t//also this stuff should only be calculated right before the return and not for each hit\r\n //\t\tif (distance < shortestCollisionDistance) {\r\n //\t\t\tshortestCollisionDistance = distance;\r\n //\t\t\tcollisionCurveIndex = index/3;\r\n //\t\t\tpickingCollision.rayEntryDistance = distance;\r\n //\t\t\tpickingCollision.localPosition = p;\r\n //\t\t\tpickingCollision.localNormal = new Vector3D(0, 0, 1);\r\n //\t\t\tpickingCollision.uv = this._getCollisionUV(indices, uvs, index, v, w, u, uvDim);\r\n //\t\t\tpickingCollision.index = index;\r\n //\t\t\t//\t\t\t\t\t\tpickingCollision.elementIndex = this.pGetSpriteGraphicIndex(renderable);\r\n //\r\n //\t\t\t// if not looking for best hit, first found will do...\r\n //\t\t\tif (!this._findClosestCollision)\r\n //\t\t\t\treturn true;\r\n //\t\t}\r\n //\t}\r\n //\r\n //\tif (collisionCurveIndex >= 0)\r\n //\t\treturn true;\r\n //\r\n //\treturn false;\r\n //}\r\n /**\r\n * Tests a LineElements object for a collision with the picking ray.\r\n *\r\n * @param triangleElements\r\n * @param material\r\n * @param pickingCollision\r\n * @returns {boolean}\r\n */\r\n JSPickingCollider.prototype.testLineCollision = function (lineElements, material, pickingCollision, count, offset) {\r\n if (offset === void 0) { offset = 0; }\r\n return false;\r\n };\r\n return JSPickingCollider;\r\n}());\r\nexport { JSPickingCollider };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/pick/JSPickingCollider.js","module.exports = require('./src/tess2');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tess2/index.js\n// module id = 18\n// module chunks = 9","/*\n** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) \n** Copyright (C) [dates of first publication] Silicon Graphics, Inc.\n** All Rights Reserved.\n**\n** Permission is hereby granted, free of charge, to any person obtaining a copy\n** of this software and associated documentation files (the \"Software\"), to deal\n** in the Software without restriction, including without limitation the rights\n** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n** of the Software, and to permit persons to whom the Software is furnished to do so,\n** subject to the following conditions:\n** \n** The above copyright notice including the dates of first publication and either this\n** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be\n** included in all copies or substantial portions of the Software. \n**\n** THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC.\n** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE\n** OR OTHER DEALINGS IN THE SOFTWARE.\n** \n** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not\n** be used in advertising or otherwise to promote the sale, use or other dealings in\n** this Software without prior written authorization from Silicon Graphics, Inc.\n*/\n/*\n** Author: Mikko Mononen, Aug 2013.\n** The code is based on GLU libtess by Eric Veach, July 1994\n*/\n\n\t\"use strict\";\n\n\t/* Public API */\n\n\tvar Tess2 = {};\n\n\tmodule.exports = Tess2;\n\t\n\tTess2.WINDING_ODD = 0;\n\tTess2.WINDING_NONZERO = 1;\n\tTess2.WINDING_POSITIVE = 2;\n\tTess2.WINDING_NEGATIVE = 3;\n\tTess2.WINDING_ABS_GEQ_TWO = 4;\n\n\tTess2.POLYGONS = 0;\n\tTess2.CONNECTED_POLYGONS = 1;\n\tTess2.BOUNDARY_CONTOURS = 2;\n\n\tTess2.tesselate = function(opts) {\n\t\tvar debug = opts.debug || false;\n\t\tvar tess = new Tesselator();\n\t\tfor (var i = 0; i < opts.contours.length; i++) {\n\t\t\ttess.addContour(opts.vertexSize || 2, opts.contours[i]);\n\t\t}\n\t\ttess.tesselate(opts.windingRule || Tess2.WINDING_ODD,\n\t\t\t\t\t opts.elementType || Tess2.POLYGONS,\n\t\t\t\t\t opts.polySize || 3,\n\t\t\t\t\t opts.vertexSize || 2,\n\t\t\t\t\t opts.normal || [0,0,1]);\n\t\treturn {\n\t\t\tvertices: tess.vertices,\n\t\t\tvertexIndices: tess.vertexIndices,\n\t\t\tvertexCount: tess.vertexCount,\n\t\t\telements: tess.elements,\n\t\t\telementCount: tess.elementCount,\n\t\t\tmesh: debug ? tess.mesh : undefined\n\t\t};\n\t};\n\n\t/* Internal */\n\n\tvar assert = function(cond) {\n\t\tif (!cond) {\n\t\t\tthrow \"Assertion Failed!\";\n\t\t}\n\t}\n\n\t/* The mesh structure is similar in spirit, notation, and operations\n\t* to the \"quad-edge\" structure (see L. Guibas and J. Stolfi, Primitives\n\t* for the manipulation of general subdivisions and the computation of\n\t* Voronoi diagrams, ACM Transactions on Graphics, 4(2):74-123, April 1985).\n\t* For a simplified description, see the course notes for CS348a,\n\t* \"Mathematical Foundations of Computer Graphics\", available at the\n\t* Stanford bookstore (and taught during the fall quarter).\n\t* The implementation also borrows a tiny subset of the graph-based approach\n\t* use in Mantyla's Geometric Work Bench (see M. Mantyla, An Introduction\n\t* to Sold Modeling, Computer Science Press, Rockville, Maryland, 1988).\n\t*\n\t* The fundamental data structure is the \"half-edge\". Two half-edges\n\t* go together to make an edge, but they point in opposite directions.\n\t* Each half-edge has a pointer to its mate (the \"symmetric\" half-edge Sym),\n\t* its origin vertex (Org), the face on its left side (Lface), and the\n\t* adjacent half-edges in the CCW direction around the origin vertex\n\t* (Onext) and around the left face (Lnext). There is also a \"next\"\n\t* pointer for the global edge list (see below).\n\t*\n\t* The notation used for mesh navigation:\n\t* Sym = the mate of a half-edge (same edge, but opposite direction)\n\t* Onext = edge CCW around origin vertex (keep same origin)\n\t* Dnext = edge CCW around destination vertex (keep same dest)\n\t* Lnext = edge CCW around left face (dest becomes new origin)\n\t* Rnext = edge CCW around right face (origin becomes new dest)\n\t*\n\t* \"prev\" means to substitute CW for CCW in the definitions above.\n\t*\n\t* The mesh keeps global lists of all vertices, faces, and edges,\n\t* stored as doubly-linked circular lists with a dummy header node.\n\t* The mesh stores pointers to these dummy headers (vHead, fHead, eHead).\n\t*\n\t* The circular edge list is special; since half-edges always occur\n\t* in pairs (e and e->Sym), each half-edge stores a pointer in only\n\t* one direction. Starting at eHead and following the e->next pointers\n\t* will visit each *edge* once (ie. e or e->Sym, but not both).\n\t* e->Sym stores a pointer in the opposite direction, thus it is\n\t* always true that e->Sym->next->Sym->next == e.\n\t*\n\t* Each vertex has a pointer to next and previous vertices in the\n\t* circular list, and a pointer to a half-edge with this vertex as\n\t* the origin (NULL if this is the dummy header). There is also a\n\t* field \"data\" for client data.\n\t*\n\t* Each face has a pointer to the next and previous faces in the\n\t* circular list, and a pointer to a half-edge with this face as\n\t* the left face (NULL if this is the dummy header). There is also\n\t* a field \"data\" for client data.\n\t*\n\t* Note that what we call a \"face\" is really a loop; faces may consist\n\t* of more than one loop (ie. not simply connected), but there is no\n\t* record of this in the data structure. The mesh may consist of\n\t* several disconnected regions, so it may not be possible to visit\n\t* the entire mesh by starting at a half-edge and traversing the edge\n\t* structure.\n\t*\n\t* The mesh does NOT support isolated vertices; a vertex is deleted along\n\t* with its last edge. Similarly when two faces are merged, one of the\n\t* faces is deleted (see tessMeshDelete below). For mesh operations,\n\t* all face (loop) and vertex pointers must not be NULL. However, once\n\t* mesh manipulation is finished, TESSmeshZapFace can be used to delete\n\t* faces of the mesh, one at a time. All external faces can be \"zapped\"\n\t* before the mesh is returned to the client; then a NULL face indicates\n\t* a region which is not part of the output polygon.\n\t*/\n\n\tfunction TESSvertex() {\n\t\tthis.next = null;\t/* next vertex (never NULL) */\n\t\tthis.prev = null;\t/* previous vertex (never NULL) */\n\t\tthis.anEdge = null;\t/* a half-edge with this origin */\n\n\t\t/* Internal data (keep hidden) */\n\t\tthis.coords = [0,0,0];\t/* vertex location in 3D */\n\t\tthis.s = 0.0;\n\t\tthis.t = 0.0;\t\t\t/* projection onto the sweep plane */\n\t\tthis.pqHandle = 0;\t\t/* to allow deletion from priority queue */\n\t\tthis.n = 0;\t\t\t\t/* to allow identify unique vertices */\n\t\tthis.idx = 0;\t\t\t/* to allow map result to original verts */\n\t} \n\n\tfunction TESSface() {\n\t\tthis.next = null;\t\t/* next face (never NULL) */\n\t\tthis.prev = null;\t\t/* previous face (never NULL) */\n\t\tthis.anEdge = null;\t\t/* a half edge with this left face */\n\n\t\t/* Internal data (keep hidden) */\n\t\tthis.trail = null;\t\t/* \"stack\" for conversion to strips */\n\t\tthis.n = 0;\t\t\t\t/* to allow identiy unique faces */\n\t\tthis.marked = false;\t/* flag for conversion to strips */\n\t\tthis.inside = false;\t/* this face is in the polygon interior */\n\t};\n\n\tfunction TESShalfEdge(side) {\n\t\tthis.next = null;\t\t/* doubly-linked list (prev==Sym->next) */\n\t\tthis.Sym = null;\t\t/* same edge, opposite direction */\n\t\tthis.Onext = null;\t\t/* next edge CCW around origin */\n\t\tthis.Lnext = null;\t\t/* next edge CCW around left face */\n\t\tthis.Org = null;\t\t/* origin vertex (Overtex too long) */\n\t\tthis.Lface = null;\t\t/* left face */\n\n\t\t/* Internal data (keep hidden) */\n\t\tthis.activeRegion = null;\t/* a region with this upper edge (sweep.c) */\n\t\tthis.winding = 0;\t\t\t/* change in winding number when crossing\n\t\t\t\t\t\t\t\t\t from the right face to the left face */\n\t\tthis.side = side;\n\t};\n\n\tTESShalfEdge.prototype = {\n\t\tget Rface() { return this.Sym.Lface; },\n\t\tset Rface(v) { this.Sym.Lface = v; },\n\t\tget Dst() { return this.Sym.Org; },\n\t\tset Dst(v) { this.Sym.Org = v; },\n\t\tget Oprev() { return this.Sym.Lnext; },\n\t\tset Oprev(v) { this.Sym.Lnext = v; },\n\t\tget Lprev() { return this.Onext.Sym; },\n\t\tset Lprev(v) { this.Onext.Sym = v; },\n\t\tget Dprev() { return this.Lnext.Sym; },\n\t\tset Dprev(v) { this.Lnext.Sym = v; },\n\t\tget Rprev() { return this.Sym.Onext; },\n\t\tset Rprev(v) { this.Sym.Onext = v; },\n\t\tget Dnext() { return /*this.Rprev*/this.Sym.Onext.Sym; }, /* 3 pointers */\n\t\tset Dnext(v) { /*this.Rprev*/this.Sym.Onext.Sym = v; }, /* 3 pointers */\n\t\tget Rnext() { return /*this.Oprev*/this.Sym.Lnext.Sym; }, /* 3 pointers */\n\t\tset Rnext(v) { /*this.Oprev*/this.Sym.Lnext.Sym = v; }, /* 3 pointers */\n\t};\n\n\n\n\tfunction TESSmesh() {\n\t\tvar v = new TESSvertex();\n\t\tvar f = new TESSface();\n\t\tvar e = new TESShalfEdge(0);\n\t\tvar eSym = new TESShalfEdge(1);\n\n\t\tv.next = v.prev = v;\n\t\tv.anEdge = null;\n\n\t\tf.next = f.prev = f;\n\t\tf.anEdge = null;\n\t\tf.trail = null;\n\t\tf.marked = false;\n\t\tf.inside = false;\n\n\t\te.next = e;\n\t\te.Sym = eSym;\n\t\te.Onext = null;\n\t\te.Lnext = null;\n\t\te.Org = null;\n\t\te.Lface = null;\n\t\te.winding = 0;\n\t\te.activeRegion = null;\n\n\t\teSym.next = eSym;\n\t\teSym.Sym = e;\n\t\teSym.Onext = null;\n\t\teSym.Lnext = null;\n\t\teSym.Org = null;\n\t\teSym.Lface = null;\n\t\teSym.winding = 0;\n\t\teSym.activeRegion = null;\n\n\t\tthis.vHead = v;\t\t/* dummy header for vertex list */\n\t\tthis.fHead = f;\t\t/* dummy header for face list */\n\t\tthis.eHead = e;\t\t/* dummy header for edge list */\n\t\tthis.eHeadSym = eSym;\t/* and its symmetric counterpart */\n\t};\n\n\t/* The mesh operations below have three motivations: completeness,\n\t* convenience, and efficiency. The basic mesh operations are MakeEdge,\n\t* Splice, and Delete. All the other edge operations can be implemented\n\t* in terms of these. The other operations are provided for convenience\n\t* and/or efficiency.\n\t*\n\t* When a face is split or a vertex is added, they are inserted into the\n\t* global list *before* the existing vertex or face (ie. e->Org or e->Lface).\n\t* This makes it easier to process all vertices or faces in the global lists\n\t* without worrying about processing the same data twice. As a convenience,\n\t* when a face is split, the \"inside\" flag is copied from the old face.\n\t* Other internal data (v->data, v->activeRegion, f->data, f->marked,\n\t* f->trail, e->winding) is set to zero.\n\t*\n\t* ********************** Basic Edge Operations **************************\n\t*\n\t* tessMeshMakeEdge( mesh ) creates one edge, two vertices, and a loop.\n\t* The loop (face) consists of the two new half-edges.\n\t*\n\t* tessMeshSplice( eOrg, eDst ) is the basic operation for changing the\n\t* mesh connectivity and topology. It changes the mesh so that\n\t* eOrg->Onext <- OLD( eDst->Onext )\n\t* eDst->Onext <- OLD( eOrg->Onext )\n\t* where OLD(...) means the value before the meshSplice operation.\n\t*\n\t* This can have two effects on the vertex structure:\n\t* - if eOrg->Org != eDst->Org, the two vertices are merged together\n\t* - if eOrg->Org == eDst->Org, the origin is split into two vertices\n\t* In both cases, eDst->Org is changed and eOrg->Org is untouched.\n\t*\n\t* Similarly (and independently) for the face structure,\n\t* - if eOrg->Lface == eDst->Lface, one loop is split into two\n\t* - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one\n\t* In both cases, eDst->Lface is changed and eOrg->Lface is unaffected.\n\t*\n\t* tessMeshDelete( eDel ) removes the edge eDel. There are several cases:\n\t* if (eDel->Lface != eDel->Rface), we join two loops into one; the loop\n\t* eDel->Lface is deleted. Otherwise, we are splitting one loop into two;\n\t* the newly created loop will contain eDel->Dst. If the deletion of eDel\n\t* would create isolated vertices, those are deleted as well.\n\t*\n\t* ********************** Other Edge Operations **************************\n\t*\n\t* tessMeshAddEdgeVertex( eOrg ) creates a new edge eNew such that\n\t* eNew == eOrg->Lnext, and eNew->Dst is a newly created vertex.\n\t* eOrg and eNew will have the same left face.\n\t*\n\t* tessMeshSplitEdge( eOrg ) splits eOrg into two edges eOrg and eNew,\n\t* such that eNew == eOrg->Lnext. The new vertex is eOrg->Dst == eNew->Org.\n\t* eOrg and eNew will have the same left face.\n\t*\n\t* tessMeshConnect( eOrg, eDst ) creates a new edge from eOrg->Dst\n\t* to eDst->Org, and returns the corresponding half-edge eNew.\n\t* If eOrg->Lface == eDst->Lface, this splits one loop into two,\n\t* and the newly created loop is eNew->Lface. Otherwise, two disjoint\n\t* loops are merged into one, and the loop eDst->Lface is destroyed.\n\t*\n\t* ************************ Other Operations *****************************\n\t*\n\t* tessMeshNewMesh() creates a new mesh with no edges, no vertices,\n\t* and no loops (what we usually call a \"face\").\n\t*\n\t* tessMeshUnion( mesh1, mesh2 ) forms the union of all structures in\n\t* both meshes, and returns the new mesh (the old meshes are destroyed).\n\t*\n\t* tessMeshDeleteMesh( mesh ) will free all storage for any valid mesh.\n\t*\n\t* tessMeshZapFace( fZap ) destroys a face and removes it from the\n\t* global face list. All edges of fZap will have a NULL pointer as their\n\t* left face. Any edges which also have a NULL pointer as their right face\n\t* are deleted entirely (along with any isolated vertices this produces).\n\t* An entire mesh can be deleted by zapping its faces, one at a time,\n\t* in any order. Zapped faces cannot be used in further mesh operations!\n\t*\n\t* tessMeshCheckMesh( mesh ) checks a mesh for self-consistency.\n\t*/\n\n\tTESSmesh.prototype = {\n\n\t\t/* MakeEdge creates a new pair of half-edges which form their own loop.\n\t\t* No vertex or face structures are allocated, but these must be assigned\n\t\t* before the current edge operation is completed.\n\t\t*/\n\t\t//static TESShalfEdge *MakeEdge( TESSmesh* mesh, TESShalfEdge *eNext )\n\t\tmakeEdge_: function(eNext) {\n\t\t\tvar e = new TESShalfEdge(0);\n\t\t\tvar eSym = new TESShalfEdge(1);\n\n\t\t\t/* Make sure eNext points to the first edge of the edge pair */\n\t\t\tif( eNext.Sym.side < eNext.side ) { eNext = eNext.Sym; }\n\n\t\t\t/* Insert in circular doubly-linked list before eNext.\n\t\t\t* Note that the prev pointer is stored in Sym->next.\n\t\t\t*/\n\t\t\tvar ePrev = eNext.Sym.next;\n\t\t\teSym.next = ePrev;\n\t\t\tePrev.Sym.next = e;\n\t\t\te.next = eNext;\n\t\t\teNext.Sym.next = eSym;\n\n\t\t\te.Sym = eSym;\n\t\t\te.Onext = e;\n\t\t\te.Lnext = eSym;\n\t\t\te.Org = null;\n\t\t\te.Lface = null;\n\t\t\te.winding = 0;\n\t\t\te.activeRegion = null;\n\n\t\t\teSym.Sym = e;\n\t\t\teSym.Onext = eSym;\n\t\t\teSym.Lnext = e;\n\t\t\teSym.Org = null;\n\t\t\teSym.Lface = null;\n\t\t\teSym.winding = 0;\n\t\t\teSym.activeRegion = null;\n\n\t\t\treturn e;\n\t\t},\n\n\t\t/* Splice( a, b ) is best described by the Guibas/Stolfi paper or the\n\t\t* CS348a notes (see mesh.h). Basically it modifies the mesh so that\n\t\t* a->Onext and b->Onext are exchanged. This can have various effects\n\t\t* depending on whether a and b belong to different face or vertex rings.\n\t\t* For more explanation see tessMeshSplice() below.\n\t\t*/\n\t\t// static void Splice( TESShalfEdge *a, TESShalfEdge *b )\n\t\tsplice_: function(a, b) {\n\t\t\tvar aOnext = a.Onext;\n\t\t\tvar bOnext = b.Onext;\n\t\t\taOnext.Sym.Lnext = b;\n\t\t\tbOnext.Sym.Lnext = a;\n\t\t\ta.Onext = bOnext;\n\t\t\tb.Onext = aOnext;\n\t\t},\n\n\t\t/* MakeVertex( newVertex, eOrig, vNext ) attaches a new vertex and makes it the\n\t\t* origin of all edges in the vertex loop to which eOrig belongs. \"vNext\" gives\n\t\t* a place to insert the new vertex in the global vertex list. We insert\n\t\t* the new vertex *before* vNext so that algorithms which walk the vertex\n\t\t* list will not see the newly created vertices.\n\t\t*/\n\t\t//static void MakeVertex( TESSvertex *newVertex, TESShalfEdge *eOrig, TESSvertex *vNext )\n\t\tmakeVertex_: function(newVertex, eOrig, vNext) {\n\t\t\tvar vNew = newVertex;\n\t\t\tassert(vNew !== null);\n\n\t\t\t/* insert in circular doubly-linked list before vNext */\n\t\t\tvar vPrev = vNext.prev;\n\t\t\tvNew.prev = vPrev;\n\t\t\tvPrev.next = vNew;\n\t\t\tvNew.next = vNext;\n\t\t\tvNext.prev = vNew;\n\n\t\t\tvNew.anEdge = eOrig;\n\t\t\t/* leave coords, s, t undefined */\n\n\t\t\t/* fix other edges on this vertex loop */\n\t\t\tvar e = eOrig;\n\t\t\tdo {\n\t\t\t\te.Org = vNew;\n\t\t\t\te = e.Onext;\n\t\t\t} while(e !== eOrig);\n\t\t},\n\n\t\t/* MakeFace( newFace, eOrig, fNext ) attaches a new face and makes it the left\n\t\t* face of all edges in the face loop to which eOrig belongs. \"fNext\" gives\n\t\t* a place to insert the new face in the global face list. We insert\n\t\t* the new face *before* fNext so that algorithms which walk the face\n\t\t* list will not see the newly created faces.\n\t\t*/\n\t\t// static void MakeFace( TESSface *newFace, TESShalfEdge *eOrig, TESSface *fNext )\n\t\tmakeFace_: function(newFace, eOrig, fNext) {\n\t\t\tvar fNew = newFace;\n\t\t\tassert(fNew !== null); \n\n\t\t\t/* insert in circular doubly-linked list before fNext */\n\t\t\tvar fPrev = fNext.prev;\n\t\t\tfNew.prev = fPrev;\n\t\t\tfPrev.next = fNew;\n\t\t\tfNew.next = fNext;\n\t\t\tfNext.prev = fNew;\n\n\t\t\tfNew.anEdge = eOrig;\n\t\t\tfNew.trail = null;\n\t\t\tfNew.marked = false;\n\n\t\t\t/* The new face is marked \"inside\" if the old one was. This is a\n\t\t\t* convenience for the common case where a face has been split in two.\n\t\t\t*/\n\t\t\tfNew.inside = fNext.inside;\n\n\t\t\t/* fix other edges on this face loop */\n\t\t\tvar e = eOrig;\n\t\t\tdo {\n\t\t\t\te.Lface = fNew;\n\t\t\t\te = e.Lnext;\n\t\t\t} while(e !== eOrig);\n\t\t},\n\n\t\t/* KillEdge( eDel ) destroys an edge (the half-edges eDel and eDel->Sym),\n\t\t* and removes from the global edge list.\n\t\t*/\n\t\t//static void KillEdge( TESSmesh *mesh, TESShalfEdge *eDel )\n\t\tkillEdge_: function(eDel) {\n\t\t\t/* Half-edges are allocated in pairs, see EdgePair above */\n\t\t\tif( eDel.Sym.side < eDel.side ) { eDel = eDel.Sym; }\n\n\t\t\t/* delete from circular doubly-linked list */\n\t\t\tvar eNext = eDel.next;\n\t\t\tvar ePrev = eDel.Sym.next;\n\t\t\teNext.Sym.next = ePrev;\n\t\t\tePrev.Sym.next = eNext;\n\t\t},\n\n\n\t\t/* KillVertex( vDel ) destroys a vertex and removes it from the global\n\t\t* vertex list. It updates the vertex loop to point to a given new vertex.\n\t\t*/\n\t\t//static void KillVertex( TESSmesh *mesh, TESSvertex *vDel, TESSvertex *newOrg )\n\t\tkillVertex_: function(vDel, newOrg) {\n\t\t\tvar eStart = vDel.anEdge;\n\t\t\t/* change the origin of all affected edges */\n\t\t\tvar e = eStart;\n\t\t\tdo {\n\t\t\t\te.Org = newOrg;\n\t\t\t\te = e.Onext;\n\t\t\t} while(e !== eStart);\n\n\t\t\t/* delete from circular doubly-linked list */\n\t\t\tvar vPrev = vDel.prev;\n\t\t\tvar vNext = vDel.next;\n\t\t\tvNext.prev = vPrev;\n\t\t\tvPrev.next = vNext;\n\t\t},\n\n\t\t/* KillFace( fDel ) destroys a face and removes it from the global face\n\t\t* list. It updates the face loop to point to a given new face.\n\t\t*/\n\t\t//static void KillFace( TESSmesh *mesh, TESSface *fDel, TESSface *newLface )\n\t\tkillFace_: function(fDel, newLface) {\n\t\t\tvar eStart = fDel.anEdge;\n\n\t\t\t/* change the left face of all affected edges */\n\t\t\tvar e = eStart;\n\t\t\tdo {\n\t\t\t\te.Lface = newLface;\n\t\t\t\te = e.Lnext;\n\t\t\t} while(e !== eStart);\n\n\t\t\t/* delete from circular doubly-linked list */\n\t\t\tvar fPrev = fDel.prev;\n\t\t\tvar fNext = fDel.next;\n\t\t\tfNext.prev = fPrev;\n\t\t\tfPrev.next = fNext;\n\t\t},\n\n\t\t/****************** Basic Edge Operations **********************/\n\n\t\t/* tessMeshMakeEdge creates one edge, two vertices, and a loop (face).\n\t\t* The loop consists of the two new half-edges.\n\t\t*/\n\t\t//TESShalfEdge *tessMeshMakeEdge( TESSmesh *mesh )\n\t\tmakeEdge: function() {\n\t\t\tvar newVertex1 = new TESSvertex();\n\t\t\tvar newVertex2 = new TESSvertex();\n\t\t\tvar newFace = new TESSface();\n\t\t\tvar e = this.makeEdge_( this.eHead);\n\t\t\tthis.makeVertex_( newVertex1, e, this.vHead );\n\t\t\tthis.makeVertex_( newVertex2, e.Sym, this.vHead );\n\t\t\tthis.makeFace_( newFace, e, this.fHead );\n\t\t\treturn e;\n\t\t},\n\n\t\t/* tessMeshSplice( eOrg, eDst ) is the basic operation for changing the\n\t\t* mesh connectivity and topology. It changes the mesh so that\n\t\t*\teOrg->Onext <- OLD( eDst->Onext )\n\t\t*\teDst->Onext <- OLD( eOrg->Onext )\n\t\t* where OLD(...) means the value before the meshSplice operation.\n\t\t*\n\t\t* This can have two effects on the vertex structure:\n\t\t* - if eOrg->Org != eDst->Org, the two vertices are merged together\n\t\t* - if eOrg->Org == eDst->Org, the origin is split into two vertices\n\t\t* In both cases, eDst->Org is changed and eOrg->Org is untouched.\n\t\t*\n\t\t* Similarly (and independently) for the face structure,\n\t\t* - if eOrg->Lface == eDst->Lface, one loop is split into two\n\t\t* - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one\n\t\t* In both cases, eDst->Lface is changed and eOrg->Lface is unaffected.\n\t\t*\n\t\t* Some special cases:\n\t\t* If eDst == eOrg, the operation has no effect.\n\t\t* If eDst == eOrg->Lnext, the new face will have a single edge.\n\t\t* If eDst == eOrg->Lprev, the old face will have a single edge.\n\t\t* If eDst == eOrg->Onext, the new vertex will have a single edge.\n\t\t* If eDst == eOrg->Oprev, the old vertex will have a single edge.\n\t\t*/\n\t\t//int tessMeshSplice( TESSmesh* mesh, TESShalfEdge *eOrg, TESShalfEdge *eDst )\n\t\tsplice: function(eOrg, eDst) {\n\t\t\tvar joiningLoops = false;\n\t\t\tvar joiningVertices = false;\n\n\t\t\tif( eOrg === eDst ) return;\n\n\t\t\tif( eDst.Org !== eOrg.Org ) {\n\t\t\t\t/* We are merging two disjoint vertices -- destroy eDst->Org */\n\t\t\t\tjoiningVertices = true;\n\t\t\t\tthis.killVertex_( eDst.Org, eOrg.Org );\n\t\t\t}\n\t\t\tif( eDst.Lface !== eOrg.Lface ) {\n\t\t\t\t/* We are connecting two disjoint loops -- destroy eDst->Lface */\n\t\t\t\tjoiningLoops = true;\n\t\t\t\tthis.killFace_( eDst.Lface, eOrg.Lface );\n\t\t\t}\n\n\t\t\t/* Change the edge structure */\n\t\t\tthis.splice_( eDst, eOrg );\n\n\t\t\tif( ! joiningVertices ) {\n\t\t\t\tvar newVertex = new TESSvertex();\n\n\t\t\t\t/* We split one vertex into two -- the new vertex is eDst->Org.\n\t\t\t\t* Make sure the old vertex points to a valid half-edge.\n\t\t\t\t*/\n\t\t\t\tthis.makeVertex_( newVertex, eDst, eOrg.Org );\n\t\t\t\teOrg.Org.anEdge = eOrg;\n\t\t\t}\n\t\t\tif( ! joiningLoops ) {\n\t\t\t\tvar newFace = new TESSface(); \n\n\t\t\t\t/* We split one loop into two -- the new loop is eDst->Lface.\n\t\t\t\t* Make sure the old face points to a valid half-edge.\n\t\t\t\t*/\n\t\t\t\tthis.makeFace_( newFace, eDst, eOrg.Lface );\n\t\t\t\teOrg.Lface.anEdge = eOrg;\n\t\t\t}\n\t\t},\n\n\t\t/* tessMeshDelete( eDel ) removes the edge eDel. There are several cases:\n\t\t* if (eDel->Lface != eDel->Rface), we join two loops into one; the loop\n\t\t* eDel->Lface is deleted. Otherwise, we are splitting one loop into two;\n\t\t* the newly created loop will contain eDel->Dst. If the deletion of eDel\n\t\t* would create isolated vertices, those are deleted as well.\n\t\t*\n\t\t* This function could be implemented as two calls to tessMeshSplice\n\t\t* plus a few calls to memFree, but this would allocate and delete\n\t\t* unnecessary vertices and faces.\n\t\t*/\n\t\t//int tessMeshDelete( TESSmesh *mesh, TESShalfEdge *eDel )\n\t\tdelete: function(eDel) {\n\t\t\tvar eDelSym = eDel.Sym;\n\t\t\tvar joiningLoops = false;\n\n\t\t\t/* First step: disconnect the origin vertex eDel->Org. We make all\n\t\t\t* changes to get a consistent mesh in this \"intermediate\" state.\n\t\t\t*/\n\t\t\tif( eDel.Lface !== eDel.Rface ) {\n\t\t\t\t/* We are joining two loops into one -- remove the left face */\n\t\t\t\tjoiningLoops = true;\n\t\t\t\tthis.killFace_( eDel.Lface, eDel.Rface );\n\t\t\t}\n\n\t\t\tif( eDel.Onext === eDel ) {\n\t\t\t\tthis.killVertex_( eDel.Org, null );\n\t\t\t} else {\n\t\t\t\t/* Make sure that eDel->Org and eDel->Rface point to valid half-edges */\n\t\t\t\teDel.Rface.anEdge = eDel.Oprev;\n\t\t\t\teDel.Org.anEdge = eDel.Onext;\n\n\t\t\t\tthis.splice_( eDel, eDel.Oprev );\n\t\t\t\tif( ! joiningLoops ) {\n\t\t\t\t\tvar newFace = new TESSface();\n\n\t\t\t\t\t/* We are splitting one loop into two -- create a new loop for eDel. */\n\t\t\t\t\tthis.makeFace_( newFace, eDel, eDel.Lface );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* Claim: the mesh is now in a consistent state, except that eDel->Org\n\t\t\t* may have been deleted. Now we disconnect eDel->Dst.\n\t\t\t*/\n\t\t\tif( eDelSym.Onext === eDelSym ) {\n\t\t\t\tthis.killVertex_( eDelSym.Org, null );\n\t\t\t\tthis.killFace_( eDelSym.Lface, null );\n\t\t\t} else {\n\t\t\t\t/* Make sure that eDel->Dst and eDel->Lface point to valid half-edges */\n\t\t\t\teDel.Lface.anEdge = eDelSym.Oprev;\n\t\t\t\teDelSym.Org.anEdge = eDelSym.Onext;\n\t\t\t\tthis.splice_( eDelSym, eDelSym.Oprev );\n\t\t\t}\n\n\t\t\t/* Any isolated vertices or faces have already been freed. */\n\t\t\tthis.killEdge_( eDel );\n\t\t},\n\n\t\t/******************** Other Edge Operations **********************/\n\n\t\t/* All these routines can be implemented with the basic edge\n\t\t* operations above. They are provided for convenience and efficiency.\n\t\t*/\n\n\n\t\t/* tessMeshAddEdgeVertex( eOrg ) creates a new edge eNew such that\n\t\t* eNew == eOrg->Lnext, and eNew->Dst is a newly created vertex.\n\t\t* eOrg and eNew will have the same left face.\n\t\t*/\n\t\t// TESShalfEdge *tessMeshAddEdgeVertex( TESSmesh *mesh, TESShalfEdge *eOrg );\n\t\taddEdgeVertex: function(eOrg) {\n\t\t\tvar eNew = this.makeEdge_( eOrg );\n\t\t\tvar eNewSym = eNew.Sym;\n\n\t\t\t/* Connect the new edge appropriately */\n\t\t\tthis.splice_( eNew, eOrg.Lnext );\n\n\t\t\t/* Set the vertex and face information */\n\t\t\teNew.Org = eOrg.Dst;\n\n\t\t\tvar newVertex = new TESSvertex();\n\t\t\tthis.makeVertex_( newVertex, eNewSym, eNew.Org );\n\n\t\t\teNew.Lface = eNewSym.Lface = eOrg.Lface;\n\n\t\t\treturn eNew;\n\t\t},\n\n\n\t\t/* tessMeshSplitEdge( eOrg ) splits eOrg into two edges eOrg and eNew,\n\t\t* such that eNew == eOrg->Lnext. The new vertex is eOrg->Dst == eNew->Org.\n\t\t* eOrg and eNew will have the same left face.\n\t\t*/\n\t\t// TESShalfEdge *tessMeshSplitEdge( TESSmesh *mesh, TESShalfEdge *eOrg );\n\t\tsplitEdge: function(eOrg, eDst) {\n\t\t\tvar tempHalfEdge = this.addEdgeVertex( eOrg );\n\t\t\tvar eNew = tempHalfEdge.Sym;\n\n\t\t\t/* Disconnect eOrg from eOrg->Dst and connect it to eNew->Org */\n\t\t\tthis.splice_( eOrg.Sym, eOrg.Sym.Oprev );\n\t\t\tthis.splice_( eOrg.Sym, eNew );\n\n\t\t\t/* Set the vertex and face information */\n\t\t\teOrg.Dst = eNew.Org;\n\t\t\teNew.Dst.anEdge = eNew.Sym;\t/* may have pointed to eOrg->Sym */\n\t\t\teNew.Rface = eOrg.Rface;\n\t\t\teNew.winding = eOrg.winding;\t/* copy old winding information */\n\t\t\teNew.Sym.winding = eOrg.Sym.winding;\n\n\t\t\treturn eNew;\n\t\t},\n\n\n\t\t/* tessMeshConnect( eOrg, eDst ) creates a new edge from eOrg->Dst\n\t\t* to eDst->Org, and returns the corresponding half-edge eNew.\n\t\t* If eOrg->Lface == eDst->Lface, this splits one loop into two,\n\t\t* and the newly created loop is eNew->Lface. Otherwise, two disjoint\n\t\t* loops are merged into one, and the loop eDst->Lface is destroyed.\n\t\t*\n\t\t* If (eOrg == eDst), the new face will have only two edges.\n\t\t* If (eOrg->Lnext == eDst), the old face is reduced to a single edge.\n\t\t* If (eOrg->Lnext->Lnext == eDst), the old face is reduced to two edges.\n\t\t*/\n\n\t\t// TESShalfEdge *tessMeshConnect( TESSmesh *mesh, TESShalfEdge *eOrg, TESShalfEdge *eDst );\n\t\tconnect: function(eOrg, eDst) {\n\t\t\tvar joiningLoops = false; \n\t\t\tvar eNew = this.makeEdge_( eOrg );\n\t\t\tvar eNewSym = eNew.Sym;\n\n\t\t\tif( eDst.Lface !== eOrg.Lface ) {\n\t\t\t\t/* We are connecting two disjoint loops -- destroy eDst->Lface */\n\t\t\t\tjoiningLoops = true;\n\t\t\t\tthis.killFace_( eDst.Lface, eOrg.Lface );\n\t\t\t}\n\n\t\t\t/* Connect the new edge appropriately */\n\t\t\tthis.splice_( eNew, eOrg.Lnext );\n\t\t\tthis.splice_( eNewSym, eDst );\n\n\t\t\t/* Set the vertex and face information */\n\t\t\teNew.Org = eOrg.Dst;\n\t\t\teNewSym.Org = eDst.Org;\n\t\t\teNew.Lface = eNewSym.Lface = eOrg.Lface;\n\n\t\t\t/* Make sure the old face points to a valid half-edge */\n\t\t\teOrg.Lface.anEdge = eNewSym;\n\n\t\t\tif( ! joiningLoops ) {\n\t\t\t\tvar newFace = new TESSface();\n\t\t\t\t/* We split one loop into two -- the new loop is eNew->Lface */\n\t\t\t\tthis.makeFace_( newFace, eNew, eOrg.Lface );\n\t\t\t}\n\t\t\treturn eNew;\n\t\t},\n\n\t\t/* tessMeshZapFace( fZap ) destroys a face and removes it from the\n\t\t* global face list. All edges of fZap will have a NULL pointer as their\n\t\t* left face. Any edges which also have a NULL pointer as their right face\n\t\t* are deleted entirely (along with any isolated vertices this produces).\n\t\t* An entire mesh can be deleted by zapping its faces, one at a time,\n\t\t* in any order. Zapped faces cannot be used in further mesh operations!\n\t\t*/\n\t\tzapFace: function( fZap )\n\t\t{\n\t\t\tvar eStart = fZap.anEdge;\n\t\t\tvar e, eNext, eSym;\n\t\t\tvar fPrev, fNext;\n\n\t\t\t/* walk around face, deleting edges whose right face is also NULL */\n\t\t\teNext = eStart.Lnext;\n\t\t\tdo {\n\t\t\t\te = eNext;\n\t\t\t\teNext = e.Lnext;\n\n\t\t\t\te.Lface = null;\n\t\t\t\tif( e.Rface === null ) {\n\t\t\t\t\t/* delete the edge -- see TESSmeshDelete above */\n\n\t\t\t\t\tif( e.Onext === e ) {\n\t\t\t\t\t\tthis.killVertex_( e.Org, null );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/* Make sure that e->Org points to a valid half-edge */\n\t\t\t\t\t\te.Org.anEdge = e.Onext;\n\t\t\t\t\t\tthis.splice_( e, e.Oprev );\n\t\t\t\t\t}\n\t\t\t\t\teSym = e.Sym;\n\t\t\t\t\tif( eSym.Onext === eSym ) {\n\t\t\t\t\t\tthis.killVertex_( eSym.Org, null );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/* Make sure that eSym->Org points to a valid half-edge */\n\t\t\t\t\t\teSym.Org.anEdge = eSym.Onext;\n\t\t\t\t\t\tthis.splice_( eSym, eSym.Oprev );\n\t\t\t\t\t}\n\t\t\t\t\tthis.killEdge_( e );\n\t\t\t\t}\n\t\t\t} while( e != eStart );\n\n\t\t\t/* delete from circular doubly-linked list */\n\t\t\tfPrev = fZap.prev;\n\t\t\tfNext = fZap.next;\n\t\t\tfNext.prev = fPrev;\n\t\t\tfPrev.next = fNext;\n\t\t},\n\n\t\tcountFaceVerts_: function(f) {\n\t\t\tvar eCur = f.anEdge;\n\t\t\tvar n = 0;\n\t\t\tdo\n\t\t\t{\n\t\t\t\tn++;\n\t\t\t\teCur = eCur.Lnext;\n\t\t\t}\n\t\t\twhile (eCur !== f.anEdge);\n\t\t\treturn n;\n\t\t},\n\n\t\t//int tessMeshMergeConvexFaces( TESSmesh *mesh, int maxVertsPerFace )\n\t\tmergeConvexFaces: function(maxVertsPerFace) {\n\t\t\tvar f;\n\t\t\tvar eCur, eNext, eSym;\n\t\t\tvar vStart;\n\t\t\tvar curNv, symNv;\n\n\t\t\tfor( f = this.fHead.next; f !== this.fHead; f = f.next )\n\t\t\t{\n\t\t\t\t// Skip faces which are outside the result.\n\t\t\t\tif( !f.inside )\n\t\t\t\t\tcontinue;\n\n\t\t\t\teCur = f.anEdge;\n\t\t\t\tvStart = eCur.Org;\n\t\t\t\t\t\n\t\t\t\twhile (true)\n\t\t\t\t{\n\t\t\t\t\teNext = eCur.Lnext;\n\t\t\t\t\teSym = eCur.Sym;\n\n\t\t\t\t\t// Try to merge if the neighbour face is valid.\n\t\t\t\t\tif( eSym && eSym.Lface && eSym.Lface.inside )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Try to merge the neighbour faces if the resulting polygons\n\t\t\t\t\t\t// does not exceed maximum number of vertices.\n\t\t\t\t\t\tcurNv = this.countFaceVerts_( f );\n\t\t\t\t\t\tsymNv = this.countFaceVerts_( eSym.Lface );\n\t\t\t\t\t\tif( (curNv+symNv-2) <= maxVertsPerFace )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Merge if the resulting poly is convex.\n\t\t\t\t\t\t\tif( Geom.vertCCW( eCur.Lprev.Org, eCur.Org, eSym.Lnext.Lnext.Org ) &&\n\t\t\t\t\t\t\t\tGeom.vertCCW( eSym.Lprev.Org, eSym.Org, eCur.Lnext.Lnext.Org ) )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\teNext = eSym.Lnext;\n\t\t\t\t\t\t\t\tthis.delete( eSym );\n\t\t\t\t\t\t\t\teCur = null;\n\t\t\t\t\t\t\t\teSym = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif( eCur && eCur.Lnext.Org === vStart )\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t// Continue to next edge.\n\t\t\t\t\teCur = eNext;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn true;\n\t\t},\n\n\t\t/* tessMeshCheckMesh( mesh ) checks a mesh for self-consistency.\n\t\t*/\n\t\tcheck: function() {\n\t\t\tvar fHead = this.fHead;\n\t\t\tvar vHead = this.vHead;\n\t\t\tvar eHead = this.eHead;\n\t\t\tvar f, fPrev, v, vPrev, e, ePrev;\n\n\t\t\tfPrev = fHead;\n\t\t\tfor( fPrev = fHead ; (f = fPrev.next) !== fHead; fPrev = f) {\n\t\t\t\tassert( f.prev === fPrev );\n\t\t\t\te = f.anEdge;\n\t\t\t\tdo {\n\t\t\t\t\tassert( e.Sym !== e );\n\t\t\t\t\tassert( e.Sym.Sym === e );\n\t\t\t\t\tassert( e.Lnext.Onext.Sym === e );\n\t\t\t\t\tassert( e.Onext.Sym.Lnext === e );\n\t\t\t\t\tassert( e.Lface === f );\n\t\t\t\t\te = e.Lnext;\n\t\t\t\t} while( e !== f.anEdge );\n\t\t\t}\n\t\t\tassert( f.prev === fPrev && f.anEdge === null );\n\n\t\t\tvPrev = vHead;\n\t\t\tfor( vPrev = vHead ; (v = vPrev.next) !== vHead; vPrev = v) {\n\t\t\t\tassert( v.prev === vPrev );\n\t\t\t\te = v.anEdge;\n\t\t\t\tdo {\n\t\t\t\t\tassert( e.Sym !== e );\n\t\t\t\t\tassert( e.Sym.Sym === e );\n\t\t\t\t\tassert( e.Lnext.Onext.Sym === e );\n\t\t\t\t\tassert( e.Onext.Sym.Lnext === e );\n\t\t\t\t\tassert( e.Org === v );\n\t\t\t\t\te = e.Onext;\n\t\t\t\t} while( e !== v.anEdge );\n\t\t\t}\n\t\t\tassert( v.prev === vPrev && v.anEdge === null );\n\n\t\t\tePrev = eHead;\n\t\t\tfor( ePrev = eHead ; (e = ePrev.next) !== eHead; ePrev = e) {\n\t\t\t\tassert( e.Sym.next === ePrev.Sym );\n\t\t\t\tassert( e.Sym !== e );\n\t\t\t\tassert( e.Sym.Sym === e );\n\t\t\t\tassert( e.Org !== null );\n\t\t\t\tassert( e.Dst !== null );\n\t\t\t\tassert( e.Lnext.Onext.Sym === e );\n\t\t\t\tassert( e.Onext.Sym.Lnext === e );\n\t\t\t}\n\t\t\tassert( e.Sym.next === ePrev.Sym\n\t\t\t\t&& e.Sym === this.eHeadSym\n\t\t\t\t&& e.Sym.Sym === e\n\t\t\t\t&& e.Org === null && e.Dst === null\n\t\t\t\t&& e.Lface === null && e.Rface === null );\n\t\t}\n\n\t};\n\n\tvar Geom = {};\n\n\tGeom.vertEq = function(u,v) {\n\t\treturn (u.s === v.s && u.t === v.t);\n\t};\n\n\t/* Returns TRUE if u is lexicographically <= v. */\n\tGeom.vertLeq = function(u,v) {\n\t\treturn ((u.s < v.s) || (u.s === v.s && u.t <= v.t));\n\t};\n\n\t/* Versions of VertLeq, EdgeSign, EdgeEval with s and t transposed. */\n\tGeom.transLeq = function(u,v) {\n\t\treturn ((u.t < v.t) || (u.t === v.t && u.s <= v.s));\n\t};\n\n\tGeom.edgeGoesLeft = function(e) {\n\t\treturn Geom.vertLeq( e.Dst, e.Org );\n\t};\n\n\tGeom.edgeGoesRight = function(e) {\n\t\treturn Geom.vertLeq( e.Org, e.Dst );\n\t};\n\n\tGeom.vertL1dist = function(u,v) {\n\t\treturn (Math.abs(u.s - v.s) + Math.abs(u.t - v.t));\n\t};\n\n\t//TESSreal tesedgeEval( TESSvertex *u, TESSvertex *v, TESSvertex *w )\n\tGeom.edgeEval = function( u, v, w ) {\n\t\t/* Given three vertices u,v,w such that VertLeq(u,v) && VertLeq(v,w),\n\t\t* evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n\t\t* Returns v->t - (uw)(v->s), ie. the signed distance from uw to v.\n\t\t* If uw is vertical (and thus passes thru v), the result is zero.\n\t\t*\n\t\t* The calculation is extremely accurate and stable, even when v\n\t\t* is very close to u or w. In particular if we set v->t = 0 and\n\t\t* let r be the negated result (this evaluates (uw)(v->s)), then\n\t\t* r is guaranteed to satisfy MIN(u->t,w->t) <= r <= MAX(u->t,w->t).\n\t\t*/\n\t\tassert( Geom.vertLeq( u, v ) && Geom.vertLeq( v, w ));\n\n\t\tvar gapL = v.s - u.s;\n\t\tvar gapR = w.s - v.s;\n\n\t\tif( gapL + gapR > 0.0 ) {\n\t\t\tif( gapL < gapR ) {\n\t\t\t\treturn (v.t - u.t) + (u.t - w.t) * (gapL / (gapL + gapR));\n\t\t\t} else {\n\t\t\t\treturn (v.t - w.t) + (w.t - u.t) * (gapR / (gapL + gapR));\n\t\t\t}\n\t\t}\n\t\t/* vertical line */\n\t\treturn 0.0;\n\t};\n\n\t//TESSreal tesedgeSign( TESSvertex *u, TESSvertex *v, TESSvertex *w )\n\tGeom.edgeSign = function( u, v, w ) {\n\t\t/* Returns a number whose sign matches EdgeEval(u,v,w) but which\n\t\t* is cheaper to evaluate. Returns > 0, == 0 , or < 0\n\t\t* as v is above, on, or below the edge uw.\n\t\t*/\n\t\tassert( Geom.vertLeq( u, v ) && Geom.vertLeq( v, w ));\n\n\t\tvar gapL = v.s - u.s;\n\t\tvar gapR = w.s - v.s;\n\n\t\tif( gapL + gapR > 0.0 ) {\n\t\t\treturn (v.t - w.t) * gapL + (v.t - u.t) * gapR;\n\t\t}\n\t\t/* vertical line */\n\t\treturn 0.0;\n\t};\n\n\n\t/***********************************************************************\n\t* Define versions of EdgeSign, EdgeEval with s and t transposed.\n\t*/\n\n\t//TESSreal testransEval( TESSvertex *u, TESSvertex *v, TESSvertex *w )\n\tGeom.transEval = function( u, v, w ) {\n\t\t/* Given three vertices u,v,w such that TransLeq(u,v) && TransLeq(v,w),\n\t\t* evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n\t\t* Returns v->s - (uw)(v->t), ie. the signed distance from uw to v.\n\t\t* If uw is vertical (and thus passes thru v), the result is zero.\n\t\t*\n\t\t* The calculation is extremely accurate and stable, even when v\n\t\t* is very close to u or w. In particular if we set v->s = 0 and\n\t\t* let r be the negated result (this evaluates (uw)(v->t)), then\n\t\t* r is guaranteed to satisfy MIN(u->s,w->s) <= r <= MAX(u->s,w->s).\n\t\t*/\n\t\tassert( Geom.transLeq( u, v ) && Geom.transLeq( v, w ));\n\n\t\tvar gapL = v.t - u.t;\n\t\tvar gapR = w.t - v.t;\n\n\t\tif( gapL + gapR > 0.0 ) {\n\t\t\tif( gapL < gapR ) {\n\t\t\t\treturn (v.s - u.s) + (u.s - w.s) * (gapL / (gapL + gapR));\n\t\t\t} else {\n\t\t\t\treturn (v.s - w.s) + (w.s - u.s) * (gapR / (gapL + gapR));\n\t\t\t}\n\t\t}\n\t\t/* vertical line */\n\t\treturn 0.0;\n\t};\n\n\t//TESSreal testransSign( TESSvertex *u, TESSvertex *v, TESSvertex *w )\n\tGeom.transSign = function( u, v, w ) {\n\t\t/* Returns a number whose sign matches TransEval(u,v,w) but which\n\t\t* is cheaper to evaluate. Returns > 0, == 0 , or < 0\n\t\t* as v is above, on, or below the edge uw.\n\t\t*/\n\t\tassert( Geom.transLeq( u, v ) && Geom.transLeq( v, w ));\n\n\t\tvar gapL = v.t - u.t;\n\t\tvar gapR = w.t - v.t;\n\n\t\tif( gapL + gapR > 0.0 ) {\n\t\t\treturn (v.s - w.s) * gapL + (v.s - u.s) * gapR;\n\t\t}\n\t\t/* vertical line */\n\t\treturn 0.0;\n\t};\n\n\n\t//int tesvertCCW( TESSvertex *u, TESSvertex *v, TESSvertex *w )\n\tGeom.vertCCW = function( u, v, w ) {\n\t\t/* For almost-degenerate situations, the results are not reliable.\n\t\t* Unless the floating-point arithmetic can be performed without\n\t\t* rounding errors, *any* implementation will give incorrect results\n\t\t* on some degenerate inputs, so the client must have some way to\n\t\t* handle this situation.\n\t\t*/\n\t\treturn (u.s*(v.t - w.t) + v.s*(w.t - u.t) + w.s*(u.t - v.t)) >= 0.0;\n\t};\n\n\t/* Given parameters a,x,b,y returns the value (b*x+a*y)/(a+b),\n\t* or (x+y)/2 if a==b==0. It requires that a,b >= 0, and enforces\n\t* this in the rare case that one argument is slightly negative.\n\t* The implementation is extremely stable numerically.\n\t* In particular it guarantees that the result r satisfies\n\t* MIN(x,y) <= r <= MAX(x,y), and the results are very accurate\n\t* even when a and b differ greatly in magnitude.\n\t*/\n\tGeom.interpolate = function(a,x,b,y) {\n\t\treturn (a = (a < 0) ? 0 : a, b = (b < 0) ? 0 : b, ((a <= b) ? ((b == 0) ? ((x+y) / 2) : (x + (y-x) * (a/(a+b)))) : (y + (x-y) * (b/(a+b)))));\n\t};\n\n\t/*\n\t#ifndef FOR_TRITE_TEST_PROGRAM\n\t#define Interpolate(a,x,b,y)\tRealInterpolate(a,x,b,y)\n\t#else\n\n\t// Claim: the ONLY property the sweep algorithm relies on is that\n\t// MIN(x,y) <= r <= MAX(x,y). This is a nasty way to test that.\n\t#include \n\textern int RandomInterpolate;\n\n\tdouble Interpolate( double a, double x, double b, double y)\n\t{\n\t\tprintf(\"*********************%d\\n\",RandomInterpolate);\n\t\tif( RandomInterpolate ) {\n\t\t\ta = 1.2 * drand48() - 0.1;\n\t\t\ta = (a < 0) ? 0 : ((a > 1) ? 1 : a);\n\t\t\tb = 1.0 - a;\n\t\t}\n\t\treturn RealInterpolate(a,x,b,y);\n\t}\n\t#endif*/\n\n\tGeom.intersect = function( o1, d1, o2, d2, v ) {\n\t\t/* Given edges (o1,d1) and (o2,d2), compute their point of intersection.\n\t\t* The computed point is guaranteed to lie in the intersection of the\n\t\t* bounding rectangles defined by each edge.\n\t\t*/\n\t\tvar z1, z2;\n\t\tvar t;\n\n\t\t/* This is certainly not the most efficient way to find the intersection\n\t\t* of two line segments, but it is very numerically stable.\n\t\t*\n\t\t* Strategy: find the two middle vertices in the VertLeq ordering,\n\t\t* and interpolate the intersection s-value from these. Then repeat\n\t\t* using the TransLeq ordering to find the intersection t-value.\n\t\t*/\n\n\t\tif( ! Geom.vertLeq( o1, d1 )) { t = o1; o1 = d1; d1 = t; } //swap( o1, d1 ); }\n\t\tif( ! Geom.vertLeq( o2, d2 )) { t = o2; o2 = d2; d2 = t; } //swap( o2, d2 ); }\n\t\tif( ! Geom.vertLeq( o1, o2 )) { t = o1; o1 = o2; o2 = t; t = d1; d1 = d2; d2 = t; }//swap( o1, o2 ); swap( d1, d2 ); }\n\n\t\tif( ! Geom.vertLeq( o2, d1 )) {\n\t\t\t/* Technically, no intersection -- do our best */\n\t\t\tv.s = (o2.s + d1.s) / 2;\n\t\t} else if( Geom.vertLeq( d1, d2 )) {\n\t\t\t/* Interpolate between o2 and d1 */\n\t\t\tz1 = Geom.edgeEval( o1, o2, d1 );\n\t\t\tz2 = Geom.edgeEval( o2, d1, d2 );\n\t\t\tif( z1+z2 < 0 ) { z1 = -z1; z2 = -z2; }\n\t\t\tv.s = Geom.interpolate( z1, o2.s, z2, d1.s );\n\t\t} else {\n\t\t\t/* Interpolate between o2 and d2 */\n\t\t\tz1 = Geom.edgeSign( o1, o2, d1 );\n\t\t\tz2 = -Geom.edgeSign( o1, d2, d1 );\n\t\t\tif( z1+z2 < 0 ) { z1 = -z1; z2 = -z2; }\n\t\t\tv.s = Geom.interpolate( z1, o2.s, z2, d2.s );\n\t\t}\n\n\t\t/* Now repeat the process for t */\n\n\t\tif( ! Geom.transLeq( o1, d1 )) { t = o1; o1 = d1; d1 = t; } //swap( o1, d1 ); }\n\t\tif( ! Geom.transLeq( o2, d2 )) { t = o2; o2 = d2; d2 = t; } //swap( o2, d2 ); }\n\t\tif( ! Geom.transLeq( o1, o2 )) { t = o1; o1 = o2; o2 = t; t = d1; d1 = d2; d2 = t; } //swap( o1, o2 ); swap( d1, d2 ); }\n\n\t\tif( ! Geom.transLeq( o2, d1 )) {\n\t\t\t/* Technically, no intersection -- do our best */\n\t\t\tv.t = (o2.t + d1.t) / 2;\n\t\t} else if( Geom.transLeq( d1, d2 )) {\n\t\t\t/* Interpolate between o2 and d1 */\n\t\t\tz1 = Geom.transEval( o1, o2, d1 );\n\t\t\tz2 = Geom.transEval( o2, d1, d2 );\n\t\t\tif( z1+z2 < 0 ) { z1 = -z1; z2 = -z2; }\n\t\t\tv.t = Geom.interpolate( z1, o2.t, z2, d1.t );\n\t\t} else {\n\t\t\t/* Interpolate between o2 and d2 */\n\t\t\tz1 = Geom.transSign( o1, o2, d1 );\n\t\t\tz2 = -Geom.transSign( o1, d2, d1 );\n\t\t\tif( z1+z2 < 0 ) { z1 = -z1; z2 = -z2; }\n\t\t\tv.t = Geom.interpolate( z1, o2.t, z2, d2.t );\n\t\t}\n\t};\n\n\n\n\tfunction DictNode() {\n\t\tthis.key = null;\n\t\tthis.next = null;\n\t\tthis.prev = null;\n\t};\n\n\tfunction Dict(frame, leq) {\n\t\tthis.head = new DictNode();\n\t\tthis.head.next = this.head;\n\t\tthis.head.prev = this.head;\n\t\tthis.frame = frame;\n\t\tthis.leq = leq;\n\t};\n\n\tDict.prototype = {\n\t\tmin: function() {\n\t\t\treturn this.head.next;\n\t\t},\n\n\t\tmax: function() {\n\t\t\treturn this.head.prev;\n\t\t},\n\n\t\tinsert: function(k) {\n\t\t\treturn this.insertBefore(this.head, k);\n\t\t},\n\n\t\tsearch: function(key) {\n\t\t\t/* Search returns the node with the smallest key greater than or equal\n\t\t\t* to the given key. If there is no such key, returns a node whose\n\t\t\t* key is NULL. Similarly, Succ(Max(d)) has a NULL key, etc.\n\t\t\t*/\n\t\t\tvar node = this.head;\n\t\t\tdo {\n\t\t\t\tnode = node.next;\n\t\t\t} while( node.key !== null && ! this.leq(this.frame, key, node.key));\n\n\t\t\treturn node;\n\t\t},\n\n\t\tinsertBefore: function(node, key) {\n\t\t\tdo {\n\t\t\t\tnode = node.prev;\n\t\t\t} while( node.key !== null && ! this.leq(this.frame, node.key, key));\n\n\t\t\tvar newNode = new DictNode();\n\t\t\tnewNode.key = key;\n\t\t\tnewNode.next = node.next;\n\t\t\tnode.next.prev = newNode;\n\t\t\tnewNode.prev = node;\n\t\t\tnode.next = newNode;\n\n\t\t\treturn newNode;\n\t\t},\n\n\t\tdelete: function(node) {\n\t\t\tnode.next.prev = node.prev;\n\t\t\tnode.prev.next = node.next;\n\t\t}\n\t};\n\n\n\tfunction PQnode() {\n\t\tthis.handle = null;\n\t}\n\n\tfunction PQhandleElem() {\n\t\tthis.key = null;\n\t\tthis.node = null;\n\t}\n\n\tfunction PriorityQ(size, leq) {\n\t\tthis.size = 0;\n\t\tthis.max = size;\n\n\t\tthis.nodes = [];\n\t\tthis.nodes.length = size+1;\n\t\tfor (var i = 0; i < this.nodes.length; i++)\n\t\t\tthis.nodes[i] = new PQnode();\n\n\t\tthis.handles = [];\n\t\tthis.handles.length = size+1;\n\t\tfor (var i = 0; i < this.handles.length; i++)\n\t\t\tthis.handles[i] = new PQhandleElem();\n\n\t\tthis.initialized = false;\n\t\tthis.freeList = 0;\n\t\tthis.leq = leq;\n\n\t\tthis.nodes[1].handle = 1;\t/* so that Minimum() returns NULL */\n\t\tthis.handles[1].key = null;\n\t};\n\n\tPriorityQ.prototype = {\n\n\t\tfloatDown_: function( curr )\n\t\t{\n\t\t\tvar n = this.nodes;\n\t\t\tvar h = this.handles;\n\t\t\tvar hCurr, hChild;\n\t\t\tvar child;\n\n\t\t\thCurr = n[curr].handle;\n\t\t\tfor( ;; ) {\n\t\t\t\tchild = curr << 1;\n\t\t\t\tif( child < this.size && this.leq( h[n[child+1].handle].key, h[n[child].handle].key )) {\n\t\t\t\t\t++child;\n\t\t\t\t}\n\n\t\t\t\tassert(child <= this.max);\n\n\t\t\t\thChild = n[child].handle;\n\t\t\t\tif( child > this.size || this.leq( h[hCurr].key, h[hChild].key )) {\n\t\t\t\t\tn[curr].handle = hCurr;\n\t\t\t\t\th[hCurr].node = curr;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tn[curr].handle = hChild;\n\t\t\t\th[hChild].node = curr;\n\t\t\t\tcurr = child;\n\t\t\t}\n\t\t},\n\n\t\tfloatUp_: function( curr )\n\t\t{\n\t\t\tvar n = this.nodes;\n\t\t\tvar h = this.handles;\n\t\t\tvar hCurr, hParent;\n\t\t\tvar parent;\n\n\t\t\thCurr = n[curr].handle;\n\t\t\tfor( ;; ) {\n\t\t\t\tparent = curr >> 1;\n\t\t\t\thParent = n[parent].handle;\n\t\t\t\tif( parent == 0 || this.leq( h[hParent].key, h[hCurr].key )) {\n\t\t\t\t\tn[curr].handle = hCurr;\n\t\t\t\t\th[hCurr].node = curr;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tn[curr].handle = hParent;\n\t\t\t\th[hParent].node = curr;\n\t\t\t\tcurr = parent;\n\t\t\t}\n\t\t},\n\n\t\tinit: function() {\n\t\t\t/* This method of building a heap is O(n), rather than O(n lg n). */\n\t\t\tfor( var i = this.size; i >= 1; --i ) {\n\t\t\t\tthis.floatDown_( i );\n\t\t\t}\n\t\t\tthis.initialized = true;\n\t\t},\n\n\t\tmin: function() {\n\t\t\treturn this.handles[this.nodes[1].handle].key;\n\t\t},\n\n\t\tisEmpty: function() {\n\t\t\tthis.size === 0;\n\t\t},\n\n\t\t/* really pqHeapInsert */\n\t\t/* returns INV_HANDLE iff out of memory */\n\t\t//PQhandle pqHeapInsert( TESSalloc* alloc, PriorityQHeap *pq, PQkey keyNew )\n\t\tinsert: function(keyNew)\n\t\t{\n\t\t\tvar curr;\n\t\t\tvar free;\n\n\t\t\tcurr = ++this.size;\n\t\t\tif( (curr*2) > this.max ) {\n\t\t\t\tthis.max *= 2;\n\t\t\t\tvar s;\n\t\t\t\ts = this.nodes.length;\n\t\t\t\tthis.nodes.length = this.max+1;\n\t\t\t\tfor (var i = s; i < this.nodes.length; i++)\n\t\t\t\t\tthis.nodes[i] = new PQnode();\n\n\t\t\t\ts = this.handles.length;\n\t\t\t\tthis.handles.length = this.max+1;\n\t\t\t\tfor (var i = s; i < this.handles.length; i++)\n\t\t\t\t\tthis.handles[i] = new PQhandleElem();\n\t\t\t}\n\n\t\t\tif( this.freeList === 0 ) {\n\t\t\t\tfree = curr;\n\t\t\t} else {\n\t\t\t\tfree = this.freeList;\n\t\t\t\tthis.freeList = this.handles[free].node;\n\t\t\t}\n\n\t\t\tthis.nodes[curr].handle = free;\n\t\t\tthis.handles[free].node = curr;\n\t\t\tthis.handles[free].key = keyNew;\n\n\t\t\tif( this.initialized ) {\n\t\t\t\tthis.floatUp_( curr );\n\t\t\t}\n\t\t\treturn free;\n\t\t},\n\n\t\t//PQkey pqHeapExtractMin( PriorityQHeap *pq )\n\t\textractMin: function() {\n\t\t\tvar n = this.nodes;\n\t\t\tvar h = this.handles;\n\t\t\tvar hMin = n[1].handle;\n\t\t\tvar min = h[hMin].key;\n\n\t\t\tif( this.size > 0 ) {\n\t\t\t\tn[1].handle = n[this.size].handle;\n\t\t\t\th[n[1].handle].node = 1;\n\n\t\t\t\th[hMin].key = null;\n\t\t\t\th[hMin].node = this.freeList;\n\t\t\t\tthis.freeList = hMin;\n\n\t\t\t\t--this.size;\n\t\t\t\tif( this.size > 0 ) {\n\t\t\t\t\tthis.floatDown_( 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn min;\n\t\t},\n\n\t\tdelete: function( hCurr ) {\n\t\t\tvar n = this.nodes;\n\t\t\tvar h = this.handles;\n\t\t\tvar curr;\n\n\t\t\tassert( hCurr >= 1 && hCurr <= this.max && h[hCurr].key !== null );\n\n\t\t\tcurr = h[hCurr].node;\n\t\t\tn[curr].handle = n[this.size].handle;\n\t\t\th[n[curr].handle].node = curr;\n\n\t\t\t--this.size;\n\t\t\tif( curr <= this.size ) {\n\t\t\t\tif( curr <= 1 || this.leq( h[n[curr>>1].handle].key, h[n[curr].handle].key )) {\n\t\t\t\t\tthis.floatDown_( curr );\n\t\t\t\t} else {\n\t\t\t\t\tthis.floatUp_( curr );\n\t\t\t\t}\n\t\t\t}\n\t\t\th[hCurr].key = null;\n\t\t\th[hCurr].node = this.freeList;\n\t\t\tthis.freeList = hCurr;\n\t\t}\n\t};\n\n\n\t/* For each pair of adjacent edges crossing the sweep line, there is\n\t* an ActiveRegion to represent the region between them. The active\n\t* regions are kept in sorted order in a dynamic dictionary. As the\n\t* sweep line crosses each vertex, we update the affected regions.\n\t*/\n\n\tfunction ActiveRegion() {\n\t\tthis.eUp = null;\t\t/* upper edge, directed right to left */\n\t\tthis.nodeUp = null;\t/* dictionary node corresponding to eUp */\n\t\tthis.windingNumber = 0;\t/* used to determine which regions are\n\t\t\t\t\t\t\t\t* inside the polygon */\n\t\tthis.inside = false;\t\t/* is this region inside the polygon? */\n\t\tthis.sentinel = false;\t/* marks fake edges at t = +/-infinity */\n\t\tthis.dirty = false;\t\t/* marks regions where the upper or lower\n\t\t\t\t\t\t* edge has changed, but we haven't checked\n\t\t\t\t\t\t* whether they intersect yet */\n\t\tthis.fixUpperEdge = false;\t/* marks temporary edges introduced when\n\t\t\t\t\t\t\t* we process a \"right vertex\" (one without\n\t\t\t\t\t\t\t* any edges leaving to the right) */\n\t};\n\n\tvar Sweep = {};\n\n\tSweep.regionBelow = function(r) {\n\t\treturn r.nodeUp.prev.key;\n\t}\n\n\tSweep.regionAbove = function(r) {\n\t\treturn r.nodeUp.next.key;\n\t}\n\n\tSweep.debugEvent = function( tess ) {\n\t\t// empty\n\t}\n\n\n\t/*\n\t* Invariants for the Edge Dictionary.\n\t* - each pair of adjacent edges e2=Succ(e1) satisfies EdgeLeq(e1,e2)\n\t* at any valid location of the sweep event\n\t* - if EdgeLeq(e2,e1) as well (at any valid sweep event), then e1 and e2\n\t* share a common endpoint\n\t* - for each e, e->Dst has been processed, but not e->Org\n\t* - each edge e satisfies VertLeq(e->Dst,event) && VertLeq(event,e->Org)\n\t* where \"event\" is the current sweep line event.\n\t* - no edge e has zero length\n\t*\n\t* Invariants for the Mesh (the processed portion).\n\t* - the portion of the mesh left of the sweep line is a planar graph,\n\t* ie. there is *some* way to embed it in the plane\n\t* - no processed edge has zero length\n\t* - no two processed vertices have identical coordinates\n\t* - each \"inside\" region is monotone, ie. can be broken into two chains\n\t* of monotonically increasing vertices according to VertLeq(v1,v2)\n\t* - a non-invariant: these chains may intersect (very slightly)\n\t*\n\t* Invariants for the Sweep.\n\t* - if none of the edges incident to the event vertex have an activeRegion\n\t* (ie. none of these edges are in the edge dictionary), then the vertex\n\t* has only right-going edges.\n\t* - if an edge is marked \"fixUpperEdge\" (it is a temporary edge introduced\n\t* by ConnectRightVertex), then it is the only right-going edge from\n\t* its associated vertex. (This says that these edges exist only\n\t* when it is necessary.)\n\t*/\n\n\t/* When we merge two edges into one, we need to compute the combined\n\t* winding of the new edge.\n\t*/\n\tSweep.addWinding = function(eDst,eSrc) {\n\t\teDst.winding += eSrc.winding;\n\t\teDst.Sym.winding += eSrc.Sym.winding;\n\t}\n\n\n\t//static int EdgeLeq( TESStesselator *tess, ActiveRegion *reg1, ActiveRegion *reg2 )\n\tSweep.edgeLeq = function( tess, reg1, reg2 ) {\n\t\t/*\n\t\t* Both edges must be directed from right to left (this is the canonical\n\t\t* direction for the upper edge of each region).\n\t\t*\n\t\t* The strategy is to evaluate a \"t\" value for each edge at the\n\t\t* current sweep line position, given by tess->event. The calculations\n\t\t* are designed to be very stable, but of course they are not perfect.\n\t\t*\n\t\t* Special case: if both edge destinations are at the sweep event,\n\t\t* we sort the edges by slope (they would otherwise compare equally).\n\t\t*/\n\t\tvar ev = tess.event;\n\t\tvar t1, t2;\n\n\t\tvar e1 = reg1.eUp;\n\t\tvar e2 = reg2.eUp;\n\n\t\tif( e1.Dst === ev ) {\n\t\t\tif( e2.Dst === ev ) {\n\t\t\t\t/* Two edges right of the sweep line which meet at the sweep event.\n\t\t\t\t* Sort them by slope.\n\t\t\t\t*/\n\t\t\t\tif( Geom.vertLeq( e1.Org, e2.Org )) {\n\t\t\t\t\treturn Geom.edgeSign( e2.Dst, e1.Org, e2.Org ) <= 0;\n\t\t\t\t}\n\t\t\t\treturn Geom.edgeSign( e1.Dst, e2.Org, e1.Org ) >= 0;\n\t\t\t}\n\t\t\treturn Geom.edgeSign( e2.Dst, ev, e2.Org ) <= 0;\n\t\t}\n\t\tif( e2.Dst === ev ) {\n\t\t\treturn Geom.edgeSign( e1.Dst, ev, e1.Org ) >= 0;\n\t\t}\n\n\t\t/* General case - compute signed distance *from* e1, e2 to event */\n\t\tvar t1 = Geom.edgeEval( e1.Dst, ev, e1.Org );\n\t\tvar t2 = Geom.edgeEval( e2.Dst, ev, e2.Org );\n\t\treturn (t1 >= t2);\n\t}\n\n\n\t//static void DeleteRegion( TESStesselator *tess, ActiveRegion *reg )\n\tSweep.deleteRegion = function( tess, reg ) {\n\t\tif( reg.fixUpperEdge ) {\n\t\t\t/* It was created with zero winding number, so it better be\n\t\t\t* deleted with zero winding number (ie. it better not get merged\n\t\t\t* with a real edge).\n\t\t\t*/\n\t\t\tassert( reg.eUp.winding === 0 );\n\t\t}\n\t\treg.eUp.activeRegion = null;\n\t\ttess.dict.delete( reg.nodeUp );\n\t}\n\n\t//static int FixUpperEdge( TESStesselator *tess, ActiveRegion *reg, TESShalfEdge *newEdge )\n\tSweep.fixUpperEdge = function( tess, reg, newEdge ) {\n\t\t/*\n\t\t* Replace an upper edge which needs fixing (see ConnectRightVertex).\n\t\t*/\n\t\tassert( reg.fixUpperEdge );\n\t\ttess.mesh.delete( reg.eUp );\n\t\treg.fixUpperEdge = false;\n\t\treg.eUp = newEdge;\n\t\tnewEdge.activeRegion = reg;\n\t}\n\n\t//static ActiveRegion *TopLeftRegion( TESStesselator *tess, ActiveRegion *reg )\n\tSweep.topLeftRegion = function( tess, reg ) {\n\t\tvar org = reg.eUp.Org;\n\t\tvar e;\n\n\t\t/* Find the region above the uppermost edge with the same origin */\n\t\tdo {\n\t\t\treg = Sweep.regionAbove( reg );\n\t\t} while( reg.eUp.Org === org );\n\n\t\t/* If the edge above was a temporary edge introduced by ConnectRightVertex,\n\t\t* now is the time to fix it.\n\t\t*/\n\t\tif( reg.fixUpperEdge ) {\n\t\t\te = tess.mesh.connect( Sweep.regionBelow(reg).eUp.Sym, reg.eUp.Lnext );\n\t\t\tif (e === null) return null;\n\t\t\tSweep.fixUpperEdge( tess, reg, e );\n\t\t\treg = Sweep.regionAbove( reg );\n\t\t}\n\t\treturn reg;\n\t}\n\n\t//static ActiveRegion *TopRightRegion( ActiveRegion *reg )\n\tSweep.topRightRegion = function( reg )\n\t{\n\t\tvar dst = reg.eUp.Dst;\n\t\tvar reg = null;\n\t\t/* Find the region above the uppermost edge with the same destination */\n\t\tdo {\n\t\t\treg = Sweep.regionAbove( reg );\n\t\t} while( reg.eUp.Dst === dst );\n\t\treturn reg;\n\t}\n\n\t//static ActiveRegion *AddRegionBelow( TESStesselator *tess, ActiveRegion *regAbove, TESShalfEdge *eNewUp )\n\tSweep.addRegionBelow = function( tess, regAbove, eNewUp ) {\n\t\t/*\n\t\t* Add a new active region to the sweep line, *somewhere* below \"regAbove\"\n\t\t* (according to where the new edge belongs in the sweep-line dictionary).\n\t\t* The upper edge of the new region will be \"eNewUp\".\n\t\t* Winding number and \"inside\" flag are not updated.\n\t\t*/\n\t\tvar regNew = new ActiveRegion();\n\t\tregNew.eUp = eNewUp;\n\t\tregNew.nodeUp = tess.dict.insertBefore( regAbove.nodeUp, regNew );\n\t//\tif (regNew->nodeUp == NULL) longjmp(tess->env,1);\n\t\tregNew.fixUpperEdge = false;\n\t\tregNew.sentinel = false;\n\t\tregNew.dirty = false;\n\n\t\teNewUp.activeRegion = regNew;\n\t\treturn regNew;\n\t}\n\n\t//static int IsWindingInside( TESStesselator *tess, int n )\n\tSweep.isWindingInside = function( tess, n ) {\n\t\tswitch( tess.windingRule ) {\n\t\t\tcase Tess2.WINDING_ODD:\n\t\t\t\treturn (n & 1) != 0;\n\t\t\tcase Tess2.WINDING_NONZERO:\n\t\t\t\treturn (n != 0);\n\t\t\tcase Tess2.WINDING_POSITIVE:\n\t\t\t\treturn (n > 0);\n\t\t\tcase Tess2.WINDING_NEGATIVE:\n\t\t\t\treturn (n < 0);\n\t\t\tcase Tess2.WINDING_ABS_GEQ_TWO:\n\t\t\t\treturn (n >= 2) || (n <= -2);\n\t\t}\n\t\tassert( false );\n\t\treturn false;\n\t}\n\n\t//static void ComputeWinding( TESStesselator *tess, ActiveRegion *reg )\n\tSweep.computeWinding = function( tess, reg ) {\n\t\treg.windingNumber = Sweep.regionAbove(reg).windingNumber + reg.eUp.winding;\n\t\treg.inside = Sweep.isWindingInside( tess, reg.windingNumber );\n\t}\n\n\n\t//static void FinishRegion( TESStesselator *tess, ActiveRegion *reg )\n\tSweep.finishRegion = function( tess, reg ) {\n\t\t/*\n\t\t* Delete a region from the sweep line. This happens when the upper\n\t\t* and lower chains of a region meet (at a vertex on the sweep line).\n\t\t* The \"inside\" flag is copied to the appropriate mesh face (we could\n\t\t* not do this before -- since the structure of the mesh is always\n\t\t* changing, this face may not have even existed until now).\n\t\t*/\n\t\tvar e = reg.eUp;\n\t\tvar f = e.Lface;\n\n\t\tf.inside = reg.inside;\n\t\tf.anEdge = e; /* optimization for tessMeshTessellateMonoRegion() */\n\t\tSweep.deleteRegion( tess, reg );\n\t}\n\n\n\t//static TESShalfEdge *FinishLeftRegions( TESStesselator *tess, ActiveRegion *regFirst, ActiveRegion *regLast )\n\tSweep.finishLeftRegions = function( tess, regFirst, regLast ) {\n\t\t/*\n\t\t* We are given a vertex with one or more left-going edges. All affected\n\t\t* edges should be in the edge dictionary. Starting at regFirst->eUp,\n\t\t* we walk down deleting all regions where both edges have the same\n\t\t* origin vOrg. At the same time we copy the \"inside\" flag from the\n\t\t* active region to the face, since at this point each face will belong\n\t\t* to at most one region (this was not necessarily true until this point\n\t\t* in the sweep). The walk stops at the region above regLast; if regLast\n\t\t* is NULL we walk as far as possible. At the same time we relink the\n\t\t* mesh if necessary, so that the ordering of edges around vOrg is the\n\t\t* same as in the dictionary.\n\t\t*/\n\t\tvar e, ePrev;\n\t\tvar reg = null;\n\t\tvar regPrev = regFirst;\n\t\tvar ePrev = regFirst.eUp;\n\t\twhile( regPrev !== regLast ) {\n\t\t\tregPrev.fixUpperEdge = false;\t/* placement was OK */\n\t\t\treg = Sweep.regionBelow( regPrev );\n\t\t\te = reg.eUp;\n\t\t\tif( e.Org != ePrev.Org ) {\n\t\t\t\tif( ! reg.fixUpperEdge ) {\n\t\t\t\t\t/* Remove the last left-going edge. Even though there are no further\n\t\t\t\t\t* edges in the dictionary with this origin, there may be further\n\t\t\t\t\t* such edges in the mesh (if we are adding left edges to a vertex\n\t\t\t\t\t* that has already been processed). Thus it is important to call\n\t\t\t\t\t* FinishRegion rather than just DeleteRegion.\n\t\t\t\t\t*/\n\t\t\t\t\tSweep.finishRegion( tess, regPrev );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t/* If the edge below was a temporary edge introduced by\n\t\t\t\t* ConnectRightVertex, now is the time to fix it.\n\t\t\t\t*/\n\t\t\t\te = tess.mesh.connect( ePrev.Lprev, e.Sym );\n\t//\t\t\tif (e == NULL) longjmp(tess->env,1);\n\t\t\t\tSweep.fixUpperEdge( tess, reg, e );\n\t\t\t}\n\n\t\t\t/* Relink edges so that ePrev->Onext == e */\n\t\t\tif( ePrev.Onext !== e ) {\n\t\t\t\ttess.mesh.splice( e.Oprev, e );\n\t\t\t\ttess.mesh.splice( ePrev, e );\n\t\t\t}\n\t\t\tSweep.finishRegion( tess, regPrev );\t/* may change reg->eUp */\n\t\t\tePrev = reg.eUp;\n\t\t\tregPrev = reg;\n\t\t}\n\t\treturn ePrev;\n\t}\n\n\n\t//static void AddRightEdges( TESStesselator *tess, ActiveRegion *regUp, TESShalfEdge *eFirst, TESShalfEdge *eLast, TESShalfEdge *eTopLeft, int cleanUp )\n\tSweep.addRightEdges = function( tess, regUp, eFirst, eLast, eTopLeft, cleanUp ) {\n\t\t/*\n\t\t* Purpose: insert right-going edges into the edge dictionary, and update\n\t\t* winding numbers and mesh connectivity appropriately. All right-going\n\t\t* edges share a common origin vOrg. Edges are inserted CCW starting at\n\t\t* eFirst; the last edge inserted is eLast->Oprev. If vOrg has any\n\t\t* left-going edges already processed, then eTopLeft must be the edge\n\t\t* such that an imaginary upward vertical segment from vOrg would be\n\t\t* contained between eTopLeft->Oprev and eTopLeft; otherwise eTopLeft\n\t\t* should be NULL.\n\t\t*/\n\t\tvar reg, regPrev;\n\t\tvar e, ePrev;\n\t\tvar firstTime = true;\n\n\t\t/* Insert the new right-going edges in the dictionary */\n\t\te = eFirst;\n\t\tdo {\n\t\t\tassert( Geom.vertLeq( e.Org, e.Dst ));\n\t\t\tSweep.addRegionBelow( tess, regUp, e.Sym );\n\t\t\te = e.Onext;\n\t\t} while ( e !== eLast );\n\n\t\t/* Walk *all* right-going edges from e->Org, in the dictionary order,\n\t\t* updating the winding numbers of each region, and re-linking the mesh\n\t\t* edges to match the dictionary ordering (if necessary).\n\t\t*/\n\t\tif( eTopLeft === null ) {\n\t\t\teTopLeft = Sweep.regionBelow( regUp ).eUp.Rprev;\n\t\t}\n\t\tregPrev = regUp;\n\t\tePrev = eTopLeft;\n\t\tfor( ;; ) {\n\t\t\treg = Sweep.regionBelow( regPrev );\n\t\t\te = reg.eUp.Sym;\n\t\t\tif( e.Org !== ePrev.Org ) break;\n\n\t\t\tif( e.Onext !== ePrev ) {\n\t\t\t\t/* Unlink e from its current position, and relink below ePrev */\n\t\t\t\ttess.mesh.splice( e.Oprev, e );\n\t\t\t\ttess.mesh.splice( ePrev.Oprev, e );\n\t\t\t}\n\t\t\t/* Compute the winding number and \"inside\" flag for the new regions */\n\t\t\treg.windingNumber = regPrev.windingNumber - e.winding;\n\t\t\treg.inside = Sweep.isWindingInside( tess, reg.windingNumber );\n\n\t\t\t/* Check for two outgoing edges with same slope -- process these\n\t\t\t* before any intersection tests (see example in tessComputeInterior).\n\t\t\t*/\n\t\t\tregPrev.dirty = true;\n\t\t\tif( ! firstTime && Sweep.checkForRightSplice( tess, regPrev )) {\n\t\t\t\tSweep.addWinding( e, ePrev );\n\t\t\t\tSweep.deleteRegion( tess, regPrev );\n\t\t\t\ttess.mesh.delete( ePrev );\n\t\t\t}\n\t\t\tfirstTime = false;\n\t\t\tregPrev = reg;\n\t\t\tePrev = e;\n\t\t}\n\t\tregPrev.dirty = true;\n\t\tassert( regPrev.windingNumber - e.winding === reg.windingNumber );\n\n\t\tif( cleanUp ) {\n\t\t\t/* Check for intersections between newly adjacent edges. */\n\t\t\tSweep.walkDirtyRegions( tess, regPrev );\n\t\t}\n\t}\n\n\n\t//static void SpliceMergeVertices( TESStesselator *tess, TESShalfEdge *e1, TESShalfEdge *e2 )\n\tSweep.spliceMergeVertices = function( tess, e1, e2 ) {\n\t\t/*\n\t\t* Two vertices with idential coordinates are combined into one.\n\t\t* e1->Org is kept, while e2->Org is discarded.\n\t\t*/\n\t\ttess.mesh.splice( e1, e2 ); \n\t}\n\n\t//static void VertexWeights( TESSvertex *isect, TESSvertex *org, TESSvertex *dst, TESSreal *weights )\n\tSweep.vertexWeights = function( isect, org, dst ) {\n\t\t/*\n\t\t* Find some weights which describe how the intersection vertex is\n\t\t* a linear combination of \"org\" and \"dest\". Each of the two edges\n\t\t* which generated \"isect\" is allocated 50% of the weight; each edge\n\t\t* splits the weight between its org and dst according to the\n\t\t* relative distance to \"isect\".\n\t\t*/\n\t\tvar t1 = Geom.vertL1dist( org, isect );\n\t\tvar t2 = Geom.vertL1dist( dst, isect );\n\t\tvar w0 = 0.5 * t2 / (t1 + t2);\n\t\tvar w1 = 0.5 * t1 / (t1 + t2);\n\t\tisect.coords[0] += w0*org.coords[0] + w1*dst.coords[0];\n\t\tisect.coords[1] += w0*org.coords[1] + w1*dst.coords[1];\n\t\tisect.coords[2] += w0*org.coords[2] + w1*dst.coords[2];\n\t}\n\n\n\t//static void GetIntersectData( TESStesselator *tess, TESSvertex *isect, TESSvertex *orgUp, TESSvertex *dstUp, TESSvertex *orgLo, TESSvertex *dstLo )\n\tSweep.getIntersectData = function( tess, isect, orgUp, dstUp, orgLo, dstLo ) {\n\t\t /*\n\t\t * We've computed a new intersection point, now we need a \"data\" pointer\n\t\t * from the user so that we can refer to this new vertex in the\n\t\t * rendering callbacks.\n\t\t */\n\t\tisect.coords[0] = isect.coords[1] = isect.coords[2] = 0;\n\t\tisect.idx = -1;\n\t\tSweep.vertexWeights( isect, orgUp, dstUp );\n\t\tSweep.vertexWeights( isect, orgLo, dstLo );\n\t}\n\n\t//static int CheckForRightSplice( TESStesselator *tess, ActiveRegion *regUp )\n\tSweep.checkForRightSplice = function( tess, regUp ) {\n\t\t/*\n\t\t* Check the upper and lower edge of \"regUp\", to make sure that the\n\t\t* eUp->Org is above eLo, or eLo->Org is below eUp (depending on which\n\t\t* origin is leftmost).\n\t\t*\n\t\t* The main purpose is to splice right-going edges with the same\n\t\t* dest vertex and nearly identical slopes (ie. we can't distinguish\n\t\t* the slopes numerically). However the splicing can also help us\n\t\t* to recover from numerical errors. For example, suppose at one\n\t\t* point we checked eUp and eLo, and decided that eUp->Org is barely\n\t\t* above eLo. Then later, we split eLo into two edges (eg. from\n\t\t* a splice operation like this one). This can change the result of\n\t\t* our test so that now eUp->Org is incident to eLo, or barely below it.\n\t\t* We must correct this condition to maintain the dictionary invariants.\n\t\t*\n\t\t* One possibility is to check these edges for intersection again\n\t\t* (ie. CheckForIntersect). This is what we do if possible. However\n\t\t* CheckForIntersect requires that tess->event lies between eUp and eLo,\n\t\t* so that it has something to fall back on when the intersection\n\t\t* calculation gives us an unusable answer. So, for those cases where\n\t\t* we can't check for intersection, this routine fixes the problem\n\t\t* by just splicing the offending vertex into the other edge.\n\t\t* This is a guaranteed solution, no matter how degenerate things get.\n\t\t* Basically this is a combinatorial solution to a numerical problem.\n\t\t*/\n\t\tvar regLo = Sweep.regionBelow(regUp);\n\t\tvar eUp = regUp.eUp;\n\t\tvar eLo = regLo.eUp;\n\n\t\tif( Geom.vertLeq( eUp.Org, eLo.Org )) {\n\t\t\tif( Geom.edgeSign( eLo.Dst, eUp.Org, eLo.Org ) > 0 ) return false;\n\n\t\t\t/* eUp->Org appears to be below eLo */\n\t\t\tif( ! Geom.vertEq( eUp.Org, eLo.Org )) {\n\t\t\t\t/* Splice eUp->Org into eLo */\n\t\t\t\ttess.mesh.splitEdge( eLo.Sym );\n\t\t\t\ttess.mesh.splice( eUp, eLo.Oprev );\n\t\t\t\tregUp.dirty = regLo.dirty = true;\n\n\t\t\t} else if( eUp.Org !== eLo.Org ) {\n\t\t\t\t/* merge the two vertices, discarding eUp->Org */\n\t\t\t\ttess.pq.delete( eUp.Org.pqHandle );\n\t\t\t\tSweep.spliceMergeVertices( tess, eLo.Oprev, eUp );\n\t\t\t}\n\t\t} else {\n\t\t\tif( Geom.edgeSign( eUp.Dst, eLo.Org, eUp.Org ) < 0 ) return false;\n\n\t\t\t/* eLo->Org appears to be above eUp, so splice eLo->Org into eUp */\n\t\t\tSweep.regionAbove(regUp).dirty = regUp.dirty = true;\n\t\t\ttess.mesh.splitEdge( eUp.Sym );\n\t\t\ttess.mesh.splice( eLo.Oprev, eUp );\n\t\t}\n\t\treturn true;\n\t}\n\n\t//static int CheckForLeftSplice( TESStesselator *tess, ActiveRegion *regUp )\n\tSweep.checkForLeftSplice = function( tess, regUp ) {\n\t\t/*\n\t\t* Check the upper and lower edge of \"regUp\", to make sure that the\n\t\t* eUp->Dst is above eLo, or eLo->Dst is below eUp (depending on which\n\t\t* destination is rightmost).\n\t\t*\n\t\t* Theoretically, this should always be true. However, splitting an edge\n\t\t* into two pieces can change the results of previous tests. For example,\n\t\t* suppose at one point we checked eUp and eLo, and decided that eUp->Dst\n\t\t* is barely above eLo. Then later, we split eLo into two edges (eg. from\n\t\t* a splice operation like this one). This can change the result of\n\t\t* the test so that now eUp->Dst is incident to eLo, or barely below it.\n\t\t* We must correct this condition to maintain the dictionary invariants\n\t\t* (otherwise new edges might get inserted in the wrong place in the\n\t\t* dictionary, and bad stuff will happen).\n\t\t*\n\t\t* We fix the problem by just splicing the offending vertex into the\n\t\t* other edge.\n\t\t*/\n\t\tvar regLo = Sweep.regionBelow(regUp);\n\t\tvar eUp = regUp.eUp;\n\t\tvar eLo = regLo.eUp;\n\t\tvar e;\n\n\t\tassert( ! Geom.vertEq( eUp.Dst, eLo.Dst ));\n\n\t\tif( Geom.vertLeq( eUp.Dst, eLo.Dst )) {\n\t\t\tif( Geom.edgeSign( eUp.Dst, eLo.Dst, eUp.Org ) < 0 ) return false;\n\n\t\t\t/* eLo->Dst is above eUp, so splice eLo->Dst into eUp */\n\t\t\tSweep.regionAbove(regUp).dirty = regUp.dirty = true;\n\t\t\te = tess.mesh.splitEdge( eUp );\n\t\t\ttess.mesh.splice( eLo.Sym, e );\n\t\t\te.Lface.inside = regUp.inside;\n\t\t} else {\n\t\t\tif( Geom.edgeSign( eLo.Dst, eUp.Dst, eLo.Org ) > 0 ) return false;\n\n\t\t\t/* eUp->Dst is below eLo, so splice eUp->Dst into eLo */\n\t\t\tregUp.dirty = regLo.dirty = true;\n\t\t\te = tess.mesh.splitEdge( eLo );\n\t\t\ttess.mesh.splice( eUp.Lnext, eLo.Sym );\n\t\t\te.Rface.inside = regUp.inside;\n\t\t}\n\t\treturn true;\n\t}\n\n\n\t//static int CheckForIntersect( TESStesselator *tess, ActiveRegion *regUp )\n\tSweep.checkForIntersect = function( tess, regUp ) {\n\t\t/*\n\t\t* Check the upper and lower edges of the given region to see if\n\t\t* they intersect. If so, create the intersection and add it\n\t\t* to the data structures.\n\t\t*\n\t\t* Returns TRUE if adding the new intersection resulted in a recursive\n\t\t* call to AddRightEdges(); in this case all \"dirty\" regions have been\n\t\t* checked for intersections, and possibly regUp has been deleted.\n\t\t*/\n\t\tvar regLo = Sweep.regionBelow(regUp);\n\t\tvar eUp = regUp.eUp;\n\t\tvar eLo = regLo.eUp;\n\t\tvar orgUp = eUp.Org;\n\t\tvar orgLo = eLo.Org;\n\t\tvar dstUp = eUp.Dst;\n\t\tvar dstLo = eLo.Dst;\n\t\tvar tMinUp, tMaxLo;\n\t\tvar isect = new TESSvertex, orgMin;\n\t\tvar e;\n\n\t\tassert( ! Geom.vertEq( dstLo, dstUp ));\n\t\tassert( Geom.edgeSign( dstUp, tess.event, orgUp ) <= 0 );\n\t\tassert( Geom.edgeSign( dstLo, tess.event, orgLo ) >= 0 );\n\t\tassert( orgUp !== tess.event && orgLo !== tess.event );\n\t\tassert( ! regUp.fixUpperEdge && ! regLo.fixUpperEdge );\n\n\t\tif( orgUp === orgLo ) return false;\t/* right endpoints are the same */\n\n\t\ttMinUp = Math.min( orgUp.t, dstUp.t );\n\t\ttMaxLo = Math.max( orgLo.t, dstLo.t );\n\t\tif( tMinUp > tMaxLo ) return false;\t/* t ranges do not overlap */\n\n\t\tif( Geom.vertLeq( orgUp, orgLo )) {\n\t\t\tif( Geom.edgeSign( dstLo, orgUp, orgLo ) > 0 ) return false;\n\t\t} else {\n\t\t\tif( Geom.edgeSign( dstUp, orgLo, orgUp ) < 0 ) return false;\n\t\t}\n\n\t\t/* At this point the edges intersect, at least marginally */\n\t\tSweep.debugEvent( tess );\n\n\t\tGeom.intersect( dstUp, orgUp, dstLo, orgLo, isect );\n\t\t/* The following properties are guaranteed: */\n\t\tassert( Math.min( orgUp.t, dstUp.t ) <= isect.t );\n\t\tassert( isect.t <= Math.max( orgLo.t, dstLo.t ));\n\t\tassert( Math.min( dstLo.s, dstUp.s ) <= isect.s );\n\t\tassert( isect.s <= Math.max( orgLo.s, orgUp.s ));\n\n\t\tif( Geom.vertLeq( isect, tess.event )) {\n\t\t\t/* The intersection point lies slightly to the left of the sweep line,\n\t\t\t* so move it until it''s slightly to the right of the sweep line.\n\t\t\t* (If we had perfect numerical precision, this would never happen\n\t\t\t* in the first place). The easiest and safest thing to do is\n\t\t\t* replace the intersection by tess->event.\n\t\t\t*/\n\t\t\tisect.s = tess.event.s;\n\t\t\tisect.t = tess.event.t;\n\t\t}\n\t\t/* Similarly, if the computed intersection lies to the right of the\n\t\t* rightmost origin (which should rarely happen), it can cause\n\t\t* unbelievable inefficiency on sufficiently degenerate inputs.\n\t\t* (If you have the test program, try running test54.d with the\n\t\t* \"X zoom\" option turned on).\n\t\t*/\n\t\torgMin = Geom.vertLeq( orgUp, orgLo ) ? orgUp : orgLo;\n\t\tif( Geom.vertLeq( orgMin, isect )) {\n\t\t\tisect.s = orgMin.s;\n\t\t\tisect.t = orgMin.t;\n\t\t}\n\n\t\tif( Geom.vertEq( isect, orgUp ) || Geom.vertEq( isect, orgLo )) {\n\t\t\t/* Easy case -- intersection at one of the right endpoints */\n\t\t\tSweep.checkForRightSplice( tess, regUp );\n\t\t\treturn false;\n\t\t}\n\n\t\tif( (! Geom.vertEq( dstUp, tess.event )\n\t\t\t&& Geom.edgeSign( dstUp, tess.event, isect ) >= 0)\n\t\t\t|| (! Geom.vertEq( dstLo, tess.event )\n\t\t\t&& Geom.edgeSign( dstLo, tess.event, isect ) <= 0 ))\n\t\t{\n\t\t\t/* Very unusual -- the new upper or lower edge would pass on the\n\t\t\t* wrong side of the sweep event, or through it. This can happen\n\t\t\t* due to very small numerical errors in the intersection calculation.\n\t\t\t*/\n\t\t\tif( dstLo === tess.event ) {\n\t\t\t\t/* Splice dstLo into eUp, and process the new region(s) */\n\t\t\t\ttess.mesh.splitEdge( eUp.Sym );\n\t\t\t\ttess.mesh.splice( eLo.Sym, eUp );\n\t\t\t\tregUp = Sweep.topLeftRegion( tess, regUp );\n\t//\t\t\tif (regUp == NULL) longjmp(tess->env,1);\n\t\t\t\teUp = Sweep.regionBelow(regUp).eUp;\n\t\t\t\tSweep.finishLeftRegions( tess, Sweep.regionBelow(regUp), regLo );\n\t\t\t\tSweep.addRightEdges( tess, regUp, eUp.Oprev, eUp, eUp, true );\n\t\t\t\treturn TRUE;\n\t\t\t}\n\t\t\tif( dstUp === tess.event ) {\n\t\t\t\t/* Splice dstUp into eLo, and process the new region(s) */\n\t\t\t\ttess.mesh.splitEdge( eLo.Sym );\n\t\t\t\ttess.mesh.splice( eUp.Lnext, eLo.Oprev ); \n\t\t\t\tregLo = regUp;\n\t\t\t\tregUp = Sweep.topRightRegion( regUp );\n\t\t\t\te = Sweep.regionBelow(regUp).eUp.Rprev;\n\t\t\t\tregLo.eUp = eLo.Oprev;\n\t\t\t\teLo = Sweep.finishLeftRegions( tess, regLo, null );\n\t\t\t\tSweep.addRightEdges( tess, regUp, eLo.Onext, eUp.Rprev, e, true );\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t/* Special case: called from ConnectRightVertex. If either\n\t\t\t* edge passes on the wrong side of tess->event, split it\n\t\t\t* (and wait for ConnectRightVertex to splice it appropriately).\n\t\t\t*/\n\t\t\tif( Geom.edgeSign( dstUp, tess.event, isect ) >= 0 ) {\n\t\t\t\tSweep.regionAbove(regUp).dirty = regUp.dirty = true;\n\t\t\t\ttess.mesh.splitEdge( eUp.Sym );\n\t\t\t\teUp.Org.s = tess.event.s;\n\t\t\t\teUp.Org.t = tess.event.t;\n\t\t\t}\n\t\t\tif( Geom.edgeSign( dstLo, tess.event, isect ) <= 0 ) {\n\t\t\t\tregUp.dirty = regLo.dirty = true;\n\t\t\t\ttess.mesh.splitEdge( eLo.Sym );\n\t\t\t\teLo.Org.s = tess.event.s;\n\t\t\t\teLo.Org.t = tess.event.t;\n\t\t\t}\n\t\t\t/* leave the rest for ConnectRightVertex */\n\t\t\treturn false;\n\t\t}\n\n\t\t/* General case -- split both edges, splice into new vertex.\n\t\t* When we do the splice operation, the order of the arguments is\n\t\t* arbitrary as far as correctness goes. However, when the operation\n\t\t* creates a new face, the work done is proportional to the size of\n\t\t* the new face. We expect the faces in the processed part of\n\t\t* the mesh (ie. eUp->Lface) to be smaller than the faces in the\n\t\t* unprocessed original contours (which will be eLo->Oprev->Lface).\n\t\t*/\n\t\ttess.mesh.splitEdge( eUp.Sym );\n\t\ttess.mesh.splitEdge( eLo.Sym );\n\t\ttess.mesh.splice( eLo.Oprev, eUp );\n\t\teUp.Org.s = isect.s;\n\t\teUp.Org.t = isect.t;\n\t\teUp.Org.pqHandle = tess.pq.insert( eUp.Org );\n\t\tSweep.getIntersectData( tess, eUp.Org, orgUp, dstUp, orgLo, dstLo );\n\t\tSweep.regionAbove(regUp).dirty = regUp.dirty = regLo.dirty = true;\n\t\treturn false;\n\t}\n\n\t//static void WalkDirtyRegions( TESStesselator *tess, ActiveRegion *regUp )\n\tSweep.walkDirtyRegions = function( tess, regUp ) {\n\t\t/*\n\t\t* When the upper or lower edge of any region changes, the region is\n\t\t* marked \"dirty\". This routine walks through all the dirty regions\n\t\t* and makes sure that the dictionary invariants are satisfied\n\t\t* (see the comments at the beginning of this file). Of course\n\t\t* new dirty regions can be created as we make changes to restore\n\t\t* the invariants.\n\t\t*/\n\t\tvar regLo = Sweep.regionBelow(regUp);\n\t\tvar eUp, eLo;\n\n\t\tfor( ;; ) {\n\t\t\t/* Find the lowest dirty region (we walk from the bottom up). */\n\t\t\twhile( regLo.dirty ) {\n\t\t\t\tregUp = regLo;\n\t\t\t\tregLo = Sweep.regionBelow(regLo);\n\t\t\t}\n\t\t\tif( ! regUp.dirty ) {\n\t\t\t\tregLo = regUp;\n\t\t\t\tregUp = Sweep.regionAbove( regUp );\n\t\t\t\tif( regUp == null || ! regUp.dirty ) {\n\t\t\t\t\t/* We've walked all the dirty regions */\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tregUp.dirty = false;\n\t\t\teUp = regUp.eUp;\n\t\t\teLo = regLo.eUp;\n\n\t\t\tif( eUp.Dst !== eLo.Dst ) {\n\t\t\t\t/* Check that the edge ordering is obeyed at the Dst vertices. */\n\t\t\t\tif( Sweep.checkForLeftSplice( tess, regUp )) {\n\n\t\t\t\t\t/* If the upper or lower edge was marked fixUpperEdge, then\n\t\t\t\t\t* we no longer need it (since these edges are needed only for\n\t\t\t\t\t* vertices which otherwise have no right-going edges).\n\t\t\t\t\t*/\n\t\t\t\t\tif( regLo.fixUpperEdge ) {\n\t\t\t\t\t\tSweep.deleteRegion( tess, regLo );\n\t\t\t\t\t\ttess.mesh.delete( eLo );\n\t\t\t\t\t\tregLo = Sweep.regionBelow( regUp );\n\t\t\t\t\t\teLo = regLo.eUp;\n\t\t\t\t\t} else if( regUp.fixUpperEdge ) {\n\t\t\t\t\t\tSweep.deleteRegion( tess, regUp );\n\t\t\t\t\t\ttess.mesh.delete( eUp );\n\t\t\t\t\t\tregUp = Sweep.regionAbove( regLo );\n\t\t\t\t\t\teUp = regUp.eUp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif( eUp.Org !== eLo.Org ) {\n\t\t\t\tif( eUp.Dst !== eLo.Dst\n\t\t\t\t\t&& ! regUp.fixUpperEdge && ! regLo.fixUpperEdge\n\t\t\t\t\t&& (eUp.Dst === tess.event || eLo.Dst === tess.event) )\n\t\t\t\t{\n\t\t\t\t\t/* When all else fails in CheckForIntersect(), it uses tess->event\n\t\t\t\t\t* as the intersection location. To make this possible, it requires\n\t\t\t\t\t* that tess->event lie between the upper and lower edges, and also\n\t\t\t\t\t* that neither of these is marked fixUpperEdge (since in the worst\n\t\t\t\t\t* case it might splice one of these edges into tess->event, and\n\t\t\t\t\t* violate the invariant that fixable edges are the only right-going\n\t\t\t\t\t* edge from their associated vertex).\n\t\t\t\t\t*/\n\t\t\t\t\tif( Sweep.checkForIntersect( tess, regUp )) {\n\t\t\t\t\t\t/* WalkDirtyRegions() was called recursively; we're done */\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t/* Even though we can't use CheckForIntersect(), the Org vertices\n\t\t\t\t\t* may violate the dictionary edge ordering. Check and correct this.\n\t\t\t\t\t*/\n\t\t\t\t\tSweep.checkForRightSplice( tess, regUp );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif( eUp.Org === eLo.Org && eUp.Dst === eLo.Dst ) {\n\t\t\t\t/* A degenerate loop consisting of only two edges -- delete it. */\n\t\t\t\tSweep.addWinding( eLo, eUp );\n\t\t\t\tSweep.deleteRegion( tess, regUp );\n\t\t\t\ttess.mesh.delete( eUp );\n\t\t\t\tregUp = Sweep.regionAbove( regLo );\n\t\t\t}\n\t\t}\n\t}\n\n\n\t//static void ConnectRightVertex( TESStesselator *tess, ActiveRegion *regUp, TESShalfEdge *eBottomLeft )\n\tSweep.connectRightVertex = function( tess, regUp, eBottomLeft ) {\n\t\t/*\n\t\t* Purpose: connect a \"right\" vertex vEvent (one where all edges go left)\n\t\t* to the unprocessed portion of the mesh. Since there are no right-going\n\t\t* edges, two regions (one above vEvent and one below) are being merged\n\t\t* into one. \"regUp\" is the upper of these two regions.\n\t\t*\n\t\t* There are two reasons for doing this (adding a right-going edge):\n\t\t* - if the two regions being merged are \"inside\", we must add an edge\n\t\t* to keep them separated (the combined region would not be monotone).\n\t\t* - in any case, we must leave some record of vEvent in the dictionary,\n\t\t* so that we can merge vEvent with features that we have not seen yet.\n\t\t* For example, maybe there is a vertical edge which passes just to\n\t\t* the right of vEvent; we would like to splice vEvent into this edge.\n\t\t*\n\t\t* However, we don't want to connect vEvent to just any vertex. We don''t\n\t\t* want the new edge to cross any other edges; otherwise we will create\n\t\t* intersection vertices even when the input data had no self-intersections.\n\t\t* (This is a bad thing; if the user's input data has no intersections,\n\t\t* we don't want to generate any false intersections ourselves.)\n\t\t*\n\t\t* Our eventual goal is to connect vEvent to the leftmost unprocessed\n\t\t* vertex of the combined region (the union of regUp and regLo).\n\t\t* But because of unseen vertices with all right-going edges, and also\n\t\t* new vertices which may be created by edge intersections, we don''t\n\t\t* know where that leftmost unprocessed vertex is. In the meantime, we\n\t\t* connect vEvent to the closest vertex of either chain, and mark the region\n\t\t* as \"fixUpperEdge\". This flag says to delete and reconnect this edge\n\t\t* to the next processed vertex on the boundary of the combined region.\n\t\t* Quite possibly the vertex we connected to will turn out to be the\n\t\t* closest one, in which case we won''t need to make any changes.\n\t\t*/\n\t\tvar eNew;\n\t\tvar eTopLeft = eBottomLeft.Onext;\n\t\tvar regLo = Sweep.regionBelow(regUp);\n\t\tvar eUp = regUp.eUp;\n\t\tvar eLo = regLo.eUp;\n\t\tvar degenerate = false;\n\n\t\tif( eUp.Dst !== eLo.Dst ) {\n\t\t\tSweep.checkForIntersect( tess, regUp );\n\t\t}\n\n\t\t/* Possible new degeneracies: upper or lower edge of regUp may pass\n\t\t* through vEvent, or may coincide with new intersection vertex\n\t\t*/\n\t\tif( Geom.vertEq( eUp.Org, tess.event )) {\n\t\t\ttess.mesh.splice( eTopLeft.Oprev, eUp );\n\t\t\tregUp = Sweep.topLeftRegion( tess, regUp );\n\t\t\teTopLeft = Sweep.regionBelow( regUp ).eUp;\n\t\t\tSweep.finishLeftRegions( tess, Sweep.regionBelow(regUp), regLo );\n\t\t\tdegenerate = true;\n\t\t}\n\t\tif( Geom.vertEq( eLo.Org, tess.event )) {\n\t\t\ttess.mesh.splice( eBottomLeft, eLo.Oprev );\n\t\t\teBottomLeft = Sweep.finishLeftRegions( tess, regLo, null );\n\t\t\tdegenerate = true;\n\t\t}\n\t\tif( degenerate ) {\n\t\t\tSweep.addRightEdges( tess, regUp, eBottomLeft.Onext, eTopLeft, eTopLeft, true );\n\t\t\treturn;\n\t\t}\n\n\t\t/* Non-degenerate situation -- need to add a temporary, fixable edge.\n\t\t* Connect to the closer of eLo->Org, eUp->Org.\n\t\t*/\n\t\tif( Geom.vertLeq( eLo.Org, eUp.Org )) {\n\t\t\teNew = eLo.Oprev;\n\t\t} else {\n\t\t\teNew = eUp;\n\t\t}\n\t\teNew = tess.mesh.connect( eBottomLeft.Lprev, eNew );\n\n\t\t/* Prevent cleanup, otherwise eNew might disappear before we've even\n\t\t* had a chance to mark it as a temporary edge.\n\t\t*/\n\t\tSweep.addRightEdges( tess, regUp, eNew, eNew.Onext, eNew.Onext, false );\n\t\teNew.Sym.activeRegion.fixUpperEdge = true;\n\t\tSweep.walkDirtyRegions( tess, regUp );\n\t}\n\n\t/* Because vertices at exactly the same location are merged together\n\t* before we process the sweep event, some degenerate cases can't occur.\n\t* However if someone eventually makes the modifications required to\n\t* merge features which are close together, the cases below marked\n\t* TOLERANCE_NONZERO will be useful. They were debugged before the\n\t* code to merge identical vertices in the main loop was added.\n\t*/\n\t//#define TOLERANCE_NONZERO\tFALSE\n\n\t//static void ConnectLeftDegenerate( TESStesselator *tess, ActiveRegion *regUp, TESSvertex *vEvent )\n\tSweep.connectLeftDegenerate = function( tess, regUp, vEvent ) {\n\t\t/*\n\t\t* The event vertex lies exacty on an already-processed edge or vertex.\n\t\t* Adding the new vertex involves splicing it into the already-processed\n\t\t* part of the mesh.\n\t\t*/\n\t\tvar e, eTopLeft, eTopRight, eLast;\n\t\tvar reg;\n\n\t\te = regUp.eUp;\n\t\tif( Geom.vertEq( e.Org, vEvent )) {\n\t\t\t/* e->Org is an unprocessed vertex - just combine them, and wait\n\t\t\t* for e->Org to be pulled from the queue\n\t\t\t*/\n\t\t\tassert( false /*TOLERANCE_NONZERO*/ );\n\t\t\tSweep.spliceMergeVertices( tess, e, vEvent.anEdge );\n\t\t\treturn;\n\t\t}\n\n\t\tif( ! Geom.vertEq( e.Dst, vEvent )) {\n\t\t\t/* General case -- splice vEvent into edge e which passes through it */\n\t\t\ttess.mesh.splitEdge( e.Sym );\n\t\t\tif( regUp.fixUpperEdge ) {\n\t\t\t\t/* This edge was fixable -- delete unused portion of original edge */\n\t\t\t\ttess.mesh.delete( e.Onext );\n\t\t\t\tregUp.fixUpperEdge = false;\n\t\t\t}\n\t\t\ttess.mesh.splice( vEvent.anEdge, e );\n\t\t\tSweep.sweepEvent( tess, vEvent );\t/* recurse */\n\t\t\treturn;\n\t\t}\n\n\t\t/* vEvent coincides with e->Dst, which has already been processed.\n\t\t* Splice in the additional right-going edges.\n\t\t*/\n\t\tassert( false /*TOLERANCE_NONZERO*/ );\n\t\tregUp = Sweep.topRightRegion( regUp );\n\t\treg = Sweep.regionBelow( regUp );\n\t\teTopRight = reg.eUp.Sym;\n\t\teTopLeft = eLast = eTopRight.Onext;\n\t\tif( reg.fixUpperEdge ) {\n\t\t\t/* Here e->Dst has only a single fixable edge going right.\n\t\t\t* We can delete it since now we have some real right-going edges.\n\t\t\t*/\n\t\t\tassert( eTopLeft !== eTopRight ); /* there are some left edges too */\n\t\t\tSweep.deleteRegion( tess, reg );\n\t\t\ttess.mesh.delete( eTopRight );\n\t\t\teTopRight = eTopLeft.Oprev;\n\t\t}\n\t\ttess.mesh.splice( vEvent.anEdge, eTopRight );\n\t\tif( ! Geom.edgeGoesLeft( eTopLeft )) {\n\t\t\t/* e->Dst had no left-going edges -- indicate this to AddRightEdges() */\n\t\t\teTopLeft = null;\n\t\t}\n\t\tSweep.addRightEdges( tess, regUp, eTopRight.Onext, eLast, eTopLeft, true );\n\t}\n\n\n\t//static void ConnectLeftVertex( TESStesselator *tess, TESSvertex *vEvent )\n\tSweep.connectLeftVertex = function( tess, vEvent ) {\n\t\t/*\n\t\t* Purpose: connect a \"left\" vertex (one where both edges go right)\n\t\t* to the processed portion of the mesh. Let R be the active region\n\t\t* containing vEvent, and let U and L be the upper and lower edge\n\t\t* chains of R. There are two possibilities:\n\t\t*\n\t\t* - the normal case: split R into two regions, by connecting vEvent to\n\t\t* the rightmost vertex of U or L lying to the left of the sweep line\n\t\t*\n\t\t* - the degenerate case: if vEvent is close enough to U or L, we\n\t\t* merge vEvent into that edge chain. The subcases are:\n\t\t*\t- merging with the rightmost vertex of U or L\n\t\t*\t- merging with the active edge of U or L\n\t\t*\t- merging with an already-processed portion of U or L\n\t\t*/\n\t\tvar regUp, regLo, reg;\n\t\tvar eUp, eLo, eNew;\n\t\tvar tmp = new ActiveRegion();\n\n\t\t/* assert( vEvent->anEdge->Onext->Onext == vEvent->anEdge ); */\n\n\t\t/* Get a pointer to the active region containing vEvent */\n\t\ttmp.eUp = vEvent.anEdge.Sym;\n\t\t/* __GL_DICTLISTKEY */ /* tessDictListSearch */\n\t\tregUp = tess.dict.search( tmp ).key;\n\t\tregLo = Sweep.regionBelow( regUp );\n\t\tif( !regLo ) {\n\t\t\t// This may happen if the input polygon is coplanar.\n\t\t\treturn;\n\t\t}\n\t\teUp = regUp.eUp;\n\t\teLo = regLo.eUp;\n\n\t\t/* Try merging with U or L first */\n\t\tif( Geom.edgeSign( eUp.Dst, vEvent, eUp.Org ) === 0.0 ) {\n\t\t\tSweep.connectLeftDegenerate( tess, regUp, vEvent );\n\t\t\treturn;\n\t\t}\n\n\t\t/* Connect vEvent to rightmost processed vertex of either chain.\n\t\t* e->Dst is the vertex that we will connect to vEvent.\n\t\t*/\n\t\treg = Geom.vertLeq( eLo.Dst, eUp.Dst ) ? regUp : regLo;\n\n\t\tif( regUp.inside || reg.fixUpperEdge) {\n\t\t\tif( reg === regUp ) {\n\t\t\t\teNew = tess.mesh.connect( vEvent.anEdge.Sym, eUp.Lnext );\n\t\t\t} else {\n\t\t\t\tvar tempHalfEdge = tess.mesh.connect( eLo.Dnext, vEvent.anEdge);\n\t\t\t\teNew = tempHalfEdge.Sym;\n\t\t\t}\n\t\t\tif( reg.fixUpperEdge ) {\n\t\t\t\tSweep.fixUpperEdge( tess, reg, eNew );\n\t\t\t} else {\n\t\t\t\tSweep.computeWinding( tess, Sweep.addRegionBelow( tess, regUp, eNew ));\n\t\t\t}\n\t\t\tSweep.sweepEvent( tess, vEvent );\n\t\t} else {\n\t\t\t/* The new vertex is in a region which does not belong to the polygon.\n\t\t\t* We don''t need to connect this vertex to the rest of the mesh.\n\t\t\t*/\n\t\t\tSweep.addRightEdges( tess, regUp, vEvent.anEdge, vEvent.anEdge, null, true );\n\t\t}\n\t};\n\n\n\t//static void SweepEvent( TESStesselator *tess, TESSvertex *vEvent )\n\tSweep.sweepEvent = function( tess, vEvent ) {\n\t\t/*\n\t\t* Does everything necessary when the sweep line crosses a vertex.\n\t\t* Updates the mesh and the edge dictionary.\n\t\t*/\n\n\t\ttess.event = vEvent;\t\t/* for access in EdgeLeq() */\n\t\tSweep.debugEvent( tess );\n\n\t\t/* Check if this vertex is the right endpoint of an edge that is\n\t\t* already in the dictionary. In this case we don't need to waste\n\t\t* time searching for the location to insert new edges.\n\t\t*/\n\t\tvar e = vEvent.anEdge;\n\t\twhile( e.activeRegion === null ) {\n\t\t\te = e.Onext;\n\t\t\tif( e == vEvent.anEdge ) {\n\t\t\t\t/* All edges go right -- not incident to any processed edges */\n\t\t\t\tSweep.connectLeftVertex( tess, vEvent );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t/* Processing consists of two phases: first we \"finish\" all the\n\t\t* active regions where both the upper and lower edges terminate\n\t\t* at vEvent (ie. vEvent is closing off these regions).\n\t\t* We mark these faces \"inside\" or \"outside\" the polygon according\n\t\t* to their winding number, and delete the edges from the dictionary.\n\t\t* This takes care of all the left-going edges from vEvent.\n\t\t*/\n\t\tvar regUp = Sweep.topLeftRegion( tess, e.activeRegion );\n\t\tassert( regUp !== null );\n\t//\tif (regUp == NULL) longjmp(tess->env,1);\n\t\tvar reg = Sweep.regionBelow( regUp );\n\t\tvar eTopLeft = reg.eUp;\n\t\tvar eBottomLeft = Sweep.finishLeftRegions( tess, reg, null );\n\n\t\t/* Next we process all the right-going edges from vEvent. This\n\t\t* involves adding the edges to the dictionary, and creating the\n\t\t* associated \"active regions\" which record information about the\n\t\t* regions between adjacent dictionary edges.\n\t\t*/\n\t\tif( eBottomLeft.Onext === eTopLeft ) {\n\t\t\t/* No right-going edges -- add a temporary \"fixable\" edge */\n\t\t\tSweep.connectRightVertex( tess, regUp, eBottomLeft );\n\t\t} else {\n\t\t\tSweep.addRightEdges( tess, regUp, eBottomLeft.Onext, eTopLeft, eTopLeft, true );\n\t\t}\n\t};\n\n\n\t/* Make the sentinel coordinates big enough that they will never be\n\t* merged with real input features.\n\t*/\n\n\t//static void AddSentinel( TESStesselator *tess, TESSreal smin, TESSreal smax, TESSreal t )\n\tSweep.addSentinel = function( tess, smin, smax, t ) {\n\t\t/*\n\t\t* We add two sentinel edges above and below all other edges,\n\t\t* to avoid special cases at the top and bottom.\n\t\t*/\n\t\tvar reg = new ActiveRegion();\n\t\tvar e = tess.mesh.makeEdge();\n\t//\tif (e == NULL) longjmp(tess->env,1);\n\n\t\te.Org.s = smax;\n\t\te.Org.t = t;\n\t\te.Dst.s = smin;\n\t\te.Dst.t = t;\n\t\ttess.event = e.Dst;\t\t/* initialize it */\n\n\t\treg.eUp = e;\n\t\treg.windingNumber = 0;\n\t\treg.inside = false;\n\t\treg.fixUpperEdge = false;\n\t\treg.sentinel = true;\n\t\treg.dirty = false;\n\t\treg.nodeUp = tess.dict.insert( reg );\n\t//\tif (reg->nodeUp == NULL) longjmp(tess->env,1);\n\t}\n\n\n\t//static void InitEdgeDict( TESStesselator *tess )\n\tSweep.initEdgeDict = function( tess ) {\n\t\t/*\n\t\t* We maintain an ordering of edge intersections with the sweep line.\n\t\t* This order is maintained in a dynamic dictionary.\n\t\t*/\n\t\ttess.dict = new Dict( tess, Sweep.edgeLeq );\n\t//\tif (tess->dict == NULL) longjmp(tess->env,1);\n\n\t\tvar w = (tess.bmax[0] - tess.bmin[0]);\n\t\tvar h = (tess.bmax[1] - tess.bmin[1]);\n\n\t\tvar smin = tess.bmin[0] - w;\n\t\tvar smax = tess.bmax[0] + w;\n\t\tvar tmin = tess.bmin[1] - h;\n\t\tvar tmax = tess.bmax[1] + h;\n\n\t\tSweep.addSentinel( tess, smin, smax, tmin );\n\t\tSweep.addSentinel( tess, smin, smax, tmax );\n\t}\n\n\n\tSweep.doneEdgeDict = function( tess )\n\t{\n\t\tvar reg;\n\t\tvar fixedEdges = 0;\n\n\t\twhile( (reg = tess.dict.min().key) !== null ) {\n\t\t\t/*\n\t\t\t* At the end of all processing, the dictionary should contain\n\t\t\t* only the two sentinel edges, plus at most one \"fixable\" edge\n\t\t\t* created by ConnectRightVertex().\n\t\t\t*/\n\t\t\tif( ! reg.sentinel ) {\n\t\t\t\tassert( reg.fixUpperEdge );\n\t\t\t\tassert( ++fixedEdges == 1 );\n\t\t\t}\n\t\t\tassert( reg.windingNumber == 0 );\n\t\t\tSweep.deleteRegion( tess, reg );\n\t\t\t/* tessMeshDelete( reg->eUp );*/\n\t\t}\n\t//\tdictDeleteDict( &tess->alloc, tess->dict );\n\t}\n\n\n\tSweep.removeDegenerateEdges = function( tess ) {\n\t\t/*\n\t\t* Remove zero-length edges, and contours with fewer than 3 vertices.\n\t\t*/\n\t\tvar e, eNext, eLnext;\n\t\tvar eHead = tess.mesh.eHead;\n\n\t\t/*LINTED*/\n\t\tfor( e = eHead.next; e !== eHead; e = eNext ) {\n\t\t\teNext = e.next;\n\t\t\teLnext = e.Lnext;\n\n\t\t\tif( Geom.vertEq( e.Org, e.Dst ) && e.Lnext.Lnext !== e ) {\n\t\t\t\t/* Zero-length edge, contour has at least 3 edges */\n\t\t\t\tSweep.spliceMergeVertices( tess, eLnext, e );\t/* deletes e->Org */\n\t\t\t\ttess.mesh.delete( e ); /* e is a self-loop */\n\t\t\t\te = eLnext;\n\t\t\t\teLnext = e.Lnext;\n\t\t\t}\n\t\t\tif( eLnext.Lnext === e ) {\n\t\t\t\t/* Degenerate contour (one or two edges) */\n\t\t\t\tif( eLnext !== e ) {\n\t\t\t\t\tif( eLnext === eNext || eLnext === eNext.Sym ) { eNext = eNext.next; }\n\t\t\t\t\ttess.mesh.delete( eLnext );\n\t\t\t\t}\n\t\t\t\tif( e === eNext || e === eNext.Sym ) { eNext = eNext.next; }\n\t\t\t\ttess.mesh.delete( e );\n\t\t\t}\n\t\t}\n\t}\n\n\tSweep.initPriorityQ = function( tess ) {\n\t\t/*\n\t\t* Insert all vertices into the priority queue which determines the\n\t\t* order in which vertices cross the sweep line.\n\t\t*/\n\t\tvar pq;\n\t\tvar v, vHead;\n\t\tvar vertexCount = 0;\n\t\t\n\t\tvHead = tess.mesh.vHead;\n\t\tfor( v = vHead.next; v !== vHead; v = v.next ) {\n\t\t\tvertexCount++;\n\t\t}\n\t\t/* Make sure there is enough space for sentinels. */\n\t\tvertexCount += 8; //MAX( 8, tess->alloc.extraVertices );\n\t\t\n\t\tpq = tess.pq = new PriorityQ( vertexCount, Geom.vertLeq );\n\t//\tif (pq == NULL) return 0;\n\n\t\tvHead = tess.mesh.vHead;\n\t\tfor( v = vHead.next; v !== vHead; v = v.next ) {\n\t\t\tv.pqHandle = pq.insert( v );\n\t//\t\tif (v.pqHandle == INV_HANDLE)\n\t//\t\t\tbreak;\n\t\t}\n\n\t\tif (v !== vHead) {\n\t\t\treturn false;\n\t\t}\n\n\t\tpq.init();\n\n\t\treturn true;\n\t}\n\n\n\tSweep.donePriorityQ = function( tess ) {\n\t\ttess.pq = null;\n\t}\n\n\n\tSweep.removeDegenerateFaces = function( tess, mesh ) {\n\t\t/*\n\t\t* Delete any degenerate faces with only two edges. WalkDirtyRegions()\n\t\t* will catch almost all of these, but it won't catch degenerate faces\n\t\t* produced by splice operations on already-processed edges.\n\t\t* The two places this can happen are in FinishLeftRegions(), when\n\t\t* we splice in a \"temporary\" edge produced by ConnectRightVertex(),\n\t\t* and in CheckForLeftSplice(), where we splice already-processed\n\t\t* edges to ensure that our dictionary invariants are not violated\n\t\t* by numerical errors.\n\t\t*\n\t\t* In both these cases it is *very* dangerous to delete the offending\n\t\t* edge at the time, since one of the routines further up the stack\n\t\t* will sometimes be keeping a pointer to that edge.\n\t\t*/\n\t\tvar f, fNext;\n\t\tvar e;\n\n\t\t/*LINTED*/\n\t\tfor( f = mesh.fHead.next; f !== mesh.fHead; f = fNext ) {\n\t\t\tfNext = f.next;\n\t\t\te = f.anEdge;\n\t\t\tassert( e.Lnext !== e );\n\n\t\t\tif( e.Lnext.Lnext === e ) {\n\t\t\t\t/* A face with only two edges */\n\t\t\t\tSweep.addWinding( e.Onext, e );\n\t\t\t\ttess.mesh.delete( e );\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tSweep.computeInterior = function( tess ) {\n\t\t/*\n\t\t* tessComputeInterior( tess ) computes the planar arrangement specified\n\t\t* by the given contours, and further subdivides this arrangement\n\t\t* into regions. Each region is marked \"inside\" if it belongs\n\t\t* to the polygon, according to the rule given by tess->windingRule.\n\t\t* Each interior region is guaranteed be monotone.\n\t\t*/\n\t\tvar v, vNext;\n\n\t\t/* Each vertex defines an event for our sweep line. Start by inserting\n\t\t* all the vertices in a priority queue. Events are processed in\n\t\t* lexicographic order, ie.\n\t\t*\n\t\t*\te1 < e2 iff e1.x < e2.x || (e1.x == e2.x && e1.y < e2.y)\n\t\t*/\n\t\tSweep.removeDegenerateEdges( tess );\n\t\tif ( !Sweep.initPriorityQ( tess ) ) return false; /* if error */\n\t\tSweep.initEdgeDict( tess );\n\n\t\twhile( (v = tess.pq.extractMin()) !== null ) {\n\t\t\tfor( ;; ) {\n\t\t\t\tvNext = tess.pq.min();\n\t\t\t\tif( vNext === null || ! Geom.vertEq( vNext, v )) break;\n\n\t\t\t\t/* Merge together all vertices at exactly the same location.\n\t\t\t\t* This is more efficient than processing them one at a time,\n\t\t\t\t* simplifies the code (see ConnectLeftDegenerate), and is also\n\t\t\t\t* important for correct handling of certain degenerate cases.\n\t\t\t\t* For example, suppose there are two identical edges A and B\n\t\t\t\t* that belong to different contours (so without this code they would\n\t\t\t\t* be processed by separate sweep events). Suppose another edge C\n\t\t\t\t* crosses A and B from above. When A is processed, we split it\n\t\t\t\t* at its intersection point with C. However this also splits C,\n\t\t\t\t* so when we insert B we may compute a slightly different\n\t\t\t\t* intersection point. This might leave two edges with a small\n\t\t\t\t* gap between them. This kind of error is especially obvious\n\t\t\t\t* when using boundary extraction (TESS_BOUNDARY_ONLY).\n\t\t\t\t*/\n\t\t\t\tvNext = tess.pq.extractMin();\n\t\t\t\tSweep.spliceMergeVertices( tess, v.anEdge, vNext.anEdge );\n\t\t\t}\n\t\t\tSweep.sweepEvent( tess, v );\n\t\t}\n\n\t\t/* Set tess->event for debugging purposes */\n\t\ttess.event = tess.dict.min().key.eUp.Org;\n\t\tSweep.debugEvent( tess );\n\t\tSweep.doneEdgeDict( tess );\n\t\tSweep.donePriorityQ( tess );\n\n\t\tif ( !Sweep.removeDegenerateFaces( tess, tess.mesh ) ) return false;\n\t\ttess.mesh.check();\n\n\t\treturn true;\n\t}\n\n\n\tfunction Tesselator() {\n\n\t\t/*** state needed for collecting the input data ***/\n\t\tthis.mesh = null;\t\t/* stores the input contours, and eventually\n\t\t\t\t\t\t\tthe tessellation itself */\n\n\t\t/*** state needed for projecting onto the sweep plane ***/\n\n\t\tthis.normal = [0.0, 0.0, 0.0];\t/* user-specified normal (if provided) */\n\t\tthis.sUnit = [0.0, 0.0, 0.0];\t/* unit vector in s-direction (debugging) */\n\t\tthis.tUnit = [0.0, 0.0, 0.0];\t/* unit vector in t-direction (debugging) */\n\n\t\tthis.bmin = [0.0, 0.0];\n\t\tthis.bmax = [0.0, 0.0];\n\n\t\t/*** state needed for the line sweep ***/\n\t\tthis.windingRule = Tess2.WINDING_ODD;\t/* rule for determining polygon interior */\n\n\t\tthis.dict = null;\t\t/* edge dictionary for sweep line */\n\t\tthis.pq = null;\t\t/* priority queue of vertex events */\n\t\tthis.event = null;\t\t/* current sweep event being processed */\n\n\t\tthis.vertexIndexCounter = 0;\n\t\t\n\t\tthis.vertices = [];\n\t\tthis.vertexIndices = [];\n\t\tthis.vertexCount = 0;\n\t\tthis.elements = [];\n\t\tthis.elementCount = 0;\n\t};\n\n\tTesselator.prototype = {\n\n\t\tdot_: function(u, v) {\n\t\t\treturn (u[0]*v[0] + u[1]*v[1] + u[2]*v[2]);\n\t\t},\n\n\t\tnormalize_: function( v ) {\n\t\t\tvar len = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];\n\t\t\tassert( len > 0.0 );\n\t\t\tlen = Math.sqrt( len );\n\t\t\tv[0] /= len;\n\t\t\tv[1] /= len;\n\t\t\tv[2] /= len;\n\t\t},\n\n\t\tlongAxis_: function( v ) {\n\t\t\tvar i = 0;\n\t\t\tif( Math.abs(v[1]) > Math.abs(v[0]) ) { i = 1; }\n\t\t\tif( Math.abs(v[2]) > Math.abs(v[i]) ) { i = 2; }\n\t\t\treturn i;\n\t\t},\n\n\t\tcomputeNormal_: function( norm )\n\t\t{\n\t\t\tvar v, v1, v2;\n\t\t\tvar c, tLen2, maxLen2;\n\t\t\tvar maxVal = [0,0,0], minVal = [0,0,0], d1 = [0,0,0], d2 = [0,0,0], tNorm = [0,0,0];\n\t\t\tvar maxVert = [null,null,null], minVert = [null,null,null];\n\t\t\tvar vHead = this.mesh.vHead;\n\t\t\tvar i;\n\n\t\t\tv = vHead.next;\n\t\t\tfor( i = 0; i < 3; ++i ) {\n\t\t\t\tc = v.coords[i];\n\t\t\t\tminVal[i] = c;\n\t\t\t\tminVert[i] = v;\n\t\t\t\tmaxVal[i] = c;\n\t\t\t\tmaxVert[i] = v;\n\t\t\t}\n\n\t\t\tfor( v = vHead.next; v !== vHead; v = v.next ) {\n\t\t\t\tfor( i = 0; i < 3; ++i ) {\n\t\t\t\t\tc = v.coords[i];\n\t\t\t\t\tif( c < minVal[i] ) { minVal[i] = c; minVert[i] = v; }\n\t\t\t\t\tif( c > maxVal[i] ) { maxVal[i] = c; maxVert[i] = v; }\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* Find two vertices separated by at least 1/sqrt(3) of the maximum\n\t\t\t* distance between any two vertices\n\t\t\t*/\n\t\t\ti = 0;\n\t\t\tif( maxVal[1] - minVal[1] > maxVal[0] - minVal[0] ) { i = 1; }\n\t\t\tif( maxVal[2] - minVal[2] > maxVal[i] - minVal[i] ) { i = 2; }\n\t\t\tif( minVal[i] >= maxVal[i] ) {\n\t\t\t\t/* All vertices are the same -- normal doesn't matter */\n\t\t\t\tnorm[0] = 0; norm[1] = 0; norm[2] = 1;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/* Look for a third vertex which forms the triangle with maximum area\n\t\t\t* (Length of normal == twice the triangle area)\n\t\t\t*/\n\t\t\tmaxLen2 = 0;\n\t\t\tv1 = minVert[i];\n\t\t\tv2 = maxVert[i];\n\t\t\td1[0] = v1.coords[0] - v2.coords[0];\n\t\t\td1[1] = v1.coords[1] - v2.coords[1];\n\t\t\td1[2] = v1.coords[2] - v2.coords[2];\n\t\t\tfor( v = vHead.next; v !== vHead; v = v.next ) {\n\t\t\t\td2[0] = v.coords[0] - v2.coords[0];\n\t\t\t\td2[1] = v.coords[1] - v2.coords[1];\n\t\t\t\td2[2] = v.coords[2] - v2.coords[2];\n\t\t\t\ttNorm[0] = d1[1]*d2[2] - d1[2]*d2[1];\n\t\t\t\ttNorm[1] = d1[2]*d2[0] - d1[0]*d2[2];\n\t\t\t\ttNorm[2] = d1[0]*d2[1] - d1[1]*d2[0];\n\t\t\t\ttLen2 = tNorm[0]*tNorm[0] + tNorm[1]*tNorm[1] + tNorm[2]*tNorm[2];\n\t\t\t\tif( tLen2 > maxLen2 ) {\n\t\t\t\t\tmaxLen2 = tLen2;\n\t\t\t\t\tnorm[0] = tNorm[0];\n\t\t\t\t\tnorm[1] = tNorm[1];\n\t\t\t\t\tnorm[2] = tNorm[2];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif( maxLen2 <= 0 ) {\n\t\t\t\t/* All points lie on a single line -- any decent normal will do */\n\t\t\t\tnorm[0] = norm[1] = norm[2] = 0;\n\t\t\t\tnorm[this.longAxis_(d1)] = 1;\n\t\t\t}\n\t\t},\n\n\t\tcheckOrientation_: function() {\n\t\t\tvar area;\n\t\t\tvar f, fHead = this.mesh.fHead;\n\t\t\tvar v, vHead = this.mesh.vHead;\n\t\t\tvar e;\n\n\t\t\t/* When we compute the normal automatically, we choose the orientation\n\t\t\t* so that the the sum of the signed areas of all contours is non-negative.\n\t\t\t*/\n\t\t\tarea = 0;\n\t\t\tfor( f = fHead.next; f !== fHead; f = f.next ) {\n\t\t\t\te = f.anEdge;\n\t\t\t\tif( e.winding <= 0 ) continue;\n\t\t\t\tdo {\n\t\t\t\t\tarea += (e.Org.s - e.Dst.s) * (e.Org.t + e.Dst.t);\n\t\t\t\t\te = e.Lnext;\n\t\t\t\t} while( e !== f.anEdge );\n\t\t\t}\n\t\t\tif( area < 0 ) {\n\t\t\t\t/* Reverse the orientation by flipping all the t-coordinates */\n\t\t\t\tfor( v = vHead.next; v !== vHead; v = v.next ) {\n\t\t\t\t\tv.t = - v.t;\n\t\t\t\t}\n\t\t\t\tthis.tUnit[0] = - this.tUnit[0];\n\t\t\t\tthis.tUnit[1] = - this.tUnit[1];\n\t\t\t\tthis.tUnit[2] = - this.tUnit[2];\n\t\t\t}\n\t\t},\n\n\t/*\t#ifdef FOR_TRITE_TEST_PROGRAM\n\t\t#include \n\t\textern int RandomSweep;\n\t\t#define S_UNIT_X\t(RandomSweep ? (2*drand48()-1) : 1.0)\n\t\t#define S_UNIT_Y\t(RandomSweep ? (2*drand48()-1) : 0.0)\n\t\t#else\n\t\t#if defined(SLANTED_SWEEP) */\n\t\t/* The \"feature merging\" is not intended to be complete. There are\n\t\t* special cases where edges are nearly parallel to the sweep line\n\t\t* which are not implemented. The algorithm should still behave\n\t\t* robustly (ie. produce a reasonable tesselation) in the presence\n\t\t* of such edges, however it may miss features which could have been\n\t\t* merged. We could minimize this effect by choosing the sweep line\n\t\t* direction to be something unusual (ie. not parallel to one of the\n\t\t* coordinate axes).\n\t\t*/\n\t/*\t#define S_UNIT_X\t(TESSreal)0.50941539564955385\t// Pre-normalized\n\t\t#define S_UNIT_Y\t(TESSreal)0.86052074622010633\n\t\t#else\n\t\t#define S_UNIT_X\t(TESSreal)1.0\n\t\t#define S_UNIT_Y\t(TESSreal)0.0\n\t\t#endif\n\t\t#endif*/\n\n\t\t/* Determine the polygon normal and project vertices onto the plane\n\t\t* of the polygon.\n\t\t*/\n\t\tprojectPolygon_: function() {\n\t\t\tvar v, vHead = this.mesh.vHead;\n\t\t\tvar norm = [0,0,0];\n\t\t\tvar sUnit, tUnit;\n\t\t\tvar i, first, computedNormal = false;\n\n\t\t\tnorm[0] = this.normal[0];\n\t\t\tnorm[1] = this.normal[1];\n\t\t\tnorm[2] = this.normal[2];\n\t\t\tif( norm[0] === 0.0 && norm[1] === 0.0 && norm[2] === 0.0 ) {\n\t\t\t\tthis.computeNormal_( norm );\n\t\t\t\tcomputedNormal = true;\n\t\t\t}\n\t\t\tsUnit = this.sUnit;\n\t\t\ttUnit = this.tUnit;\n\t\t\ti = this.longAxis_( norm );\n\n\t/*\t#if defined(FOR_TRITE_TEST_PROGRAM) || defined(TRUE_PROJECT)\n\t\t\t// Choose the initial sUnit vector to be approximately perpendicular\n\t\t\t// to the normal.\n\t\t\t\n\t\t\tNormalize( norm );\n\n\t\t\tsUnit[i] = 0;\n\t\t\tsUnit[(i+1)%3] = S_UNIT_X;\n\t\t\tsUnit[(i+2)%3] = S_UNIT_Y;\n\n\t\t\t// Now make it exactly perpendicular \n\t\t\tw = Dot( sUnit, norm );\n\t\t\tsUnit[0] -= w * norm[0];\n\t\t\tsUnit[1] -= w * norm[1];\n\t\t\tsUnit[2] -= w * norm[2];\n\t\t\tNormalize( sUnit );\n\n\t\t\t// Choose tUnit so that (sUnit,tUnit,norm) form a right-handed frame \n\t\t\ttUnit[0] = norm[1]*sUnit[2] - norm[2]*sUnit[1];\n\t\t\ttUnit[1] = norm[2]*sUnit[0] - norm[0]*sUnit[2];\n\t\t\ttUnit[2] = norm[0]*sUnit[1] - norm[1]*sUnit[0];\n\t\t\tNormalize( tUnit );\n\t\t#else*/\n\t\t\t/* Project perpendicular to a coordinate axis -- better numerically */\n\t\t\tsUnit[i] = 0;\n\t\t\tsUnit[(i+1)%3] = 1.0;\n\t\t\tsUnit[(i+2)%3] = 0.0;\n\n\t\t\ttUnit[i] = 0;\n\t\t\ttUnit[(i+1)%3] = 0.0;\n\t\t\ttUnit[(i+2)%3] = (norm[i] > 0) ? 1.0 : -1.0;\n\t//\t#endif\n\n\t\t\t/* Project the vertices onto the sweep plane */\n\t\t\tfor( v = vHead.next; v !== vHead; v = v.next ) {\n\t\t\t\tv.s = this.dot_( v.coords, sUnit );\n\t\t\t\tv.t = this.dot_( v.coords, tUnit );\n\t\t\t}\n\t\t\tif( computedNormal ) {\n\t\t\t\tthis.checkOrientation_();\n\t\t\t}\n\n\t\t\t/* Compute ST bounds. */\n\t\t\tfirst = true;\n\t\t\tfor( v = vHead.next; v !== vHead; v = v.next ) {\n\t\t\t\tif (first) {\n\t\t\t\t\tthis.bmin[0] = this.bmax[0] = v.s;\n\t\t\t\t\tthis.bmin[1] = this.bmax[1] = v.t;\n\t\t\t\t\tfirst = false;\n\t\t\t\t} else {\n\t\t\t\t\tif (v.s < this.bmin[0]) this.bmin[0] = v.s;\n\t\t\t\t\tif (v.s > this.bmax[0]) this.bmax[0] = v.s;\n\t\t\t\t\tif (v.t < this.bmin[1]) this.bmin[1] = v.t;\n\t\t\t\t\tif (v.t > this.bmax[1]) this.bmax[1] = v.t;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\taddWinding_: function(eDst,eSrc) {\n\t\t\teDst.winding += eSrc.winding;\n\t\t\teDst.Sym.winding += eSrc.Sym.winding;\n\t\t},\n\t\t\n\t\t/* tessMeshTessellateMonoRegion( face ) tessellates a monotone region\n\t\t* (what else would it do??) The region must consist of a single\n\t\t* loop of half-edges (see mesh.h) oriented CCW. \"Monotone\" in this\n\t\t* case means that any vertical line intersects the interior of the\n\t\t* region in a single interval. \n\t\t*\n\t\t* Tessellation consists of adding interior edges (actually pairs of\n\t\t* half-edges), to split the region into non-overlapping triangles.\n\t\t*\n\t\t* The basic idea is explained in Preparata and Shamos (which I don''t\n\t\t* have handy right now), although their implementation is more\n\t\t* complicated than this one. The are two edge chains, an upper chain\n\t\t* and a lower chain. We process all vertices from both chains in order,\n\t\t* from right to left.\n\t\t*\n\t\t* The algorithm ensures that the following invariant holds after each\n\t\t* vertex is processed: the untessellated region consists of two\n\t\t* chains, where one chain (say the upper) is a single edge, and\n\t\t* the other chain is concave. The left vertex of the single edge\n\t\t* is always to the left of all vertices in the concave chain.\n\t\t*\n\t\t* Each step consists of adding the rightmost unprocessed vertex to one\n\t\t* of the two chains, and forming a fan of triangles from the rightmost\n\t\t* of two chain endpoints. Determining whether we can add each triangle\n\t\t* to the fan is a simple orientation test. By making the fan as large\n\t\t* as possible, we restore the invariant (check it yourself).\n\t\t*/\n\t//\tint tessMeshTessellateMonoRegion( TESSmesh *mesh, TESSface *face )\n\t\ttessellateMonoRegion_: function( mesh, face ) {\n\t\t\tvar up, lo;\n\n\t\t\t/* All edges are oriented CCW around the boundary of the region.\n\t\t\t* First, find the half-edge whose origin vertex is rightmost.\n\t\t\t* Since the sweep goes from left to right, face->anEdge should\n\t\t\t* be close to the edge we want.\n\t\t\t*/\n\t\t\tup = face.anEdge;\n\t\t\tassert( up.Lnext !== up && up.Lnext.Lnext !== up );\n\n\t\t\tfor( ; Geom.vertLeq( up.Dst, up.Org ); up = up.Lprev )\n\t\t\t\t;\n\t\t\tfor( ; Geom.vertLeq( up.Org, up.Dst ); up = up.Lnext )\n\t\t\t\t;\n\t\t\tlo = up.Lprev;\n\n\t\t\twhile( up.Lnext !== lo ) {\n\t\t\t\tif( Geom.vertLeq( up.Dst, lo.Org )) {\n\t\t\t\t\t/* up->Dst is on the left. It is safe to form triangles from lo->Org.\n\t\t\t\t\t* The EdgeGoesLeft test guarantees progress even when some triangles\n\t\t\t\t\t* are CW, given that the upper and lower chains are truly monotone.\n\t\t\t\t\t*/\n\t\t\t\t\twhile( lo.Lnext !== up && (Geom.edgeGoesLeft( lo.Lnext )\n\t\t\t\t\t\t|| Geom.edgeSign( lo.Org, lo.Dst, lo.Lnext.Dst ) <= 0.0 )) {\n\t\t\t\t\t\t\tvar tempHalfEdge = mesh.connect( lo.Lnext, lo );\n\t\t\t\t\t\t\t//if (tempHalfEdge == NULL) return 0;\n\t\t\t\t\t\t\tlo = tempHalfEdge.Sym;\n\t\t\t\t\t}\n\t\t\t\t\tlo = lo.Lprev;\n\t\t\t\t} else {\n\t\t\t\t\t/* lo->Org is on the left. We can make CCW triangles from up->Dst. */\n\t\t\t\t\twhile( lo.Lnext != up && (Geom.edgeGoesRight( up.Lprev )\n\t\t\t\t\t\t|| Geom.edgeSign( up.Dst, up.Org, up.Lprev.Org ) >= 0.0 )) {\n\t\t\t\t\t\t\tvar tempHalfEdge = mesh.connect( up, up.Lprev );\n\t\t\t\t\t\t\t//if (tempHalfEdge == NULL) return 0;\n\t\t\t\t\t\t\tup = tempHalfEdge.Sym;\n\t\t\t\t\t}\n\t\t\t\t\tup = up.Lnext;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* Now lo->Org == up->Dst == the leftmost vertex. The remaining region\n\t\t\t* can be tessellated in a fan from this leftmost vertex.\n\t\t\t*/\n\t\t\tassert( lo.Lnext !== up );\n\t\t\twhile( lo.Lnext.Lnext !== up ) {\n\t\t\t\tvar tempHalfEdge = mesh.connect( lo.Lnext, lo );\n\t\t\t\t//if (tempHalfEdge == NULL) return 0;\n\t\t\t\tlo = tempHalfEdge.Sym;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\n\t\t/* tessMeshTessellateInterior( mesh ) tessellates each region of\n\t\t* the mesh which is marked \"inside\" the polygon. Each such region\n\t\t* must be monotone.\n\t\t*/\n\t\t//int tessMeshTessellateInterior( TESSmesh *mesh )\n\t\ttessellateInterior_: function( mesh ) {\n\t\t\tvar f, next;\n\n\t\t\t/*LINTED*/\n\t\t\tfor( f = mesh.fHead.next; f !== mesh.fHead; f = next ) {\n\t\t\t\t/* Make sure we don''t try to tessellate the new triangles. */\n\t\t\t\tnext = f.next;\n\t\t\t\tif( f.inside ) {\n\t\t\t\t\tif ( !this.tessellateMonoRegion_( mesh, f ) ) return false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\n\t\t/* tessMeshDiscardExterior( mesh ) zaps (ie. sets to NULL) all faces\n\t\t* which are not marked \"inside\" the polygon. Since further mesh operations\n\t\t* on NULL faces are not allowed, the main purpose is to clean up the\n\t\t* mesh so that exterior loops are not represented in the data structure.\n\t\t*/\n\t\t//void tessMeshDiscardExterior( TESSmesh *mesh )\n\t\tdiscardExterior_: function( mesh ) {\n\t\t\tvar f, next;\n\n\t\t\t/*LINTED*/\n\t\t\tfor( f = mesh.fHead.next; f !== mesh.fHead; f = next ) {\n\t\t\t\t/* Since f will be destroyed, save its next pointer. */\n\t\t\t\tnext = f.next;\n\t\t\t\tif( ! f.inside ) {\n\t\t\t\t\tmesh.zapFace( f );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/* tessMeshSetWindingNumber( mesh, value, keepOnlyBoundary ) resets the\n\t\t* winding numbers on all edges so that regions marked \"inside\" the\n\t\t* polygon have a winding number of \"value\", and regions outside\n\t\t* have a winding number of 0.\n\t\t*\n\t\t* If keepOnlyBoundary is TRUE, it also deletes all edges which do not\n\t\t* separate an interior region from an exterior one.\n\t\t*/\n\t//\tint tessMeshSetWindingNumber( TESSmesh *mesh, int value, int keepOnlyBoundary )\n\t\tsetWindingNumber_: function( mesh, value, keepOnlyBoundary ) {\n\t\t\tvar e, eNext;\n\n\t\t\tfor( e = mesh.eHead.next; e !== mesh.eHead; e = eNext ) {\n\t\t\t\teNext = e.next;\n\t\t\t\tif( e.Rface.inside !== e.Lface.inside ) {\n\n\t\t\t\t\t/* This is a boundary edge (one side is interior, one is exterior). */\n\t\t\t\t\te.winding = (e.Lface.inside) ? value : -value;\n\t\t\t\t} else {\n\n\t\t\t\t\t/* Both regions are interior, or both are exterior. */\n\t\t\t\t\tif( ! keepOnlyBoundary ) {\n\t\t\t\t\t\te.winding = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmesh.delete( e );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tgetNeighbourFace_: function(edge)\n\t\t{\n\t\t\tif (!edge.Rface)\n\t\t\t\treturn -1;\n\t\t\tif (!edge.Rface.inside)\n\t\t\t\treturn -1;\n\t\t\treturn edge.Rface.n;\n\t\t},\n\n\t\toutputPolymesh_: function( mesh, elementType, polySize, vertexSize ) {\n\t\t\tvar v;\n\t\t\tvar f;\n\t\t\tvar edge;\n\t\t\tvar maxFaceCount = 0;\n\t\t\tvar maxVertexCount = 0;\n\t\t\tvar faceVerts, i;\n\t\t\tvar elements = 0;\n\t\t\tvar vert;\n\n\t\t\t// Assume that the input data is triangles now.\n\t\t\t// Try to merge as many polygons as possible\n\t\t\tif (polySize > 3)\n\t\t\t{\n\t\t\t\tmesh.mergeConvexFaces( polySize );\n\t\t\t}\n\n\t\t\t// Mark unused\n\t\t\tfor ( v = mesh.vHead.next; v !== mesh.vHead; v = v.next )\n\t\t\t\tv.n = -1;\n\n\t\t\t// Create unique IDs for all vertices and faces.\n\t\t\tfor ( f = mesh.fHead.next; f != mesh.fHead; f = f.next )\n\t\t\t{\n\t\t\t\tf.n = -1;\n\t\t\t\tif( !f.inside ) continue;\n\n\t\t\t\tedge = f.anEdge;\n\t\t\t\tfaceVerts = 0;\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\tv = edge.Org;\n\t\t\t\t\tif ( v.n === -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tv.n = maxVertexCount;\n\t\t\t\t\t\tmaxVertexCount++;\n\t\t\t\t\t}\n\t\t\t\t\tfaceVerts++;\n\t\t\t\t\tedge = edge.Lnext;\n\t\t\t\t}\n\t\t\t\twhile (edge !== f.anEdge);\n\t\t\t\t\n\t\t\t\tassert( faceVerts <= polySize );\n\n\t\t\t\tf.n = maxFaceCount;\n\t\t\t\t++maxFaceCount;\n\t\t\t}\n\n\t\t\tthis.elementCount = maxFaceCount;\n\t\t\tif (elementType == Tess2.CONNECTED_POLYGONS)\n\t\t\t\tmaxFaceCount *= 2;\n\t/*\t\ttess.elements = (TESSindex*)tess->alloc.memalloc( tess->alloc.userData,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t sizeof(TESSindex) * maxFaceCount * polySize );\n\t\t\tif (!tess->elements)\n\t\t\t{\n\t\t\t\ttess->outOfMemory = 1;\n\t\t\t\treturn;\n\t\t\t}*/\n\t\t\tthis.elements = [];\n\t\t\tthis.elements.length = maxFaceCount * polySize;\n\t\t\t\n\t\t\tthis.vertexCount = maxVertexCount;\n\t/*\t\ttess->vertices = (TESSreal*)tess->alloc.memalloc( tess->alloc.userData,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t sizeof(TESSreal) * tess->vertexCount * vertexSize );\n\t\t\tif (!tess->vertices)\n\t\t\t{\n\t\t\t\ttess->outOfMemory = 1;\n\t\t\t\treturn;\n\t\t\t}*/\n\t\t\tthis.vertices = [];\n\t\t\tthis.vertices.length = maxVertexCount * vertexSize;\n\n\t/*\t\ttess->vertexIndices = (TESSindex*)tess->alloc.memalloc( tess->alloc.userData,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t sizeof(TESSindex) * tess->vertexCount );\n\t\t\tif (!tess->vertexIndices)\n\t\t\t{\n\t\t\t\ttess->outOfMemory = 1;\n\t\t\t\treturn;\n\t\t\t}*/\n\t\t\tthis.vertexIndices = [];\n\t\t\tthis.vertexIndices.length = maxVertexCount;\n\n\t\t\t\n\t\t\t// Output vertices.\n\t\t\tfor ( v = mesh.vHead.next; v !== mesh.vHead; v = v.next )\n\t\t\t{\n\t\t\t\tif ( v.n != -1 )\n\t\t\t\t{\n\t\t\t\t\t// Store coordinate\n\t\t\t\t\tvar idx = v.n * vertexSize;\n\t\t\t\t\tthis.vertices[idx+0] = v.coords[0];\n\t\t\t\t\tthis.vertices[idx+1] = v.coords[1];\n\t\t\t\t\tif ( vertexSize > 2 )\n\t\t\t\t\t\tthis.vertices[idx+2] = v.coords[2];\n\t\t\t\t\t// Store vertex index.\n\t\t\t\t\tthis.vertexIndices[v.n] = v.idx;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Output indices.\n\t\t\tvar nel = 0;\n\t\t\tfor ( f = mesh.fHead.next; f !== mesh.fHead; f = f.next )\n\t\t\t{\n\t\t\t\tif ( !f.inside ) continue;\n\t\t\t\t\n\t\t\t\t// Store polygon\n\t\t\t\tedge = f.anEdge;\n\t\t\t\tfaceVerts = 0;\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\tv = edge.Org;\n\t\t\t\t\tthis.elements[nel++] = v.n;\n\t\t\t\t\tfaceVerts++;\n\t\t\t\t\tedge = edge.Lnext;\n\t\t\t\t}\n\t\t\t\twhile (edge !== f.anEdge);\n\t\t\t\t// Fill unused.\n\t\t\t\tfor (i = faceVerts; i < polySize; ++i)\n\t\t\t\t\tthis.elements[nel++] = -1;\n\n\t\t\t\t// Store polygon connectivity\n\t\t\t\tif ( elementType == Tess2.CONNECTED_POLYGONS )\n\t\t\t\t{\n\t\t\t\t\tedge = f.anEdge;\n\t\t\t\t\tdo\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.elements[nel++] = this.getNeighbourFace_( edge );\n\t\t\t\t\t\tedge = edge.Lnext;\n\t\t\t\t\t}\n\t\t\t\t\twhile (edge !== f.anEdge);\n\t\t\t\t\t// Fill unused.\n\t\t\t\t\tfor (i = faceVerts; i < polySize; ++i)\n\t\t\t\t\t\tthis.elements[nel++] = -1;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t//\tvoid OutputContours( TESStesselator *tess, TESSmesh *mesh, int vertexSize )\n\t\toutputContours_: function( mesh, vertexSize ) {\n\t\t\tvar f;\n\t\t\tvar edge;\n\t\t\tvar start;\n\t\t\tvar verts;\n\t\t\tvar elements;\n\t\t\tvar vertInds;\n\t\t\tvar startVert = 0;\n\t\t\tvar vertCount = 0;\n\n\t\t\tthis.vertexCount = 0;\n\t\t\tthis.elementCount = 0;\n\n\t\t\tfor ( f = mesh.fHead.next; f !== mesh.fHead; f = f.next )\n\t\t\t{\n\t\t\t\tif ( !f.inside ) continue;\n\n\t\t\t\tstart = edge = f.anEdge;\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\tthis.vertexCount++;\n\t\t\t\t\tedge = edge.Lnext;\n\t\t\t\t}\n\t\t\t\twhile ( edge !== start );\n\n\t\t\t\tthis.elementCount++;\n\t\t\t}\n\n\t/*\t\ttess->elements = (TESSindex*)tess->alloc.memalloc( tess->alloc.userData,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t sizeof(TESSindex) * tess->elementCount * 2 );\n\t\t\tif (!tess->elements)\n\t\t\t{\n\t\t\t\ttess->outOfMemory = 1;\n\t\t\t\treturn;\n\t\t\t}*/\n\t\t\tthis.elements = [];\n\t\t\tthis.elements.length = this.elementCount * 2;\n\t\t\t\n\t/*\t\ttess->vertices = (TESSreal*)tess->alloc.memalloc( tess->alloc.userData,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t sizeof(TESSreal) * tess->vertexCount * vertexSize );\n\t\t\tif (!tess->vertices)\n\t\t\t{\n\t\t\t\ttess->outOfMemory = 1;\n\t\t\t\treturn;\n\t\t\t}*/\n\t\t\tthis.vertices = [];\n\t\t\tthis.vertices.length = this.vertexCount * vertexSize;\n\n\t/*\t\ttess->vertexIndices = (TESSindex*)tess->alloc.memalloc( tess->alloc.userData,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t sizeof(TESSindex) * tess->vertexCount );\n\t\t\tif (!tess->vertexIndices)\n\t\t\t{\n\t\t\t\ttess->outOfMemory = 1;\n\t\t\t\treturn;\n\t\t\t}*/\n\t\t\tthis.vertexIndices = [];\n\t\t\tthis.vertexIndices.length = this.vertexCount;\n\n\t\t\tvar nv = 0;\n\t\t\tvar nvi = 0;\n\t\t\tvar nel = 0;\n\t\t\tstartVert = 0;\n\n\t\t\tfor ( f = mesh.fHead.next; f !== mesh.fHead; f = f.next )\n\t\t\t{\n\t\t\t\tif ( !f.inside ) continue;\n\n\t\t\t\tvertCount = 0;\n\t\t\t\tstart = edge = f.anEdge;\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\tthis.vertices[nv++] = edge.Org.coords[0];\n\t\t\t\t\tthis.vertices[nv++] = edge.Org.coords[1];\n\t\t\t\t\tif ( vertexSize > 2 )\n\t\t\t\t\t\tthis.vertices[nv++] = edge.Org.coords[2];\n\t\t\t\t\tthis.vertexIndices[nvi++] = edge.Org.idx;\n\t\t\t\t\tvertCount++;\n\t\t\t\t\tedge = edge.Lnext;\n\t\t\t\t}\n\t\t\t\twhile ( edge !== start );\n\n\t\t\t\tthis.elements[nel++] = startVert;\n\t\t\t\tthis.elements[nel++] = vertCount;\n\n\t\t\t\tstartVert += vertCount;\n\t\t\t}\n\t\t},\n\n\t\taddContour: function( size, vertices )\n\t\t{\n\t\t\tvar e;\n\t\t\tvar i;\n\n\t\t\tif ( this.mesh === null )\n\t\t\t \tthis.mesh = new TESSmesh();\n\t/*\t \tif ( tess->mesh == NULL ) {\n\t\t\t\ttess->outOfMemory = 1;\n\t\t\t\treturn;\n\t\t\t}*/\n\n\t\t\tif ( size < 2 )\n\t\t\t\tsize = 2;\n\t\t\tif ( size > 3 )\n\t\t\t\tsize = 3;\n\n\t\t\te = null;\n\n\t\t\tfor( i = 0; i < vertices.length; i += size )\n\t\t\t{\n\t\t\t\tif( e == null ) {\n\t\t\t\t\t/* Make a self-loop (one vertex, one edge). */\n\t\t\t\t\te = this.mesh.makeEdge();\n\t/*\t\t\t\tif ( e == NULL ) {\n\t\t\t\t\t\ttess->outOfMemory = 1;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}*/\n\t\t\t\t\tthis.mesh.splice( e, e.Sym );\n\t\t\t\t} else {\n\t\t\t\t\t/* Create a new vertex and edge which immediately follow e\n\t\t\t\t\t* in the ordering around the left face.\n\t\t\t\t\t*/\n\t\t\t\t\tthis.mesh.splitEdge( e );\n\t\t\t\t\te = e.Lnext;\n\t\t\t\t}\n\n\t\t\t\t/* The new vertex is now e->Org. */\n\t\t\t\te.Org.coords[0] = vertices[i+0];\n\t\t\t\te.Org.coords[1] = vertices[i+1];\n\t\t\t\tif ( size > 2 )\n\t\t\t\t\te.Org.coords[2] = vertices[i+2];\n\t\t\t\telse\n\t\t\t\t\te.Org.coords[2] = 0.0;\n\t\t\t\t/* Store the insertion number so that the vertex can be later recognized. */\n\t\t\t\te.Org.idx = this.vertexIndexCounter++;\n\n\t\t\t\t/* The winding of an edge says how the winding number changes as we\n\t\t\t\t* cross from the edge''s right face to its left face. We add the\n\t\t\t\t* vertices in such an order that a CCW contour will add +1 to\n\t\t\t\t* the winding number of the region inside the contour.\n\t\t\t\t*/\n\t\t\t\te.winding = 1;\n\t\t\t\te.Sym.winding = -1;\n\t\t\t}\n\t\t},\n\n\t//\tint tessTesselate( TESStesselator *tess, int windingRule, int elementType, int polySize, int vertexSize, const TESSreal* normal )\n\t\ttesselate: function( windingRule, elementType, polySize, vertexSize, normal ) {\n\t\t\tthis.vertices = [];\n\t\t\tthis.elements = [];\n\t\t\tthis.vertexIndices = [];\n\n\t\t\tthis.vertexIndexCounter = 0;\n\t\t\t\n\t\t\tif (normal)\n\t\t\t{\n\t\t\t\tthis.normal[0] = normal[0];\n\t\t\t\tthis.normal[1] = normal[1];\n\t\t\t\tthis.normal[2] = normal[2];\n\t\t\t}\n\n\t\t\tthis.windingRule = windingRule;\n\n\t\t\tif (vertexSize < 2)\n\t\t\t\tvertexSize = 2;\n\t\t\tif (vertexSize > 3)\n\t\t\t\tvertexSize = 3;\n\n\t/*\t\tif (setjmp(tess->env) != 0) { \n\t\t\t\t// come back here if out of memory\n\t\t\t\treturn 0;\n\t\t\t}*/\n\n\t\t\tif (!this.mesh)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/* Determine the polygon normal and project vertices onto the plane\n\t\t\t* of the polygon.\n\t\t\t*/\n\t\t\tthis.projectPolygon_();\n\n\t\t\t/* tessComputeInterior( tess ) computes the planar arrangement specified\n\t\t\t* by the given contours, and further subdivides this arrangement\n\t\t\t* into regions. Each region is marked \"inside\" if it belongs\n\t\t\t* to the polygon, according to the rule given by tess->windingRule.\n\t\t\t* Each interior region is guaranteed be monotone.\n\t\t\t*/\n\t\t\tSweep.computeInterior( this );\n\n\t\t\tvar mesh = this.mesh;\n\n\t\t\t/* If the user wants only the boundary contours, we throw away all edges\n\t\t\t* except those which separate the interior from the exterior.\n\t\t\t* Otherwise we tessellate all the regions marked \"inside\".\n\t\t\t*/\n\t\t\tif (elementType == Tess2.BOUNDARY_CONTOURS) {\n\t\t\t\tthis.setWindingNumber_( mesh, 1, true );\n\t\t\t} else {\n\t\t\t\tthis.tessellateInterior_( mesh ); \n\t\t\t}\n\t//\t\tif (rc == 0) longjmp(tess->env,1); /* could've used a label */\n\n\t\t\tmesh.check();\n\n\t\t\tif (elementType == Tess2.BOUNDARY_CONTOURS) {\n\t\t\t\tthis.outputContours_( mesh, vertexSize ); /* output contours */\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.outputPolymesh_( mesh, elementType, polySize, vertexSize ); /* output polygons */\n\t\t\t}\n\n//\t\t\ttess.mesh = null;\n\n\t\t\treturn true;\n\t\t}\n\t};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tess2/src/tess2.js\n// module id = 19\n// module chunks = 9","export * from \"./lib/core\";\nexport * from \"./lib/graphics\";\nexport * from \"./lib/materials\";\nexport * from \"./lib/parsers\";\nexport * from \"./lib/player\";\nexport * from \"./lib/renderer\";\nexport * from \"./lib/scene\";\nexport * from \"./lib/stage\";\nexport * from \"./lib/view\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/index.js\n// module id = 29\n// module chunks = 9","export * from \"@awayjs/player\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/awayjs-full/dist/lib/player.js\n// module id = 30\n// module chunks = 9","import { ColorTransform } from \"@awayjs/core\";\r\nimport { HierarchicalProperties } from \"@awayjs/scene\";\r\n// also contains global AS2 functions\r\nvar AS2ColorAdapter = (function () {\r\n function AS2ColorAdapter(symbol) {\r\n this._rgb = 0xffffff;\r\n this._symbol = symbol;\r\n this._symbol._blockedByScript = true;\r\n this._target = symbol.adaptee.transform.colorTransform || (symbol.adaptee.transform.colorTransform = new ColorTransform());\r\n this._transform = { ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 100, ab: 0 };\r\n }\r\n AS2ColorAdapter.prototype.getRGB = function () {\r\n return this._rgb;\r\n };\r\n AS2ColorAdapter.prototype.setRGB = function (value) {\r\n this._rgb = value;\r\n var r = (value >> 16) & 0xff;\r\n var g = (value >> 8) & 0xff;\r\n var b = value & 0xff;\r\n this.setTransform({ ra: r / 0xff * 100, ga: g / 0xff * 100, ba: b / 0xff * 100, aa: 100, rb: 0, gb: 0, bb: 0, ab: 0 });\r\n };\r\n AS2ColorAdapter.prototype.getTransform = function () {\r\n return this._transform;\r\n };\r\n AS2ColorAdapter.prototype.setTransform = function (value) {\r\n this._transform = value;\r\n var ct = this._target;\r\n ct.redMultiplier = value.ra === undefined ? 1 : value.ra / 100;\r\n ct.greenMultiplier = value.ga === undefined ? 1 : value.ga / 100;\r\n ct.blueMultiplier = value.ba === undefined ? 1 : value.ba / 100;\r\n ct.alphaMultiplier = value.aa === undefined ? 1 : value.aa / 100;\r\n ct.redOffset = value.rb || 0;\r\n ct.greenOffset = value.gb || 0;\r\n ct.blueOffset = value.bb || 0;\r\n ct.alphaOffset = value.ab || 0;\r\n this._symbol.adaptee.pInvalidateHierarchicalProperties(HierarchicalProperties.COLOR_TRANSFORM);\r\n };\r\n return AS2ColorAdapter;\r\n}());\r\nexport { AS2ColorAdapter };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2ColorAdapter.js","var AS2KeyAdapter = (function () {\r\n function AS2KeyAdapter() {\r\n }\r\n AS2KeyAdapter.addListener = function (listener) {\r\n AS2KeyAdapter._listeners.push(listener);\r\n };\r\n AS2KeyAdapter.removeListener = function (listener) {\r\n var listeners = AS2KeyAdapter._listeners;\r\n var index = listeners.indexOf(listener);\r\n if (index != -1)\r\n listeners.splice(index, 1);\r\n };\r\n AS2KeyAdapter.isDown = function (code) {\r\n return AS2KeyAdapter._keys[code];\r\n };\r\n AS2KeyAdapter.getCode = function () {\r\n return AS2KeyAdapter._key;\r\n };\r\n AS2KeyAdapter.getAscii = function () {\r\n return AS2KeyAdapter._char;\r\n };\r\n AS2KeyAdapter._onKeyDown = function (event) {\r\n AS2KeyAdapter._key = event.keyCode;\r\n AS2KeyAdapter._char = event.charCode;\r\n AS2KeyAdapter._keys[event.keyCode] = true;\r\n var len = AS2KeyAdapter._listeners.length;\r\n for (var i = 0; i < len; i++)\r\n if (AS2KeyAdapter._listeners[i].onKeyDown)\r\n AS2KeyAdapter._listeners[i].onKeyDown();\r\n };\r\n AS2KeyAdapter._onKeyUp = function (event) {\r\n AS2KeyAdapter._keys[event.keyCode] = false;\r\n var len = AS2KeyAdapter._listeners.length;\r\n for (var i = 0; i < len; i++)\r\n if (AS2KeyAdapter._listeners[i].onKeyUp)\r\n AS2KeyAdapter._listeners[i].onKeyUp();\r\n };\r\n return AS2KeyAdapter;\r\n}());\r\nexport { AS2KeyAdapter };\r\nAS2KeyAdapter._keys = new Array();\r\nAS2KeyAdapter._listeners = new Array();\r\nAS2KeyAdapter._addListeners = (function () {\r\n if (typeof document !== \"undefined\") {\r\n document.onkeydown = function (event) { return AS2KeyAdapter._onKeyDown(event); };\r\n document.onkeyup = function (event) { return AS2KeyAdapter._onKeyUp(event); };\r\n }\r\n})();\r\n/**\r\n * Constant associated with the key code value for the Backspace key (8).\r\n */\r\nAS2KeyAdapter.BACKSPACE = 8;\r\n/**\r\n * Constant associated with the key code value for the Caps Lock key (20).\r\n */\r\nAS2KeyAdapter.CAPSLOCK = 20;\r\n/**\r\n * Constant associated with the key code value for the Control key (17).\r\n */\r\nAS2KeyAdapter.CONTROL = 17;\r\n/**\r\n * Constant associated with the key code value for the Delete key (46).\r\n */\r\nAS2KeyAdapter.DELETEKEY = 46;\r\n/**\r\n * Constant associated with the key code value for the Down Arrow key (40).\r\n */\r\nAS2KeyAdapter.DOWN = 40;\r\n/**\r\n * Constant associated with the key code value for the End key (35).\r\n */\r\nAS2KeyAdapter.END = 35;\r\n/**\r\n * Constant associated with the key code value for the Enter key (13).\r\n */\r\nAS2KeyAdapter.ENTER = 13;\r\n/**\r\n * Constant associated with the key code value for the Escape key (27).\r\n */\r\nAS2KeyAdapter.ESCAPE = 27;\r\n/**\r\n * Constant associated with the key code value for the Home key (36).\r\n */\r\nAS2KeyAdapter.HOME = 36;\r\n/**\r\n * Constant associated with the key code value for the Insert key (45).\r\n */\r\nAS2KeyAdapter.INSERT = 45;\r\n/**\r\n * Constant associated with the key code value for the Left Arrow key (37).\r\n */\r\nAS2KeyAdapter.LEFT = 37;\r\n/**\r\n * Constant associated with the key code value for the Page Down key (34).\r\n */\r\nAS2KeyAdapter.PGDN = 34;\r\n/**\r\n * Constant associated with the key code value for the Page Up key (33).\r\n */\r\nAS2KeyAdapter.PGUP = 33;\r\n/**\r\n * Constant associated with the key code value for the Right Arrow key (39).\r\n */\r\nAS2KeyAdapter.RIGHT = 39;\r\n/**\r\n * Constant associated with the key code value for the Shift key (16).\r\n */\r\nAS2KeyAdapter.SHIFT = 16;\r\n/**\r\n * Constant associated with the key code value for the Spacebar (32).\r\n */\r\nAS2KeyAdapter.SPACE = 32;\r\n/**\r\n * Constant associated with the key code value for the Tab key (9).\r\n */\r\nAS2KeyAdapter.TAB = 9;\r\n/**\r\n * Constant associated with the key code value for the Up Arrow key (38).\r\n */\r\nAS2KeyAdapter.UP = 38;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2KeyAdapter.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetEvent, AssetBase } from \"@awayjs/core\";\r\nvar AS2MCSoundProps = (function (_super) {\r\n tslib_1.__extends(AS2MCSoundProps, _super);\r\n function AS2MCSoundProps() {\r\n var _this = _super.call(this) || this;\r\n _this._volume = 1;\r\n _this._pan = 1;\r\n _this._changeEvent = new AssetEvent(AssetEvent.INVALIDATE, _this);\r\n return _this;\r\n }\r\n AS2MCSoundProps.prototype.dispose = function () {\r\n this._audio = null;\r\n this._changeEvent = null;\r\n };\r\n Object.defineProperty(AS2MCSoundProps.prototype, \"volume\", {\r\n get: function () {\r\n return this._volume;\r\n },\r\n set: function (value) {\r\n if (this._volume != value) {\r\n this._volume = value;\r\n this.dispatchEvent(this._changeEvent);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MCSoundProps.prototype, \"pan\", {\r\n get: function () {\r\n return this._pan;\r\n },\r\n set: function (value) {\r\n if (this._pan != value) {\r\n this._pan = value;\r\n this.dispatchEvent(this._changeEvent);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MCSoundProps.prototype, \"audio\", {\r\n get: function () {\r\n return this._audio;\r\n },\r\n set: function (value) {\r\n if (this._audio)\r\n this._audio.stop();\r\n this._audio = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AS2MCSoundProps;\r\n}(AssetBase));\r\nexport { AS2MCSoundProps };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2MCSoundProps.js","var AS2MouseAdapter = (function () {\r\n function AS2MouseAdapter() {\r\n }\r\n // this does nothing really, just to catch usage in scripts\r\n AS2MouseAdapter.addListener = function (listener) {\r\n AS2MouseAdapter._globalListeners.push(listener);\r\n // TODO: Init actual mouse events here, relative to root MovieClip (I suppose?)\r\n };\r\n return AS2MouseAdapter;\r\n}());\r\nexport { AS2MouseAdapter };\r\nAS2MouseAdapter._globalListeners = [];\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2MouseAdapter.js","import { ColorTransform } from \"@awayjs/core\";\r\nimport { HierarchicalProperties, FrameScriptManager } from \"@awayjs/scene\";\r\n// also contains global AS2 gunctions\r\nvar AS2SymbolAdapter = (function () {\r\n function AS2SymbolAdapter(adaptee, view) {\r\n this.__quality = \"high\";\r\n this._adaptee = adaptee;\r\n this._adaptee.adapter = this;\r\n this._view = view;\r\n this._blockedByScript = false;\r\n if (AS2SymbolAdapter.REFERENCE_TIME === -1)\r\n AS2SymbolAdapter.REFERENCE_TIME = Date.now();\r\n }\r\n AS2SymbolAdapter.prototype.isBlockedByScript = function () { return this._blockedByScript; };\r\n AS2SymbolAdapter.prototype.isVisibilityByScript = function () { return this._visibilityByScript; };\r\n AS2SymbolAdapter.prototype.freeFromScript = function () { this._blockedByScript = false; this._visibilityByScript = false; };\r\n AS2SymbolAdapter.prototype.dispose = function () {\r\n this._adaptee.dispose();\r\n this._adaptee = null;\r\n this._view = null;\r\n };\r\n AS2SymbolAdapter.prototype.getVersion = function () {\r\n return 0;\r\n };\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"adaptee\", {\r\n get: function () {\r\n return this._adaptee;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_height\", {\r\n get: function () {\r\n return this._adaptee.height;\r\n },\r\n set: function (value) {\r\n this._adaptee.height = value;\r\n this._blockedByScript = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_name\", {\r\n get: function () {\r\n return this._adaptee.name;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_rotation\", {\r\n get: function () {\r\n return this._adaptee.rotationZ;\r\n },\r\n set: function (value) {\r\n this._adaptee.rotationZ = value;\r\n this._blockedByScript = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_x\", {\r\n get: function () {\r\n return this._adaptee.x;\r\n },\r\n set: function (value) {\r\n this._adaptee.x = value;\r\n this._blockedByScript = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_xmouse\", {\r\n get: function () {\r\n return this._view.getLocalMouseX(this._adaptee);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_y\", {\r\n get: function () {\r\n return this._adaptee.y;\r\n },\r\n set: function (value) {\r\n this._adaptee.y = value;\r\n this._blockedByScript = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_ymouse\", {\r\n get: function () {\r\n return this._view.getLocalMouseY(this._adaptee);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_xscale\", {\r\n get: function () {\r\n return this._adaptee.scaleX * 100;\r\n },\r\n set: function (value) {\r\n this._adaptee.scaleX = value / 100;\r\n this._blockedByScript = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_yscale\", {\r\n get: function () {\r\n return this._adaptee.scaleY * 100;\r\n },\r\n set: function (value) {\r\n this._adaptee.scaleY = value / 100;\r\n this._blockedByScript = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_visible\", {\r\n get: function () {\r\n return this._adaptee.visible;\r\n },\r\n set: function (value) {\r\n this._adaptee.visible = value;\r\n this._visibilityByScript = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_width\", {\r\n get: function () {\r\n return this._adaptee.width;\r\n },\r\n set: function (value) {\r\n this._adaptee.width = value;\r\n this._blockedByScript = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_touchpoints\", {\r\n get: function () {\r\n return this._view.getLocalTouchPoints(this._adaptee);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AS2SymbolAdapter.prototype.getDepth = function () {\r\n return this._adaptee.z;\r\n };\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_quality\", {\r\n // just assure consistency for scripts, doesn't actually effect rendering.\r\n get: function () {\r\n return this.__quality;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"quality\", {\r\n set: function (value) {\r\n this.__quality = value;\r\n // this._blockedByScript=true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AS2SymbolAdapter.prototype.trace = function (message) {\r\n console.log(message);\r\n };\r\n // may need proper high-def timer mechanism\r\n AS2SymbolAdapter.prototype.getTimer = function () {\r\n return Date.now() - AS2SymbolAdapter.REFERENCE_TIME;\r\n };\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_alpha\", {\r\n get: function () {\r\n return this.adaptee.transform.colorTransform ? (this.adaptee.transform.colorTransform.alphaMultiplier * 100) : 100;\r\n },\r\n set: function (value) {\r\n if (!this.adaptee.transform.colorTransform)\r\n this.adaptee.transform.colorTransform = new ColorTransform();\r\n this.adaptee.transform.colorTransform.alphaMultiplier = value / 100;\r\n this.adaptee.pInvalidateHierarchicalProperties(HierarchicalProperties.COLOR_TRANSFORM);\r\n this._blockedByScript = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_url\", {\r\n get: function () {\r\n return document.URL;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_global\", {\r\n get: function () {\r\n return null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_level0\", {\r\n get: function () {\r\n return this._root;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AS2SymbolAdapter.prototype.clearInterval = function (handle) {\r\n FrameScriptManager.clearInterval(handle); //window.clearInterval(handle);\r\n return;\r\n };\r\n AS2SymbolAdapter.prototype.setInterval = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var scope;\r\n var func;\r\n if (typeof (args[0]) == \"function\") {\r\n scope = this;\r\n func = args[0];\r\n }\r\n else {\r\n //remove scope variable from args\r\n scope = args.shift();\r\n //reformat function string to actual function variable in the scope\r\n func = scope[args[0]];\r\n }\r\n //wrap function to maintain scope\r\n args[0] = function () { func.apply(scope, arguments); };\r\n return FrameScriptManager.setInterval(args[0]); // window.setInterval.apply(window, args);\r\n };\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_level10301\", {\r\n // temporary:\r\n get: function () {\r\n return this._root;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_root\", {\r\n get: function () {\r\n if (!this.__root) {\r\n var p = this._parent;\r\n // parents are always MovieClips\r\n this.__root = p ? p._root : this;\r\n }\r\n return this.__root;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AS2SymbolAdapter.prototype.random = function (range) {\r\n return Math.floor(Math.random() * range);\r\n };\r\n Object.defineProperty(AS2SymbolAdapter.prototype, \"_parent\", {\r\n get: function () {\r\n var parent = this.adaptee.parent;\r\n return parent ? parent._adapter : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AS2SymbolAdapter;\r\n}());\r\nexport { AS2SymbolAdapter };\r\nAS2SymbolAdapter.REFERENCE_TIME = -1;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2SymbolAdapter.js","// also contains global AS2 functions\r\nvar AS2SystemAdapter = (function () {\r\n function AS2SystemAdapter() {\r\n }\r\n return AS2SystemAdapter;\r\n}());\r\nexport { AS2SystemAdapter };\r\nAS2SystemAdapter.security = null;\r\nAS2SystemAdapter.capabilities = { version: 6 };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2SystemAdapter.js","import { AssetEvent, AssetLibrary, AudioManager } from \"@awayjs/core\";\r\nimport { ContextGLES } from \"@awayjs/stage\";\r\nimport { AS2MCSoundProps } from \"./AS2MCSoundProps\";\r\n// also contains global AS2 functions\r\nvar AS2SoundAdapter = (function () {\r\n // TODO: Any real Sound stuff should be externalized for AwayJS use. For now use internally since it's only 2D.\r\n function AS2SoundAdapter(target) {\r\n var _this = this;\r\n this._loop = false;\r\n this._name = \"\";\r\n this._id = -1;\r\n this._playing = false;\r\n this._volume = 0; // uses this vol property on sound.\r\n // not sure how to handle target yet\r\n this._id = AS2SoundAdapter._soundIDCnt++;\r\n this._target = target;\r\n this._soundProps = (target != null && target.__pSoundProps) ? this._target.__pSoundProps : AS2SoundAdapter._globalSoundProps;\r\n this._onGlobalChangeDelegate = function (event) { return _this.onGlobalChange(event); };\r\n AS2SoundAdapter._globalSoundProps.addEventListener(AssetEvent.INVALIDATE, this._onGlobalChangeDelegate);\r\n }\r\n Object.defineProperty(AS2SoundAdapter.prototype, \"onSoundComplete\", {\r\n set: function (value) {\r\n this._soundProps.audio.onSoundComplete = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AS2SoundAdapter.prototype.attachSound = function (id) {\r\n this._name = id.replace(\".wav\", \"\").replace(\".mp3\", \"\").replace(/[^a-zA-Z0-9_]/g, '').toLowerCase();\r\n var asset = AssetLibrary.getAsset(this._name);\r\n if (asset)\r\n this._soundProps.audio = asset.clone();\r\n else {\r\n console.log(\"audio-asset not found \" + this._name);\r\n }\r\n this.updateVolume();\r\n };\r\n /*getBytesLoaded():number\r\n {\r\n return 1;\r\n }\r\n\r\n getBytesTotal():number\r\n {\r\n return 1;\r\n }*/\r\n AS2SoundAdapter.prototype.getPan = function () {\r\n return this._soundProps.pan * 100;\r\n };\r\n AS2SoundAdapter.prototype.setPan = function (value) {\r\n this._soundProps.pan = value / 100;\r\n if (AudioManager.getExternalSoundInterface()) {\r\n }\r\n else if (this._soundProps.audio)\r\n this._soundProps.audio.pan = value / 100;\r\n };\r\n /*getTransform():Object\r\n {\r\n return this._transform;\r\n }\r\n\r\n setTransform(value:Object):void\r\n {\r\n this._transform = value;\r\n }*/\r\n AS2SoundAdapter.prototype.getVolume = function () {\r\n return this._soundProps.volume * 100;\r\n };\r\n AS2SoundAdapter.prototype.setVolume = function (value) {\r\n this._soundProps.volume = value / 100;\r\n this.updateVolume();\r\n };\r\n /*loadSound(url:string, isStreaming:boolean):void\r\n {\r\n this.disposeAudio();\r\n // how to handle isStreaming == false? Manually?\r\n this._soundProps.audio = new Audio();\r\n this._soundProps.audio.src = url;\r\n this.initAudio();\r\n }*/\r\n AS2SoundAdapter.prototype.start = function (offsetInSeconds, loops) {\r\n if (offsetInSeconds === void 0) { offsetInSeconds = 0; }\r\n if (loops === void 0) { loops = 0; }\r\n this._playing = true;\r\n this._loop = Boolean(loops > 0);\r\n if (AudioManager.getExternalSoundInterface()) {\r\n ContextGLES.startSound(this._name, this._id, this._volume, this._loop);\r\n //AudioManager.getExternalSoundInterface().startSound(this._name, this._id, this._volume, this._loop);\r\n return;\r\n }\r\n if (this._soundProps.audio) {\r\n this._soundProps.audio.play(offsetInSeconds, this._loop);\r\n return;\r\n }\r\n //console.log(\"Calling AS2SoundAdapter.start() was not successfull. Audio not set for this sound.\")\r\n };\r\n AS2SoundAdapter.prototype.stop = function (linkageID) {\r\n if (linkageID === void 0) { linkageID = null; }\r\n if (!this._playing)\r\n return;\r\n this._playing = false;\r\n if (AudioManager.getExternalSoundInterface()) {\r\n ContextGLES.stopSound(this._id);\r\n //AudioManager.getExternalSoundInterface().stopSound(this._id);\r\n return;\r\n }\r\n else if (this._soundProps.audio) {\r\n this._soundProps.audio.stop();\r\n return;\r\n }\r\n //console.log(\"Calling AS2SoundAdapter.stop() was not successfull. Audio not set for this sound.\")\r\n };\r\n Object.defineProperty(AS2SoundAdapter.prototype, \"position\", {\r\n get: function () {\r\n if (this._soundProps.audio)\r\n return this._soundProps.audio.currentTime;\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SoundAdapter.prototype, \"duration\", {\r\n get: function () {\r\n if (this._soundProps.audio)\r\n return this._soundProps.audio.duration;\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2SoundAdapter.prototype, \"id3\", {\r\n get: function () {\r\n return {};\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AS2SoundAdapter.prototype.onGlobalChange = function (event) {\r\n this.updateVolume();\r\n };\r\n AS2SoundAdapter.prototype.updateVolume = function () {\r\n var vol = this._soundProps.volume * AS2SoundAdapter._globalSoundProps.volume;\r\n if (vol > 1)\r\n vol = 1;\r\n if (vol < 0)\r\n vol = 0;\r\n vol = Math.round(vol * 100) / 100;\r\n //if(this._volume == vol)\r\n //\treturn;\r\n this._volume = vol;\r\n if (AudioManager.getExternalSoundInterface()) {\r\n if (this._playing) {\r\n ContextGLES.updateSound(this._id, this._volume, this._loop);\r\n }\r\n }\r\n else if (this._soundProps.audio)\r\n this._soundProps.audio.volume = this._volume;\r\n };\r\n return AS2SoundAdapter;\r\n}());\r\nexport { AS2SoundAdapter };\r\nAS2SoundAdapter._globalSoundProps = new AS2MCSoundProps();\r\nAS2SoundAdapter._soundIDCnt = 0;\r\nexport default AS2SoundAdapter;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2SoundAdapter.js","var AS2StageAdapter = (function () {\r\n function AS2StageAdapter() {\r\n }\r\n return AS2StageAdapter;\r\n}());\r\nexport { AS2StageAdapter };\r\n// this does nothing really, just to catch usage in scripts\r\nAS2StageAdapter.showMenu = true;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2StageAdapter.js","var AS2SharedObjectAdapter = (function () {\r\n function AS2SharedObjectAdapter(name) {\r\n this._object_name = name;\r\n if (typeof (Storage) !== \"undefined\") {\r\n this.data = JSON.parse(localStorage.getItem(name));\r\n }\r\n if (this.data == null) {\r\n console.log(\"no shared object found\");\r\n this.data = {};\r\n }\r\n }\r\n // should become a static\r\n AS2SharedObjectAdapter.getLocal = function (name, localPath, secure) {\r\n return new AS2SharedObjectAdapter(name);\r\n };\r\n // needs to stay as it is\r\n AS2SharedObjectAdapter.prototype.flush = function () {\r\n if (typeof (Storage) !== \"undefined\") {\r\n localStorage.setItem(this._object_name, JSON.stringify(this.data));\r\n }\r\n else {\r\n console.log(\"no local storage available\");\r\n }\r\n // save all local data to wherever it needs to go\r\n };\r\n return AS2SharedObjectAdapter;\r\n}());\r\nexport { AS2SharedObjectAdapter };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2SharedObjectAdapter.js","import * as tslib_1 from \"tslib\";\r\nimport { AssetEvent, Point, AssetLibrary, URLRequest, LoaderEvent } from \"@awayjs/core\";\r\nimport { LoaderContainer, MovieClip, MouseEvent } from \"@awayjs/scene\";\r\nimport { AS2SymbolAdapter } from \"./AS2SymbolAdapter\";\r\nimport { AS2MCSoundProps } from \"./AS2MCSoundProps\";\r\nimport { AS2ColorAdapter } from \"./AS2ColorAdapter\";\r\nimport { AS2SystemAdapter } from \"./AS2SystemAdapter\";\r\nimport { AS2SoundAdapter } from \"./AS2SoundAdapter\";\r\nimport { AS2KeyAdapter } from \"./AS2KeyAdapter\";\r\nimport { AS2MouseAdapter } from \"./AS2MouseAdapter\";\r\nimport { AS2StageAdapter } from \"./AS2StageAdapter\";\r\nimport { AS2SharedObjectAdapter } from \"./AS2SharedObjectAdapter\";\r\nvar includeString = 'var Color\t\t\t= this._includes.Color;\\n' +\r\n 'var System\t\t\t\t= this._includes.System;\\n' +\r\n 'var Sound\t\t\t\t= this._includes.Sound;\\n' +\r\n 'var Key\t\t\t\t= this._includes.Key;\\n' +\r\n 'var Mouse\t\t\t\t= this._includes.Mouse;\\n' +\r\n 'var Stage\t\t\t\t= this._includes.Stage;\\n' +\r\n 'var SharedObject\t\t= this._includes.SharedObject;\\n' +\r\n 'var int = function (value) { return (value>=0?1:-1)* Math.floor(Math.abs(value))};\\n' +\r\n 'var string = function(value) {return value.toString();}\\n' +\r\n 'var getURL = function(value) {window.open(value,\"_blank\");}\\n\\n';\r\nvar AS2MovieClipAdapter = (function (_super) {\r\n tslib_1.__extends(AS2MovieClipAdapter, _super);\r\n function AS2MovieClipAdapter(adaptee, view) {\r\n var _this = \r\n // create an empty MovieClip if none is passed\r\n _super.call(this, adaptee, view) || this;\r\n _this._includes = {\r\n Color: AS2ColorAdapter,\r\n System: AS2SystemAdapter,\r\n Sound: AS2SoundAdapter,\r\n Key: AS2KeyAdapter,\r\n Mouse: AS2MouseAdapter,\r\n Stage: AS2StageAdapter,\r\n SharedObject: AS2SharedObjectAdapter\r\n };\r\n _this.__pSoundProps = new AS2MCSoundProps();\r\n _this._onLoaderCompleteDelegate = function (event) { return _this.onLoaderComplete(event); };\r\n _this._onAssetCompleteDelegate = function (event) { return _this.onAssetComplete(event); };\r\n return _this;\r\n }\r\n AS2MovieClipAdapter.prototype.loadMovie = function (url, method) {\r\n if (method === void 0) { method = null; }\r\n this._loader = new LoaderContainer();\r\n this._loader.addEventListener(LoaderEvent.LOAD_COMPLETE, this._onLoaderCompleteDelegate);\r\n this._loader.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\r\n this._loader.load(new URLRequest(url));\r\n };\r\n AS2MovieClipAdapter.prototype.onLoaderComplete = function (event) {\r\n console.log(\"loaded url!\");\r\n this._loader.removeEventListener(LoaderEvent.LOAD_COMPLETE, this._onLoaderCompleteDelegate);\r\n this._loader.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\r\n this._loader = null;\r\n //todo: dispose loader ?\r\n };\r\n AS2MovieClipAdapter.prototype.onAssetComplete = function (event) {\r\n event.asset;\r\n if (event.asset.isAsset(MovieClip)) {\r\n var awayMC = event.asset;\r\n // if this is the \"Scene 1\", we transfer the timeline into the mc that is loading the movie\r\n if (event.asset.name == \"Scene 1\" || event.asset.name == \"main\") {\r\n //this.adaptee.addChild(awayMC);\r\n this._adaptee.timeline = awayMC.timeline;\r\n this._adaptee.reset();\r\n this.gotoAndPlay(1);\r\n }\r\n }\r\n };\r\n AS2MovieClipAdapter.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n this.__pSoundProps.dispose();\r\n this.__pSoundProps = null;\r\n };\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"_framesloaded\", {\r\n get: function () {\r\n // not loading frame by frame?\r\n return this._adaptee.numFrames;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"_currentframe\", {\r\n get: function () {\r\n return this._adaptee.currentFrameIndex + 1;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"_totalframes\", {\r\n get: function () {\r\n return this._adaptee.numFrames;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"enabled\", {\r\n get: function () {\r\n return this._adaptee.mouseEnabled;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AS2MovieClipAdapter.prototype.evalScript = function (str) {\r\n var tag = document.createElement('script');\r\n tag.text = 'var __framescript__ = function() {\\n' + includeString + str + '\\n}';\r\n //add and remove script tag to dom to trigger compilation\r\n var sibling = document.scripts[0];\r\n sibling.parentNode.insertBefore(tag, sibling).parentNode.removeChild(tag);\r\n var script = __framescript__;\r\n window['__framescript__'] = null;\r\n return script;\r\n };\r\n //attachAudio(id: AS2SoundAdapter):void {\t}\r\n //attachBitmap(bmp: BitmapImage2D, depth: Number, pixelSnapping: String = null, smoothing: boolean = false):void { }\r\n AS2MovieClipAdapter.prototype.attachMovie = function (id, name, depth, initObject) {\r\n if (initObject === void 0) { initObject = null; }\r\n var adapter = new AS2MovieClipAdapter(MovieClip.getNewMovieClip(), this._view);\r\n AssetLibrary.getAsset(id).adaptee.copyTo(adapter.adaptee);\r\n this._adaptee.addChildAtDepth(adapter.adaptee, depth);\r\n adapter.adaptee.name = name;\r\n this.registerScriptObject(adapter.adaptee);\r\n return adapter;\r\n };\r\n //beginBitmapFill(bmp: BitmapImage2D, matrix: Matrix = null, repeat: boolean = false, smoothing: boolean = false):void {}\r\n //beginFill(rgb: Number, alpha: number = 1.0):void {}\r\n //beginGradientFill(fillType: string, colors: Array, alphas: Array, ratios: Array, matrix: Object, spreadMethod: string = null, interpolationMethod: string = null, focalPointRatio: number = null):void {}\r\n //clear():void {}\r\n AS2MovieClipAdapter.prototype.createEmptyMovieClip = function (name, depth) {\r\n var adapter = new AS2MovieClipAdapter(MovieClip.getNewMovieClip(), this._view);\r\n adapter.adaptee.name = name;\r\n this.adaptee.addChildAtDepth(adapter.adaptee, depth);\r\n this.registerScriptObject(adapter.adaptee);\r\n return adapter;\r\n };\r\n //createTextField(instanceName: String, depth: Number, x: Number, y: Number, width: Number, height: Number):TextField {}\r\n //curveTo(controlX: number, controlY: number, anchorX: number, anchorY: number):void {}\r\n AS2MovieClipAdapter.prototype.duplicateMovieClip = function (name, depth, initObject) {\r\n var duplicate = this.clone();\r\n duplicate.adaptee.name = name;\r\n if (initObject)\r\n for (var key in initObject)\r\n if (duplicate.hasOwnProperty(key))\r\n duplicate[key] = initObject[key];\r\n this._adaptee.parent.addChildAtDepth(duplicate.adaptee, depth);\r\n return duplicate;\r\n };\r\n //endFill():void {}\r\n //getBounds(bounds: Object):Object { return null; }\r\n // not applicable?\r\n AS2MovieClipAdapter.prototype.getBytesLoaded = function () { return 1; };\r\n // not applicable?\r\n AS2MovieClipAdapter.prototype.getBytesTotal = function () { return 1; };\r\n AS2MovieClipAdapter.prototype.getInstanceAtDepth = function (depth) {\r\n return this._adaptee.getChildAtDepth(depth);\r\n };\r\n AS2MovieClipAdapter.prototype.getNextHighestDepth = function () {\r\n return this._adaptee.getNextHighestDepth();\r\n };\r\n //getRect(bounds: Object):Object { return null; }\r\n //getSWFVersion():number { return 0; }\r\n //getTextSnapshot():TextSnapshot {}\r\n //getURL(url: string, window: string, method: string):void {}\r\n AS2MovieClipAdapter.prototype.globalToLocal = function (pt) {\r\n var newPoint = this._adaptee.globalToLocal(new Point(pt.x, pt.y));\r\n pt.x = newPoint.x;\r\n pt.y = newPoint.y;\r\n };\r\n AS2MovieClipAdapter.prototype.gotoAndPlay = function (frame) {\r\n if (frame == null)\r\n return;\r\n this.play();\r\n this._gotoFrame(frame);\r\n };\r\n AS2MovieClipAdapter.prototype.gotoAndStop = function (frame) {\r\n if (frame == null)\r\n return;\r\n this.stop();\r\n this._gotoFrame(frame);\r\n };\r\n AS2MovieClipAdapter.prototype.play = function () {\r\n this._adaptee.play();\r\n };\r\n AS2MovieClipAdapter.prototype.stop = function () {\r\n this._adaptee.stop();\r\n };\r\n AS2MovieClipAdapter.prototype.hitTest = function (x, y, shapeFlag) {\r\n if (shapeFlag === void 0) { shapeFlag = false; }\r\n return this._adaptee.hitTestPoint(x, y, shapeFlag);\r\n };\r\n //lineGradientStyle(fillType: string, colors: array, alphas: array, ratios: array, matrix: Object, spreadMethod: string = null, interpolationMethod: string, focalPointRatio: number):void {}\r\n //lineStyle(thickness: number, rgb: number, alpha: number, pixelHinting: boolean, noScale: string, capsStyle: string, jointStyle: string, miterLimit: number):void {}\r\n //lineTo(x: number, y: number):void {}\r\n //loadMovie(url: string, method: string = null):void {}\r\n //loadVariables(url: string, method: string = null):void {}\r\n AS2MovieClipAdapter.prototype.localToGlobal = function (pt) {\r\n var newPoint = this._adaptee.localToGlobal(new Point(pt.x, pt.y));\r\n pt.x = newPoint.x;\r\n pt.y = newPoint.y;\r\n };\r\n //moveTo(x: number, y: number):void {}\r\n AS2MovieClipAdapter.prototype.nextFrame = function () {\r\n ++this._adaptee.currentFrameIndex;\r\n };\r\n AS2MovieClipAdapter.prototype.prevFrame = function () {\r\n --this._adaptee.currentFrameIndex;\r\n };\r\n AS2MovieClipAdapter.prototype.removeMovieClip = function () {\r\n if (this._adaptee.parent) {\r\n this._adaptee.parent.removeChild(this._adaptee);\r\n }\r\n };\r\n AS2MovieClipAdapter.prototype.setMask = function (mc) {\r\n this._adaptee.masks = [mc];\r\n };\r\n //startDrag(lockCenter: boolean = false, left: number = 0, top: number = 0, right: number = 0, bottom: number = 0):void {}\r\n //stopDrag():void {}\r\n AS2MovieClipAdapter.prototype.swapDepths = function (target) {\r\n var parent = this._adaptee.parent;\r\n if (parent != null && target.parent == parent)\r\n parent.swapChildren(this._adaptee, target);\r\n };\r\n //unloadMovie():void {}\r\n AS2MovieClipAdapter.prototype.clone = function () {\r\n var clone = new AS2MovieClipAdapter(MovieClip.getNewMovieClip(), this._view);\r\n this.adaptee.copyTo(clone.adaptee);\r\n return clone;\r\n };\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"onEnterFrame\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._onEnterFrame;\r\n },\r\n set: function (value) {\r\n this._onEnterFrame = this._replaceEventListener(AssetEvent.ENTER_FRAME, this._onEnterFrame, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"onRollOut\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._onRollOut;\r\n },\r\n set: function (value) {\r\n this._onRollOut = this._replaceEventListener(MouseEvent.MOUSE_OUT, this._onRollOut, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"onRollOver\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._onRollOver;\r\n },\r\n set: function (value) {\r\n this._onRollOver = this._replaceEventListener(MouseEvent.MOUSE_OVER, this._onRollOver, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"onRelease\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._onRelease;\r\n },\r\n set: function (value) {\r\n this._onRelease = this._replaceEventListener(MouseEvent.MOUSE_UP, this._onRelease, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"onPress\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._onPress;\r\n },\r\n set: function (value) {\r\n this._onPress = this._replaceEventListener(MouseEvent.MOUSE_DOWN, this._onPress, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"onMouseDown\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._onMouseDown;\r\n },\r\n set: function (value) {\r\n this._onMouseDown = this._replaceEventListener(MouseEvent.MOUSE_DOWN, this._onMouseDown, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"onMouseUp\", {\r\n /**\r\n *\r\n */\r\n get: function () {\r\n return this._onMouseUp;\r\n },\r\n set: function (value) {\r\n this._onMouseUp = this._replaceEventListener(MouseEvent.MOUSE_UP, this._onMouseUp, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2MovieClipAdapter.prototype, \"onMouseWheel\", {\r\n get: function () {\r\n return this._onMouseWheel;\r\n },\r\n set: function (value) {\r\n var mc = this.adaptee;\r\n if (this._onMouseWheel)\r\n mc.removeEventListener(MouseEvent.MOUSE_WHEEL, this._onMouseWheel);\r\n if (value) {\r\n var self = this;\r\n var delegate = function (event) { return value.call(self, event); };\r\n mc.addEventListener(MouseEvent.MOUSE_WHEEL, delegate);\r\n this._onMouseWheel = delegate;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AS2MovieClipAdapter.prototype.registerScriptObject = function (child) {\r\n if (child.name)\r\n this[child.name] = child._adapter ? child.adapter : child;\r\n };\r\n AS2MovieClipAdapter.prototype.unregisterScriptObject = function (child) {\r\n delete this[child.name];\r\n if (child.isAsset(MovieClip))\r\n child.removeButtonListeners();\r\n };\r\n AS2MovieClipAdapter.prototype._gotoFrame = function (frame) {\r\n var mc = this.adaptee;\r\n if (typeof frame === \"string\")\r\n mc.jumpToLabel(frame);\r\n else\r\n mc.currentFrameIndex = frame - 1;\r\n };\r\n AS2MovieClipAdapter.prototype._replaceEventListener = function (eventType, currentListener, newListener) {\r\n var mc = this.adaptee;\r\n if (currentListener)\r\n mc.removeEventListener(eventType, currentListener);\r\n if (newListener) {\r\n var self = this;\r\n var delegate = function () { return newListener.call(self); };\r\n mc.addEventListener(eventType, delegate);\r\n }\r\n return delegate;\r\n };\r\n return AS2MovieClipAdapter;\r\n}(AS2SymbolAdapter));\r\nexport { AS2MovieClipAdapter };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2MovieClipAdapter.js","import * as tslib_1 from \"tslib\";\r\nimport { TextField } from \"@awayjs/scene\";\r\nimport { AS2SymbolAdapter } from \"./AS2SymbolAdapter\";\r\nvar AS2TextFieldAdapter = (function (_super) {\r\n tslib_1.__extends(AS2TextFieldAdapter, _super);\r\n function AS2TextFieldAdapter(adaptee, view) {\r\n var _this = _super.call(this, adaptee, view) || this;\r\n adaptee.multiline = true;\r\n adaptee.wordWrap = true;\r\n return _this;\r\n }\r\n AS2TextFieldAdapter.prototype.clone = function () {\r\n var clone = new AS2TextFieldAdapter(TextField.getNewTextField(), this._view);\r\n this.adaptee.copyTo(clone.adaptee);\r\n return clone;\r\n };\r\n Object.defineProperty(AS2TextFieldAdapter.prototype, \"textColor\", {\r\n get: function () {\r\n return this._adaptee.textColor;\r\n },\r\n set: function (value) {\r\n this._adaptee.textColor = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2TextFieldAdapter.prototype, \"embedFonts\", {\r\n get: function () {\r\n return this._embedFonts;\r\n },\r\n set: function (value) {\r\n this._embedFonts = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AS2TextFieldAdapter.prototype, \"text\", {\r\n get: function () {\r\n return this._adaptee.text;\r\n },\r\n set: function (value) {\r\n this._adaptee.text = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AS2TextFieldAdapter;\r\n}(AS2SymbolAdapter));\r\nexport { AS2TextFieldAdapter };\r\nexport default AS2TextFieldAdapter;\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/adapters/AS2TextFieldAdapter.js","import * as tslib_1 from \"tslib\";\r\nimport { TextField, MovieClip } from \"@awayjs/scene\";\r\nimport { DefaultSceneGraphFactory } from \"@awayjs/parsers\";\r\nimport { AS2MovieClipAdapter } from \"../adapters/AS2MovieClipAdapter\";\r\nimport { AS2TextFieldAdapter } from \"../adapters/AS2TextFieldAdapter\";\r\nvar AS2SceneGraphFactory = (function (_super) {\r\n tslib_1.__extends(AS2SceneGraphFactory, _super);\r\n function AS2SceneGraphFactory(view) {\r\n var _this = _super.call(this) || this;\r\n _this._view = view;\r\n return _this;\r\n }\r\n AS2SceneGraphFactory.prototype.createMovieClip = function (timeline) {\r\n if (timeline === void 0) { timeline = null; }\r\n return new AS2MovieClipAdapter(new MovieClip(timeline), this._view).adaptee;\r\n };\r\n AS2SceneGraphFactory.prototype.createTextField = function () {\r\n return new AS2TextFieldAdapter(new TextField(), this._view).adaptee;\r\n };\r\n return AS2SceneGraphFactory;\r\n}(DefaultSceneGraphFactory));\r\nexport { AS2SceneGraphFactory };\r\n\n\n\n// WEBPACK FOOTER //\n// ../dist/lib/factories/AS2SceneGraphFactory.js"],"sourceRoot":""}