Browse Source

Added util/color.hpp, fixed LightWidget color algorithm, added Ctrl+U key command for "Disconnect cables", refactor audio.cpp/midi.cpp, add new Audio Interface panel

tags/v0.6.0
Andrew Belt 6 years ago
parent
commit
6049c0abe5
14 changed files with 482 additions and 371 deletions
  1. +5
    -2
      include/app.hpp
  2. +5
    -3
      include/audio.hpp
  3. +13
    -6
      include/componentlibrary.hpp
  4. +36
    -0
      include/util/color.hpp
  5. +305
    -247
      res/Core/AudioInterface.svg
  6. +7
    -9
      src/app/AudioWidget.cpp
  7. +4
    -0
      src/app/LedDisplay.cpp
  8. +6
    -19
      src/app/LightWidget.cpp
  9. +15
    -1
      src/app/MidiWidget.cpp
  10. +1
    -1
      src/app/ModuleLightWidget.cpp
  11. +14
    -6
      src/app/ModuleWidget.cpp
  12. +6
    -5
      src/app/MultiLightWidget.cpp
  13. +17
    -9
      src/audio.cpp
  14. +48
    -63
      src/core/AudioInterface.cpp

+ 5
- 2
include/app.hpp View File

@@ -388,8 +388,8 @@ struct MidiWidget : LedDisplay {
////////////////////

struct LightWidget : TransparentWidget {
NVGcolor bgColor = nvgRGBf(0, 0, 0);
NVGcolor color = nvgRGBf(1, 1, 1);
NVGcolor borderColor = nvgRGBA(0, 0, 0, 0);
NVGcolor color = nvgRGBA(0, 0, 0, 0);
void draw(NVGcontext *vg) override;
virtual void drawLight(NVGcontext *vg);
virtual void drawHalo(NVGcontext *vg);
@@ -397,6 +397,9 @@ struct LightWidget : TransparentWidget {

/** Mixes a list of colors based on a list of brightness values */
struct MultiLightWidget : LightWidget {
/** Color of the "off" state */
NVGcolor bgColor = nvgRGBA(0, 0, 0, 0);
/** Colors of each value state */
std::vector<NVGcolor> baseColors;
void addBaseColor(NVGcolor baseColor);
/** Sets the color to a linear combination of the baseColors with the given weights */


+ 5
- 3
include/audio.hpp View File

@@ -16,6 +16,7 @@ struct AudioIO {
int driver = 0;
int device = -1;
int offset = 0;
int maxChannels = 8;
int sampleRate = 44100;
int blockSize = 256;
int numOutputs = 0;
@@ -33,10 +34,11 @@ struct AudioIO {

int getDeviceCount();
bool getDeviceInfo(int device, RtAudio::DeviceInfo *deviceInfo);
int getDeviceMaxChannels(int device);
/** Returns the number of inputs or outputs, whichever is greater */
int getDeviceChannels(int device);
std::string getDeviceName(int device);
std::string getDeviceDetail(int device, int offset, int maxChannels);
void setDevice(int device, int offset, int maxChannels);
std::string getDeviceDetail(int device, int offset);
void setDevice(int device, int offset);

void setSampleRate(int sampleRate);
void setBlockSize(int blockSize);


+ 13
- 6
include/componentlibrary.hpp View File

@@ -370,39 +370,46 @@ struct CL1362Port : SVGPort {
// Lights
////////////////////

struct RedLight : ModuleLightWidget {
struct GrayModuleLightWidget : ModuleLightWidget {
GrayModuleLightWidget() {
bgColor = nvgRGB(0x5a, 0x5a, 0x5a);
borderColor = nvgRGBA(0, 0, 0, 0x60);
}
};

struct RedLight : GrayModuleLightWidget {
RedLight() {
addBaseColor(COLOR_RED);
}
};

struct GreenLight : ModuleLightWidget {
struct GreenLight : GrayModuleLightWidget {
GreenLight() {
addBaseColor(COLOR_GREEN);
}
};

struct YellowLight : ModuleLightWidget {
struct YellowLight : GrayModuleLightWidget {
YellowLight() {
addBaseColor(COLOR_YELLOW);
}
};

struct BlueLight : ModuleLightWidget {
struct BlueLight : GrayModuleLightWidget {
BlueLight() {
addBaseColor(COLOR_BLUE);
}
};

/** Reads two adjacent lightIds, so `lightId` and `lightId + 1` must be defined */
struct GreenRedLight : ModuleLightWidget {
struct GreenRedLight : GrayModuleLightWidget {
GreenRedLight() {
addBaseColor(COLOR_GREEN);
addBaseColor(COLOR_RED);
}
};

struct RedGreenBlueLight : ModuleLightWidget {
struct RedGreenBlueLight : GrayModuleLightWidget {
RedGreenBlueLight() {
addBaseColor(COLOR_RED);
addBaseColor(COLOR_GREEN);


+ 36
- 0
include/util/color.hpp View File

@@ -0,0 +1,36 @@
#pragma once


#include "util/math.hpp"
#include "../ext/nanovg/src/nanovg.h"


namespace rack {


inline NVGcolor colorClip(NVGcolor a) {
for (int i = 0; i < 4; i++)
a.rgba[i] = clamp(a.rgba[i], 0.f, 1.f);
return a;
}

inline NVGcolor colorMinus(NVGcolor a, NVGcolor b) {
for (int i = 0; i < 4; i++)
a.rgba[i] -= b.rgba[i];
return a;
}

inline NVGcolor colorPlus(NVGcolor a, NVGcolor b) {
for (int i = 0; i < 4; i++)
a.rgba[i] += b.rgba[i];
return a;
}

inline NVGcolor colorMult(NVGcolor a, float x) {
for (int i = 0; i < 4; i++)
a.rgba[i] *= x;
return a;
}


} // namespace rack

+ 305
- 247
res/Core/AudioInterface.svg View File

@@ -13,11 +13,11 @@
height="128.4993mm"
viewBox="0 0 50.799999 128.4993"
version="1.1"
id="svg28799"
id="svg48736"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="Audio.svg">
sodipodi:docname="AudioInterface.svg">
<defs
id="defs28793" />
id="defs48730" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
@@ -25,25 +25,26 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="173.75816"
inkscape:cy="245.43317"
inkscape:zoom="1.979899"
inkscape:cx="250.93456"
inkscape:cy="222.506"
inkscape:document-units="mm"
inkscape:current-layer="layer2"
inkscape:current-layer="layer6"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1600"
inkscape:window-height="882"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:window-width="2560"
inkscape:window-height="1422"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="0"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true" />
inkscape:snap-page="true" />
<metadata
id="metadata28796">
id="metadata48733">
<rdf:RDF>
<cc:Work
rdf:about="">
@@ -58,406 +59,463 @@
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(88.9,-244.84559)"
transform="translate(-339.725,84.74965)"
style="display:inline">
<path
inkscape:connector-curvature="0"
id="path3819"
d="m -88.806295,244.93792 h 50.613966 v 128.31327 h -50.613966 z m 0,0"
id="path40442"
d="m 339.8187,-84.657321 h 50.61397 V 43.65595 H 339.8187 Z m 0,0"
style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
id="path3821"
d="m -38.1,244.84559 h -50.8 v 128.4993 h 50.8 z m -0.186039,128.31189 H -88.712587 V 245.03163 h 50.426548 z m 0,0"
id="path40444"
d="m 390.525,-84.74965 h -50.8 v 128.4993 h 50.8 z M 390.33896,43.56224 H 339.91241 V -84.563613 h 50.42655 z m 0,0"
style="fill:#ababab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
id="path3847"
d="m -66.251942,369.20251 c -0.117133,0 -0.224621,-0.0661 -0.275608,-0.17088 l -1.003212,-2.00504 c -0.07579,-0.15297 -0.01379,-0.33762 0.139182,-0.41341 0.151585,-0.0772 0.337619,-0.0152 0.413409,0.1378 l 0.726229,1.45246 0.726224,-1.45246 c 0.07579,-0.15296 0.261828,-0.21497 0.413414,-0.1378 0.15296,0.0758 0.214972,0.26044 0.137802,0.41341 l -1.001833,2.00504 c -0.05237,0.10474 -0.158474,0.17088 -0.275607,0.17088"
id="path44500"
d="m 370.73775,-10.499574 h 11.60032"
style="fill:none;stroke:#000000;stroke-width:0.35277775;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path44502"
d="m 347.53848,-10.499574 h 11.59894"
style="fill:none;stroke:#000000;stroke-width:0.35277775;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path44504"
d="m 370.73775,-25.112289 h 11.60032"
style="fill:none;stroke:#000000;stroke-width:0.35277775;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path44506"
d="m 347.53848,-25.112289 h 11.59894"
style="fill:none;stroke:#000000;stroke-width:0.35277775;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path44508"
d="m 363.97847,19.66844 c 0,-0.54984 -0.44924,-0.99908 -0.99908,-0.99908 h -19.28288 c -0.54984,0 -0.99908,0.44924 -0.99908,0.99908 v 12.17359 c 0,0.54983 0.44924,0.99908 0.99908,0.99908 h 19.28288 c 0.54984,0 0.99908,-0.44925 0.99908,-0.99908 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
id="path3849"
d="m -60.74668,369.20251 c -0.117136,0 -0.223245,-0.0661 -0.275608,-0.17088 l -1.00321,-2.00504 c -0.07579,-0.15297 -0.01378,-0.33762 0.139181,-0.41341 0.15158,-0.0772 0.337619,-0.0152 0.413409,0.1378 l 0.726228,1.45246 0.727604,-1.45246 c 0.07579,-0.15296 0.260448,-0.21497 0.413409,-0.1378 0.151585,0.0758 0.213598,0.26044 0.137806,0.41341 l -1.00321,2.00504 c -0.05237,0.10474 -0.158475,0.17088 -0.275609,0.17088"
id="path44510"
d="m 387.17912,3.669412 c 0,-0.551215 -0.45062,-1.000451 -1.00045,-1.000451 h -19.28151 c -0.54984,0 -1.00046,0.449236 -1.00046,1.000451 V 15.84163 c 0,0.54983 0.45062,1.00045 1.00046,1.00045 h 19.28151 c 0.54983,0 1.00045,-0.45062 1.00045,-1.00045 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
id="path3851"
d="m -63.349795,369.20251 c -0.72347,0 -1.310513,-0.58842 -1.310513,-1.31189 0,-0.72209 0.587043,-1.31052 1.310513,-1.31052 0.286632,0 0.558105,0.091 0.78686,0.26183 0.136426,0.10335 0.163985,0.29628 0.06063,0.43271 -0.101974,0.13642 -0.294897,0.16398 -0.431324,0.0606 -0.121267,-0.0896 -0.264583,-0.13918 -0.416168,-0.13918 -0.383095,0 -0.694531,0.31282 -0.694531,0.69453 0,0.38309 0.311436,0.69453 0.694531,0.69453 0.151585,0 0.294901,-0.0482 0.416168,-0.13918 0.136427,-0.10198 0.32935,-0.0744 0.431324,0.062 0.103353,0.13643 0.07579,0.32935 -0.06063,0.43132 -0.228755,0.17226 -0.500228,0.26321 -0.78686,0.26321"
id="path44512"
d="m 363.97847,3.669412 c 0,-0.551215 -0.44924,-1.000451 -0.99908,-1.000451 h -19.28288 c -0.54984,0 -0.99908,0.449236 -0.99908,1.000451 V 15.84163 c 0,0.54983 0.44924,1.00045 0.99908,1.00045 h 19.28288 c 0.54984,0 0.99908,-0.45062 0.99908,-1.00045 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
id="path3853"
d="m -62.929492,367.87546 c 0,0.22186 -0.179147,0.40101 -0.399634,0.40101 -0.221862,0 -0.401009,-0.17915 -0.401009,-0.40101 0,-0.22186 0.179147,-0.40101 0.401009,-0.40101 0.220487,0 0.399634,0.17915 0.399634,0.40101"
id="path44514"
d="m 362.18564,39.60727 c -0.11713,0 -0.22462,-0.0661 -0.27698,-0.17088 l -1.00184,-2.00504 c -0.0758,-0.15297 -0.0152,-0.33762 0.13781,-0.41341 0.15158,-0.0772 0.33762,-0.0152 0.41341,0.1378 l 0.7276,1.45246 0.72623,-1.45246 c 0.0758,-0.15296 0.26045,-0.21497 0.41341,-0.1378 0.15296,0.0758 0.21359,0.26044 0.1378,0.41341 l -1.00183,2.00504 c -0.0524,0.10474 -0.15985,0.17088 -0.27561,0.17088"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -70.706464,254.12899 c 0,0.17088 0.126778,0.30868 0.297657,0.30868 0.137801,0 0.248045,-0.0772 0.303166,-0.20395 l 0.203951,-0.49058 h 1.306379 l 0.198437,0.46854 c 0.06064,0.13229 0.159855,0.22599 0.314195,0.22599 0.170875,0 0.308681,-0.14331 0.308681,-0.31419 0,-0.0441 -0.01101,-0.0882 -0.03306,-0.13229 l -1.03628,-2.33164 c -0.07166,-0.15985 -0.198438,-0.25907 -0.374827,-0.25907 h -0.03859 c -0.176389,0 -0.30868,0.0992 -0.380336,0.25907 l -1.030775,2.33164 c -0.02205,0.0441 -0.03858,0.0937 -0.03858,0.1378 z m 1.047309,-0.95911 0.41341,-0.97565 0.407899,0.97565 z m 0,0"
id="path26666" />
id="path44516"
d="m 367.69091,39.60727 c -0.11714,0 -0.22325,-0.0661 -0.27561,-0.17088 l -1.00321,-2.00504 c -0.0758,-0.15297 -0.0138,-0.33762 0.13918,-0.41341 0.15158,-0.0772 0.33762,-0.0152 0.41341,0.1378 l 0.72623,1.45246 0.72622,-1.45246 c 0.0758,-0.15296 0.26183,-0.21497 0.41341,-0.1378 0.15297,0.0758 0.21498,0.26044 0.13781,0.41341 l -1.00184,2.00504 c -0.0524,0.10474 -0.15847,0.17088 -0.2756,0.17088"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -66.11777,254.45421 c 0.793749,0 1.300868,-0.43546 1.300868,-1.33394 v -1.37253 c 0,-0.1819 -0.148827,-0.32521 -0.33073,-0.32521 -0.181899,0 -0.325215,0.14331 -0.325215,0.32521 v 1.39458 c 0,0.47404 -0.242535,0.71106 -0.639409,0.71106 -0.396875,0 -0.63941,-0.24804 -0.63941,-0.7276 v -1.37804 c 0,-0.1819 -0.143316,-0.32521 -0.325219,-0.32521 -0.181899,0 -0.325215,0.14331 -0.325215,0.32521 v 1.39458 c 0,0.87092 0.485069,1.31189 1.28433,1.31189 z m 0,0"
id="path26662" />
id="path44518"
d="m 365.08779,39.60727 c -0.72347,0 -1.31051,-0.58842 -1.31051,-1.31189 0,-0.72209 0.58704,-1.31052 1.31051,-1.31052 0.28663,0 0.55811,0.091 0.78686,0.26183 0.13505,0.10335 0.16261,0.29628 0.0606,0.43271 -0.10197,0.13642 -0.2949,0.16398 -0.43132,0.0606 -0.12127,-0.0896 -0.26459,-0.13918 -0.41617,-0.13918 -0.3831,0 -0.69453,0.31282 -0.69453,0.69453 0,0.38309 0.31143,0.69453 0.69453,0.69453 0.15158,0 0.2949,-0.0482 0.41617,-0.13918 0.13642,-0.10198 0.32935,-0.0744 0.43132,0.062 0.10198,0.13643 0.0744,0.32935 -0.0606,0.43132 -0.22875,0.17226 -0.50023,0.26321 -0.78686,0.26321"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -64.088593,254.08489 c 0,0.18191 0.143316,0.32522 0.325219,0.32522 h 0.826823 c 0.931553,0 1.576475,-0.65043 1.576475,-1.48277 v -0.005 c 0,-0.83784 -0.644922,-1.47725 -1.576475,-1.47725 h -0.826823 c -0.181903,0 -0.325219,0.14882 -0.325219,0.33072 z m 0.650434,-0.26458 v -1.78594 h 0.501608 c 0.534678,0 0.892968,0.36932 0.892968,0.89297 v 0.011 c 0,0.52366 -0.35829,0.88194 -0.892968,0.88194 z m 0,0"
id="path26650" />
id="path44520"
d="m 365.50809,38.28022 c 0,0.22186 -0.17914,0.40101 -0.40101,0.40101 -0.22048,0 -0.39963,-0.17915 -0.39963,-0.40101 0,-0.22186 0.17915,-0.40101 0.39963,-0.40101 0.22187,0 0.40101,0.17915 0.40101,0.40101"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -60.742094,254.10694 c 0,0.18191 0.143316,0.33073 0.325215,0.33073 0.181903,0 0.32522,-0.14882 0.32522,-0.33073 v -2.3592 c 0,-0.1819 -0.143317,-0.32521 -0.32522,-0.32521 -0.181899,0 -0.325215,0.14331 -0.325215,0.32521 z m 0,0"
id="path26654" />
d="m 357.73078,-75.466247 c 0,0.170879 0.12678,0.308681 0.29766,0.308681 0.1378,0 0.24805,-0.07717 0.30317,-0.203948 l 0.20395,-0.490583 h 1.30638 l 0.19843,0.468535 c 0.0606,0.132291 0.15986,0.225996 0.3142,0.225996 0.17087,0 0.30868,-0.143316 0.30868,-0.314191 0,-0.0441 -0.011,-0.08819 -0.0331,-0.132292 l -1.03629,-2.331642 c -0.0717,-0.159851 -0.19844,-0.259069 -0.37483,-0.259069 h -0.0386 c -0.17639,0 -0.30868,0.09922 -0.38033,0.259069 l -1.03078,2.331642 c -0.0221,0.0441 -0.0386,0.0937 -0.0386,0.137802 z m 1.04731,-0.959114 0.41341,-0.975649 0.4079,0.975649 z m 0,0"
id="path48232" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -57.900115,254.45972 c 0.915017,0 1.576475,-0.68902 1.576475,-1.53238 v -0.005 c 0,-0.84336 -0.655947,-1.52687 -1.570966,-1.52687 -0.915017,0 -1.576475,0.68903 -1.576475,1.53238 v 0.011 c 0,0.84336 0.655947,1.52135 1.570966,1.52135 z m 0.0055,-0.60082 c -0.523652,0 -0.89848,-0.42444 -0.89848,-0.93156 v -0.005 c 0,-0.50712 0.363802,-0.92604 0.892969,-0.92604 0.523653,0 0.892969,0.42443 0.892969,0.93155 v 0.011 c 0,0.50712 -0.363802,0.92053 -0.887458,0.92053 z m 0,0"
id="path26658" />
d="m 362.31948,-75.141028 c 0.79375,0 1.30087,-0.435462 1.30087,-1.333941 v -1.372528 c 0,-0.181899 -0.14882,-0.325215 -0.33073,-0.325215 -0.1819,0 -0.32521,0.143316 -0.32521,0.325215 v 1.394577 c 0,0.474045 -0.24254,0.711066 -0.63941,0.711066 -0.39688,0 -0.63941,-0.248045 -0.63941,-0.727604 v -1.378039 c 0,-0.181899 -0.14332,-0.325215 -0.32522,-0.325215 -0.1819,0 -0.32522,0.143316 -0.32522,0.325215 v 1.394577 c 0,0.87092 0.48507,1.311892 1.28433,1.311892 z m 0,0"
id="path48228" />
<path
inkscape:connector-curvature="0"
id="path3871"
d="m -41.258466,349.26368 c 0,-0.54984 -0.449239,-0.99908 -1.000453,-0.99908 h -7.681185 c -0.549841,0 -1.000459,0.44924 -1.000459,0.99908 v 12.17359 c 0,0.54983 0.450618,0.99908 1.000459,0.99908 h 7.681185 c 0.551214,0 1.000453,-0.44925 1.000453,-0.99908 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 364.34866,-75.510344 c 0,0.181903 0.14332,0.325219 0.32522,0.325219 h 0.82682 c 0.93156,0 1.57648,-0.650434 1.57648,-1.482771 v -0.0055 c 0,-0.837847 -0.64492,-1.477257 -1.57648,-1.477257 h -0.82682 c -0.1819,0 -0.32522,0.148827 -0.32522,0.330729 z m 0.65044,-0.264583 v -1.785937 h 0.5016 c 0.53468,0 0.89297,0.369316 0.89297,0.892968 v 0.01101 c 0,0.523657 -0.35829,0.881945 -0.89297,0.881945 z m 0,0"
id="path48216" />
<path
inkscape:connector-curvature="0"
id="path3873"
d="m -52.858792,349.26368 c 0,-0.54984 -0.449241,-0.99908 -0.999077,-0.99908 h -7.682561 c -0.549838,0 -0.99908,0.44924 -0.99908,0.99908 v 12.17359 c 0,0.54983 0.449242,0.99908 0.99908,0.99908 h 7.682561 c 0.549836,0 0.999077,-0.44925 0.999077,-0.99908 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 367.69515,-75.488295 c 0,0.181903 0.14332,0.330729 0.32522,0.330729 0.1819,0 0.32522,-0.148826 0.32522,-0.330729 v -2.359202 c 0,-0.181899 -0.14332,-0.325215 -0.32522,-0.325215 -0.1819,0 -0.32522,0.143316 -0.32522,0.325215 z m 0,0"
id="path48220" />
<path
inkscape:connector-curvature="0"
id="path3875"
d="m -64.459115,349.26368 c 0,-0.54984 -0.449241,-0.99908 -0.999077,-0.99908 h -7.682565 c -0.549836,0 -0.999078,0.44924 -0.999078,0.99908 v 12.17359 c 0,0.54983 0.449242,0.99908 0.999078,0.99908 h 7.682565 c 0.549836,0 0.999077,-0.44925 0.999077,-0.99908 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 370.53713,-75.135517 c 0.91502,0 1.57648,-0.689018 1.57648,-1.532379 v -0.0055 c 0,-0.843361 -0.65595,-1.526868 -1.57097,-1.526868 -0.91501,0 -1.57647,0.689021 -1.57647,1.532379 v 0.01101 c 0,0.843361 0.65594,1.521354 1.57096,1.521354 z m 0.005,-0.600823 c -0.52365,0 -0.89848,-0.424438 -0.89848,-0.931556 v -0.0055 c 0,-0.507118 0.3638,-0.926041 0.89297,-0.926041 0.52365,0 0.89297,0.424434 0.89297,0.931552 v 0.01101 c 0,0.507118 -0.3638,0.920531 -0.88746,0.920531 z m 0,0"
id="path48224" />
<path
inkscape:connector-curvature="0"
id="path3877"
d="m -76.058064,349.26368 c 0,-0.54984 -0.450617,-0.99908 -1.000456,-0.99908 h -7.681182 c -0.551216,0 -1.000457,0.44924 -1.000457,0.99908 v 12.17359 c 0,0.54983 0.449241,0.99908 1.000457,0.99908 h 7.681182 c 0.549839,0 1.000456,-0.44925 1.000456,-0.99908 z m 0,0"
id="path44538"
d="m 387.17912,19.66844 c 0,-0.54984 -0.45062,-0.99908 -1.00045,-0.99908 h -19.28151 c -0.54984,0 -1.00046,0.44924 -1.00046,0.99908 v 12.17359 c 0,0.54983 0.45062,0.99908 1.00046,0.99908 h 19.28151 c 0.54983,0 1.00045,-0.44925 1.00045,-0.99908 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -80.910483,351.37939 c 0.352778,0 0.600826,-0.21498 0.600826,-0.55673 v -0.005 c 0,-0.35829 -0.248048,-0.51263 -0.562239,-0.51263 -0.09371,0 -0.14883,0.011 -0.214976,0.0276 l 0.02205,-0.27561 h 0.540191 c 0.08268,0 0.15434,-0.0717 0.15434,-0.15434 0,-0.0827 -0.07166,-0.15434 -0.15434,-0.15434 h -0.700042 c -0.08268,0 -0.14883,0.0662 -0.15434,0.14883 l -0.03306,0.5457 c -0.0055,0.0606 0.01654,0.10473 0.06615,0.14332 0.07166,0.0496 0.110243,0.0717 0.159851,0.0717 0.04961,0 0.110243,-0.0441 0.242534,-0.0441 0.170879,0 0.286632,0.0827 0.286632,0.22049 0,0.14331 -0.110243,0.226 -0.259069,0.226 -0.115757,0 -0.209462,-0.0331 -0.30868,-0.10473 -0.02755,-0.022 -0.05512,-0.0331 -0.09371,-0.0331 -0.0937,0 -0.165365,0.0772 -0.165365,0.17087 0,0.0606 0.02755,0.10474 0.06615,0.13781 0.132292,0.0882 0.286632,0.14883 0.507118,0.14883 z m 0,0"
id="path26646" />
d="m 347.52677,21.78311 c 0.35278,0 0.60082,-0.21497 0.60082,-0.55672 v -0.006 c 0,-0.35829 -0.24804,-0.51262 -0.56224,-0.51262 -0.0937,0 -0.14882,0.011 -0.21497,0.0276 l 0.0221,-0.27561 h 0.54019 c 0.0827,0 0.15434,-0.0717 0.15434,-0.15434 0,-0.0827 -0.0717,-0.15434 -0.15434,-0.15434 h -0.70005 c -0.0827,0 -0.14882,0.0662 -0.15434,0.14883 l -0.0331,0.5457 c -0.005,0.0606 0.0165,0.10473 0.0661,0.14331 0.0717,0.0496 0.11025,0.0717 0.15986,0.0717 0.0496,0 0.11024,-0.0441 0.24253,-0.0441 0.17088,0 0.28663,0.0827 0.28663,0.22048 0,0.14332 -0.11024,0.226 -0.25907,0.226 -0.11575,0 -0.20946,-0.0331 -0.30868,-0.10473 -0.0275,-0.022 -0.0551,-0.033 -0.0937,-0.033 -0.0937,0 -0.16537,0.0772 -0.16537,0.17087 0,0.0606 0.0275,0.10473 0.0661,0.13781 0.13229,0.0882 0.28663,0.14882 0.50712,0.14882 z m 0,0"
id="path48212" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -69.280458,351.37939 c 0.347267,0 0.61185,-0.226 0.61185,-0.55673 v -0.005 c 0,-0.33073 -0.242534,-0.50712 -0.562239,-0.50712 -0.159855,0 -0.253559,0.0496 -0.336243,0.0992 0.02755,-0.20947 0.126781,-0.36932 0.325218,-0.36932 0.09922,0 0.165365,0.022 0.237021,0.0661 0.02755,0.011 0.05512,0.022 0.08819,0.022 0.08819,0 0.165364,-0.0717 0.165364,-0.15986 0,-0.0717 -0.03858,-0.12126 -0.0937,-0.15434 -0.09371,-0.0551 -0.226,-0.0937 -0.38585,-0.0937 -0.479559,0 -0.705556,0.38034 -0.705556,0.87643 v 0.005 c 0,0.3142 0.07717,0.49058 0.192924,0.60634 0.110243,0.11024 0.253559,0.17088 0.463021,0.17088 z m -0.01101,-0.30317 c -0.176389,0 -0.281118,-0.10473 -0.281118,-0.23703 v -0.005 c 0,-0.1378 0.09922,-0.23151 0.275607,-0.23151 0.170875,0 0.275608,0.0992 0.275608,0.23151 v 0.005 c 0,0.13781 -0.09922,0.23703 -0.270097,0.23703 z m 0,0"
id="path26642" />
d="m 359.15679,21.78311 c 0.34727,0 0.61185,-0.22599 0.61185,-0.55672 v -0.006 c 0,-0.33073 -0.24253,-0.50712 -0.56224,-0.50712 -0.15985,0 -0.25355,0.0496 -0.33624,0.0992 0.0276,-0.20946 0.12678,-0.36931 0.32522,-0.36931 0.0992,0 0.16536,0.022 0.23702,0.0661 0.0276,0.011 0.0551,0.022 0.0882,0.022 0.0882,0 0.16537,-0.0717 0.16537,-0.15986 0,-0.0717 -0.0386,-0.12126 -0.0937,-0.15434 -0.0937,-0.0551 -0.226,-0.0937 -0.38586,-0.0937 -0.47955,0 -0.70555,0.38034 -0.70555,0.87643 v 0.005 c 0,0.31419 0.0772,0.49058 0.19292,0.60634 0.11025,0.11024 0.25356,0.17087 0.46302,0.17087 z m -0.011,-0.30317 c -0.17639,0 -0.28112,-0.10473 -0.28112,-0.23702 v -0.005 c 0,-0.13781 0.0992,-0.23151 0.27561,-0.23151 0.17088,0 0.27561,0.0992 0.27561,0.23151 v 0.005 c 0,0.13781 -0.0992,0.23702 -0.2701,0.23702 z m 0,0"
id="path48208" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -58.127831,351.20851 c 0,0.0992 0.0882,0.15434 0.181903,0.15434 0.07166,0 0.121267,-0.033 0.170876,-0.11576 l 0.644922,-1.16857 c 0.02755,-0.0551 0.04961,-0.12127 0.04961,-0.17088 0,-0.10473 -0.06063,-0.15985 -0.159851,-0.15985 h -0.870921 c -0.08819,0 -0.15434,0.0661 -0.15434,0.15434 0,0.0827 0.06615,0.14883 0.15434,0.14883 h 0.611846 l -0.595312,1.04731 c -0.01654,0.0331 -0.03306,0.0772 -0.03306,0.11024 z m 0,0"
id="path26638" />
d="m 370.30942,21.61224 c 0,0.0992 0.0882,0.15434 0.1819,0.15434 0.0717,0 0.12127,-0.0331 0.17087,-0.11576 l 0.64493,-1.16858 c 0.0276,-0.0551 0.0496,-0.12126 0.0496,-0.17087 0,-0.10473 -0.0606,-0.15986 -0.15985,-0.15986 h -0.87092 c -0.0882,0 -0.15434,0.0661 -0.15434,0.15435 0,0.0827 0.0661,0.14882 0.15434,0.14882 h 0.61185 l -0.59532,1.04731 c -0.0165,0.0331 -0.0331,0.0772 -0.0331,0.11025 z m 0,0"
id="path48204" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -46.100053,351.37388 c 0.358294,0 0.617363,-0.17088 0.617363,-0.47405 0,-0.19293 -0.0937,-0.29766 -0.259069,-0.38034 0.126777,-0.0772 0.203946,-0.17639 0.203946,-0.35278 0,-0.24804 -0.220485,-0.44097 -0.56224,-0.44097 -0.341752,0 -0.562239,0.19293 -0.562239,0.44097 0,0.17639 0.07717,0.27561 0.203951,0.35278 -0.170878,0.0772 -0.259072,0.19293 -0.259072,0.38585 v 0.006 c 0,0.28112 0.264583,0.46302 0.61736,0.46302 z m 0,-0.97014 c -0.1378,0 -0.23151,-0.0882 -0.23151,-0.19844 v -0.006 c 0,-0.0992 0.0882,-0.18741 0.23151,-0.18741 0.143317,0 0.231511,0.0937 0.231511,0.19293 0,0.11575 -0.0937,0.19844 -0.231511,0.19844 z m 0,0.67799 c -0.176387,0 -0.275606,-0.0882 -0.275606,-0.19844 v -0.005 c 0,-0.12127 0.115756,-0.19293 0.275606,-0.19293 0.159856,0 0.275609,0.0717 0.275609,0.19293 v 0.005 c 0,0.11576 -0.09922,0.19844 -0.275609,0.19844 z m 0,0"
id="path26634" />
<path
inkscape:connector-curvature="0"
id="path3975"
d="m -41.258466,333.26465 c 0,-0.55121 -0.449239,-1.00045 -1.000453,-1.00045 h -7.681185 c -0.549841,0 -1.000459,0.44924 -1.000459,1.00045 v 12.17222 c 0,0.54983 0.450618,1.00045 1.000459,1.00045 h 7.681185 c 0.551214,0 1.000453,-0.45062 1.000453,-1.00045 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
id="path3977"
d="m -52.858792,333.26465 c 0,-0.55121 -0.449241,-1.00045 -0.999077,-1.00045 h -7.682561 c -0.549838,0 -0.99908,0.44924 -0.99908,1.00045 v 12.17222 c 0,0.54983 0.449242,1.00045 0.99908,1.00045 h 7.682561 c 0.549836,0 0.999077,-0.45062 0.999077,-1.00045 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
id="path3979"
d="m -64.459115,333.26465 c 0,-0.55121 -0.449241,-1.00045 -0.999077,-1.00045 h -7.682565 c -0.549836,0 -0.999078,0.44924 -0.999078,1.00045 v 12.17222 c 0,0.54983 0.449242,1.00045 0.999078,1.00045 h 7.682565 c 0.549836,0 0.999077,-0.45062 0.999077,-1.00045 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
<path
inkscape:connector-curvature="0"
id="path3981"
d="m -76.058064,333.26465 c 0,-0.55121 -0.450617,-1.00045 -1.000456,-1.00045 h -7.681182 c -0.551216,0 -1.000457,0.44924 -1.000457,1.00045 v 12.17222 c 0,0.54983 0.449241,1.00045 1.000457,1.00045 h 7.681182 c 0.549839,0 1.000456,-0.45062 1.000456,-1.00045 z m 0,0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" />
d="m 382.3372,21.7776 c 0.35829,0 0.61736,-0.17088 0.61736,-0.47404 0,-0.19293 -0.0937,-0.29766 -0.25907,-0.38034 0.12678,-0.0772 0.20395,-0.17639 0.20395,-0.35278 0,-0.24805 -0.22049,-0.44097 -0.56224,-0.44097 -0.34175,0 -0.56224,0.19292 -0.56224,0.44097 0,0.17639 0.0772,0.27561 0.20395,0.35278 -0.17088,0.0772 -0.25907,0.19292 -0.25907,0.38585 v 0.006 c 0,0.28112 0.26458,0.46302 0.61736,0.46302 z m 0,-0.97014 c -0.1378,0 -0.23151,-0.0882 -0.23151,-0.19843 v -0.006 c 0,-0.0992 0.0882,-0.18741 0.23151,-0.18741 0.14332,0 0.23151,0.0937 0.23151,0.19293 0,0.11575 -0.0937,0.19843 -0.23151,0.19843 z m 0,0.678 c -0.17639,0 -0.27561,-0.0882 -0.27561,-0.19844 v -0.006 c 0,-0.12126 0.11576,-0.19292 0.27561,-0.19292 0.15985,0 0.27561,0.0717 0.27561,0.19292 v 0.006 c 0,0.11576 -0.0992,0.19844 -0.27561,0.19844 z m 0,0"
id="path48200" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -80.975243,335.19123 c 0,0.0937 0.07717,0.17088 0.176389,0.17088 0.0937,0 0.170875,-0.0772 0.170875,-0.17088 v -1.29535 c 0,-0.0937 -0.07717,-0.17088 -0.170875,-0.17088 h -0.0055 c -0.04961,0 -0.09922,0.011 -0.165364,0.0275 l -0.226,0.0661 c -0.07166,0.022 -0.121267,0.0827 -0.121267,0.15434 0,0.0827 0.07166,0.14883 0.15434,0.14883 0.02205,0 0.0441,-0.005 0.06615,-0.011 l 0.121267,-0.0276 z m 0,0"
id="path26582" />
d="m 347.46233,5.595996 c 0,0.09371 0.0772,0.170879 0.17639,0.170879 0.0937,0 0.17087,-0.07717 0.17087,-0.170879 V 4.300641 c 0,-0.09371 -0.0772,-0.170878 -0.17087,-0.170878 h -0.005 c -0.0496,0 -0.0992,0.01101 -0.16537,0.02755 l -0.22599,0.06615 c -0.0717,0.02204 -0.12127,0.08268 -0.12127,0.154342 0,0.08268 0.0717,0.148825 0.15434,0.148825 0.0221,0 0.0441,-0.0055 0.0661,-0.01101 l 0.12126,-0.02755 z m 0,0"
id="path48148" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -69.91495,335.18572 c 0,0.10473 0.07717,0.16537 0.187413,0.16537 h 0.87092 c 0.08819,0 0.15434,-0.0661 0.15434,-0.14883 0,-0.0882 -0.06615,-0.15434 -0.15434,-0.15434 h -0.556729 l 0.259073,-0.20395 c 0.286631,-0.22049 0.424434,-0.35278 0.424434,-0.62287 v -0.005 c 0,-0.29766 -0.220486,-0.49059 -0.551216,-0.49059 -0.242534,0 -0.396875,0.0827 -0.523652,0.23151 -0.02755,0.0331 -0.0441,0.0717 -0.0441,0.11024 0,0.0937 0.07166,0.16537 0.159851,0.16537 0.05512,0 0.09922,-0.0275 0.121268,-0.0551 0.08819,-0.0937 0.159854,-0.1378 0.264583,-0.1378 0.121267,0 0.214975,0.0717 0.214975,0.20946 0,0.13229 -0.07717,0.22048 -0.281121,0.38585 l -0.451997,0.37483 c -0.06063,0.0441 -0.0937,0.10473 -0.0937,0.17639 z m 0,0"
id="path26578" />
d="m 358.52261,5.590485 c 0,0.10473 0.0772,0.165365 0.18742,0.165365 h 0.87092 c 0.0882,0 0.15434,-0.06615 0.15434,-0.148831 0,-0.08819 -0.0661,-0.15434 -0.15434,-0.15434 h -0.55673 l 0.25907,-0.203948 c 0.28663,-0.220486 0.42444,-0.352777 0.42444,-0.622874 v -0.0055 c 0,-0.297656 -0.22049,-0.490582 -0.55122,-0.490582 -0.24253,0 -0.39687,0.08268 -0.52365,0.23151 -0.0276,0.03306 -0.0441,0.07166 -0.0441,0.110241 0,0.09371 0.0717,0.165365 0.15985,0.165365 0.0551,0 0.0992,-0.02755 0.12127,-0.05512 0.0882,-0.0937 0.15985,-0.137803 0.26458,-0.137803 0.12127,0 0.21497,0.07166 0.21497,0.209463 0,0.132292 -0.0772,0.220485 -0.28112,0.38585 l -0.45199,0.374827 c -0.0606,0.0441 -0.0937,0.10473 -0.0937,0.17639 z m 0,0"
id="path48144" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -57.700243,335.37865 c 0.358293,0 0.578778,-0.22049 0.578778,-0.52366 v -0.005 c 0,-0.29765 -0.209462,-0.4134 -0.429948,-0.45199 l 0.31419,-0.29766 c 0.06615,-0.0606 0.104733,-0.11024 0.104733,-0.19844 0,-0.0937 -0.07717,-0.15434 -0.176387,-0.15434 h -0.782727 c -0.08268,0 -0.15434,0.0662 -0.15434,0.14883 0,0.0827 0.07166,0.15434 0.15434,0.15434 h 0.490579 l -0.308678,0.3142 c -0.05512,0.0551 -0.07717,0.0937 -0.07717,0.14331 0,0.0827 0.06615,0.14883 0.14883,0.14883 h 0.05512 c 0.198437,0 0.31419,0.0772 0.31419,0.20395 v 0.005 c 0,0.12127 -0.0937,0.19844 -0.225996,0.19844 -0.126781,0 -0.220486,-0.0441 -0.314193,-0.12127 -0.02755,-0.022 -0.06063,-0.0441 -0.110244,-0.0441 -0.0937,0 -0.170876,0.0772 -0.170876,0.17087 0,0.0496 0.02755,0.0992 0.06063,0.12678 0.132292,0.11024 0.30317,0.1819 0.529167,0.1819 z m 0,0"
id="path26574" />
d="m 370.73732,5.783409 c 0.35829,0 0.57878,-0.220486 0.57878,-0.523653 v -0.0055 c 0,-0.297657 -0.20946,-0.413409 -0.42995,-0.451996 l 0.31419,-0.297656 c 0.0661,-0.06063 0.10473,-0.110244 0.10473,-0.198438 0,-0.0937 -0.0772,-0.154342 -0.17639,-0.154342 h -0.78272 c -0.0827,0 -0.15434,0.06615 -0.15434,0.148831 0,0.08268 0.0717,0.154339 0.15434,0.154339 h 0.49058 l -0.30868,0.314193 c -0.0551,0.05512 -0.0772,0.09371 -0.0772,0.143314 0,0.08268 0.0661,0.148831 0.14883,0.148831 h 0.0551 c 0.19843,0 0.31419,0.07717 0.31419,0.203949 v 0.0055 c 0,0.121267 -0.0937,0.198438 -0.226,0.198438 -0.12678,0 -0.22049,-0.0441 -0.31419,-0.12127 -0.0275,-0.02204 -0.0606,-0.04409 -0.11024,-0.04409 -0.0937,0 -0.17088,0.07717 -0.17088,0.170873 0,0.04961 0.0276,0.09922 0.0606,0.126783 0.13229,0.110241 0.30317,0.181899 0.52917,0.181899 z m 0,0"
id="path48140" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -45.97369,335.19675 c 0,0.0937 0.07166,0.16536 0.165364,0.16536 0.09371,0 0.170879,-0.0717 0.170879,-0.16536 v -0.19293 h 0.08268 c 0.08268,0 0.143317,-0.0606 0.143317,-0.14331 0,-0.0772 -0.06063,-0.14332 -0.143317,-0.14332 h -0.08268 v -0.82682 c 0,-0.0937 -0.07717,-0.17088 -0.170879,-0.17088 -0.10473,0 -0.154339,0.0441 -0.220485,0.12127 l -0.694531,0.81028 c -0.05512,0.0606 -0.08268,0.11576 -0.08268,0.19293 0,0.0937 0.07717,0.15985 0.170876,0.15985 h 0.661456 z m -0.429948,-0.47956 0.429948,-0.50161 v 0.50161 z m 0,0"
id="path26570" />
d="m 382.46388,5.60151 c 0,0.0937 0.0716,0.165365 0.16536,0.165365 0.0937,0 0.17087,-0.07166 0.17087,-0.165365 V 5.408581 h 0.0827 c 0.0827,0 0.14332,-0.06063 0.14332,-0.143314 0,-0.07717 -0.0606,-0.143317 -0.14332,-0.143317 h -0.0827 V 4.295127 c 0,-0.0937 -0.0772,-0.170876 -0.17087,-0.170876 -0.10473,0 -0.15434,0.0441 -0.22049,0.12127 l -0.69453,0.810283 c -0.0551,0.06064 -0.0827,0.115758 -0.0827,0.192927 0,0.0937 0.0772,0.15985 0.17088,0.15985 h 0.66146 z m -0.42995,-0.47956 0.42995,-0.501605 V 5.12195 Z m 0,0"
id="path48136" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -69.474133,328.91013 c 0.606336,0 1.036284,-0.46302 1.036284,-1.01975 v -0.005 c 0,-0.55673 -0.424434,-1.01975 -1.030771,-1.01975 -0.606336,0 -1.036284,0.46853 -1.036284,1.02526 v 0.005 c 0,0.55672 0.424434,1.01423 1.030771,1.01423 z m 0.0055,-0.31971 c -0.391365,0 -0.672483,-0.3197 -0.672483,-0.70004 v -0.005 c 0,-0.38585 0.275608,-0.70005 0.666969,-0.70005 0.391364,0 0.672483,0.31971 0.672483,0.70556 v 0.005 c 0,0.38033 -0.275608,0.69453 -0.666969,0.69453 z m 0,0"
id="path26518" />
d="m 358.96308,-0.685109 c 0.60634,0 1.03629,-0.463021 1.03629,-1.019752 v -0.0055 c 0,-0.556728 -0.42444,-1.019749 -1.03077,-1.019749 -0.60634,0 -1.03629,0.468535 -1.03629,1.02526 v 0.0055 c 0,0.556725 0.42444,1.014235 1.03077,1.014235 z m 0.005,-0.319706 c -0.39136,0 -0.67248,-0.319704 -0.67248,-0.700046 v -0.0055 c 0,-0.38585 0.27561,-0.700045 0.66697,-0.700045 0.39136,0 0.67248,0.319706 0.67248,0.705556 v 0.0055 c 0,0.380336 -0.27561,0.694531 -0.66697,0.694531 z m 0,0"
id="path48084" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -67.138109,328.91013 c 0.518142,0 0.848871,-0.29766 0.848871,-0.88746 v -0.96462 c 0,-0.0937 -0.07717,-0.17088 -0.170875,-0.17088 -0.09922,0 -0.176389,0.0772 -0.176389,0.17088 v 0.98116 c 0,0.3638 -0.187413,0.5457 -0.496094,0.5457 -0.30868,0 -0.501607,-0.19292 -0.501607,-0.56224 v -0.96462 c 0,-0.0937 -0.07166,-0.17088 -0.170875,-0.17088 -0.09922,0 -0.176389,0.0772 -0.176389,0.17088 v 0.98116 c 0,0.57326 0.330729,0.87092 0.843358,0.87092 z m 0,0"
id="path26510" />
d="m 361.29911,-0.685109 c 0.51814,0 0.84887,-0.297656 0.84887,-0.88746 v -0.964623 c 0,-0.09371 -0.0772,-0.170879 -0.17088,-0.170879 -0.0992,0 -0.17639,0.07717 -0.17639,0.170879 v 0.981162 c 0,0.363802 -0.18741,0.545701 -0.49609,0.545701 -0.30868,0 -0.50161,-0.192924 -0.50161,-0.56224 v -0.964623 c 0,-0.09371 -0.0717,-0.170879 -0.17087,-0.170879 -0.0992,0 -0.17639,0.07717 -0.17639,0.170879 v 0.981162 c 0,0.573265 0.33073,0.870921 0.84336,0.870921 z m 0,0"
id="path48076" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -65.267636,328.7172 c 0,0.0992 0.07717,0.17639 0.176389,0.17639 0.0937,0 0.176389,-0.0772 0.176389,-0.17639 v -1.49379 h 0.479555 c 0.08819,0 0.159854,-0.0717 0.159854,-0.15986 0,-0.0882 -0.07166,-0.15985 -0.159854,-0.15985 h -1.311892 c -0.0882,0 -0.159851,0.0717 -0.159851,0.15985 0,0.0882 0.07166,0.15986 0.159851,0.15986 h 0.479559 z m 0,0"
id="path26514" />
d="m 363.16958,-0.878038 c 0,0.09922 0.0772,0.17639 0.17639,0.17639 0.0937,0 0.17639,-0.07717 0.17639,-0.17639 v -1.49379 h 0.47955 c 0.0882,0 0.15986,-0.07166 0.15986,-0.159856 0,-0.08819 -0.0717,-0.15985 -0.15986,-0.15985 h -1.31189 c -0.0882,0 -0.15985,0.07166 -0.15985,0.15985 0,0.0882 0.0717,0.159856 0.15985,0.159856 h 0.47956 z m 0,0"
id="path48080" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -63.879875,328.7172 c 0,0.0992 0.07717,0.17639 0.176389,0.17639 0.0937,0 0.170875,-0.0772 0.170875,-0.17639 v -0.47404 h 0.391364 c 0.435458,0 0.793751,-0.23151 0.793751,-0.678 v -0.005 c 0,-0.39687 -0.292147,-0.65594 -0.755168,-0.65594 h -0.600822 c -0.09922,0 -0.176389,0.0717 -0.176389,0.17087 z m 0.347264,-0.78824 v -0.71106 h 0.402388 c 0.25907,0 0.429948,0.12126 0.429948,0.35277 v 0.005 c 0,0.20395 -0.165364,0.35278 -0.429948,0.35278 z m 0,0"
id="path26506" />
d="m 364.55734,-0.878038 c 0,0.09922 0.0772,0.17639 0.17639,0.17639 0.0937,0 0.17087,-0.07717 0.17087,-0.17639 v -0.474043 h 0.39137 c 0.43545,0 0.79375,-0.231511 0.79375,-0.677995 v -0.0055 c 0,-0.396875 -0.29215,-0.655945 -0.75517,-0.655945 h -0.60082 c -0.0992,0 -0.17639,0.07166 -0.17639,0.170876 z m 0.34726,-0.788236 v -0.711068 h 0.40239 c 0.25907,0 0.42995,0.121267 0.42995,0.352777 v 0.0055 c 0,0.203948 -0.16537,0.352777 -0.42995,0.352777 z m 0,0"
id="path48072" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -61.127058,328.91013 c 0.518142,0 0.848871,-0.29766 0.848871,-0.88746 v -0.96462 c 0,-0.0937 -0.07717,-0.17088 -0.170876,-0.17088 -0.09922,0 -0.176387,0.0772 -0.176387,0.17088 v 0.98116 c 0,0.3638 -0.187415,0.5457 -0.496094,0.5457 -0.308681,0 -0.501608,-0.19292 -0.501608,-0.56224 v -0.96462 c 0,-0.0937 -0.07166,-0.17088 -0.170876,-0.17088 -0.09922,0 -0.176389,0.0772 -0.176389,0.17088 v 0.98116 c 0,0.57326 0.330729,0.87092 0.843359,0.87092 z m 0,0"
id="path26502" />
d="m 367.31016,-0.685109 c 0.51814,0 0.84887,-0.297656 0.84887,-0.88746 v -0.964623 c 0,-0.09371 -0.0772,-0.170879 -0.17088,-0.170879 -0.0992,0 -0.17639,0.07717 -0.17639,0.170879 v 0.981162 c 0,0.363802 -0.18741,0.545701 -0.49609,0.545701 -0.30868,0 -0.50161,-0.192924 -0.50161,-0.56224 v -0.964623 c 0,-0.09371 -0.0716,-0.170879 -0.17087,-0.170879 -0.0992,0 -0.17639,0.07717 -0.17639,0.170879 v 0.981162 c 0,0.573265 0.33073,0.870921 0.84336,0.870921 z m 0,0"
id="path48068" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -59.257996,328.7172 c 0,0.0992 0.07717,0.17639 0.176389,0.17639 0.0937,0 0.176388,-0.0772 0.176388,-0.17639 v -1.49379 h 0.479557 c 0.08819,0 0.159853,-0.0717 0.159853,-0.15986 0,-0.0882 -0.07166,-0.15985 -0.159853,-0.15985 h -1.311894 c -0.08819,0 -0.159851,0.0717 -0.159851,0.15985 0,0.0882 0.07166,0.15986 0.159851,0.15986 h 0.47956 z m 0,0"
id="path26498" />
d="m 369.17922,-0.878038 c 0,0.09922 0.0772,0.17639 0.17639,0.17639 0.0937,0 0.17639,-0.07717 0.17639,-0.17639 v -1.49379 h 0.47955 c 0.0882,0 0.15986,-0.07166 0.15986,-0.159856 0,-0.08819 -0.0717,-0.15985 -0.15986,-0.15985 h -1.31189 c -0.0882,0 -0.15985,0.07166 -0.15985,0.15985 0,0.0882 0.0717,0.159856 0.15985,0.159856 h 0.47956 z m 0,0"
id="path48064" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -57.187566,328.90462 c 0.413412,0 0.705557,-0.22049 0.705557,-0.5898 v -0.005 c 0,-0.32522 -0.214977,-0.47405 -0.633899,-0.57878 -0.380336,-0.0882 -0.474046,-0.15985 -0.474046,-0.30868 v -0.005 c 0,-0.13229 0.121269,-0.23702 0.32522,-0.23702 0.154339,0 0.297656,0.0551 0.451996,0.14883 0.02755,0.0165 0.05512,0.0276 0.0937,0.0276 0.08819,0 0.159853,-0.0717 0.159853,-0.15986 0,-0.0661 -0.03305,-0.11575 -0.07717,-0.1378 -0.176389,-0.12127 -0.374827,-0.18742 -0.622876,-0.18742 -0.391361,0 -0.677992,0.23703 -0.677992,0.57327 v 0.005 c 0,0.3638 0.237021,0.49058 0.661458,0.5898 0.363802,0.0882 0.446482,0.16536 0.446482,0.30317 v 0.005 c 0,0.14882 -0.137801,0.24804 -0.352777,0.24804 -0.214972,0 -0.391361,-0.0716 -0.551215,-0.20394 -0.02204,-0.0165 -0.05512,-0.0275 -0.10473,-0.0275 -0.08819,0 -0.159853,0.0717 -0.159853,0.15985 0,0.0551 0.02755,0.10473 0.06615,0.13229 0.220485,0.16537 0.474043,0.24805 0.74414,0.24805 z m 0,0"
id="path26494" />
d="m 371.24966,-0.690623 c 0.41341,0 0.70555,-0.220488 0.70555,-0.589798 v -0.0055 c 0,-0.325215 -0.21497,-0.474046 -0.6339,-0.578776 -0.38033,-0.08819 -0.47404,-0.159853 -0.47404,-0.308679 v -0.0055 c 0,-0.132292 0.12127,-0.237022 0.32522,-0.237022 0.15434,0 0.29765,0.05512 0.45199,0.148826 0.0276,0.01654 0.0551,0.02755 0.0937,0.02755 0.0882,0 0.15986,-0.07166 0.15986,-0.159856 0,-0.06615 -0.0331,-0.115753 -0.0772,-0.137801 -0.17639,-0.121269 -0.37483,-0.187415 -0.62287,-0.187415 -0.39137,0 -0.678,0.237022 -0.678,0.573265 v 0.0055 c 0,0.363802 0.23702,0.490582 0.66146,0.589801 0.3638,0.0882 0.44648,0.165364 0.44648,0.303167 v 0.0055 c 0,0.148825 -0.1378,0.248044 -0.35278,0.248044 -0.21497,0 -0.39136,-0.07165 -0.55121,-0.203946 -0.022,-0.01654 -0.0551,-0.02755 -0.10473,-0.02755 -0.0882,0 -0.15985,0.07166 -0.15985,0.159856 0,0.05512 0.0276,0.104727 0.0661,0.132292 0.22048,0.165364 0.47404,0.248044 0.74414,0.248044 z m 0,0"
id="path48060" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -80.945609,298.2157 c 0,0.0772 0.06615,0.1378 0.137802,0.1378 0.08268,0 0.143316,-0.0606 0.143316,-0.1378 v -1.36151 c 0,-0.0772 -0.06063,-0.1378 -0.143316,-0.1378 -0.0441,0 -0.08268,0.011 -0.137802,0.0276 l -0.242535,0.0772 c -0.06064,0.0165 -0.09922,0.0606 -0.09922,0.12127 0,0.0606 0.06063,0.11576 0.126778,0.11576 0.01101,0 0.03306,0 0.04961,-0.005 l 0.165365,-0.0496 z m 0,0"
id="path26490" />
d="m 347.52916,-16.216976 c 0.34726,0 0.5898,-0.220488 0.5898,-0.545706 0,-0.341754 -0.24805,-0.507119 -0.56224,-0.507119 -0.10473,0 -0.17639,0.01654 -0.25356,0.0441 l 0.0276,-0.374827 h 0.60082 c 0.0661,0 0.12678,-0.05512 0.12678,-0.121266 0,-0.07166 -0.0606,-0.126778 -0.12678,-0.126778 h -0.7276 c -0.0661,0 -0.12127,0.04961 -0.12678,0.126778 l -0.0331,0.578778 c -0.005,0.04961 0.011,0.0937 0.0551,0.121267 0.0496,0.03858 0.0882,0.05512 0.13229,0.05512 0.0441,0 0.11575,-0.05512 0.27561,-0.05512 0.19292,0 0.33073,0.09922 0.33073,0.264583 v 0.0055 c 0,0.170879 -0.1323,0.275609 -0.3142,0.275609 -0.12678,0 -0.23702,-0.0441 -0.34726,-0.132292 -0.0221,-0.01654 -0.0496,-0.02755 -0.0827,-0.02755 -0.0717,0 -0.13229,0.06063 -0.13229,0.132291 0,0.04961 0.022,0.08268 0.0551,0.110244 0.13229,0.10473 0.29766,0.17639 0.51264,0.17639 z m 0,0"
id="path48056" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -80.907068,313.37809 c 0.347264,0 0.589798,-0.22049 0.589798,-0.54571 0,-0.34175 -0.248045,-0.50711 -0.562239,-0.50711 -0.104729,0 -0.176389,0.0165 -0.253559,0.0441 l 0.02755,-0.37483 h 0.600823 c 0.06615,0 0.126781,-0.0551 0.126781,-0.12127 0,-0.0717 -0.06064,-0.12678 -0.126781,-0.12678 h -0.727604 c -0.06615,0 -0.121268,0.0496 -0.126778,0.12678 l -0.03305,0.57878 c -0.0055,0.0496 0.01101,0.0937 0.05512,0.12126 0.04961,0.0386 0.08819,0.0551 0.132292,0.0551 0.0441,0 0.115753,-0.0551 0.275607,-0.0551 0.192924,0 0.330729,0.0992 0.330729,0.26459 v 0.005 c 0,0.17087 -0.132291,0.2756 -0.314194,0.2756 -0.126778,0 -0.237021,-0.0441 -0.347264,-0.13229 -0.02205,-0.0165 -0.04961,-0.0276 -0.08268,-0.0276 -0.07166,0 -0.132292,0.0606 -0.132292,0.13229 0,0.0496 0.02205,0.0827 0.05512,0.11025 0.132292,0.10473 0.297656,0.17639 0.512632,0.17639 z m 0,0"
id="path26486" />
d="m 358.53419,-31.385057 c 0,0.08268 0.0661,0.132292 0.14882,0.132292 h 0.90951 c 0.0717,0 0.12678,-0.05512 0.12678,-0.121267 0,-0.07166 -0.0551,-0.126778 -0.12678,-0.126778 h -0.65043 l 0.33072,-0.275608 c 0.28664,-0.231508 0.41893,-0.369313 0.41893,-0.622874 0,-0.286631 -0.21498,-0.479555 -0.52917,-0.479555 -0.25356,0 -0.40239,0.0937 -0.53468,0.25907 -0.0165,0.02204 -0.0275,0.05512 -0.0275,0.08268 0,0.07165 0.0551,0.132292 0.12678,0.132292 0.0441,0 0.0772,-0.02204 0.0992,-0.0441 0.0992,-0.121266 0.18741,-0.181904 0.31419,-0.181904 0.14883,0 0.25907,0.09371 0.25907,0.253561 0,0.143314 -0.0772,0.248047 -0.29765,0.429948 l -0.4961,0.418923 c -0.0496,0.04409 -0.0717,0.08819 -0.0717,0.143314 z m 0,0"
id="path48040" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -69.903065,298.21018 c 0,0.0827 0.06614,0.13229 0.148826,0.13229 h 0.909507 c 0.07166,0 0.126778,-0.0551 0.126778,-0.12126 0,-0.0717 -0.05512,-0.12678 -0.126778,-0.12678 h -0.650434 l 0.330729,-0.27561 c 0.286632,-0.23151 0.418924,-0.36931 0.418924,-0.62287 0,-0.28663 -0.214976,-0.47956 -0.529167,-0.47956 -0.253559,0 -0.402389,0.0937 -0.534681,0.25907 -0.01654,0.022 -0.02755,0.0551 -0.02755,0.0827 0,0.0717 0.05512,0.13229 0.126777,0.13229 0.0441,0 0.07717,-0.022 0.09922,-0.0441 0.09922,-0.12126 0.187413,-0.1819 0.314194,-0.1819 0.148827,0 0.25907,0.0937 0.25907,0.25356 0,0.14331 -0.07717,0.24805 -0.297656,0.42995 l -0.496094,0.41892 c -0.04961,0.0441 -0.07166,0.0882 -0.07166,0.14332 z m 0,0"
id="path26458" />
d="m 359.15851,-16.217153 c 0.33624,0 0.59532,-0.225997 0.59532,-0.545701 v -0.0055 c 0,-0.319707 -0.24805,-0.501605 -0.55673,-0.501605 -0.19293,0 -0.30317,0.07717 -0.38585,0.159851 0.011,-0.292143 0.14883,-0.512628 0.38585,-0.512628 0.10473,0 0.18741,0.03305 0.27561,0.0937 0.022,0.01101 0.0441,0.01654 0.0717,0.01654 0.0717,0 0.13229,-0.05512 0.13229,-0.12678 0,-0.06063 -0.0276,-0.0937 -0.0717,-0.121269 -0.10473,-0.07166 -0.23702,-0.115753 -0.39688,-0.115753 -0.4575,0 -0.68901,0.380336 -0.68901,0.870921 v 0.0055 c 0,0.325217 0.0717,0.490582 0.19292,0.611848 0.11024,0.110244 0.24805,0.170876 0.44648,0.170876 z m -0.005,-0.248045 c -0.19843,0 -0.33073,-0.121269 -0.33073,-0.286633 0,-0.15434 0.12679,-0.286631 0.32522,-0.286631 0.19844,0 0.32522,0.121266 0.32522,0.281117 v 0.0055 c 0,0.165365 -0.12127,0.286634 -0.31971,0.286634 z m 0,0"
id="path48036" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -69.281027,313.37809 c 0.33624,0 0.595313,-0.226 0.595313,-0.54571 v -0.005 c 0,-0.3197 -0.248048,-0.5016 -0.556729,-0.5016 -0.192924,0 -0.303167,0.0772 -0.385851,0.15985 0.01101,-0.29214 0.14883,-0.51263 0.385851,-0.51263 0.104733,0 0.187413,0.0331 0.275608,0.0937 0.02205,0.011 0.0441,0.0165 0.07166,0.0165 0.07166,0 0.132292,-0.0551 0.132292,-0.12678 0,-0.0606 -0.02755,-0.0937 -0.07166,-0.12127 -0.104729,-0.0717 -0.237021,-0.11575 -0.396875,-0.11575 -0.457507,0 -0.689017,0.38034 -0.689017,0.87092 v 0.006 c 0,0.32522 0.07166,0.49058 0.192924,0.61185 0.110243,0.11024 0.248048,0.17088 0.446484,0.17088 z m -0.0055,-0.24805 c -0.198437,0 -0.330729,-0.12127 -0.330729,-0.28663 0,-0.15434 0.126781,-0.28663 0.325219,-0.28663 0.198437,0 0.325215,0.12126 0.325215,0.28111 v 0.005 c 0,0.16537 -0.121267,0.28664 -0.319705,0.28664 z m 0,0"
id="path26454" />
d="m 370.74015,-31.225201 c 0.33624,0 0.56224,-0.214977 0.56224,-0.507119 v -0.0055 c 0,-0.297657 -0.226,-0.418923 -0.46853,-0.451996 l 0.37482,-0.391361 c 0.0496,-0.04961 0.0827,-0.08819 0.0827,-0.154339 0,-0.07166 -0.0606,-0.12127 -0.14331,-0.12127 h -0.82131 c -0.0661,0 -0.12127,0.05512 -0.12127,0.12127 0,0.06614 0.0551,0.121266 0.12127,0.121266 h 0.58429 l -0.37483,0.402383 c -0.0441,0.0441 -0.0606,0.07717 -0.0606,0.115756 0,0.06614 0.0551,0.121269 0.12127,0.121269 h 0.0606 c 0.22048,0 0.36931,0.08819 0.36931,0.248044 v 0.0055 c 0,0.143314 -0.12127,0.242533 -0.28112,0.242533 -0.14883,0 -0.26458,-0.05512 -0.3638,-0.154339 -0.022,-0.02204 -0.0551,-0.03859 -0.0937,-0.03859 -0.0717,0 -0.13781,0.06615 -0.13781,0.137806 0,0.03858 0.022,0.07717 0.0496,0.09922 0.12679,0.126778 0.30869,0.209463 0.5402,0.209463 z m 0,0"
id="path47996" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -57.697074,298.37004 c 0.336243,0 0.56224,-0.21498 0.56224,-0.50712 v -0.005 c 0,-0.29766 -0.225997,-0.41892 -0.468532,-0.452 l 0.374827,-0.39136 c 0.04961,-0.0496 0.08268,-0.0882 0.08268,-0.15434 0,-0.0717 -0.06063,-0.12127 -0.143317,-0.12127 h -0.821309 c -0.06615,0 -0.121267,0.0551 -0.121267,0.12127 0,0.0661 0.05512,0.12127 0.121267,0.12127 h 0.58429 l -0.374827,0.40238 c -0.0441,0.0441 -0.06064,0.0772 -0.06064,0.11576 0,0.0661 0.05512,0.12127 0.121266,0.12127 h 0.06064 c 0.220488,0 0.369313,0.0882 0.369313,0.24804 v 0.005 c 0,0.14332 -0.121266,0.24254 -0.281117,0.24254 -0.148831,0 -0.264583,-0.0551 -0.363802,-0.15434 -0.02204,-0.022 -0.05512,-0.0386 -0.09371,-0.0386 -0.07165,0 -0.1378,0.0662 -0.1378,0.1378 0,0.0386 0.02204,0.0772 0.04961,0.0992 0.126781,0.12678 0.308682,0.20947 0.540192,0.20947 z m 0,0"
id="path26426" />
d="m 370.35474,-16.36047 c 0,0.08268 0.0661,0.126783 0.14331,0.126783 0.0606,0 0.10474,-0.02755 0.13781,-0.09371 l 0.66146,-1.26228 c 0.0275,-0.0441 0.0386,-0.09371 0.0386,-0.132291 0,-0.08268 -0.0496,-0.126783 -0.12678,-0.126783 h -0.89848 c -0.0717,0 -0.12678,0.05512 -0.12678,0.121269 0,0.07166 0.0551,0.12678 0.12678,0.12678 h 0.69453 l -0.62287,1.152038 c -0.0165,0.02755 -0.0275,0.06615 -0.0275,0.08819 z m 0,0"
id="path47992" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -58.082484,313.23477 c 0,0.0827 0.06615,0.12678 0.143317,0.12678 0.06063,0 0.104732,-0.0276 0.137805,-0.0937 l 0.661458,-1.26228 c 0.02755,-0.0441 0.03858,-0.0937 0.03858,-0.13229 0,-0.0827 -0.04961,-0.12678 -0.126778,-0.12678 h -0.898482 c -0.07165,0 -0.126778,0.0551 -0.126778,0.12127 0,0.0717 0.05512,0.12678 0.126778,0.12678 h 0.694531 l -0.622872,1.15203 c -0.01654,0.0276 -0.02755,0.0661 -0.02755,0.0882 z m 0,0"
id="path26422" />
d="m 382.49792,-31.374032 c 0,0.07717 0.0606,0.132292 0.13781,0.132292 0.0772,0 0.13229,-0.05512 0.13229,-0.132292 v -0.237021 h 0.12678 c 0.0662,0 0.11576,-0.04961 0.11576,-0.115756 0,-0.06615 -0.0496,-0.115752 -0.11576,-0.115752 h -0.12678 v -0.903994 c 0,-0.07717 -0.0606,-0.132292 -0.13229,-0.132292 -0.0827,0 -0.12678,0.02755 -0.17639,0.08819 l -0.75517,0.89848 c -0.0386,0.0441 -0.0606,0.09371 -0.0606,0.148828 0,0.07717 0.0606,0.132292 0.13781,0.132292 h 0.71658 z m -0.52365,-0.468529 0.52365,-0.639411 v 0.639411 z m 0,0"
id="path47964" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -45.939318,298.22121 c 0,0.0772 0.06063,0.13229 0.137805,0.13229 0.07717,0 0.132292,-0.0551 0.132292,-0.13229 v -0.23702 h 0.126778 c 0.06614,0 0.115755,-0.0496 0.115755,-0.11576 0,-0.0661 -0.04961,-0.11575 -0.115755,-0.11575 h -0.126778 v -0.904 c 0,-0.0772 -0.06064,-0.13229 -0.132292,-0.13229 -0.08268,0 -0.126783,0.0276 -0.17639,0.0882 l -0.755165,0.89848 c -0.03859,0.0441 -0.06063,0.0937 -0.06063,0.14883 0,0.0772 0.06063,0.13229 0.1378,0.13229 h 0.716582 z m -0.523653,-0.46853 0.523653,-0.63941 v 0.63941 z m 0,0"
id="path26394" />
d="m 359.67348,-35.991321 c 0,0.09922 0.0717,0.17639 0.17087,0.17639 0.0992,0 0.17639,-0.07717 0.17639,-0.17639 v -1.659157 c 0,-0.09371 -0.0772,-0.170878 -0.17639,-0.170878 -0.0992,0 -0.17087,0.07717 -0.17087,0.170878 z m 0,0"
id="path47924" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -46.10019,313.37257 c 0.352779,0 0.611849,-0.17638 0.611849,-0.46302 v -0.006 c 0,-0.19292 -0.110244,-0.30316 -0.286634,-0.38585 0.132292,-0.0717 0.23151,-0.17639 0.23151,-0.35828 v -0.005 c 0,-0.24805 -0.237019,-0.42995 -0.556725,-0.42995 -0.319704,0 -0.556729,0.18741 -0.556729,0.42995 v 0.005 c 0,0.18189 0.09922,0.28663 0.231511,0.35828 -0.17639,0.0772 -0.286631,0.19844 -0.286631,0.39137 v 0.006 c 0,0.27561 0.259072,0.45751 0.611849,0.45751 z m 0,-0.94809 c -0.165365,0 -0.286631,-0.0992 -0.286631,-0.23702 v -0.005 c 0,-0.12127 0.115752,-0.226 0.286631,-0.226 0.170875,0 0.286633,0.10473 0.286633,0.226 v 0.005 c 0,0.13781 -0.121269,0.23702 -0.286633,0.23702 z m 0,0.71107 c -0.20946,0 -0.336243,-0.11024 -0.336243,-0.23702 v -0.005 c 0,-0.14883 0.14883,-0.24254 0.336243,-0.24254 0.192923,0 0.33624,0.0937 0.33624,0.24254 v 0.005 c 0,0.13229 -0.126778,0.23702 -0.33624,0.23702 z m 0,0"
id="path26390" />
d="m 360.61522,-35.985807 c 0,0.0937 0.0772,0.170876 0.17088,0.170876 0.0937,0 0.17088,-0.07717 0.17088,-0.170876 v -1.251259 l 1.01423,1.311891 c 0.0496,0.06063 0.0992,0.104733 0.1819,0.104733 h 0.0165 c 0.0937,0 0.16536,-0.07717 0.16536,-0.170879 v -1.659157 c 0,-0.09371 -0.0717,-0.170878 -0.17087,-0.170878 -0.0937,0 -0.17088,0.07717 -0.17088,0.170878 v 1.212676 l -0.98667,-1.278821 c -0.0441,-0.06063 -0.0937,-0.09922 -0.1819,-0.09922 h -0.0331 c -0.0992,0 -0.17639,0.07717 -0.17639,0.170876 z m 0,0"
id="path47920" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -68.763766,293.60392 c 0,0.0992 0.07166,0.17639 0.170875,0.17639 0.09922,0 0.176389,-0.0772 0.176389,-0.17639 v -1.65916 c 0,-0.0937 -0.07717,-0.17088 -0.176389,-0.17088 -0.09922,0 -0.170875,0.0772 -0.170875,0.17088 z m 0,0"
id="path26350" />
d="m 362.9269,-35.991321 c 0,0.09922 0.0772,0.17639 0.17639,0.17639 0.0937,0 0.17088,-0.07717 0.17088,-0.17639 v -0.474046 h 0.39136 c 0.43546,0 0.79375,-0.23151 0.79375,-0.677992 v -0.0055 c 0,-0.396875 -0.29214,-0.655944 -0.75516,-0.655944 h -0.60083 c -0.0992,0 -0.17639,0.07166 -0.17639,0.170875 z m 0.34727,-0.788236 v -0.71107 h 0.40239 c 0.25907,0 0.42994,0.121269 0.42994,0.35278 v 0.0055 c 0,0.203946 -0.16536,0.352777 -0.42994,0.352777 z m 0,0"
id="path47908" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -67.822029,293.60943 c 0,0.0937 0.07717,0.17088 0.170875,0.17088 0.09371,0 0.170878,-0.0772 0.170878,-0.17088 v -1.25126 l 1.014236,1.31189 c 0.04961,0.0606 0.09922,0.10474 0.1819,0.10474 h 0.01654 c 0.0937,0 0.165365,-0.0772 0.165365,-0.17088 v -1.65916 c 0,-0.0937 -0.07166,-0.17088 -0.170879,-0.17088 -0.0937,0 -0.170875,0.0772 -0.170875,0.17088 v 1.21268 l -0.986677,-1.27882 c -0.0441,-0.0606 -0.0937,-0.0992 -0.181899,-0.0992 h -0.03306 c -0.09922,0 -0.176388,0.0772 -0.176388,0.17087 z m 0,0"
id="path26346" />
d="m 365.67888,-35.798394 c 0.51814,0 0.84887,-0.297657 0.84887,-0.887458 v -0.964626 c 0,-0.09371 -0.0772,-0.170878 -0.17088,-0.170878 -0.0992,0 -0.17638,0.07717 -0.17638,0.170878 v 0.981165 c 0,0.363802 -0.18742,0.545701 -0.4961,0.545701 -0.30868,0 -0.50161,-0.192924 -0.50161,-0.56224 v -0.964626 c 0,-0.09371 -0.0717,-0.170878 -0.17087,-0.170878 -0.0992,0 -0.17639,0.07717 -0.17639,0.170878 v 0.981165 c 0,0.573262 0.33073,0.870919 0.84336,0.870919 z m 0,0"
id="path47912" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -65.510347,293.60392 c 0,0.0992 0.07717,0.17639 0.176389,0.17639 0.0937,0 0.170875,-0.0772 0.170875,-0.17639 v -0.47405 h 0.391364 c 0.435459,0 0.79375,-0.23151 0.79375,-0.67799 v -0.006 c 0,-0.39688 -0.292146,-0.65594 -0.755166,-0.65594 h -0.600823 c -0.09922,0 -0.176389,0.0717 -0.176389,0.17087 z m 0.347264,-0.78824 v -0.71107 h 0.402389 c 0.259069,0 0.429948,0.12127 0.429948,0.35278 v 0.006 c 0,0.20395 -0.165365,0.35278 -0.429948,0.35278 z m 0,0"
id="path26334" />
d="m 367.54653,-35.991321 c 0,0.09922 0.0772,0.17639 0.17639,0.17639 0.0937,0 0.17639,-0.07717 0.17639,-0.17639 v -1.493792 h 0.47955 c 0.0882,0 0.15986,-0.07166 0.15986,-0.159853 0,-0.08819 -0.0717,-0.159851 -0.15986,-0.159851 h -1.31189 c -0.0882,0 -0.15985,0.07166 -0.15985,0.159851 0,0.08819 0.0717,0.159853 0.15985,0.159853 h 0.47956 z m 0,0"
id="path47916" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -62.758377,293.79684 c 0.518143,0 0.848872,-0.29765 0.848872,-0.88745 v -0.96463 c 0,-0.0937 -0.07717,-0.17088 -0.170876,-0.17088 -0.09922,0 -0.17639,0.0772 -0.17639,0.17088 v 0.98117 c 0,0.3638 -0.187412,0.5457 -0.496092,0.5457 -0.308681,0 -0.501608,-0.19293 -0.501608,-0.56224 v -0.96463 c 0,-0.0937 -0.07166,-0.17088 -0.170875,-0.17088 -0.09922,0 -0.176389,0.0772 -0.176389,0.17088 v 0.98117 c 0,0.57326 0.330729,0.87091 0.843358,0.87091 z m 0,0"
id="path26338" />
d="m 369.61752,-35.803908 c 0.41342,0 0.70556,-0.220485 0.70556,-0.589799 v -0.0055 c 0,-0.325215 -0.21498,-0.474044 -0.6339,-0.578774 -0.38033,-0.08819 -0.47404,-0.159853 -0.47404,-0.308681 v -0.0055 c 0,-0.132292 0.12126,-0.237019 0.32522,-0.237019 0.15433,0 0.29765,0.05512 0.45199,0.148825 0.0276,0.01654 0.0551,0.02755 0.0937,0.02755 0.0882,0 0.15985,-0.07166 0.15985,-0.159853 0,-0.06615 -0.0331,-0.115753 -0.0772,-0.137803 -0.17638,-0.121267 -0.37482,-0.187412 -0.62287,-0.187412 -0.39136,0 -0.67799,0.237021 -0.67799,0.573264 v 0.0055 c 0,0.363802 0.23702,0.490582 0.66145,0.589801 0.36381,0.08819 0.44649,0.165365 0.44649,0.303167 v 0.0055 c 0,0.148825 -0.1378,0.248044 -0.35278,0.248044 -0.21497,0 -0.39136,-0.07166 -0.55122,-0.203949 -0.022,-0.01654 -0.0551,-0.02755 -0.10473,-0.02755 -0.0882,0 -0.15985,0.07166 -0.15985,0.159854 0,0.05512 0.0276,0.10473 0.0661,0.132291 0.22049,0.165365 0.47404,0.248047 0.74414,0.248047 z m 0,0"
id="path47904" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -60.890722,293.60392 c 0,0.0992 0.07717,0.17639 0.176388,0.17639 0.0937,0 0.176389,-0.0772 0.176389,-0.17639 v -1.49379 h 0.479555 c 0.0882,0 0.159856,-0.0717 0.159856,-0.15986 0,-0.0882 -0.07166,-0.15985 -0.159856,-0.15985 h -1.311891 c -0.08819,0 -0.159851,0.0717 -0.159851,0.15985 0,0.0882 0.07166,0.15986 0.159851,0.15986 h 0.479559 z m 0,0"
id="path26342" />
d="m 347.49161,-31.379543 c 0,0.07717 0.0661,0.137803 0.1378,0.137803 0.0827,0 0.14332,-0.06063 0.14332,-0.137803 v -1.361501 c 0,-0.07717 -0.0606,-0.137803 -0.14332,-0.137803 -0.0441,0 -0.0827,0.01101 -0.1378,0.02755 l -0.24254,0.07717 c -0.0606,0.01654 -0.0992,0.06064 -0.0992,0.121267 0,0.06064 0.0606,0.115758 0.12678,0.115758 0.011,0 0.0331,0 0.0496,-0.0055 l 0.16537,-0.04961 z m 0,0"
id="path47900" />
<path
inkscape:connector-curvature="0"
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d=""
id="path47866" />
<path
inkscape:connector-curvature="0"
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d=""
id="path47814" />
<path
inkscape:connector-curvature="0"
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d=""
id="path47770" />
<path
inkscape:connector-curvature="0"
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d=""
id="path47726" />
<path
inkscape:connector-curvature="0"
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d=""
id="path47690" />
<path
inkscape:connector-curvature="0"
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d=""
id="path47662" />
<path
inkscape:connector-curvature="0"
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d=""
id="path47630" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m -58.819719,293.79133 c 0.413409,0 0.705556,-0.22048 0.705556,-0.5898 v -0.005 c 0,-0.32521 -0.214976,-0.47404 -0.633899,-0.57877 -0.380339,-0.0882 -0.474046,-0.15986 -0.474046,-0.30868 v -0.005 c 0,-0.1323 0.121266,-0.23702 0.325218,-0.23702 0.154342,0 0.297656,0.0551 0.451998,0.14882 0.02755,0.0165 0.05512,0.0276 0.0937,0.0276 0.08819,0 0.159853,-0.0717 0.159853,-0.15985 0,-0.0661 -0.03305,-0.11575 -0.07717,-0.1378 -0.176387,-0.12127 -0.374825,-0.18742 -0.622874,-0.18742 -0.391361,0 -0.677992,0.23703 -0.677992,0.57327 v 0.006 c 0,0.3638 0.237019,0.49058 0.661458,0.5898 0.363802,0.0882 0.446482,0.16536 0.446482,0.30317 v 0.005 c 0,0.14882 -0.137803,0.24804 -0.352777,0.24804 -0.214974,0 -0.391361,-0.0717 -0.551217,-0.20395 -0.02204,-0.0165 -0.05512,-0.0275 -0.104727,-0.0275 -0.0882,0 -0.159856,0.0717 -0.159856,0.15986 0,0.0551 0.02755,0.10473 0.06615,0.13229 0.220488,0.16536 0.474046,0.24804 0.744144,0.24804 z m 0,0"
id="path26330" />
d="m 382.33703,-16.222135 c 0.35277,0 0.61185,-0.176388 0.61185,-0.463021 v -0.0055 c 0,-0.192923 -0.11025,-0.303164 -0.28664,-0.385849 0.1323,-0.07166 0.23151,-0.17639 0.23151,-0.358289 v -0.0055 c 0,-0.248044 -0.23702,-0.429948 -0.55672,-0.429948 -0.31971,0 -0.55673,0.187413 -0.55673,0.429948 v 0.0055 c 0,0.181899 0.0992,0.286632 0.23151,0.358289 -0.17639,0.07717 -0.28663,0.198437 -0.28663,0.391363 v 0.0055 c 0,0.275608 0.25907,0.457512 0.61185,0.457512 z m 0,-0.94809 c -0.16537,0 -0.28663,-0.09922 -0.28663,-0.237024 v -0.0055 c 0,-0.121267 0.11575,-0.226 0.28663,-0.226 0.17087,0 0.28663,0.104733 0.28663,0.226 v 0.0055 c 0,0.137805 -0.12127,0.237024 -0.28663,0.237024 z m 0,0.711065 c -0.20947,0 -0.33624,-0.110241 -0.33624,-0.237019 v -0.0055 c 0,-0.148828 0.14882,-0.242536 0.33624,-0.242536 0.19292,0 0.33624,0.09371 0.33624,0.242536 v 0.0055 c 0,0.132292 -0.12678,0.237019 -0.33624,0.237019 z m 0,0"
id="path47574" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
id="layer6"
inkscape:label="widgets"
style="display:none">
<rect
style="opacity:1;vector-effect:none;fill:#ffff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.38020268;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect29342"
width="43.999382"
height="28.000349"
x="3.4009969"
y="14.837341"
rx="0"
ry="0" />
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect49271"
width="2.1759191"
height="2.1772995"
x="12.524985"
y="54.577202" />
<rect
y="54.577202"
x="35.725647"
height="2.1772995"
width="2.1759191"
id="rect49816"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect49818"
width="2.1759191"
height="2.1772995"
x="12.524985"
y="69.158226" />
<rect
y="69.158226"
x="35.725647"
height="2.1772995"
width="2.1759191"
id="rect49820"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect49822"
width="2.1759191"
height="2.1772995"
x="12.524985"
y="91.147583" />
<rect
y="91.147583"
x="35.725647"
height="2.1772995"
width="2.1759191"
id="rect49824"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
ry="0"
rx="0"
y="55.5308"
x="3.894335"
height="8.21173"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect49826"
width="2.1759191"
height="2.1772995"
x="12.524985"
y="107.17003" />
<rect
y="107.17003"
x="35.725647"
height="2.1772995"
width="2.1759191"
id="rect49828"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
y="14.837339"
x="3.2122073"
height="28.000355"
width="44.000755"
id="rect50704"
style="opacity:1;vector-effect:none;fill:#ffff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.70603204;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
y="55.530807"
x="3.7069211"
height="8.2117252"
width="8.2117281"
id="rect30149"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
id="rect50717"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect30151"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect50719"
width="8.2117281"
height="8.21173"
x="15.494663"
y="55.5308"
rx="0"
ry="0" />
height="8.2117252"
x="15.307249"
y="55.530807" />
<rect
ry="0"
rx="0"
y="55.5308"
x="27.094986"
height="8.21173"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect50721"
width="8.2117281"
id="rect30153"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
height="8.2117252"
x="26.906193"
y="55.530807" />
<rect
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect30155"
y="55.530807"
x="38.506519"
height="8.2117252"
width="8.2117281"
height="8.21173"
x="38.695312"
y="55.5308"
rx="0"
ry="0" />
id="rect50723"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
ry="0"
rx="0"
y="70.144897"
x="3.8943348"
height="8.21173"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect50733"
width="8.2117281"
id="rect30157"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
height="8.2117252"
x="3.7069209"
y="70.144905" />
<rect
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect30159"
y="70.144905"
x="15.307249"
height="8.2117252"
width="8.2117281"
height="8.21173"
x="15.494663"
y="70.144897"
rx="0"
ry="0" />
id="rect50735"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
ry="0"
rx="0"
y="70.144897"
x="27.094986"
height="8.21173"
y="70.144905"
x="26.906193"
height="8.2117252"
width="8.2117281"
id="rect30161"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
id="rect50737"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect30163"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect50739"
width="8.2117281"
height="8.21173"
x="38.695312"
y="70.144897"
rx="0"
ry="0" />
height="8.2117252"
x="38.506519"
y="70.144905" />
<rect
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect30167"
y="92.143906"
x="3.7069209"
height="8.2117252"
width="8.2117281"
height="8.21173"
x="3.8929532"
y="92.143898"
rx="0"
ry="0" />
id="rect50741"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
ry="0"
rx="0"
y="92.143898"
x="15.49328"
height="8.21173"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect50743"
width="8.2117281"
id="rect30169"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
height="8.2117252"
x="15.307249"
y="92.143906" />
<rect
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect30171"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect50745"
width="8.2117281"
height="8.21173"
x="27.093605"
y="92.143898"
rx="0"
ry="0" />
height="8.2117252"
x="26.906193"
y="92.143906" />
<rect
ry="0"
rx="0"
y="92.143898"
x="38.693932"
height="8.21173"
y="92.143906"
x="38.506519"
height="8.2117252"
width="8.2117281"
id="rect30173"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
id="rect50747"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect30175"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect50749"
width="8.2117281"
height="8.21173"
x="3.894335"
y="108.1443"
rx="0"
ry="0" />
height="8.2117252"
x="3.7069209"
y="108.1443" />
<rect
ry="0"
rx="0"
y="108.1443"
x="15.494662"
height="8.21173"
x="15.307249"
height="8.2117252"
width="8.2117281"
id="rect30177"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
id="rect50751"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect30179"
width="8.2117281"
height="8.21173"
x="27.094988"
y="108.1443"
rx="0"
ry="0" />
x="26.906193"
height="8.2117252"
width="8.2117281"
id="rect50753"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
ry="0"
rx="0"
y="108.1443"
x="38.695312"
height="8.21173"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect50755"
width="8.2117281"
id="rect30181"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.08894975;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
height="8.2117252"
x="38.506523"
y="108.1443" />
</g>
</svg>

+ 7
- 9
src/app/AudioWidget.cpp View File

@@ -37,16 +37,16 @@ struct AudioDeviceItem : MenuItem {
AudioIO *audioIO;
int device;
int offset;
int maxChannels;
void onAction(EventAction &e) override {
audioIO->setDevice(device, offset, maxChannels);
audioIO->setDevice(device, offset);
}
};

struct AudioDeviceChoice : LedDisplayChoice {
AudioWidget *audioWidget;
int groupChannels = 8;
/** Prevents devices with a ridiculous number of channels from being displayed */
int maxTotalChannels = 64;

void onAction(EventAction &e) override {
Menu *menu = gScene->createMenu();
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Audio device"));
@@ -60,21 +60,20 @@ struct AudioDeviceChoice : LedDisplayChoice {
menu->addChild(item);
}
for (int device = 0; device < deviceCount; device++) {
int maxChannels = min(maxTotalChannels, audioWidget->audioIO->getDeviceMaxChannels(device));
for (int offset = 0; offset < maxChannels; offset += groupChannels) {
int channels = min(maxTotalChannels, audioWidget->audioIO->getDeviceChannels(device));
for (int offset = 0; offset < channels; offset += audioWidget->audioIO->maxChannels) {
AudioDeviceItem *item = new AudioDeviceItem();
item->audioIO = audioWidget->audioIO;
item->device = device;
item->offset = offset;
item->maxChannels = groupChannels;
item->text = audioWidget->audioIO->getDeviceDetail(device, offset, groupChannels);
item->text = audioWidget->audioIO->getDeviceDetail(device, offset);
item->rightText = CHECKMARK(item->device == audioWidget->audioIO->device && item->offset == audioWidget->audioIO->offset);
menu->addChild(item);
}
}
}
void step() override {
text = audioWidget->audioIO->getDeviceDetail(audioWidget->audioIO->device, audioWidget->audioIO->offset, groupChannels);
text = audioWidget->audioIO->getDeviceDetail(audioWidget->audioIO->device, audioWidget->audioIO->offset);
if (text.empty()) {
text = "(No device)";
color.a = 0.5f;
@@ -82,7 +81,6 @@ struct AudioDeviceChoice : LedDisplayChoice {
else {
color.a = 1.f;
}
text = ellipsize(text, 18);
}
};



+ 4
- 0
src/app/LedDisplay.cpp View File

@@ -38,6 +38,8 @@ LedDisplayChoice::LedDisplayChoice() {
}

void LedDisplayChoice::draw(NVGcontext *vg) {
nvgScissor(vg, 0, 0, box.size.x, box.size.y);

if (font->handle < 0)
return;

@@ -47,6 +49,8 @@ void LedDisplayChoice::draw(NVGcontext *vg) {

nvgFontSize(vg, 12);
nvgText(vg, textOffset.x, textOffset.y, text.c_str(), NULL);

nvgResetScissor(vg);
}

void LedDisplayChoice::onMouseDown(EventMouseDown &e) {


+ 6
- 19
src/app/LightWidget.cpp View File

@@ -1,15 +1,11 @@
#include "app.hpp"
#include "util/color.hpp"


namespace rack {


void LightWidget::draw(NVGcontext *vg) {
color.r = clamp(color.r, 0.0, 1.0);
color.g = clamp(color.g, 0.0, 1.0);
color.b = clamp(color.b, 0.0, 1.0);
color.a = clamp(color.a, 0.0, 1.0);

drawLight(vg);
drawHalo(vg);
}
@@ -20,21 +16,14 @@ void LightWidget::drawLight(NVGcontext *vg) {
nvgBeginPath(vg);
nvgCircle(vg, radius, radius, radius);

// Background
nvgFillColor(vg, bgColor);
// Solid color
nvgFillColor(vg, color);
nvgFill(vg);

// Border
nvgStrokeWidth(vg, 1.0);
NVGcolor borderColor = bgColor;
borderColor.a *= 0.5;
nvgStrokeWidth(vg, 0.5);
nvgStrokeColor(vg, borderColor);
nvgStroke(vg);

// Inner glow
nvgFillColor(vg, color);
nvgGlobalCompositeOperation(vg, NVG_LIGHTER);
nvgFill(vg);
}

void LightWidget::drawHalo(NVGcontext *vg) {
@@ -45,10 +34,8 @@ void LightWidget::drawHalo(NVGcontext *vg) {
nvgRect(vg, radius - oradius, radius - oradius, 2*oradius, 2*oradius);

NVGpaint paint;
NVGcolor icol = color;
icol.a *= 0.10;
NVGcolor ocol = color;
ocol.a = 0.0;
NVGcolor icol = colorMult(color, 0.15);
NVGcolor ocol = nvgRGB(0, 0, 0);
paint = nvgRadialGradient(vg, radius, radius, radius, oradius, icol, ocol);
nvgFillPaint(vg, paint);
nvgGlobalCompositeOperation(vg, NVG_LIGHTER);


+ 15
- 1
src/app/MidiWidget.cpp View File

@@ -45,6 +45,14 @@ struct MidiDeviceChoice : LedDisplayChoice {
void onAction(EventAction &e) override {
Menu *menu = gScene->createMenu();
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "MIDI device"));
{
MidiDeviceItem *item = new MidiDeviceItem();
item->midiIO = midiWidget->midiIO;
item->device = -1;
item->text = "(No device)";
item->rightText = CHECKMARK(item->device == midiWidget->midiIO->device);
menu->addChild(item);
}
int driverCount = midiWidget->midiIO->getDeviceCount();
for (int device = 0; device < driverCount; device++) {
MidiDeviceItem *item = new MidiDeviceItem();
@@ -57,7 +65,13 @@ struct MidiDeviceChoice : LedDisplayChoice {
}
void step() override {
text = midiWidget->midiIO->getDeviceName(midiWidget->midiIO->device);
text = ellipsize(text, 14);
if (text.empty()) {
text = "(No device)";
color.a = 0.5f;
}
else {
color.a = 1.f;
}
}
};



+ 1
- 1
src/app/ModuleLightWidget.cpp View File

@@ -12,7 +12,7 @@ void ModuleLightWidget::step() {

for (size_t i = 0; i < baseColors.size(); i++) {
float value = module->lights[firstLightId + i].getBrightness();
value = clamp(value, 0.0, 1.0);
value = clamp(value, 0.f, 1.f);
values[i] = value;
}
setValues(values);


+ 14
- 6
src/app/ModuleWidget.cpp View File

@@ -233,27 +233,34 @@ void ModuleWidget::onMouseMove(EventMouseMove &e) {

void ModuleWidget::onHoverKey(EventHoverKey &e) {
switch (e.key) {
case GLFW_KEY_I:
case GLFW_KEY_I: {
if (windowIsModPressed() && !windowIsShiftPressed()) {
reset();
e.consumed = true;
return;
}
break;
case GLFW_KEY_R:
} break;
case GLFW_KEY_R: {
if (windowIsModPressed() && !windowIsShiftPressed()) {
randomize();
e.consumed = true;
return;
}
break;
case GLFW_KEY_D:
} break;
case GLFW_KEY_D: {
if (windowIsModPressed() && !windowIsShiftPressed()) {
gRackWidget->cloneModule(this);
e.consumed = true;
return;
}
break;
} break;
case GLFW_KEY_U: {
if (windowIsModPressed() && !windowIsShiftPressed()) {
disconnect();
e.consumed = true;
return;
}
} break;
}

Widget::onHoverKey(e);
@@ -331,6 +338,7 @@ Menu *ModuleWidget::createContextMenu() {

DisconnectMenuItem *disconnectItem = new DisconnectMenuItem();
disconnectItem->text = "Disconnect cables";
disconnectItem->rightText = WINDOW_MOD_KEY_NAME "+U";
disconnectItem->moduleWidget = this;
menu->addChild(disconnectItem);



+ 6
- 5
src/app/MultiLightWidget.cpp View File

@@ -1,4 +1,5 @@
#include "app.hpp"
#include "util/color.hpp"


namespace rack {
@@ -10,14 +11,14 @@ void MultiLightWidget::addBaseColor(NVGcolor baseColor) {

void MultiLightWidget::setValues(const std::vector<float> &values) {
assert(values.size() == baseColors.size());
color = nvgRGBf(0, 0, 0);
color = bgColor;
for (size_t i = 0; i < baseColors.size(); i++) {
NVGcolor c = baseColors[i];
float value = values[i];
color.r += c.r * value;
color.g += c.g * value;
color.b += c.b * value;
c = colorMinus(c, bgColor);
c = colorMult(c, values[i]);
color = colorPlus(color, c);
}
color = colorClip(color);
}




+ 17
- 9
src/audio.cpp View File

@@ -46,8 +46,8 @@ std::string AudioIO::getDriverName(int driver) {
}

void AudioIO::setDriver(int driver) {
// Close driver
closeStream();
setDevice(-1, 0);
if (rtAudio) {
delete rtAudio;
rtAudio = NULL;
@@ -100,7 +100,7 @@ bool AudioIO::getDeviceInfo(int device, RtAudio::DeviceInfo *deviceInfo) {
}
}

int AudioIO::getDeviceMaxChannels(int device) {
int AudioIO::getDeviceChannels(int device) {
if (device < 0)
return 0;

@@ -130,7 +130,7 @@ std::string AudioIO::getDeviceName(int device) {
return "";
}

std::string AudioIO::getDeviceDetail(int device, int offset, int maxChannels) {
std::string AudioIO::getDeviceDetail(int device, int offset) {
if (device < 0)
return "";

@@ -154,12 +154,10 @@ std::string AudioIO::getDeviceDetail(int device, int offset, int maxChannels) {
return "";
}

void AudioIO::setDevice(int device, int offset, int maxChannels) {
void AudioIO::setDevice(int device, int offset) {
closeStream();
this->device = device;
this->offset = offset;
this->numOutputs = maxChannels;
this->numInputs = maxChannels;
openStream();
}

@@ -200,8 +198,8 @@ void AudioIO::openStream() {
if (rtAudio->isStreamOpen())
return;

numOutputs = clamp((int) deviceInfo.outputChannels - offset, 0, numOutputs);
numInputs = clamp((int) deviceInfo.inputChannels - offset, 0, numInputs);
numOutputs = clamp((int) deviceInfo.outputChannels - offset, 0, maxChannels);
numInputs = clamp((int) deviceInfo.inputChannels - offset, 0, maxChannels);

if (numOutputs == 0 && numInputs == 0) {
warn("RtAudio device %d has 0 inputs and 0 outputs");
@@ -318,6 +316,8 @@ json_t *AudioIO::toJson() {
json_object_set_new(rootJ, "driver", json_integer(driver));
std::string deviceName = getDeviceName(device);
json_object_set_new(rootJ, "deviceName", json_string(deviceName.c_str()));
json_object_set_new(rootJ, "offset", json_integer(offset));
json_object_set_new(rootJ, "maxChannels", json_integer(maxChannels));
json_object_set_new(rootJ, "sampleRate", json_integer(sampleRate));
json_object_set_new(rootJ, "blockSize", json_integer(blockSize));
return rootJ;
@@ -342,6 +342,14 @@ void AudioIO::fromJson(json_t *rootJ) {
}
}

json_t *offsetJ = json_object_get(rootJ, "offset");
if (offsetJ)
offset = json_integer_value(offsetJ);

json_t *maxChannelsJ = json_object_get(rootJ, "maxChannels");
if (maxChannelsJ)
maxChannels = json_integer_value(maxChannelsJ);

json_t *sampleRateJ = json_object_get(rootJ, "sampleRate");
if (sampleRateJ)
sampleRate = json_integer_value(sampleRateJ);


+ 48
- 63
src/core/AudioInterface.cpp View File

@@ -39,7 +39,7 @@ struct AudioInterfaceIO : AudioIO {

~AudioInterfaceIO() {
// Close stream here before destructing AudioInterfaceIO, so the mutexes are still valid when waiting to close.
closeStream();
setDevice(-1, 0);
}

void processStream(const float *input, float *output, int length) override {
@@ -97,8 +97,8 @@ struct AudioInterface : Module {
NUM_OUTPUTS
};
enum LightIds {
ENUMS(INPUT_LIGHT, INPUTS),
ENUMS(OUTPUT_LIGHT, OUTPUTS),
ENUMS(INPUT_LIGHT, INPUTS / 2),
ENUMS(OUTPUT_LIGHT, OUTPUTS / 2),
NUM_LIGHTS
};

@@ -141,7 +141,7 @@ struct AudioInterface : Module {
}

void onReset() override {
audioIO.closeStream();
audioIO.setDevice(-1, 0);
}
};

@@ -203,72 +203,57 @@ void AudioInterface::step() {
}
}

for (int i = 0; i < INPUTS; i++)
lights[INPUT_LIGHT + i].value = (audioIO.numInputs > i);
for (int i = 0; i < OUTPUTS; i++)
lights[OUTPUT_LIGHT + i].value = (audioIO.numOutputs > i);
for (int i = 0; i < INPUTS / 2; i++)
lights[INPUT_LIGHT + i].value = (audioIO.numInputs >= 2*i+1);
for (int i = 0; i < OUTPUTS / 2; i++)
lights[OUTPUT_LIGHT + i].value = (audioIO.numOutputs >= 2*i+1);

audioIO.audioCv.notify_all();
}


struct AudioInterfaceWidget : ModuleWidget {
AudioInterfaceWidget(AudioInterface *module);
AudioInterfaceWidget(AudioInterface *module) : ModuleWidget(module) {
setPanel(SVG::load(assetGlobal("res/Core/AudioInterface.svg")));

addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));

addInput(Port::create<PJ301MPort>(mm2px(Vec(3.7069211, 55.530807)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 0));
addInput(Port::create<PJ301MPort>(mm2px(Vec(15.307249, 55.530807)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 1));
addInput(Port::create<PJ301MPort>(mm2px(Vec(26.906193, 55.530807)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 2));
addInput(Port::create<PJ301MPort>(mm2px(Vec(38.506519, 55.530807)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 3));
addInput(Port::create<PJ301MPort>(mm2px(Vec(3.7069209, 70.144905)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 4));
addInput(Port::create<PJ301MPort>(mm2px(Vec(15.307249, 70.144905)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 5));
addInput(Port::create<PJ301MPort>(mm2px(Vec(26.906193, 70.144905)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 6));
addInput(Port::create<PJ301MPort>(mm2px(Vec(38.506519, 70.144905)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 7));

addOutput(Port::create<PJ301MPort>(mm2px(Vec(3.7069209, 92.143906)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 0));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(15.307249, 92.143906)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 1));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(26.906193, 92.143906)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 2));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(38.506519, 92.143906)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 3));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(3.7069209, 108.1443)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 4));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(15.307249, 108.1443)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 5));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(26.906193, 108.1443)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 6));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(38.506523, 108.1443)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 7));

addChild(ModuleLightWidget::create<SmallLight<GreenLight>>(mm2px(Vec(12.524985, 54.577202)), module, AudioInterface::INPUT_LIGHT + 0));
addChild(ModuleLightWidget::create<SmallLight<GreenLight>>(mm2px(Vec(35.725647, 54.577202)), module, AudioInterface::INPUT_LIGHT + 1));
addChild(ModuleLightWidget::create<SmallLight<GreenLight>>(mm2px(Vec(12.524985, 69.158226)), module, AudioInterface::INPUT_LIGHT + 2));
addChild(ModuleLightWidget::create<SmallLight<GreenLight>>(mm2px(Vec(35.725647, 69.158226)), module, AudioInterface::INPUT_LIGHT + 3));
addChild(ModuleLightWidget::create<SmallLight<GreenLight>>(mm2px(Vec(12.524985, 91.147583)), module, AudioInterface::OUTPUT_LIGHT + 0));
addChild(ModuleLightWidget::create<SmallLight<GreenLight>>(mm2px(Vec(35.725647, 91.147583)), module, AudioInterface::OUTPUT_LIGHT + 1));
addChild(ModuleLightWidget::create<SmallLight<GreenLight>>(mm2px(Vec(12.524985, 107.17003)), module, AudioInterface::OUTPUT_LIGHT + 2));
addChild(ModuleLightWidget::create<SmallLight<GreenLight>>(mm2px(Vec(35.725647, 107.17003)), module, AudioInterface::OUTPUT_LIGHT + 3));

AudioWidget *audioWidget = Widget::create<AudioWidget>(mm2px(Vec(3.2122073, 14.837339)));
audioWidget->box.size = mm2px(Vec(44, 28));
audioWidget->audioIO = &module->audioIO;
addChild(audioWidget);
}
};


AudioInterfaceWidget::AudioInterfaceWidget(AudioInterface *module) : ModuleWidget(module) {
setPanel(SVG::load(assetGlobal("res/Core/AudioInterface.svg")));

addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));

addInput(Port::create<PJ301MPort>(mm2px(Vec(3.89433, 55.5308)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 0));
addInput(Port::create<PJ301MPort>(mm2px(Vec(15.4947, 55.5308)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 1));
addInput(Port::create<PJ301MPort>(mm2px(Vec(27.095, 55.5308)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 2));
addInput(Port::create<PJ301MPort>(mm2px(Vec(38.6953, 55.5308)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 3));
addInput(Port::create<PJ301MPort>(mm2px(Vec(3.89433, 70.1449)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 4));
addInput(Port::create<PJ301MPort>(mm2px(Vec(15.4947, 70.1449)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 5));
addInput(Port::create<PJ301MPort>(mm2px(Vec(27.095, 70.1449)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 6));
addInput(Port::create<PJ301MPort>(mm2px(Vec(38.6953, 70.1449)), Port::INPUT, module, AudioInterface::AUDIO_INPUT + 7));

addOutput(Port::create<PJ301MPort>(mm2px(Vec(3.89295, 92.1439)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 0));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(15.4933, 92.1439)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 1));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(27.0936, 92.1439)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 2));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(38.6939, 92.1439)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 3));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(3.89433, 108.144)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 4));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(15.4947, 108.144)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 5));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(27.095, 108.144)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 6));
addOutput(Port::create<PJ301MPort>(mm2px(Vec(38.6953, 108.144)), Port::OUTPUT, module, AudioInterface::AUDIO_OUTPUT + 7));

Vec lightOffset = mm2px(Vec(7.21812, -0.1833));

addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(3.89433, 55.5308)).plus(lightOffset), module, AudioInterface::INPUT_LIGHT + 0));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(15.4947, 55.5308)).plus(lightOffset), module, AudioInterface::INPUT_LIGHT + 1));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(27.095, 55.5308)).plus(lightOffset), module, AudioInterface::INPUT_LIGHT + 2));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(38.6953, 55.5308)).plus(lightOffset), module, AudioInterface::INPUT_LIGHT + 3));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(3.89433, 70.1449)).plus(lightOffset), module, AudioInterface::INPUT_LIGHT + 4));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(15.4947, 70.1449)).plus(lightOffset), module, AudioInterface::INPUT_LIGHT + 5));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(27.095, 70.1449)).plus(lightOffset), module, AudioInterface::INPUT_LIGHT + 6));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(38.6953, 70.1449)).plus(lightOffset), module, AudioInterface::INPUT_LIGHT + 7));

addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(3.89295, 92.1439)).plus(lightOffset), module, AudioInterface::OUTPUT_LIGHT + 0));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(15.4933, 92.1439)).plus(lightOffset), module, AudioInterface::OUTPUT_LIGHT + 1));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(27.0936, 92.1439)).plus(lightOffset), module, AudioInterface::OUTPUT_LIGHT + 2));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(38.6939, 92.1439)).plus(lightOffset), module, AudioInterface::OUTPUT_LIGHT + 3));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(3.89433, 108.144)).plus(lightOffset), module, AudioInterface::OUTPUT_LIGHT + 4));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(15.4947, 108.144)).plus(lightOffset), module, AudioInterface::OUTPUT_LIGHT + 5));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(27.095, 108.144)).plus(lightOffset), module, AudioInterface::OUTPUT_LIGHT + 6));
addChild(ModuleLightWidget::create<TinyLight<YellowLight>>(mm2px(Vec(38.6953, 108.144)).plus(lightOffset), module, AudioInterface::OUTPUT_LIGHT + 7));


AudioWidget *audioWidget = Widget::create<AudioWidget>(mm2px(Vec(3.401, 14.8373)));
audioWidget->box.size = mm2px(Vec(44, 28));
audioWidget->audioIO = &module->audioIO;
addChild(audioWidget);
}


Model *modelAudioInterface = Model::create<AudioInterface, AudioInterfaceWidget>("Core", "AudioInterface", "Audio", EXTERNAL_TAG);

Loading…
Cancel
Save