//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//       LottieGen version:
//           8.1.240821.1+077322fa26
//       
//       Command:
//           LottieGen -Language CSharp -Public -WinUIVersion 3.0 -InputFile Deployment.json
//       
//       Input file:
//           Deployment.json (56792 bytes created 12:18+02:00 Nov 24 2024)
//       
//       LottieGen source:
//           http://aka.ms/Lottie
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
// ____________________________________
// |       Object stats       | Count |
// |__________________________|_______|
// | All CompositionObjects   |    68 |
// |--------------------------+-------|
// | Expression animators     |     1 |
// | KeyFrame animators       |     3 |
// | Reference parameters     |     1 |
// | Expression operations    |     0 |
// |--------------------------+-------|
// | Animated brushes         |     - |
// | Animated gradient stops  |     - |
// | ExpressionAnimations     |     1 |
// | PathKeyFrameAnimations   |     - |
// |--------------------------+-------|
// | ContainerVisuals         |     3 |
// | ShapeVisuals             |     3 |
// |--------------------------+-------|
// | ContainerShapes          |     2 |
// | CompositionSpriteShapes  |     4 |
// |--------------------------+-------|
// | Brushes                  |     6 |
// | Gradient stops           |     - |
// | CompositionVisualSurface |     2 |
// ------------------------------------
using Microsoft.Graphics;
using Microsoft.Graphics.Canvas;
using Microsoft.Graphics.Canvas.Effects;
using Microsoft.Graphics.Canvas.Geometry;
using Microsoft.UI.Composition;
using System;
using System.Collections.Generic;
using System.Numerics;
using Windows.UI;

namespace AnimatedVisuals
{
    // Name:        install
    // Frame rate:  24 fps
    // Frame count: 28
    // Duration:    1166.7 mS
    // _____________________________________________________________________________________________
    // |           Marker           |           Constant           | Frame |   mS   |   Progress   |
    // |____________________________|______________________________|_______|________|______________|
    // | NormalToPressed_Start      | M_NormalToPressed_Start      |     0 |    0.0 | 0F           |
    // | NormalToPressed_End        | M_NormalToPressed_End        |     9 |  375.0 | 0.323214293F |
    // | PointerOverToPressed_Start | M_PointerOverToPressed_Start |     9 |  375.0 | 0.323214293F |
    // | PointerOverToPressed_End   | M_PointerOverToPressed_End   |    19 |  791.7 | 0.680357158F |
    // | PressedToNormal_Start      | M_PressedToNormal_Start      |    20 |  833.3 | 0.716071427F |
    // | PressedToNormal_End        | M_PressedToNormal_End        |    28 | 1166.7 | 1F           |
    // | PressedToPointerOver_Start | M_PressedToPointerOver_Start |    28 | 1166.7 | 1F           |
    // | PressedToPointerOver_End   | M_PressedToPointerOver_End   |    28 | 1166.7 | 1F           |
    // ---------------------------------------------------------------------------------------------
    sealed partial class Deployment
        : Microsoft.UI.Xaml.Controls.IAnimatedVisualSource
        , Microsoft.UI.Xaml.Controls.IAnimatedVisualSource2
    {
        // Animation duration: 1.167 seconds.
        internal const long c_durationTicks = 11666666;

        // Marker: NormalToPressed_Start.
        internal const float M_NormalToPressed_Start = 0F;

        // Marker: NormalToPressed_End.
        internal const float M_NormalToPressed_End = 0.323214293F;

        // Marker: PointerOverToPressed_Start.
        internal const float M_PointerOverToPressed_Start = 0.323214293F;

        // Marker: PointerOverToPressed_End.
        internal const float M_PointerOverToPressed_End = 0.680357158F;

        // Marker: PressedToNormal_Start.
        internal const float M_PressedToNormal_Start = 0.716071427F;

        // Marker: PressedToNormal_End.
        internal const float M_PressedToNormal_End = 1F;

        // Marker: PressedToPointerOver_Start.
        internal const float M_PressedToPointerOver_Start = 1F;

        // Marker: PressedToPointerOver_End.
        internal const float M_PressedToPointerOver_End = 1F;

        public Microsoft.UI.Xaml.Controls.IAnimatedVisual TryCreateAnimatedVisual(Compositor compositor)
        {
            object ignored = null;
            return TryCreateAnimatedVisual(compositor, out ignored);
        }

        public Microsoft.UI.Xaml.Controls.IAnimatedVisual TryCreateAnimatedVisual(Compositor compositor, out object diagnostics)
        {
            diagnostics = null;

            var res =
                new Deployment_AnimatedVisual(
                    compositor
                    );
            res.CreateAnimations();
            return res;
        }

        /// <summary>
        /// Gets the number of frames in the animation.
        /// </summary>
        public double FrameCount => 28d;

        /// <summary>
        /// Gets the frame rate of the animation.
        /// </summary>
        public double Framerate => 24d;

        /// <summary>
        /// Gets the duration of the animation.
        /// </summary>
        public TimeSpan Duration => TimeSpan.FromTicks(11666666);

        /// <summary>
        /// Converts a zero-based frame number to the corresponding progress value denoting the
        /// start of the frame.
        /// </summary>
        public double FrameToProgress(double frameNumber)
        {
            return frameNumber / 28d;
        }

        /// <summary>
        /// Returns a map from marker names to corresponding progress values.
        /// </summary>
        public IReadOnlyDictionary<string, double> Markers =>
            new Dictionary<string, double>
            {
                { "NormalToPressed_Start", 0d },
                { "NormalToPressed_End", 0.323214285714286 },
                { "PointerOverToPressed_Start", 0.323214285714286 },
                { "PointerOverToPressed_End", 0.680357142857143 },
                { "PressedToNormal_Start", 0.716071428571429 },
                { "PressedToNormal_End", 1d },
                { "PressedToPointerOver_Start", 1d },
                { "PressedToPointerOver_End", 1d },
            };

        /// <summary>
        /// Sets the color property with the given name, or does nothing if no such property
        /// exists.
        /// </summary>
        public void SetColorProperty(string propertyName, Color value)
        {
        }

        /// <summary>
        /// Sets the scalar property with the given name, or does nothing if no such property
        /// exists.
        /// </summary>
        public void SetScalarProperty(string propertyName, double value)
        {
        }

        sealed partial class Deployment_AnimatedVisual
            : Microsoft.UI.Xaml.Controls.IAnimatedVisual
            , Microsoft.UI.Xaml.Controls.IAnimatedVisual2
        {
            const long c_durationTicks = 11666666;
            readonly Compositor _c;
            readonly ExpressionAnimation _reusableExpressionAnimation;
            AnimationController _animationController_0;
            CompositionColorBrush _colorBrush_AlmostLightGray_FFCFD7DC;
            CompositionContainerShape _containerShape_0;
            CompositionContainerShape _containerShape_1;
            CompositionPathGeometry _pathGeometry_1;
            ContainerVisual _root;
            CubicBezierEasingFunction _cubicBezierEasingFunction_0;
            ShapeVisual _shapeVisual_1;
            StepEasingFunction _holdThenStepEasingFunction;
            StepEasingFunction _stepThenHoldEasingFunction;

            void BindProperty(
                CompositionObject target,
                string animatedPropertyName,
                string expression,
                string referenceParameterName,
                CompositionObject referencedObject)
            {
                _reusableExpressionAnimation.ClearAllParameters();
                _reusableExpressionAnimation.Expression = expression;
                _reusableExpressionAnimation.SetReferenceParameter(referenceParameterName, referencedObject);
                target.StartAnimation(animatedPropertyName, _reusableExpressionAnimation);
            }

            ScalarKeyFrameAnimation CreateScalarKeyFrameAnimation(float initialProgress, float initialValue, CompositionEasingFunction initialEasingFunction)
            {
                var result = _c.CreateScalarKeyFrameAnimation();
                result.Duration = TimeSpan.FromTicks(c_durationTicks);
                result.InsertKeyFrame(initialProgress, initialValue, initialEasingFunction);
                return result;
            }

            Vector2KeyFrameAnimation CreateVector2KeyFrameAnimation(float initialProgress, Vector2 initialValue, CompositionEasingFunction initialEasingFunction)
            {
                var result = _c.CreateVector2KeyFrameAnimation();
                result.Duration = TimeSpan.FromTicks(c_durationTicks);
                result.InsertKeyFrame(initialProgress, initialValue, initialEasingFunction);
                return result;
            }

            CompositionSpriteShape CreateSpriteShape(CompositionGeometry geometry, Matrix3x2 transformMatrix, CompositionBrush fillBrush)
            {
                var result = _c.CreateSpriteShape(geometry);
                result.TransformMatrix = transformMatrix;
                result.FillBrush = fillBrush;
                return result;
            }

            AnimationController AnimationController_0()
            {
                if (_animationController_0 != null) { return _animationController_0; }
                var result = _animationController_0 = _c.CreateAnimationController();
                result.Pause();
                BindProperty(_animationController_0, "Progress", "_.Progress", "_", _root);
                return result;
            }

            // - - - - Layer aggregator
            // - - ShapeGroup: Group 1 Offset:<15.347, 15.25>
            CanvasGeometry Geometry_0()
            {
                CanvasGeometry result;
                using (var builder = new CanvasPathBuilder(null))
                {
                    builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding);
                    builder.BeginFigure(new Vector2(10.9280005F, 1.22899997F));
                    builder.AddCubicBezier(new Vector2(10.9729996F, 0.824999988F), new Vector2(11F, 0.416000009F), new Vector2(11F, 0F));
                    builder.AddCubicBezier(new Vector2(11F, -0.418000013F), new Vector2(10.9720001F, -0.828000009F), new Vector2(10.927F, -1.23399997F));
                    builder.AddLine(new Vector2(14.6759996F, -3.85100007F));
                    builder.AddCubicBezier(new Vector2(15.0019999F, -4.08400011F), new Vector2(15.0970001F, -4.50299978F), new Vector2(14.8920002F, -4.84100008F));
                    builder.AddLine(new Vector2(11.7460003F, -10.1569996F));
                    builder.AddCubicBezier(new Vector2(11.5530005F, -10.4949999F), new Vector2(11.1280003F, -10.6219997F), new Vector2(10.7670002F, -10.4709997F));
                    builder.AddLine(new Vector2(6.71199989F, -8.69999981F));
                    builder.AddCubicBezier(new Vector2(5.99100018F, -9.25899982F), new Vector2(5.20200014F, -9.7329998F), new Vector2(4.35500002F, -10.1000004F));
                    builder.AddLine(new Vector2(3.91799998F, -14.3219995F));
                    builder.AddCubicBezier(new Vector2(3.87400007F, -14.7069998F), new Vector2(3.54399991F, -15F), new Vector2(3.14599991F, -15F));
                    builder.AddLine(new Vector2(-3.14700007F, -15F));
                    builder.AddCubicBezier(new Vector2(-3.54399991F, -15F), new Vector2(-3.87599993F, -14.7069998F), new Vector2(-3.91899991F, -14.323F));
                    builder.AddLine(new Vector2(-4.3579998F, -10.1000004F));
                    builder.AddCubicBezier(new Vector2(-5.21099997F, -9.73099995F), new Vector2(-6.00299978F, -9.25199986F), new Vector2(-6.72800016F, -8.68999958F));
                    builder.AddLine(new Vector2(-10.7679996F, -10.4729996F));
                    builder.AddCubicBezier(new Vector2(-11.1269999F, -10.6230001F), new Vector2(-11.552F, -10.4960003F), new Vector2(-11.7469997F, -10.1590004F));
                    builder.AddLine(new Vector2(-14.8929996F, -4.84299994F));
                    builder.AddCubicBezier(new Vector2(-15.0970001F, -4.50500011F), new Vector2(-15.0030003F, -4.08599997F), new Vector2(-14.6759996F, -3.85299993F));
                    builder.AddLine(new Vector2(-10.9219999F, -1.26699996F));
                    builder.AddCubicBezier(new Vector2(-10.9689999F, -0.850000024F), new Vector2(-11F, -0.42899999F), new Vector2(-11F, 0F));
                    builder.AddCubicBezier(new Vector2(-11F, 0.418000013F), new Vector2(-10.9720001F, 0.827000022F), new Vector2(-10.927F, 1.23199999F));
                    builder.AddLine(new Vector2(-14.6759996F, 3.85100007F));
                    builder.AddCubicBezier(new Vector2(-15.0030003F, 4.08500004F), new Vector2(-15.0970001F, 4.50299978F), new Vector2(-14.8929996F, 4.84100008F));
                    builder.AddLine(new Vector2(-11.7469997F, 10.1569996F));
                    builder.AddCubicBezier(new Vector2(-11.552F, 10.4949999F), new Vector2(-11.1269999F, 10.6230001F), new Vector2(-10.7679996F, 10.4709997F));
                    builder.AddLine(new Vector2(-6.70900011F, 8.70199966F));
                    builder.AddCubicBezier(new Vector2(-5.99100018F, 9.25599957F), new Vector2(-5.20800018F, 9.72799969F), new Vector2(-4.36499977F, 10.0939999F));
                    builder.AddLine(new Vector2(-3.91899991F, 14.323F));
                    builder.AddCubicBezier(new Vector2(-3.87599993F, 14.7089996F), new Vector2(-3.54399991F, 15F), new Vector2(-3.14599991F, 15F));
                    builder.AddLine(new Vector2(3.14700007F, 15F));
                    builder.AddCubicBezier(new Vector2(3.54399991F, 15F), new Vector2(3.875F, 14.7089996F), new Vector2(3.91799998F, 14.3240004F));
                    builder.AddLine(new Vector2(4.34499979F, 10.1049995F));
                    builder.AddCubicBezier(new Vector2(5.204F, 9.73600006F), new Vector2(6F, 9.25300026F), new Vector2(6.73000002F, 8.68900013F));
                    builder.AddLine(new Vector2(10.7670002F, 10.4720001F));
                    builder.AddCubicBezier(new Vector2(11.1280003F, 10.6230001F), new Vector2(11.5530005F, 10.4949999F), new Vector2(11.7460003F, 10.158F));
                    builder.AddLine(new Vector2(14.8920002F, 4.84200001F));
                    builder.AddCubicBezier(new Vector2(15.0970001F, 4.50400019F), new Vector2(15.0019999F, 4.08599997F), new Vector2(14.6759996F, 3.852F));
                    builder.AddLine(new Vector2(10.9280005F, 1.22899997F));
                    builder.EndFigure(CanvasFigureLoop.Closed);
                    builder.BeginFigure(new Vector2(5F, 0F));
                    builder.AddCubicBezier(new Vector2(5F, 2.76200008F), new Vector2(2.76200008F, 5F), new Vector2(0F, 5F));
                    builder.AddCubicBezier(new Vector2(-2.76099992F, 5F), new Vector2(-5F, 2.76200008F), new Vector2(-5F, 0F));
                    builder.AddCubicBezier(new Vector2(-5F, -2.76200008F), new Vector2(-2.76099992F, -5F), new Vector2(0F, -5F));
                    builder.AddCubicBezier(new Vector2(2.76200008F, -5F), new Vector2(5F, -2.76200008F), new Vector2(5F, 0F));
                    builder.EndFigure(CanvasFigureLoop.Closed);
                    result = CanvasGeometry.CreatePath(builder);
                }
                return result;
            }

            CanvasGeometry Geometry_1()
            {
                CanvasGeometry result;
                using (var builder = new CanvasPathBuilder(null))
                {
                    builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding);
                    builder.BeginFigure(new Vector2(-18F, -2F));
                    builder.AddLine(new Vector2(18F, -2F));
                    builder.AddLine(new Vector2(18F, 2F));
                    builder.AddLine(new Vector2(-18F, 2F));
                    builder.AddLine(new Vector2(-18F, -2F));
                    builder.EndFigure(CanvasFigureLoop.Closed);
                    result = CanvasGeometry.CreatePath(builder);
                }
                return result;
            }

            // - - - - Opacity for layer: Loading 
            // - - ShapeGroup: Group 1 Offset:<18.585, 2.864>
            CanvasGeometry Geometry_2()
            {
                CanvasGeometry result;
                using (var builder = new CanvasPathBuilder(null))
                {
                    builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding);
                    builder.BeginFigure(new Vector2(-18.3349991F, -2.61500001F));
                    builder.AddLine(new Vector2(18.3349991F, -2.61500001F));
                    builder.AddLine(new Vector2(18.3349991F, 2.61500001F));
                    builder.AddLine(new Vector2(-18.3349991F, 2.61500001F));
                    builder.AddLine(new Vector2(-18.3349991F, -2.61500001F));
                    builder.EndFigure(CanvasFigureLoop.Closed);
                    result = CanvasGeometry.CreatePath(builder);
                }
                return result;
            }

            // - - Opacity for layer: Loading 
            // ShapeGroup: Group 1 Offset:<18.585, 2.864>
            CompositionColorBrush ColorBrush_AlmostForestGreen_FF2D7C31()
            {
                return _c.CreateColorBrush(Color.FromArgb(0xFF, 0x2D, 0x7C, 0x31));
            }

            CompositionColorBrush ColorBrush_AlmostLightGray_FFCFD7DC()
            {
                return (_colorBrush_AlmostLightGray_FFCFD7DC == null)
                    ? _colorBrush_AlmostLightGray_FFCFD7DC = _c.CreateColorBrush(Color.FromArgb(0xFF, 0xCF, 0xD7, 0xDC))
                    : _colorBrush_AlmostLightGray_FFCFD7DC;
            }

            // - - Layer aggregator
            // ShapeGroup: Group 1 Offset:<15.347, 15.25>
            CompositionColorBrush ColorBrush_AlmostYellowGreen_FF7BB342()
            {
                return _c.CreateColorBrush(Color.FromArgb(0xFF, 0x7B, 0xB3, 0x42));
            }

            // Layer aggregator
            CompositionContainerShape ContainerShape_0()
            {
                if (_containerShape_0 != null) { return _containerShape_0; }
                var result = _containerShape_0 = _c.CreateContainerShape();
                result.CenterPoint = new Vector2(15.3470001F, 15.25F);
                result.Offset = new Vector2(8.65299988F, 4.75F);
                // ShapeGroup: Group 1 Offset:<15.347, 15.25>
                result.Shapes.Add(SpriteShape_0());
                return result;
            }

            // Opacity for layer: Loading
            CompositionContainerShape ContainerShape_1()
            {
                if (_containerShape_1 != null) { return _containerShape_1; }
                var result = _containerShape_1 = _c.CreateContainerShape();
                result.CenterPoint = new Vector2(0.25F, 2.86400008F);
                result.Offset = new Vector2(5.51200008F, 38.1360016F);
                // ShapeGroup: Group 1 Offset:<18.585, 2.864>
                result.Shapes.Add(SpriteShape_2());
                return result;
            }

            CompositionEffectBrush EffectBrush()
            {
                var effectFactory = EffectFactory();
                var result = effectFactory.CreateBrush();
                result.SetSourceParameter("destination", SurfaceBrush_0());
                result.SetSourceParameter("source", SurfaceBrush_1());
                return result;
            }

            CompositionEffectFactory EffectFactory()
            {
                var compositeEffect = new CompositeEffect();
                compositeEffect.Mode = CanvasComposite.DestinationIn;
                compositeEffect.Sources.Add(new CompositionEffectSourceParameter("destination"));
                compositeEffect.Sources.Add(new CompositionEffectSourceParameter("source"));
                var result = _c.CreateEffectFactory(compositeEffect);
                return result;
            }

            // - - Layer aggregator
            // ShapeGroup: Group 1 Offset:<15.347, 15.25>
            CompositionPathGeometry PathGeometry_0()
            {
                return _c.CreatePathGeometry(new CompositionPath(Geometry_0()));
            }

            CompositionPathGeometry PathGeometry_1()
            {
                return (_pathGeometry_1 == null)
                    ? _pathGeometry_1 = _c.CreatePathGeometry(new CompositionPath(Geometry_1()))
                    : _pathGeometry_1;
            }

            // - - Opacity for layer: Loading 
            // ShapeGroup: Group 1 Offset:<18.585, 2.864>
            CompositionPathGeometry PathGeometry_2()
            {
                return _c.CreatePathGeometry(new CompositionPath(Geometry_2()));
            }

            // - Layer aggregator
            // ShapeGroup: Group 1 Offset:<15.347, 15.25>
            CompositionSpriteShape SpriteShape_0()
            {
                // Offset:<15.347, 15.25>
                var geometry = PathGeometry_0();
                var result = CreateSpriteShape(geometry, new Matrix3x2(1F, 0F, 0F, 1F, 15.3470001F, 15.25F), ColorBrush_AlmostYellowGreen_FF7BB342()); ;
                return result;
            }

            // Layer aggregator
            // Path 1
            CompositionSpriteShape SpriteShape_1()
            {
                // Offset:<24, 41>
                var geometry = PathGeometry_1();
                var result = CreateSpriteShape(geometry, new Matrix3x2(1F, 0F, 0F, 1F, 24F, 41F), ColorBrush_AlmostLightGray_FFCFD7DC()); ;
                return result;
            }

            // - Opacity for layer: Loading 
            // Path 1
            CompositionSpriteShape SpriteShape_2()
            {
                // Offset:<18.585, 2.864>
                var geometry = PathGeometry_2();
                var result = CreateSpriteShape(geometry, new Matrix3x2(1F, 0F, 0F, 1F, 18.5849991F, 2.86400008F), ColorBrush_AlmostForestGreen_FF2D7C31()); ;
                return result;
            }

            // Shape tree root for layer: Loading  Mask
            // Path 1
            CompositionSpriteShape SpriteShape_3()
            {
                // Offset:<24, 41>
                var geometry = PathGeometry_1();
                var result = CreateSpriteShape(geometry, new Matrix3x2(1F, 0F, 0F, 1F, 24F, 41F), ColorBrush_AlmostLightGray_FFCFD7DC()); ;
                return result;
            }

            CompositionSurfaceBrush SurfaceBrush_0()
            {
                return _c.CreateSurfaceBrush(VisualSurface_0());
            }

            CompositionSurfaceBrush SurfaceBrush_1()
            {
                return _c.CreateSurfaceBrush(VisualSurface_1());
            }

            CompositionVisualSurface VisualSurface_0()
            {
                var result = _c.CreateVisualSurface();
                result.SourceVisual = ContainerVisual_0();
                result.SourceSize = new Vector2(48F, 48F);
                return result;
            }

            CompositionVisualSurface VisualSurface_1()
            {
                var result = _c.CreateVisualSurface();
                result.SourceVisual = ContainerVisual_1();
                result.SourceSize = new Vector2(48F, 48F);
                return result;
            }

            ContainerVisual ContainerVisual_0()
            {
                var result = _c.CreateContainerVisual();
                result.BorderMode = CompositionBorderMode.Soft;
                // Opacity for layer: Loading
                result.Children.InsertAtTop(ShapeVisual_1());
                return result;
            }

            ContainerVisual ContainerVisual_1()
            {
                var result = _c.CreateContainerVisual();
                result.BorderMode = CompositionBorderMode.Soft;
                // Shape tree root for layer: Loading  Mask
                result.Children.InsertAtTop(ShapeVisual_2());
                return result;
            }

            // The root of the composition.
            ContainerVisual Root()
            {
                if (_root != null) { return _root; }
                var result = _root = _c.CreateContainerVisual();
                var propertySet = result.Properties;
                propertySet.InsertScalar("Progress", 0F);
                var children = result.Children;
                // Layer aggregator
                children.InsertAtTop(ShapeVisual_0());
                children.InsertAtTop(SpriteVisual_0());
                return result;
            }

            CubicBezierEasingFunction CubicBezierEasingFunction_0()
            {
                return (_cubicBezierEasingFunction_0 == null)
                    ? _cubicBezierEasingFunction_0 = _c.CreateCubicBezierEasingFunction(new Vector2(0.333000004F, 0F), new Vector2(0.666999996F, 1F))
                    : _cubicBezierEasingFunction_0;
            }

            // Opacity for layer: Loading 
            // Layer opacity animation
            ScalarKeyFrameAnimation OpacityScalarAnimation_1_to_0()
            {
                // Frame 0.
                var result = CreateScalarKeyFrameAnimation(0F, 1F, StepThenHoldEasingFunction());
                // Frame 21.
                result.InsertKeyFrame(0.75F, 1F, HoldThenStepEasingFunction());
                // Frame 25.
                result.InsertKeyFrame(0.892857134F, 0F, CubicBezierEasingFunction_0());
                return result;
            }

            // - Layer aggregator
            // Rotation
            ScalarKeyFrameAnimation RotationAngleInDegreesScalarAnimation_0_to_180()
            {
                // Frame 0.
                var result = CreateScalarKeyFrameAnimation(0F, 0F, HoldThenStepEasingFunction());
                // Frame 28.
                result.InsertKeyFrame(1F, 180F, _c.CreateCubicBezierEasingFunction(new Vector2(0.166999996F, 0.166999996F), new Vector2(0.833000004F, 0.833000004F)));
                return result;
            }

            // Layer aggregator
            ShapeVisual ShapeVisual_0()
            {
                var result = _c.CreateShapeVisual();
                result.Size = new Vector2(48F, 48F);
                var shapes = result.Shapes;
                shapes.Add(ContainerShape_0());
                // Offset:<5.75, 38.75>
                shapes.Add(SpriteShape_1());
                return result;
            }

            // Shape tree root for layer: Loading
            ShapeVisual ShapeVisual_1()
            {
                if (_shapeVisual_1 != null) { return _shapeVisual_1; }
                var result = _shapeVisual_1 = _c.CreateShapeVisual();
                result.Size = new Vector2(48F, 48F);
                result.Shapes.Add(ContainerShape_1());
                return result;
            }

            // Shape tree root for layer: Loading  Mask
            ShapeVisual ShapeVisual_2()
            {
                var result = _c.CreateShapeVisual();
                result.Size = new Vector2(48F, 48F);
                // Offset:<5.75, 38.75>
                result.Shapes.Add(SpriteShape_3());
                return result;
            }

            SpriteVisual SpriteVisual_0()
            {
                var result = _c.CreateSpriteVisual();
                result.Size = new Vector2(48F, 48F);
                result.Brush = EffectBrush();
                return result;
            }

            StepEasingFunction HoldThenStepEasingFunction()
            {
                if (_holdThenStepEasingFunction != null) { return _holdThenStepEasingFunction; }
                var result = _holdThenStepEasingFunction = _c.CreateStepEasingFunction();
                result.IsFinalStepSingleFrame = true;
                return result;
            }

            StepEasingFunction StepThenHoldEasingFunction()
            {
                if (_stepThenHoldEasingFunction != null) { return _stepThenHoldEasingFunction; }
                var result = _stepThenHoldEasingFunction = _c.CreateStepEasingFunction();
                result.IsInitialStepSingleFrame = true;
                return result;
            }

            // - Opacity for layer: Loading 
            // Scale
            Vector2KeyFrameAnimation ScaleVector2Animation()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(0F, 1F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(0F, 1F), HoldThenStepEasingFunction());
                // Frame 16.
                result.InsertKeyFrame(0.571428597F, new Vector2(1F, 1F), CubicBezierEasingFunction_0());
                return result;
            }

            internal Deployment_AnimatedVisual(
                Compositor compositor
                )
            {
                _c = compositor;
                _reusableExpressionAnimation = compositor.CreateExpressionAnimation();
                Root();
            }

            public Visual RootVisual => _root;
            public TimeSpan Duration => TimeSpan.FromTicks(c_durationTicks);
            public Vector2 Size => new Vector2(48F, 48F);
            void IDisposable.Dispose() => _root?.Dispose();

            public void CreateAnimations()
            {
                _containerShape_0.StartAnimation("RotationAngleInDegrees", RotationAngleInDegreesScalarAnimation_0_to_180(), AnimationController_0());
                _containerShape_1.StartAnimation("Scale", ScaleVector2Animation(), AnimationController_0());
                _shapeVisual_1.StartAnimation("Opacity", OpacityScalarAnimation_1_to_0(), AnimationController_0());
            }

            public void DestroyAnimations()
            {
                _containerShape_0.StopAnimation("RotationAngleInDegrees");
                _containerShape_1.StopAnimation("Scale");
                _shapeVisual_1.StopAnimation("Opacity");
            }

        }
    }
}
