Skip to content

[BUG] NullReferenceException #119

@AhmedViper

Description

@AhmedViper

Describe the bug

System.NullReferenceException: 'Object reference not set to an instance of an object.'

textChunk was null.

when using a specific SVG file containing this element

<text font-family="monospace" font-size="8.706305" font-weight="500" x="0" y="-4.3531523">
h: 2000.000 | w: 348.252 | d: 24.311% | 43_348.252_expl_i
</text>

To Reproduce
Call Render.LoadDrawing on an SVG file that contains this element

The null variable is currentTextChunk at TextRender.cs, CreateRun returns null because Font.TryGetGlyphTypeface fails (returns false), this causes currentTextChunk to remain null and then later added to the textChunks list, which is then enumerated and checked causing the NullReferenceException.

private static GeometryGroup CreateGeometry(TextShape root, TextRenderState state)
{
state.Resolve(root);
List<TextString> textStrings = new List<TextString>();
TextStyleStack textStyleStacks = new TextStyleStack();
PopulateTextStrings(textStrings, root, textStyleStacks);
GeometryGroup mainGeometryGroup = new GeometryGroup();
var baselineOrigin = new Point(root.X.FirstOrDefault().Value, root.Y.FirstOrDefault().Value);
var isSideways = root.WritingMode == WritingMode.HorizontalTopToBottom;
TextAlignment currentTextAlignment = root.TextStyle.TextAlignment;
List<TextChunk> textChunks = new List<TextChunk>();
bool newTextChunk = false;
TextChunk currentTextChunk = null;
foreach (TextString textString in textStrings)
{
var textStyle = textString.TextStyle;
Typeface font = textString.TextStyle.GetTypeface();
if (CreateRun(textString, state, font, isSideways, baselineOrigin, out Point newBaseline, out newTextChunk, ref currentTextAlignment) is GlyphRun run)
{
if (newTextChunk)
{
if(currentTextChunk != null)
{
// Add the current text chunk to the list
textChunks.Add(currentTextChunk);
}
currentTextChunk = new TextChunk();
currentTextChunk.TextAlignment = currentTextAlignment;
}
var runGeometry = run.BuildGeometry();
currentTextChunk.GlyphRuns.Add(run);
currentTextChunk.TextStyles[run] = textStyle;
currentTextChunk.GlyphRunBounds[run] = runGeometry.Bounds;
currentTextChunk.TextContainers[run] = (TextShapeBase)textString.Parent;
if (textStyle.TextDecoration != null && textStyle.TextDecoration.Count > 0)
{
GetTextDecorations(runGeometry, textStyle, font, baselineOrigin, out List<Rect> backgroundDecorations, out List<Rect> foregroundDecorations);
if(backgroundDecorations.Count > 0)
{
currentTextChunk.BackgroundDecorations[run] = backgroundDecorations;
}
if (foregroundDecorations.Count > 0)
{
currentTextChunk.ForegroundDecorations[run] = foregroundDecorations;
}
}
}
baselineOrigin = newBaseline;
}
textChunks.Add(currentTextChunk);
foreach(var textChunk in textChunks)
{
if (textChunk.GlyphRuns.Count == 0)
{
continue; // No glyphs to render in this chunk
}
GeometryGroup geometryGroup = textChunk.BuildGeometry();
mainGeometryGroup.Children.Add(geometryGroup);
}
mainGeometryGroup.Transform = root.Transform;
return mainGeometryGroup;
}

private static GlyphRun CreateRun(TextString textString, TextRenderState state, Typeface font, bool isSideways, Point baselineOrigin, out Point newBaseline, out bool newTextChunk, ref TextAlignment currentTextAlignment)
{
newTextChunk = textString.FirstCharacter.GlobalIndex == 0;
var textStyle = textString.TextStyle;
var characterInfos = textString.GetCharacters();
if(characterInfos is null ||characterInfos.Length == 0)
{
newBaseline = baselineOrigin;
return null;
}
if (!font.TryGetGlyphTypeface(out var glyphFace))
{
newBaseline = baselineOrigin;
return null;
}

I'm not sure why would TryGetGlyphTypeface fail, and I assume the correct fix is to account for that but as a temporary solution I added a null check before adding it to the list and that allowed the file to be loaded and rendered without that text

if (currentTextChunk != null)
{
    textChunks.Add(currentTextChunk);
}

Full SVG file for reference

<svg viewBox="-17.423222 -100.00002 383.3108 2200" xmlns="http://www.w3.org/2000/svg">
<g id="container_0">
<path d="M0,0 L348.46436,0 L348.46436,2000 L0,2000 z" fill="#D3D3D3" stroke="black" stroke-width="1.916554"/>
<title>container, id: 0, bbox: [x_min: 0.000, y_min: 0.000, x_max: 348.464, y_max: 2000.000]</title>
</g>
<g id="items">
<defs>
<g id="item_0">
<path d="M396.8509,737.1871 L282.17218,686.15906 L175.12411,751.6991 L188.21745,626.86566 L92.8054,545.30963 L215.5748,519.18695 L263.65482,403.24155 L326.43753,511.93094 L451.56558,521.8283 L367.59753,615.1243 z" fill="#7A7A7A" fill-opacity="0.5" fill-rule="nonzero" stroke="black" stroke-width="0.958277"/>
</g>
<g id="cd_shape_0">
<path d="M396.8509,737.1871 L282.17218,686.15906 L175.12411,751.6991 L188.21745,626.86566 L92.80539,545.30963 L215.5748,519.18695 L263.65482,403.24155 L326.43753,511.93094 L451.56558,521.8283 L367.59753,615.1243 z" fill="none" stroke="black" stroke-dasharray="0.958277 1.916554" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.3" stroke-width="0.4791385"/>
</g>
<g id="item_1">
<path d="M370.66687,283.8535 L231.30147,346.57352 L107.30141,257.24014 L122.66675,105.18672 L262.03217,42.465355 L386.03223,131.79874 z" fill="#7A7A7A" fill-opacity="0.5" fill-rule="nonzero" stroke="black" stroke-width="0.958277"/>
</g>
<g id="cd_shape_1">
<path d="M370.66687,283.8535 L231.30147,346.57352 L107.30141,257.24014 L122.66675,105.18672 L262.03217,42.465347 L386.03223,131.79874 z" fill="none" stroke="black" stroke-dasharray="0.958277 1.916554" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.3" stroke-width="0.4791385"/>
</g>
<g id="item_2">
<path d="M334.46286,936.2867 L335.6178,929.3276 L336.906,922.3919 L338.32703,915.4822 L339.88028,908.601 L341.56528,901.75085 L343.38132,894.9343 L345.3278,888.1539 L347.40393,881.412 L349.60904,874.7112 L351.94223,868.0539 L367.69553,866.89984 L383.455,865.86444 L399.22058,864.9478 L414.99234,864.14984 L430.77026,863.4706 L446.55432,862.91003 L462.34454,862.46814 L478.1409,862.145 L493.94345,861.94055 L509.75214,861.8548 L510.57184,861.85596 L511.39612,861.867 L512.2211,861.8956 L513.04315,861.9494 L513.85846,862.03577 L514.66315,862.1625 L515.45355,862.337 L516.2259,862.56683 L516.9764,862.8597 L517.70123,863.2231 L518.61115,863.81885 L519.42944,864.5156 L520.16425,865.30054 L520.82367,866.16077 L521.4158,867.08356 L521.9488,868.05597 L522.4307,869.06525 L522.8697,870.09845 L523.27386,871.1429 L523.6513,872.1856 L525.10376,876.43134 L526.4705,880.70544 L527.75104,885.00616 L528.9447,889.3318 L530.05115,893.6806 L531.0699,898.0507 L532.0004,902.4405 L532.8425,906.8481 L533.59576,911.2717 L534.2598,915.70966 L534.48175,917.29333 L534.72107,918.88916 L534.9954,920.48346 L535.3225,922.0625 L535.7199,923.61255 L536.2053,925.12006 L536.7963,926.57117 L537.5106,927.9523 L538.3658,929.24963 L539.3795,930.44965 L540.636,931.594 L542.0124,932.5537 L543.4919,933.34717 L545.0576,933.9926 L546.69275,934.50836 L548.3804,934.91284 L550.1037,935.2243 L551.84595,935.4611 L553.5902,935.64166 L555.3196,935.7841 L564.11804,936.382 L572.9245,936.84814 L581.7369,937.18243 L590.55334,937.3849 L599.3718,937.4554 L608.19037,937.39386 L617.00696,937.20044 L625.8197,936.8751 L634.62665,936.41797 L645.77924,985.6366 L645.8403,987.0672 L645.8781,988.51184 L645.8763,989.96045 L645.8183,991.4029 L645.68756,992.8292 L645.4676,994.22925 L645.1419,995.593 L644.694,996.91046 L644.1073,998.1715 L643.36536,999.3661 L642.67456,1000.2388 L641.9087,1001.0361 L641.0766,1001.7643 L640.1874,1002.4298 L639.25,1003.039 L638.27344,1003.59814 L637.2667,1004.1137 L636.23883,1004.5919 L635.1988,1005.0392 L634.15564,1005.46185 L627.58746,1007.8372 L620.91095,1009.83295 L614.141,1011.48517 L607.2925,1012.8301 L600.38025,1013.90405 L593.41925,1014.74316 L586.4243,1015.3837 L579.4104,1015.8619 L572.39233,1016.214 L565.385,1016.47614 L538.70465,1017.014 L512.03,1016.9234 L485.36285,1016.27185 L458.70474,1015.1266 L432.0574,1013.5549 L405.4225,1011.62396 L378.80164,1009.4012 L352.1966,1006.95386 L325.60898,1004.34924 L299.04047,1001.65466 L289.89328,1000.9021 L278.3423,1000.0168 L265.3495,998.7169 L251.87694,996.72095 L238.88667,993.747 L227.34077,989.5134 L218.20128,983.7385 L212.4302,976.14056 L210.98965,966.4378 L214.84163,954.34863 L217.31036,950.10516 L220.10571,946.3807 L223.20856,943.1543 L226.59975,940.40497 L230.26015,938.1118 L234.17065,936.2539 L238.31212,934.8103 L242.66542,933.76 L247.21141,933.0822 L251.93098,932.75586 L255.92535,932.84607 L263.16016,933.20197 L272.77515,933.74585 L283.91003,934.39996 L295.7046,935.08655 L307.29852,935.7279 L317.83157,936.24634 L326.44348,936.5641 L332.27402,936.60345 z" fill="#7A7A7A" fill-opacity="0.5" fill-rule="nonzero" stroke="black" stroke-width="0.958277"/>
</g>
<g id="cd_shape_2">
<path d="M334.46286,936.2867 L336.77307,922.3665 L341.43405,901.7176 L346.30145,884.7622 L351.79633,868.0646 L375.57623,866.3225 L407.1054,864.4894 L438.65717,863.13104 L478.13196,862.0263 L516.90216,861.81604 L521.94763,867.20557 L527.28394,882.8044 L532.4079,902.9436 L534.72107,918.88916 L536.2053,925.12006 L539.3795,930.44965 L545.0576,933.9926 L551.84595,935.4611 L572.9245,936.84814 L590.55334,937.3849 L608.19037,937.39386 L634.62665,936.41797 L646.6266,989.37604 L644.48175,998.3574 L639.5214,1003.52136 L624.4725,1008.96375 L610.9741,1012.25806 L597.21936,1014.39514 L577.0668,1016.24066 L538.70465,1017.014 L512.03,1016.9234 L485.36285,1016.27185 L446.51236,1014.6028 L393.82785,1010.7834 L342.45355,1006.0576 L299.04047,1001.65466 L269.28644,999.3002 L251.87694,996.72095 L238.88667,993.747 L227.34077,989.5134 L218.20128,983.7385 L212.4302,976.14056 L210.98965,966.4378 L215.36995,952.69055 L221.46832,944.5651 L228.25063,939.0665 L236.07115,935.35095 L244.77707,933.25055 L253.72365,932.6319 L295.7046,935.08655 L317.83157,936.24634 z" fill="none" stroke="black" stroke-dasharray="0.958277 1.916554" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.3" stroke-width="0.4791385"/>
</g>
<g id="item_3">
<path d="M251.59245,1029.3666 L253.59933,1019.1069 L256.53796,1008.5107 L260.46793,998.12463 L265.44885,988.49554 L271.54034,980.17017 L278.80194,973.6952 L287.2933,969.6174 L297.07404,968.4834 L308.20367,970.8401 L312.37048,972.6247 L316.3157,974.85406 L320.0212,977.48474 L323.46884,980.47327 L326.64053,983.7762 L329.5181,987.35004 L332.08347,991.1514 L334.31845,995.13684 L336.205,999.2629 L337.7249,1003.4861 L338.9453,1008.129 L340.0946,1013.96 L341.10568,1020.67303 L341.9114,1027.962 L342.44464,1035.5209 L342.63824,1043.0436 L342.42508,1050.2241 L341.738,1056.7562 L340.50992,1062.3341 L338.67368,1066.6515 L337.85733,1067.7504 L336.87637,1068.6521 L335.75497,1069.374 L334.51736,1069.9336 L333.1878,1070.3481 L331.79053,1070.635 L330.34973,1070.8115 L328.88965,1070.8951 L327.4345,1070.9033 L326.00858,1070.8531 L318.56732,1070.2666 L311.16483,1069.3075 L303.8198,1067.9781 L296.55072,1066.2821 L289.37585,1064.2235 L282.3133,1061.8075 L275.38086,1059.0403 L268.59595,1055.9287 L261.9757,1052.4807 L255.53676,1048.705 L254.44131,1048.1702 L253.43353,1047.4844 L252.53407,1046.6616 L251.7614,1045.7188 L251.13135,1044.6753 L250.65688,1043.5524 L250.3477,1042.3733 L250.21016,1041.162 L250.2471,1039.9436 L250.45773,1038.7429 z" fill="#7A7A7A" fill-opacity="0.5" fill-rule="nonzero" stroke="black" stroke-width="0.958277"/>
</g>
<g id="cd_shape_3">
<path d="M251.59245,1029.3666 L253.59933,1019.1069 L256.53796,1008.5107 L260.46793,998.12463 L265.44885,988.49554 L271.54034,980.17017 L278.80194,973.6952 L287.2933,969.6174 L297.07404,968.4834 L308.20367,970.8401 L312.37048,972.6247 L318.24237,975.9428 L325.16486,981.9434 L330.94662,989.12427 L335.43945,997.1358 L338.39978,1005.3612 L340.70718,1017.06793 L342.3529,1031.9559 L342.63824,1043.0436 L342.42508,1050.2241 L341.738,1056.7562 L340.50992,1062.3341 L338.17963,1067.8131 L334.26764,1070.3315 L328.4434,1071.045 L318.56732,1070.2666 L311.16483,1069.3075 L300.14215,1067.3125 L289.37585,1064.2235 L282.3133,1061.8075 L271.91055,1057.655 L261.9757,1052.4807 L255.53676,1048.705 L252.74011,1047.3396 L250.81314,1044.1483 L250.03204,1041.1696 z" fill="none" stroke="black" stroke-dasharray="0.958277 1.916554" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.3" stroke-width="0.4791385"/>
</g>
<g id="item_4">
<path d="M521.46045,1023.68036 L525.4051,1020.73193 L530.00934,1017.42847 L535.0578,1014.0785 L540.33514,1010.9908 L545.62616,1008.4738 L550.7155,1006.83624 L555.3879,1006.3868 L559.428,1007.43396 L562.6205,1010.2864 L564.2028,1014.3082 L564.534,1019.621 L563.853,1025.9124 L562.3988,1032.87 L560.41034,1040.1818 L558.1265,1047.535 L555.78625,1054.6178 L553.6286,1061.1174 L551.89233,1066.7219 L550.8166,1071.1188 L550.65906,1071.9939 L550.4956,1072.8733 L550.31793,1073.7512 L550.1178,1074.6224 L549.8869,1075.4816 L549.61694,1076.3231 L549.2997,1077.1416 L548.9269,1077.9318 L548.49023,1078.688 L547.9815,1079.405 L547.35095,1080.1217 L546.65485,1080.764 L545.90106,1081.3379 L545.0978,1081.8491 L544.25305,1082.3037 L543.3748,1082.7074 L542.4712,1083.0662 L541.5502,1083.3859 L540.6199,1083.6725 L539.6883,1083.9318 L537.1916,1084.5306 L534.64844,1085 L532.0785,1085.3214 L529.5014,1085.476 L526.937,1085.4448 L524.40485,1085.2095 L521.9247,1084.7511 L519.5162,1084.0508 L517.19904,1083.0901 L514.9929,1081.85 L512.10785,1079.5978 L509.70486,1076.935 L507.75638,1073.923 L506.23477,1070.6227 L505.11243,1067.0952 L504.3618,1063.4016 L503.9552,1059.6029 L503.86505,1055.7604 L504.06375,1051.9348 L504.5237,1048.1876 L504.77283,1046.7102 L505.05887,1045.2352 L505.3884,1043.7684 L505.76785,1042.3158 L506.2038,1040.8829 L506.70267,1039.4756 L507.271,1038.0995 L507.91528,1036.7606 L508.642,1035.4645 L509.4577,1034.217 L510.22278,1033.2648 L511.01877,1032.3381 L511.84488,1031.4384 L512.70013,1030.566 L513.5837,1029.7225 L514.4945,1028.9086 L515.43164,1028.1249 L516.39404,1027.3727 L517.38074,1026.6525 L518.39056,1025.9651 z" fill="#7A7A7A" fill-opacity="0.5" fill-rule="nonzero" stroke="black" stroke-width="0.958277"/>
</g>
<g id="cd_shape_4">
<path d="M528.4149,1018.48645 L535.0578,1014.0785 L540.33514,1010.9908 L545.62616,1008.4738 L550.7155,1006.83624 L555.3879,1006.3868 L559.428,1007.43396 L562.6205,1010.2864 L564.2028,1014.3082 L564.534,1019.621 L563.853,1025.9124 L562.3988,1032.87 L560.41034,1040.1818 L557.9673,1048.0477 L553.6286,1061.1174 L551.89233,1066.7219 L550.8166,1071.1188 L549.8906,1076.2626 L547.7909,1079.8992 L544.8949,1082.1039 L541.2109,1083.5665 L535.87366,1084.8468 L530.7241,1085.4908 L525.5898,1085.4285 L520.6267,1084.5112 L515.882,1082.5441 L512.10785,1079.5978 L509.70486,1076.935 L507.75638,1073.923 L506.23477,1070.6227 L505.11243,1067.0952 L504.0029,1061.6356 L503.8216,1053.9077 L504.67804,1046.9304 L505.93552,1041.3331 L507.5685,1037.3792 L509.22232,1034.4294 L512.6137,1030.4814 L516.36804,1027.3418 L518.39056,1025.9651 z" fill="none" stroke="black" stroke-dasharray="0.958277 1.916554" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.3" stroke-width="0.4791385"/>
</g>
<g id="item_5">
<path d="M450.07846,1000.6586 L450.6925,1000.02704 L451.17685,999.27734 L451.5615,998.4349 L451.8766,997.52466 L452.1522,996.5721 L452.4184,995.6023 L452.7053,994.64056 L453.04294,993.71204 L453.46143,992.842 L454.40646,991.55927 L455.58353,990.5896 L456.9509,989.91046 L458.4669,989.49915 L460.08978,989.33295 L461.7779,989.3893 L463.48947,989.6455 L465.18283,990.07886 L466.81628,990.66675 L468.34808,991.3865 L469.81488,992.1971 L471.2837,993.0493 L472.7585,993.9081 L474.2434,994.7383 L475.7423,995.5048 L477.25928,996.1727 L478.79825,996.70685 L480.3633,997.07214 L481.95837,997.23346 L483.58752,997.1558 L482.09415,996.4692 L480.50253,995.96924 L478.84836,995.5965 L477.16733,995.2916 L475.49512,994.9951 L473.8674,994.6476 L472.3199,994.18964 L470.8882,993.5617 L469.60806,992.7045 L468.51517,991.55865 L468.07578,990.89655 L467.71793,990.1958 L467.43298,989.462 L467.21228,988.70074 L467.04727,987.9178 L466.92926,987.1186 L466.8497,986.3089 L466.7999,985.4943 L466.77127,984.68054 L466.75516,983.87305 L462.777,954.4614 L459.1213,957.94257 L455.27606,961.2131 L451.25333,964.26263 L447.06583,967.0817 L442.72675,969.6614 L438.24976,971.99347 L433.64893,974.07074 L428.9388,975.88654 L424.13425,977.4351 L465.27356,945.53467 L465.60788,945.27124 L465.9575,945.02844 L466.3211,944.8072 L466.69742,944.6083 L467.08505,944.43243 L467.48257,944.28033 L467.88855,944.15247 L468.3015,944.0494 L468.71994,943.9713 L469.24896,943.9841 L469.7636,944.0679 L470.2648,944.2137 L470.75348,944.4124 L471.23062,944.65497 L471.6972,944.9322 L472.15408,945.23505 L472.6023,945.5544 L473.04272,945.8811 L473.47638,946.2061 L475.0826,947.3278 L476.75156,948.3538 L478.47757,949.2807 L480.25473,950.1052 L482.077,950.8246 L483.9381,951.4364 L485.8318,951.9385 L487.75156,952.3292 L489.69086,952.60724 L491.64307,952.7716 L475.8195,946.62964 L475.34146,946.4473 L474.874,946.2395 L474.41843,946.0067 L473.9761,945.7496 L473.5483,945.469 L473.13632,945.16565 L472.7413,944.8406 L472.36444,944.49457 L472.0068,944.1287 L471.72467,943.63446 L471.4731,943.124 L471.2531,942.5992 L471.0655,942.0619 L470.91092,941.5142 L470.78998,940.9581 L470.7031,940.3957 L470.65063,939.82904 L470.63275,939.2602 L470.64954,938.69135 L470.5136,934.0479 L470.44708,929.4029 L470.44998,924.75745 L470.52234,920.11255 L470.6641,915.46924 L470.87527,910.8286 L471.1558,906.1916 L471.50558,901.5593 L471.92456,896.9328 L472.41266,892.31305 L473.0347,891.72986 L473.75635,891.33124 L474.55124,891.1062 L475.3929,891.04364 L476.255,891.1325 L477.1111,891.3618 L477.9348,891.72046 L478.6997,892.1974 L479.3794,892.7816 L479.94748,893.4619 L480.40344,894.2078 L480.77063,894.99225 L481.05853,895.8095 L481.2766,896.6539 L481.43427,897.51965 L481.541,898.40125 L481.6062,899.2929 L481.63934,900.18896 L481.64987,901.0838 L481.64728,901.9716 L481.54694,916.10486 L481.51566,917.81885 L481.45474,919.5338 L481.35068,921.2442 L481.1899,922.9444 L480.95892,924.62897 L480.6442,926.2923 L480.23218,927.92883 L479.70935,929.533 L479.06216,931.0994 L478.2618,932.6135 L477.29932,934.0481 L476.19095,935.3786 L474.95288,936.5802 L473.6014,937.62823 L472.15268,938.4981 L470.62302,939.1651 L469.02856,939.60443 L467.3856,939.79156 L465.71033,939.7017 L464.42502,939.43304 L463.1949,939.0045 L462.02573,938.4302 L460.92343,937.7243 L459.89377,936.9012 L458.94263,935.975 L458.07584,934.95984 L457.29926,933.87006 L456.61865,932.71985 L456.03992,931.5234 L455.60333,930.27423 L455.21933,929.00793 L454.88855,927.7267 L454.61157,926.43274 L454.38892,925.12836 L454.22095,923.8158 L454.10794,922.4974 L454.05014,921.17535 L454.0476,919.8521 L454.10034,918.5299 L454.1456,916.49884 L454.24295,914.4626 L454.40353,912.42883 L454.6386,910.4054 L454.9594,908.40015 L455.3771,906.42084 L455.90292,904.4753 L456.54813,902.5713 L457.32388,900.71655 L458.2414,898.919 L459.32275,897.19574 L460.57172,895.5741 L461.97208,894.0768 L463.5076,892.72675 L465.16205,891.5467 L466.91925,890.5595 L468.76297,889.788 L470.677,889.255 L472.64508,888.9833 L474.65103,888.99567 z" fill="#7A7A7A" fill-opacity="0.5" fill-rule="nonzero" stroke="black" stroke-width="0.958277"/>
</g>
<g id="cd_shape_5">
<path d="M450.07846,1000.6586 L450.6925,1000.02704 L451.17685,999.27734 L451.8766,997.52466 L452.82126,994.1729 L453.46143,992.842 L454.40646,991.55927 L455.58353,990.5896 L456.9509,989.91046 L458.4669,989.49915 L460.08978,989.33295 L461.7779,989.3893 L463.48947,989.6455 L465.18283,990.07886 L466.81628,990.66675 L468.34808,991.3865 L467.60153,990.0433 L467.1116,988.3535 L466.80283,986.26245 L466.75516,983.87305 L462.777,954.4614 L459.1213,957.94257 L455.27606,961.2131 L451.25333,964.26263 L447.06583,967.0817 L442.72675,969.6614 L438.24976,971.99347 L433.64893,974.07074 L428.9388,975.88654 L424.13425,977.4351 L465.27356,945.53467 L465.9435,945.0068 L467.26547,944.308 L468.8339,943.9165 L470.0015,944.1066 L470.97186,944.5012 L472.08038,945.15985 L473.47638,946.2061 L475.0826,947.3278 L476.75156,948.3538 L478.47757,949.2807 L480.25473,950.1052 L482.077,950.8246 L483.9381,951.4364 L485.8318,951.9385 L487.75156,952.3292 L489.69086,952.60724 L491.64307,952.7716 L475.8195,946.62964 L474.62103,946.17255 L473.33466,945.32886 L472.12244,944.3313 L471.58316,943.38654 L471.03232,942.0725 L470.66858,940.39996 L470.63275,939.2602 L470.64954,938.69135 L470.5136,934.0479 L470.44708,929.4029 L470.44998,924.75745 L470.52234,920.11255 L470.6641,915.46924 L470.87527,910.8286 L471.1558,906.1916 L471.50558,901.5593 L471.92456,896.9328 L472.41266,892.31305 L473.0347,891.72986 L473.75635,891.33124 L474.55124,891.1062 L475.80804,891.01276 L477.54678,891.4785 L478.6997,892.1974 L479.70016,893.0573 L480.61786,894.5586 L481.19168,896.1875 L481.50485,897.90735 L481.66098,900.0419 L481.53955,917.14636 L481.42004,920.51056 L481.10223,923.8715 L480.6442,926.2923 L480.23218,927.92883 L479.70935,929.533 L479.06216,931.0994 L478.2618,932.6135 L477.29932,934.0481 L476.19095,935.3786 L474.95288,936.5802 L473.6014,937.62823 L472.15268,938.4981 L470.62302,939.1651 L469.02856,939.60443 L467.3856,939.79156 L465.71033,939.7017 L464.42502,939.43304 L463.1949,939.0045 L462.02573,938.4302 L460.38492,937.37946 L458.47412,935.51874 L456.91245,933.3273 L456.03992,931.5234 L455.3849,929.64923 L454.72296,927.0853 L454.38892,925.12836 L454.13684,923.1586 L454.0212,920.5138 L454.10034,918.5299 L454.17053,915.3797 L454.4899,911.3349 L454.9594,908.40015 L455.3771,906.42084 L455.90292,904.4753 L456.54813,902.5713 L457.32388,900.71655 L458.2414,898.919 L459.32275,897.19574 L460.57172,895.5741 L461.97208,894.0768 L463.5076,892.72675 L465.16205,891.5467 L466.91925,890.5595 L468.76297,889.788 L470.677,889.255 L472.64508,888.9833 L474.65103,888.99567 z" fill="none" stroke="black" stroke-dasharray="0.958277 1.916554" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.3" stroke-width="0.4791385"/>
</g>
</defs>
<use href="#item_0" transform="translate(-403.2406 556.09845), rotate(-90)">
<title>item, id: 0, transf: [r: -90.000°, t: (-403.241, 556.098)]</title>
</use>
<use href="#item_2" transform="translate(1146.5802 1271.3414), rotate(90)">
<title>item, id: 2, transf: [r: 90.000°, t: (1146.580, 1271.341)]</title>
</use>
<use href="#item_1" transform="translate(-78.41934 681.2999), rotate(0)">
<title>item, id: 1, transf: [r: 0.000°, t: (-78.419, 681.300)]</title>
</use>
<use href="#item_3" transform="translate(495.89752 1650.0969), rotate(-180)">
<title>item, id: 3, transf: [r: -180.000°, t: (495.898, 1650.097)]</title>
</use>
<use href="#item_5" transform="translate(-888.95026 491.65616), rotate(-90)">
<title>item, id: 5, transf: [r: -90.000°, t: (-888.950, 491.656)]</title>
</use>
<use href="#item_4" transform="translate(-503.80917 43.807007), rotate(0)">
<title>item, id: 4, transf: [r: 0.000°, t: (-503.809, 43.807)]</title>
</use>
</g>
<g id="quality_zones"/>
<g id="optionals">
<g id="highlight_cd_shapes">
<use href="#cd_shape_0" transform="translate(-403.2406 556.09845), rotate(-90)"/>
<use href="#cd_shape_2" transform="translate(1146.5802 1271.3414), rotate(90)"/>
<use href="#cd_shape_1" transform="translate(-78.41934 681.2999), rotate(0)"/>
<use href="#cd_shape_3" transform="translate(495.89752 1650.0969), rotate(-180)"/>
<use href="#cd_shape_5" transform="translate(-888.95026 491.65616), rotate(-90)"/>
<use href="#cd_shape_4" transform="translate(-503.80917 43.807007), rotate(0)"/>
<path d="M0,0 L348.46436,0 L348.46436,2000 L0,2000 z" fill="none" stroke="black" stroke-dasharray="0.958277 1.916554" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.3" stroke-width="0.4791385"/>
</g>
<g id="surrogates">
<defs/>
</g>
<g id="collision_lines"/>
</g>
<text font-family="monospace" font-size="8.711609" font-weight="500" x="0" y="-4.3558044">
h: 2000.000 | w: 348.464 | d: 24.296% | 64_348.464_final
</text>
</svg>

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions