{
  "Name": "StarDistort",
  "_id": "1d801d33-fd19-4bd7-80a2-b4cdd0757870",
  "Namespace": "lib.image.effect",
  "Description": "Creates a radial gradient texture.",
  "Inputs": [
    {
      "Name": "Code",
      "MetaInstanceID": "249f995c-e0ff-4586-a4b7-87eca259177a",
      "DefaultValue": {
        "Type": "Text",
        "Value": [
          "//>>> _common parameters\r",
          "float4x4 objectToWorldMatrix;",
          "float4x4 worldToCameraMatrix;",
          "float4x4 projMatrix;",
          "Texture2D txDiffuse;",
          "float2 RenderTargetSize;",
          "//<<< _common parameters\r",
          "\r",
          "//>>> _parameters\r",
          "float2 Center;",
          "Texture2D Image1;",
          "Texture2D NoiseImage;",
          "float Repeat;",
          "float3 Distribution;",
          "float Radius;",
          "float3 SizeScatter;",
          "float2 OffsetContent;",
          "//<<< _parameters\r",
          "\r",
          "//>>> setup\r",
          "SamplerState samLinear",
          "{",
          "    Filter = MIN_MAG_MIP_LINEAR; // MIN_MAG_MIP_NEAREST; //MIN_MAG_LINEAR_MIP_POINT",
          "    AddressU = Wrap;",
          "    AddressV = Clamp;",
          "};",
          "//<<< setup\r",
          "\r",
          "struct VS_IN",
          "{",
          "    float4 pos : POSITION;",
          "    float2 texCoord : TEXCOORD;",
          "};",
          "",
          "struct PS_IN",
          "{",
          "    sample float4 pos : SV_POSITION;",
          "    //float4 pos : SV_POSITION;",
          "    float2 texCoord: TEXCOORD0;",
          "};",
          "\r",
          "//>>> _GS\r",
          "",
          "//<<< _GS\r",
          "\r",
          "//>>> _VS \r",
          "PS_IN VS( VS_IN input )",
          "{",
          "    PS_IN output = (PS_IN)0;",
          "",
          "    output.pos = mul(input.pos, worldToCameraMatrix);",
          "    output.pos = mul(output.pos, projMatrix);",
          "    output.texCoord = input.texCoord;",
          "",
          "    return output;",
          "}",
          "//<<< _VS\r",
          "\r",
          "//>>> PS\r",
          "\r",
          "static const float PI = 3.14159265f;\r",
          "\r",
          "\r",
          "float4 PS(PS_IN input) : SV_Target\r",
          "{\r",
          "    float aspectRatio = RenderTargetSize.x/RenderTargetSize.y;\r",
          "    //float2 p= input.pos/RenderTargetSize - float2(0.5,0.5) - float2(Center.x, Center.y);\r",
          "    \r",
          "    \r",
          "    float2 p= input.pos/RenderTargetSize - float2(0.5,0.5) + 0.5*float2(-Center.x, Center.y);\r",
          "    \r",
          "    p.x *= aspectRatio;\r",
          "    \r",
          "    float d = length(p) / Radius;\r",
          "    //float angle = Math.Atan2( p.x, p.y);\r",
          "    float angle = atan2( p.x, p.y);\r",
          "    \r",
          "    //return float4( angle / 6.34,1,0,1);\r",
          "    //float d = length( input.pos/RenderTargetSize - float2(0.5,0.5) + Center);\r",
          "    float fraction = fmod(angle / (2*PI) * Repeat , 1) ;\r",
          "    \r",
          "    float4 rand= NoiseImage.Sample(samLinear, float2( angle*Distribution.y * 0.001 + Distribution.z*0.01 ,0)); \r",
          "    fraction += rand * Distribution.x;\r",
          "    \r",
          "    float rand2= NoiseImage.Sample(samLinear, float2( angle*SizeScatter.y * 0.001 + SizeScatter.z*0.01, 2)); \r",
          "    \r",
          "    float4 cCenter=  Image1.Sample(samLinear,   float2( fraction          ,  d + rand2 * SizeScatter.x) + OffsetContent); \r",
          "    //return cCenter1;\r",
          "    \r",
          "    // Sample Left\r",
          "    p= (input.pos + 0.3) /RenderTargetSize - float2(0.5,0.5) + 0.5*float2(-Center.x, Center.y);\r",
          "    p.x *= aspectRatio;    \r",
          "    angle = atan2( p.x, p.y);\r",
          "    fraction = fmod(angle / (2*PI) * Repeat , 1) ;\r",
          "    float4 cLeft=  Image1.Sample(samLinear,   float2( fraction          ,  d + rand2 * SizeScatter.x) + OffsetContent); \r",
          "    \r",
          "    // Sample Right\r",
          "    p= (input.pos - 0.3) /RenderTargetSize - float2(0.5,0.5) + 0.5*float2(-Center.x, Center.y);\r",
          "    p.x *= aspectRatio;    \r",
          "    angle = atan2( p.x, p.y);\r",
          "    fraction = fmod(angle / (2*PI) * Repeat , 1) ;\r",
          "    float4 cRight=  Image1.Sample(samLinear,   float2( fraction          ,  d + rand2 * SizeScatter.x)+OffsetContent); \r",
          "\r",
          "/*    \r",
          "    uint width, height;\r",
          "    Image1.GetDimensions(width, height);\r",
          "    \r",
          "    float sampleOffset = height/RenderTargetSize.x * 0.5;\r",
          "    \r",
          "    float4 cRight= Image1.Sample(samLinear, float2( fraction+sampleOffset  ,  d + rand2 * SizeScatter.x)); \r",
          "    float4 cCenter=  Image1.Sample(samLinear,   float2( fraction          ,  d + rand2 * SizeScatter.x)); \r",
          "    float4 cLeft= Image1.Sample(samLinear, float2( fraction-sampleOffset,  d + rand2 * SizeScatter.x )); \r",
          "    */\r",
          "    return (cCenter + cLeft + cRight)/3 ;\r",
          "    //return cCenter;\r",
          "    \r",
          "    //return lerp( ColorC, ColorD, (d-ColorRadius.x-ColorRadius.y) / (ColorRadius.z))+i;\r",
          "}\r",
          "//<<< PS\r",
          "\r",
          "technique10 Render",
          "{",
          "    pass P0",
          "    {",
          "        SetGeometryShader( 0 );",
          "        SetVertexShader( CompileShader( vs_5_0, VS() ) );",
          "        SetPixelShader( CompileShader( ps_5_0, PS() ) );",
          "    }",
          "}",
          ""
        ]
      },
      "MetaID": "c522a66e-3260-4692-b3e3-79fd0361fa3d",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Center.X",
      "MetaInstanceID": "ffcde2e8-cb38-40bb-8b4c-07f3744f1ab6",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-10000",
      "Max": "10000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Center.Y",
      "MetaInstanceID": "935065f6-9bbf-411d-b327-0f9c3e158fa1",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-10000",
      "Max": "10000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Image1",
      "MetaInstanceID": "2f474eae-a576-4f3a-b986-886fc842d7d8",
      "DefaultValue": {
        "Type": "Image",
        "Value": "Framefield.Core.Image"
      },
      "MetaID": "9848060d-fd84-45b0-b658-d0d531c61dab",
      "IsMultiInput": "False",
      "Relevance": "Relevant",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "NoiseImage",
      "MetaInstanceID": "f975d416-f0e3-47b7-81e0-148398994793",
      "DefaultValue": {
        "Type": "Image",
        "Value": "Framefield.Core.Image"
      },
      "MetaID": "9848060d-fd84-45b0-b658-d0d531c61dab",
      "IsMultiInput": "False",
      "Relevance": "Required",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Repeat",
      "MetaInstanceID": "7ffda760-c437-4ef9-af06-b9460d85ea85",
      "DefaultValue": {
        "Type": "Float",
        "Value": "5"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "0",
      "Max": "100000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Distribution.Strength",
      "MetaInstanceID": "3b4e7467-1581-4288-8d0f-3373386541e1",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "0",
      "Max": "10000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Distribution.Noise",
      "MetaInstanceID": "7d9c1249-72a3-437c-ab7d-1c6f38b15338",
      "DefaultValue": {
        "Type": "Float",
        "Value": "1"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-10000",
      "Max": "10000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Distribution.Phase",
      "MetaInstanceID": "797a4a22-cf9e-4340-8a25-58ad1c20a5c7",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Radius",
      "MetaInstanceID": "307a5cb9-3430-4eeb-ad79-756e9f7b1a25",
      "DefaultValue": {
        "Type": "Float",
        "Value": "1"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "0",
      "Max": "100000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "SizeScatter.Strength",
      "MetaInstanceID": "d9a9435c-ab1c-4633-9189-169ad2e0abce",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.001",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "SizeScatter.Frequency",
      "MetaInstanceID": "c92c12ea-e94b-4e8f-9475-ab609e8aef8d",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0.01"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "SizeScatter.Phase",
      "MetaInstanceID": "877ca24a-d944-4cde-9a62-2cb50da9e173",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "OffsetContent.X",
      "MetaInstanceID": "344f2294-e66a-4abe-821d-9f5f9f976267",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "OffsetContent.Y",
      "MetaInstanceID": "06f95c7d-5e88-4a37-8ef5-63167f341726",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    }
  ],
  "Outputs": [
    {
      "Name": "Image",
      "MetaInstanceID": "b2ea9460-2b29-4262-855a-dd4c55f0b2dc",
      "MetaID": "9848060d-fd84-45b0-b658-d0d531c61dab"
    }
  ],
  "OperatorParts": [
    {
      "MetaInstanceID": "f335a527-7ff7-4b88-bbfb-409842824d3d",
      "MetaID": "84d87d78-6573-422f-bc06-6369d0c6e9b1",
      "Name": "StarDistortFunc",
      "Version": "cea653e1-ce85-40d8-8ef7-6a305330b51e",
      "Type": "Float",
      "IsMultiInput": "True",
      "Script": [
        "//>>> _using",
        "using System;",
        "using System.Collections.Generic;",
        "using System.Linq;",
        "using System.Text;",
        "using SharpDX;",
        "using SharpDX.Direct3D11;",
        "using SharpDX.Windows;",
        "//<<< _using",
        "",
        "namespace Framefield.Core.ID84d87d78_6573_422f_bc06_6369d0c6e9b1",
        "{",
        "    public class Class_StarDistort : FXImageFunction",
        "    {",
        "        //>>> _inputids",
        "        private enum InputId",
        "        {",
        "            Code = 0,",
        "            CenterX = 1,",
        "            CenterY = 2,",
        "            Image1 = 3,",
        "            NoiseImage = 4,",
        "            Repeat = 5,",
        "            DistributionStrength = 6,",
        "            DistributionNoise = 7,",
        "            DistributionPhase = 8,",
        "            Radius = 9,",
        "            SizeScatterStrength = 10,",
        "            SizeScatterFrequency = 11,",
        "            SizeScatterPhase = 12,",
        "            OffsetContentX = 13,",
        "            OffsetContentY = 14",
        "        }",
        "        //<<< _inputids",
        "",
        "        public override OperatorPartContext Eval(OperatorPartContext context, List<OperatorPart> inputs, int outputIdx) {",
        "            //>>> _params",
        "            var Code = inputs[(int)InputId.Code].Eval(context).Text;",
        "            var CenterX = inputs[(int)InputId.CenterX].Eval(context).Value;",
        "            var CenterY = inputs[(int)InputId.CenterY].Eval(context).Value;",
        "            var Center = new Vector2(CenterX, CenterY);",
        "            var Image1 = inputs[(int)InputId.Image1].Eval(context).Image; // Needs to be checked for null!",
        "            var NoiseImage = inputs[(int)InputId.NoiseImage].Eval(context).Image; // Needs to be checked for null!",
        "            var Repeat = inputs[(int)InputId.Repeat].Eval(context).Value;",
        "            var DistributionStrength = inputs[(int)InputId.DistributionStrength].Eval(context).Value;",
        "            var DistributionNoise = inputs[(int)InputId.DistributionNoise].Eval(context).Value;",
        "            var DistributionPhase = inputs[(int)InputId.DistributionPhase].Eval(context).Value;",
        "            var Distribution = new Vector3(DistributionStrength, DistributionNoise, DistributionPhase);",
        "            var Radius = inputs[(int)InputId.Radius].Eval(context).Value;",
        "            var SizeScatterStrength = inputs[(int)InputId.SizeScatterStrength].Eval(context).Value;",
        "            var SizeScatterFrequency = inputs[(int)InputId.SizeScatterFrequency].Eval(context).Value;",
        "            var SizeScatterPhase = inputs[(int)InputId.SizeScatterPhase].Eval(context).Value;",
        "            var SizeScatter = new Vector3(SizeScatterStrength, SizeScatterFrequency, SizeScatterPhase);",
        "            var OffsetContentX = inputs[(int)InputId.OffsetContentX].Eval(context).Value;",
        "            var OffsetContentY = inputs[(int)InputId.OffsetContentY].Eval(context).Value;",
        "            var OffsetContent = new Vector2(OffsetContentX, OffsetContentY);",
        "            //<<< _params",
        "",
        "            return PrepareAndEvalOnChange(context, () => {",
        "                ClearRenderTarget(context, new SharpDX.Color4(0, 0, 0, 0));",
        "",
        "                //>>> _setup",
        "                using (var Image1View = new ShaderResourceView(context.D3DDevice, Image1))",
        "                using (var NoiseImageView = new ShaderResourceView(context.D3DDevice, NoiseImage))",
        "                {",
        "                    _effect.GetVariableByName(\"RenderTargetSize\").AsVector().Set(new Vector2(_usedViewport.Width, _usedViewport.Height));",
        "                    _effect.GetVariableByName(\"Center\").AsVector().Set(new Vector2(CenterX, CenterY));",
        "                    _effect.GetVariableByName(\"Image1\").AsShaderResource().SetResource(Image1View);",
        "                    _effect.GetVariableByName(\"NoiseImage\").AsShaderResource().SetResource(NoiseImageView);",
        "                    _effect.GetVariableByName(\"Repeat\").AsScalar().Set(Repeat);",
        "                    _effect.GetVariableByName(\"Distribution\").AsVector().Set(new Vector3(DistributionStrength, DistributionNoise, DistributionPhase));",
        "                    _effect.GetVariableByName(\"Radius\").AsScalar().Set(Radius);",
        "                    _effect.GetVariableByName(\"SizeScatter\").AsVector().Set(new Vector3(SizeScatterStrength, SizeScatterFrequency, SizeScatterPhase));",
        "                    _effect.GetVariableByName(\"OffsetContent\").AsVector().Set(new Vector2(OffsetContentX, OffsetContentY));",
        "                //<<< _setup",
        "",
        "                Render(context);",
        "",
        "                //>>> _cleanup",
        "                }",
        "                //<<< _cleanup",
        "            });",
        "        }",
        "",
        "    }",
        "}",
        "",
        "",
        "",
        ""
      ],
      "AdditionalAssemblies": []
    }
  ],
  "Operators": [],
  "Connections": [
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "b2ea9460-2b29-4262-855a-dd4c55f0b2dc"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "249f995c-e0ff-4586-a4b7-87eca259177a",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "ffcde2e8-cb38-40bb-8b4c-07f3744f1ab6",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "935065f6-9bbf-411d-b327-0f9c3e158fa1",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "2f474eae-a576-4f3a-b986-886fc842d7d8",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "f975d416-f0e3-47b7-81e0-148398994793",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "7ffda760-c437-4ef9-af06-b9460d85ea85",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "3b4e7467-1581-4288-8d0f-3373386541e1",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "7d9c1249-72a3-437c-ab7d-1c6f38b15338",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "797a4a22-cf9e-4340-8a25-58ad1c20a5c7",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "307a5cb9-3430-4eeb-ad79-756e9f7b1a25",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "d9a9435c-ab1c-4633-9189-169ad2e0abce",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "c92c12ea-e94b-4e8f-9475-ab609e8aef8d",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "877ca24a-d944-4cde-9a62-2cb50da9e173",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "344f2294-e66a-4abe-821d-9f5f9f976267",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "06f95c7d-5e88-4a37-8ef5-63167f341726",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "f335a527-7ff7-4b88-bbfb-409842824d3d"
    }
  ]
}