Commit 0ec8ba7b authored by Dipl.-Ing. Jonas Stienen's avatar Dipl.-Ing. Jonas Stienen
Browse files

Adding poster resources

parents
[submodule "code/ITACoreLibs"]
path = code/ITACoreLibs
url = https://git.rwth-aachen.de/ita/ITACoreLibs.git
\ No newline at end of file
ITACoreLibs @ 9d00301d
Subproject commit 9d00301dbd6903b5708ecde8c043a7c9b6bbc445
# Purpose
This repository has been created to provide supporting information for
```
Title: Real-time auralization of propagation paths with reflection, diffraction and Doppler shift
Conference: DAGA 2018, München, Germany
Session: Virtuelle Akustik
Authors: Jonas Stienen and Michael Vorländer
```
Copyright Jonas Stienen, 2017. Media is [CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0/) and code is [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
See also LICENSE files in the respective directories.
# C++ Code
See [ITACoreLibs](https://git.rwth-aachen.de/ita/ITACoreLibs)
The used versions of the code is linked as submodules in the `code` directory. Use CMake and the CMakeLists.txt in that folder to create a project with all tests and benchmarks.
Clone with `--recursive` flag in order to populate submodules.
# Support
Please understand that no support can be provided for building the code base, if the available guides are not sufficient.
The main purpose why the code is open source is to increase transparency and help other researchers to understand the approach and reproduce results (mostly by inspecting the source code).
# Further information
Find more about me and the Institute of Technical Acoustics (ITA) of the RWTH Aachen University on
[http://www.akustik.rwth-aachen.de](http://www.akustik.rwth-aachen.de) (website)
[http://blog.rwth-aachen.de/akustik](http://blog.rwth-aachen.de/akustik) (Akustik-blog)
This diff is collapsed.
function Result = ini2struct(FileName)
%==========================================================================
% Author: Andriy Nych ( nych.andriy@gmail.com )
% Version: 733341.4155741782200
%==========================================================================
%
% INI = ini2struct(FileName)
%
% This function parses INI file FileName and returns it as a structure with
% section names and keys as fields.
%
% Sections from INI file are returned as fields of INI structure.
% Each fiels (section of INI file) in turn is structure.
% It's fields are variables from the corresponding section of the INI file.
%
% If INI file contains "oprhan" variables at the beginning, they will be
% added as fields to INI structure.
%
% Lines starting with ';' and '#' are ignored (comments).
%
% See example below for more information.
%
% Usually, INI files allow to put spaces and numbers in section names
% without restrictions as long as section name is between '[' and ']'.
% It makes people crazy to convert them to valid Matlab variables.
% For this purpose Matlab provides GENVARNAME function, which does
% "Construct a valid MATLAB variable name from a given candidate".
% See 'help genvarname' for more information.
%
% The INI2STRUCT function uses the GENVARNAME to convert strange INI
% file string into valid Matlab field names.
%
% [ test.ini ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% SectionlessVar1=Oops
% SectionlessVar2=I did it again ;o)
% [Application]
% Title = Cool program
% LastDir = c:\Far\Far\Away
% NumberOFSections = 2
% [1st section]
% param1 = val1
% Param 2 = Val 2
% [Section #2]
% param1 = val1
% Param 2 = Val 2
%
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% The function converts this INI file it to the following structure:
%
% [ MatLab session (R2006b) ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% >> INI = ini2struct('test.ini');
% >> disp(INI)
% sectionlessvar1: 'Oops'
% sectionlessvar2: 'I did it again ;o)'
% application: [1x1 struct]
% x1stSection: [1x1 struct]
% section0x232: [1x1 struct]
%
% >> disp(INI.application)
% title: 'Cool program'
% lastdir: 'c:\Far\Far\Away'
% numberofsections: '2'
%
% >> disp(INI.x1stSection)
% param1: 'val1'
% param2: 'Val 2'
%
% >> disp(INI.section0x232)
% param1: 'val1'
% param2: 'Val 2'
%
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% NOTE.
% WhatToDoWithMyVeryCoolSectionAndVariableNamesInIniFileMyVeryCoolProgramWrites?
% GENVARNAME also does the following:
% "Any string that exceeds NAMELENGTHMAX is truncated". (doc genvarname)
% Period.
%
% =========================================================================
Result = []; % we have to return something
CurrMainField = ''; % it will be used later
f = fopen(FileName,'r'); % open file
while ~feof(f) % and read until it ends
s = strtrim(fgetl(f)); % Remove any leading/trailing spaces
if isempty(s)
continue;
end;
if (s(1)==';') % ';' start comment lines
continue;
end;
if (s(1)=='#') % '#' start comment lines
continue;
end;
if ( s(1)=='[' ) && (s(end)==']' )
% We found section
CurrMainField = genvarname(lower(s(2:end-1)));
Result.(CurrMainField) = []; % Create field in Result
else
% ??? This is not a section start
[par,val] = strtok(s, '=');
val = CleanValue(val);
if ~isempty(CurrMainField)
% But we found section before and have to fill it
Result.(CurrMainField).(lower(genvarname(par))) = val;
else
% No sections found before. Orphan value
Result.(lower(genvarname(par))) = val;
end
end
end
fclose(f);
return;
function res = CleanValue(s)
res = strtrim(s);
if strcmpi(res(1),'=')
res(1)=[];
end
res = strtrim(res);
return;
Copyright (c) 2008, Andriy Nych
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the distribution
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
addpath( 'ini2struct' )
bm_ini = ini2struct( 'ITADSP_BM_SIMO_VDL.ini' );
fs = 44100;
%% Plot
figure
hold on
title( 'SIMO VDL c-spline interpolated read-out performance for 256 paths' )
xlabel( 'Resampling factor' )
ylabel( 'Computation time mean and stddev / ms' )
ylim( [ 0 4 ] )
xlim( [ 0.45 1.55 ] );
grid on
Bs = [ 32 64 128 256 ];
plot_shift = -0.002;
for b = Bs
% Get data
bm_ids = fieldnames( bm_ini );
R = zeros( numel( bm_ids ), 1 );
M = zeros( numel( bm_ids ), 1 );
E = zeros( numel( bm_ids ), 1 );
for n = 1:numel( bm_ids );
bm_id = bm_ids{ n };
bm = bm_ini.( bm_id );
B = str2num( bm.blocklength );
if B == b && strcmpi( bm.interpolationtype, 'cubicspline' )
delay_inc = str2num( bm.delayincrementsample );
R( n ) = 1 + delay_inc / B;
M( n ) = str2num( bm.computationmean );
E( n ) = str2num( bm.computationstddev );
end
end
P = [ R( R > 0 ), M( R > 0 ), E( R > 0 ) ];
[ P_sorted, P_sorted_idx ] = sort( P( :, 1 ), 1 );
errorbar( P_sorted + plot_shift, P( P_sorted_idx, 2 ) * 1e3, P( P_sorted_idx, 3 ) * 1e3, 'O-', 'LineWidth', 1 ) % plot in ms over resampling factor
plot_shift = plot_shift + 0.0025;
end
legend( 'Location', 'northeast', ...
'Blocklength: 32 samples (0.7 ms time budget)', ...
'Blocklength: 64 samples (1.5 ms time budget)', ...
'Blocklength: 128 samples (2.9 ms time budget)', ...
'Blocklength: 256 samples (5.8 ms time budget)' )
set( gcf, 'units', 'points', 'position', [ 1, 1, 800, 400 ] )
print( 'simo_vdl_benchmark','-dpdf', '-bestfit' )
Binary files /dev/null and b/resources/BuildEnvironment-0.skp differ
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1817.8394"
height="392.61893"
viewBox="0 0 1704.2243 368.08025"
id="svg2"
version="1.1"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="ScaledPropSimFilter.svg">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.70710678"
inkscape:cx="505.30523"
inkscape:cy="141.66574"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="3200"
inkscape:window-height="1738"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<defs
id="defs4">
<marker
inkscape:stockid="Arrow1Mendc"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mendc"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4345"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#071fff;fill-rule:evenodd;stroke:#071fff;stroke-width:1.00000003pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mendck"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mendck"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4650"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#ad0000;fill-rule:evenodd;stroke:#ad0000;stroke-width:1.00000003pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1MendN0"
orient="auto"
refY="0"
refX="0"
id="Arrow1MendN0"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path5196"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#ad0000;fill-rule:evenodd;stroke:#ad0000;stroke-width:1.00000003pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1MendN0-7I"
orient="auto"
refY="0"
refX="0"
id="Arrow1MendN0-7I"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path1104"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#071fff;fill-opacity:1;fill-rule:evenodd;stroke:#071fff;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
</defs>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(426.10636,350.50723)"
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1">
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4768-1"
d="M 163.85093,-167.79293 H 108.51975"
style="fill:none;stroke:#ad0000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1MendN0)" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4768-1-1"
d="m 688.67087,-167.79293 h 55.33115"
style="fill:none;stroke:#071fff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1MendN0-7I)" />
<rect
style="fill:#d8ecd7;fill-opacity:1;stroke:#346732;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4136-7"
width="522.81995"
height="363.42859"
x="164.85092"
y="-349.50723"
ry="8" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#c3c3c3;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4136"
width="406.81998"
height="251.42857"
x="226.54662"
y="-287.93579"
ry="0" />
<path
style="fill:none;stroke:#323232;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 236.29918,-227.79292 h 110 l 59,60.99999 62,-28 64,105.999997 63,-8 28,51"
id="path4138"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="333.84454"
y="-5.7929301"
id="text4140"><tspan
sodipodi:role="line"
id="tspan4142"
x="333.84454"
y="-5.7929301"
style="font-size:25px;line-height:1.25">Frequency / Hz</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="70.948456"
y="205.19206"
id="text4144"
transform="rotate(-90)"><tspan
sodipodi:role="line"
id="tspan4146"
x="70.948456"
y="205.19206"
style="font-size:25px;line-height:1.25">Magnitude / dB</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
x="426.27554"
y="-307.56549"
id="text4140-2"><tspan
sodipodi:role="line"
x="426.27554"
y="-307.56549"
style="font-weight:bold;font-size:25px;line-height:1.25;-inkscape-font-specification:'Sans Bold';text-align:center;text-anchor:middle"
id="tspan5355">unscaled</tspan></text>
<g
id="g916"
transform="translate(-139.21165,2.6516504)">
<rect
ry="8"
y="-349.50723"
x="893.50977"
height="363.42859"
width="522.81995"
id="rect4136-7-1"
style="fill:#d4d8ff;fill-opacity:1;stroke:#071fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0"
y="-287.93579"
x="955.20551"
height="251.42857"
width="406.81998"
id="rect4136-1"
style="fill:#ffffff;fill-opacity:1;stroke:#c3c3c3;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4138-5"
d="m 964.95806,-227.79292 h 110.00004 l 59,60.99999 62,-28 64,106 63,-8 28,51"
style="fill:none;stroke:#828282;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text4140-26"
y="-5.7929268"
x="1062.5034"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="-5.7929268"
x="1062.5034"
id="tspan4142-9"
sodipodi:role="line"
style="font-size:25px;line-height:1.25;letter-spacing:0px">Frequency / Hz</tspan></text>
<text
transform="rotate(-90)"
id="text4144-0"
y="933.85095"
x="70.948456"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="933.85095"
x="70.948456"
id="tspan4146-5"
sodipodi:role="line"
style="font-size:25px;line-height:1.25;letter-spacing:0px">Magnitude / dB</tspan></text>
<text
id="text4140-2-5"
y="-309.60345"
x="1154.871"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
id="tspan4469"
style="font-weight:bold;font-size:25px;line-height:1.25;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;text-anchor:middle"
y="-309.60345"
x="1154.871"
sodipodi:role="line">upscaled</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4138-5-7"
d="m 965.07804,-227.67294 h 128.47026 l 68.9068,60.91956 72.4105,-27.96308 74.7464,105.86024 49.5893,-5.38461"
style="fill:none;stroke:#071fff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="cccccc" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#071fff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mendc)"
d="m 1089.7803,-256.97289 127.2792,-1.41421"
id="path3894"
inkscape:connector-curvature="0" />
</g>
<g
id="g903"
transform="translate(163.0765)">
<rect
ry="8"
y="-349.50723"
x="-588.18286"
height="363.42859"
width="522.81995"
id="rect4136-7-2"
style="fill:#ffe6e6;fill-opacity:1;stroke:#ad0000;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0"
y="-287.93579"
x="-526.48712"
height="251.42857"
width="406.81998"
id="rect4136-4"
style="fill:#ffffff;fill-opacity:1;stroke:#c3c3c3;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4138-7"
d="m -516.7346,-227.79292 h 110 l 59,60.99999 62,-28 64,106 63,-8 28,51"
style="fill:none;stroke:#828282;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text4140-4"
y="-5.7929268"
x="-419.18918"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="-5.7929268"
x="-419.18918"
id="tspan4142-2"
sodipodi:role="line"
style="font-size:25px;line-height:1.25;letter-spacing:0px">Frequency / Hz</tspan></text>
<text
transform="rotate(-90)"
id="text4144-8"
y="-547.84174"
x="70.948456"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="-547.84174"
x="70.948456"
id="tspan4146-7"
sodipodi:role="line"
style="font-size:25px;line-height:1.25;letter-spacing:0px">Magnitude / dB</tspan></text>
<text
id="text4140-2-6"
y="-309.60345"
x="-326.82175"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
style="font-weight:bold;font-size:25px;line-height:1.25;-inkscape-font-specification:'Sans Bold';text-align:center;letter-spacing:0px;text-anchor:middle"
y="-309.60345"
x="-326.82175"
id="tspan4142-7-2"
sodipodi:role="line">downscaled</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4138-7-5"
d="m -516.91384,-227.97216 h 85.11528 l 45.65273,61.12014 47.97407,-28.05515 49.52166,106.20877 48.7478,-8.01576 21.6657,51.10047"
style="fill:none;stroke:#ad0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#ad0000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mendck)"
d="m -261.6335,-256.97289 -127.27911,-1.41421"
id="path3894-7"
inkscape:connector-curvature="0" />
</g>
<g
id="g923"
transform="translate(-68.931421,-45.078057)">
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:#071fff;stroke-width:1.09792888;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path4770"
cx="789.20923"
cy="-66.192039"
rx="51.756866"
ry="33.124393" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman,';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#071fff;fill-opacity:1;stroke:none"
x="790.42383"
<