aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/cmake_components.pngbin0 -> 18842 bytes
-rw-r--r--docs/cmake_components.puml29
-rw-r--r--docs/cmake_components.svg42
-rw-r--r--docs/cmake_target_common.pngbin0 -> 34461 bytes
-rw-r--r--docs/cmake_target_common.puml51
-rw-r--r--docs/cmake_target_common.svg64
6 files changed, 186 insertions, 0 deletions
diff --git a/docs/cmake_components.png b/docs/cmake_components.png
new file mode 100644
index 0000000..2a509ba
--- /dev/null
+++ b/docs/cmake_components.png
Binary files differ
diff --git a/docs/cmake_components.puml b/docs/cmake_components.puml
new file mode 100644
index 0000000..a13abe1
--- /dev/null
+++ b/docs/cmake_components.puml
@@ -0,0 +1,29 @@
+@startuml
+
+skinparam {
+ BackgroundColor #EEEBDC
+ DefaultFontColor white
+}
+
+package "demo/targets/<your target>" #002B49 {
+ package "core_platform/targets/common" #0091BD {
+ package "core_software" #00C1DE {
+ package "core_driver" #7D868C {}
+ package "cmsis" #7D868C {}
+ package "tflite_micro" #7D868C {}
+ package "rtos" #7D868C {}
+ }
+
+ package "core_platform/drivers" #00C1DE {}
+ }
+
+ package "core_platform/applications" #0091BD {}
+ package "demo/applications" #0091BD {}
+ package "demo/drivers" #0091BD {}
+}
+
+"core_platform/applications" -[hidden]> "demo/applications"
+"core_platform/applications" -[hidden]> "demo/drivers"
+"core_platform/targets/common" --[hidden]> "core_platform/applications"
+
+@enduml
diff --git a/docs/cmake_components.svg b/docs/cmake_components.svg
new file mode 100644
index 0000000..706b176
--- /dev/null
+++ b/docs/cmake_components.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="283px" preserveAspectRatio="none" style="width:776px;height:283px;background:#EEEBDC;" version="1.1" viewBox="0 0 776 283" width="776px" zoomAndPan="magnify"><defs><filter height="300%" id="fllzhiafzjk02" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--cluster demo/targets/<your target>--><polygon fill="#002B49" filter="url(#fllzhiafzjk02)" points="14,16,244,16,251,38.2969,754,38.2969,754,271,14,271,14,16" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="14" x2="251" y1="38.2969" y2="38.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="224" x="18" y="30.9951">demo/targets/&lt;your target&gt;</text><!--cluster core_platform/targets/common--><polygon fill="#0091BD" filter="url(#fllzhiafzjk02)" points="22,43,271,43,278,65.2969,746,65.2969,746,166,22,166,22,43" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="22" x2="278" y1="65.2969" y2="65.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="243" x="26" y="57.9951">core_platform/targets/common</text><!--cluster core_software--><polygon fill="#00C1DE" filter="url(#fllzhiafzjk02)" points="282,70,402,70,409,92.2969,738,92.2969,738,158,282,158,282,70" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="282" x2="409" y1="92.2969" y2="92.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="114" x="286" y="84.9951">core_software</text><polygon fill="#7D868C" filter="url(#fllzhiafzjk02)" points="620,97,716,97,723,119.2969,730,119.2969,730,149.5938,620,149.5938,620,97" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="620" x2="723" y1="119.2969" y2="119.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="90" x="624" y="111.9951">core_driver</text><polygon fill="#7D868C" filter="url(#fllzhiafzjk02)" points="519.5,97,570.5,97,577.5,119.2969,584.5,119.2969,584.5,149.5938,519.5,149.5938,519.5,97" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="519.5" x2="577.5" y1="119.2969" y2="119.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="523.5" y="111.9951">cmsis</text><polygon fill="#7D868C" filter="url(#fllzhiafzjk02)" points="377.5,97,470.5,97,477.5,119.2969,484.5,119.2969,484.5,149.5938,377.5,149.5938,377.5,97" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="377.5" x2="477.5" y1="119.2969" y2="119.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="87" x="381.5" y="111.9951">tflite_micro</text><polygon fill="#7D868C" filter="url(#fllzhiafzjk02)" points="290,97,328,97,335,119.2969,342,119.2969,342,149.5938,290,149.5938,290,97" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="290" x2="335" y1="119.2969" y2="119.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="294" y="111.9951">rtos</text><polygon fill="#00C1DE" filter="url(#fllzhiafzjk02)" points="30,97,206,97,213,119.2969,220,119.2969,220,149.5938,30,149.5938,30,97" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="30" x2="213" y1="119.2969" y2="119.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="170" x="34" y="111.9951">core_platform/drivers</text><polygon fill="#0091BD" filter="url(#fllzhiafzjk02)" points="141,210,355,210,362,232.2969,369,232.2969,369,262.5938,141,262.5938,141,210" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="141" x2="362" y1="232.2969" y2="232.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="208" x="145" y="224.9951">core_platform/applications</text><polygon fill="#0091BD" filter="url(#fllzhiafzjk02)" points="564.5,210,713.5,210,720.5,232.2969,727.5,232.2969,727.5,262.5938,564.5,262.5938,564.5,210" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="564.5" x2="720.5" y1="232.2969" y2="232.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="143" x="568.5" y="224.9951">demo/applications</text><polygon fill="#0091BD" filter="url(#fllzhiafzjk02)" points="404.5,210,515.5,210,522.5,232.2969,529.5,232.2969,529.5,262.5938,404.5,262.5938,404.5,210" style="stroke: #000000; stroke-width: 2.0;"/><line style="stroke: #000000; stroke-width: 2.0;" x1="404.5" x2="522.5" y1="232.2969" y2="232.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="105" x="408.5" y="224.9951">demo/drivers</text><!--link core_platform/applications to demo/applications--><!--link core_platform/applications to demo/drivers--><!--link core_platform/targets/common to core_platform/applications--><!--
+@startuml
+
+skinparam {
+ BackgroundColor #EEEBDC
+ DefaultFontColor white
+}
+
+package "demo/targets/<your target>" #002B49 {
+ package "core_platform/targets/common" #0091BD {
+ package "core_software" #00C1DE {
+ package "core_driver" #7D868C {}
+ package "cmsis" #7D868C {}
+ package "tflite_micro" #7D868C {}
+ package "rtos" #7D868C {}
+ }
+
+ package "core_platform/drivers" #00C1DE {}
+ }
+
+ package "core_platform/applications" #0091BD {}
+ package "demo/applications" #0091BD {}
+ package "demo/drivers" #0091BD {}
+}
+
+"core_platform/applications" -[hidden]> "demo/applications"
+"core_platform/applications" -[hidden]> "demo/drivers"
+"core_platform/targets/common" - -[hidden]> "core_platform/applications"
+
+@enduml
+
+PlantUML version 1.2017.15(Mon Jul 03 18:45:34 CEST 2017)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Java Version: 11.0.15+10-Ubuntu-0ubuntu0.18.04.1
+Operating System: Linux
+OS Version: 5.4.0-113-generic
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg> \ No newline at end of file
diff --git a/docs/cmake_target_common.png b/docs/cmake_target_common.png
new file mode 100644
index 0000000..99f686c
--- /dev/null
+++ b/docs/cmake_target_common.png
Binary files differ
diff --git a/docs/cmake_target_common.puml b/docs/cmake_target_common.puml
new file mode 100644
index 0000000..c91b9c8
--- /dev/null
+++ b/docs/cmake_target_common.puml
@@ -0,0 +1,51 @@
+@startuml
+
+skinparam {
+ BackgroundColor #EEEBDC
+ DefaultFontColor black
+}
+
+skinparam component {
+ BackgroundColor #0091BD
+ BorderColor black
+ ArrowColor black
+}
+
+skinparam note {
+ BackgroundColor #00C1DE
+ BorderColor black
+}
+
+[ethosu_target_init] --> [ethosu_target_startup]
+
+[ethosu_target_startup] --> [ethosu_target_link]
+
+[ethosu_target_link] --> [ethosu_target_common]
+
+note right of ethosu_target_init
+ Links drivers and calls targetSetup() to initialize the target.
+end note
+
+note right of ethosu_target_startup
+ Links CMSIS Device and Core libraries.
+
+ CMSIS Device provides startup and system files that are used to initialize
+ the CPU, configure CPU extensions and setup the interrupt vector table.
+
+ CMSIS Core provides an interface to the CPU, for example configuring
+ caches, systick or interrupt handling.
+
+ Some RTOSes provide their own startup files. Those applications should
+ link ethosu_target_link instead.
+end note
+
+note right of ethosu_target_link
+ Adds scatter file or linker script, describing the memory layout of the target.
+end note
+
+note right of ethosu_target_common
+ All applications should depend on this library. It is used to export definitions
+ from the target to the application.
+end note
+
+@enduml
diff --git a/docs/cmake_target_common.svg b/docs/cmake_target_common.svg
new file mode 100644
index 0000000..63bd79c
--- /dev/null
+++ b/docs/cmake_target_common.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="473px" preserveAspectRatio="none" style="width:747px;height:473px;background:#EEEBDC;" version="1.1" viewBox="0 0 747 473" width="747px" zoomAndPan="magnify"><defs><filter height="300%" id="f1f0gza4i4o0zv" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--entity ethosu_target_init--><rect fill="#0091BD" filter="url(#f1f0gza4i4o0zv)" height="36.2969" style="stroke: #000000; stroke-width: 1.5;" width="144" x="26.5" y="8"/><rect fill="#0091BD" height="5" style="stroke: #000000; stroke-width: 1.5;" width="10" x="21.5" y="13"/><rect fill="#0091BD" height="5" style="stroke: #000000; stroke-width: 1.5;" width="10" x="21.5" y="34.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="124" x="36.5" y="30.9951">ethosu_target_init</text><!--entity ethosu_target_startup--><rect fill="#0091BD" filter="url(#f1f0gza4i4o0zv)" height="36.2969" style="stroke: #000000; stroke-width: 1.5;" width="173" x="12" y="166.5"/><rect fill="#0091BD" height="5" style="stroke: #000000; stroke-width: 1.5;" width="10" x="7" y="171.5"/><rect fill="#0091BD" height="5" style="stroke: #000000; stroke-width: 1.5;" width="10" x="7" y="192.7969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="153" x="22" y="189.4951">ethosu_target_startup</text><!--entity ethosu_target_link--><rect fill="#0091BD" filter="url(#f1f0gza4i4o0zv)" height="36.2969" style="stroke: #000000; stroke-width: 1.5;" width="147" x="25" y="325"/><rect fill="#0091BD" height="5" style="stroke: #000000; stroke-width: 1.5;" width="10" x="20" y="330"/><rect fill="#0091BD" height="5" style="stroke: #000000; stroke-width: 1.5;" width="10" x="20" y="351.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="127" x="35" y="347.9951">ethosu_target_link</text><!--entity ethosu_target_common--><rect fill="#0091BD" filter="url(#f1f0gza4i4o0zv)" height="36.2969" style="stroke: #000000; stroke-width: 1.5;" width="185" x="6" y="423"/><rect fill="#0091BD" height="5" style="stroke: #000000; stroke-width: 1.5;" width="10" x="1" y="428"/><rect fill="#0091BD" height="5" style="stroke: #000000; stroke-width: 1.5;" width="10" x="1" y="449.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="165" x="16" y="445.9951">ethosu_target_common</text><polygon fill="#00C1DE" filter="url(#f1f0gza4i4o0zv)" points="206,13.5,206,38.6328,601,38.6328,601,23.5,591,13.5,206,13.5" style="stroke: #000000; stroke-width: 1.0;"/><polygon fill="#00C1DE" points="206,13.5,206,22,170.5801,26,206,30,206,38.6328,601,38.6328,601,23.5,591,13.5,206,13.5" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="591" x2="591" y1="13.5" y2="23.5"/><line style="stroke: #000000; stroke-width: 1.0;" x1="601" x2="591" y1="23.5" y2="23.5"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="374" x="212" y="30.5669">Links drivers and calls targetSetup() to initialize the target.</text><polygon fill="#00C1DE" filter="url(#f1f0gza4i4o0zv)" points="220,104,220,265.3281,707,265.3281,707,114,697,104,220,104" style="stroke: #000000; stroke-width: 1.0;"/><polygon fill="#00C1DE" points="220,104,220,180.5,185.1162,184.5,220,188.5,220,265.3281,707,265.3281,707,114,697,104,220,104" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="697" x2="697" y1="104" y2="114"/><line style="stroke: #000000; stroke-width: 1.0;" x1="707" x2="697" y1="114" y2="114"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="244" x="226" y="121.0669">Links CMSIS Device and Core libraries.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="230" y="136.1997"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="466" x="226" y="151.3325">CMSIS Device provides startup and system files that are used to initialize</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="459" x="226" y="166.4653">the CPU, configure CPU extensions and setup the interrupt vector table.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="230" y="181.5981"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="444" x="226" y="196.731">CMSIS Core provides an interface to the CPU, for example configuring</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="234" x="226" y="211.8638">caches, systick or interrupt handling.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="230" y="226.9966"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="455" x="226" y="242.1294">Some RTOSes provide their own startup files. Those applications should</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="198" x="226" y="257.2622">link ethosu_target_link instead.</text><polygon fill="#00C1DE" filter="url(#f1f0gza4i4o0zv)" points="207,330.5,207,355.6328,712,355.6328,712,340.5,702,330.5,207,330.5" style="stroke: #000000; stroke-width: 1.0;"/><polygon fill="#00C1DE" points="207,330.5,207,339,172.1807,343,207,347,207,355.6328,712,355.6328,712,340.5,702,330.5,207,330.5" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="702" x2="702" y1="330.5" y2="340.5"/><line style="stroke: #000000; stroke-width: 1.0;" x1="712" x2="702" y1="340.5" y2="340.5"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="484" x="213" y="347.5669">Adds scatter file or linker script, describing the memory layout of the target.</text><polygon fill="#00C1DE" filter="url(#f1f0gza4i4o0zv)" points="225.5,421,225.5,461.2656,725.5,461.2656,725.5,431,715.5,421,225.5,421" style="stroke: #000000; stroke-width: 1.0;"/><polygon fill="#00C1DE" points="225.5,421,225.5,437,191.2773,441,225.5,445,225.5,461.2656,725.5,461.2656,725.5,431,715.5,421,225.5,421" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="715.5" x2="715.5" y1="421" y2="431"/><line style="stroke: #000000; stroke-width: 1.0;" x1="725.5" x2="715.5" y1="431" y2="431"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="479" x="231.5" y="438.0669">All applications should depend on this library. It is used to export definitions</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="217" x="231.5" y="453.1997">from the target to the application.</text><!--link ethosu_target_init to ethosu_target_startup--><path d="M98.5,44.182 C98.5,72.9303 98.5,128.8824 98.5,160.7609 " fill="none" id="ethosu_target_init-ethosu_target_startup" style="stroke: #000000; stroke-width: 1.0;"/><polygon fill="#000000" points="98.5,166.0419,102.5,157.0419,98.5,161.0419,94.5,157.0419,98.5,166.0419" style="stroke: #000000; stroke-width: 1.0;"/><!--link ethosu_target_startup to ethosu_target_link--><path d="M98.5,202.682 C98.5,231.4303 98.5,287.3824 98.5,319.2609 " fill="none" id="ethosu_target_startup-ethosu_target_link" style="stroke: #000000; stroke-width: 1.0;"/><polygon fill="#000000" points="98.5,324.5419,102.5,315.5419,98.5,319.5419,94.5,315.5419,98.5,324.5419" style="stroke: #000000; stroke-width: 1.0;"/><!--link ethosu_target_link to ethosu_target_common--><path d="M98.5,361.4331 C98.5,377.4118 98.5,400.611 98.5,417.84 " fill="none" id="ethosu_target_link-ethosu_target_common" style="stroke: #000000; stroke-width: 1.0;"/><polygon fill="#000000" points="98.5,422.9807,102.5,413.9807,98.5,417.9807,94.5,413.9807,98.5,422.9807" style="stroke: #000000; stroke-width: 1.0;"/><!--
+@startuml
+
+skinparam {
+ BackgroundColor #EEEBDC
+ DefaultFontColor black
+}
+
+skinparam component {
+ BackgroundColor #0091BD
+ BorderColor black
+ ArrowColor black
+}
+
+skinparam note {
+ BackgroundColor #00C1DE
+ BorderColor black
+}
+
+[ethosu_target_init] - -> [ethosu_target_startup]
+
+[ethosu_target_startup] - -> [ethosu_target_link]
+
+[ethosu_target_link] - -> [ethosu_target_common]
+
+note right of ethosu_target_init
+ Links drivers and calls targetSetup() to initialize the target.
+end note
+
+note right of ethosu_target_startup
+ Links CMSIS Device and Core libraries.
+
+ CMSIS Device provides startup and system files that are used to initialize
+ the CPU, configure CPU extensions and setup the interrupt vector table.
+
+ CMSIS Core provides an interface to the CPU, for example configuring
+ caches, systick or interrupt handling.
+
+ Some RTOSes provide their own startup files. Those applications should
+ link ethosu_target_link instead.
+end note
+
+note right of ethosu_target_link
+ Adds scatter file or linker script, describing the memory layout of the target.
+end note
+
+note right of ethosu_target_common
+ All applications should depend on this library. It is used to export definitions
+ from the target to the application.
+end note
+
+@enduml
+
+PlantUML version 1.2017.15(Mon Jul 03 18:45:34 CEST 2017)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Java Version: 11.0.15+10-Ubuntu-0ubuntu0.18.04.1
+Operating System: Linux
+OS Version: 5.4.0-113-generic
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg> \ No newline at end of file