Compare commits

...

8 Commits

Author SHA1 Message Date
Sebastian Wendel 2a63cc773d add a pdf export of the presentation slides 2023-09-28 11:36:26 +02:00
Sebastian Wendel 383338fd60 extension with a slide for community building and enrichment of meta information 2023-09-28 11:35:27 +02:00
Sebastian Wendel 7693aed71b added all remote files to keep slides consistent over time 2023-09-28 11:32:49 +02:00
Sebastian Wendel 8a7cd25071 added Chromium as dependency for Marp to be able to export to PDFs 2023-09-28 11:19:25 +02:00
Sebastian Wendel a9ef1137c5 updated nix environment 2023-09-28 11:14:17 +02:00
Sebastian Wendel 72801aced3 added marp cli to nix environment 2023-09-28 11:13:48 +02:00
Sebastian Wendel 54b30d0f33 update and cleanup of the nix environment 2023-09-28 09:33:06 +02:00
Sebastian Wendel be98721c1c added marp vscode plugin to nix environment 2023-09-28 09:31:19 +02:00
14 changed files with 1728 additions and 149 deletions

View File

@ -1,50 +1,63 @@
---
marp: true
title: IoT & Dashboard Workshop
description: Including examples Sensors for Energy Management
author: Oliver Ochs, Sebastian Wendel
class: invert
paginate: true
---
# IoT-Workshop
# <!--fit--> IoT & Dashboard Workshop
![bg](https://curious.bio/wp-content/uploads/2023/09/image.png)
![bg](./images/image.png)
---
---
# [Matrix Chat](https://matrix.org/)
To exchange information digitally during and after the workshop we use [Matrix as a chat solution](https://matrix.org/). You don't know this yet? Don't be hesitant and join us!
[https://matrix.to/#/#iot-platform:curious.bio](https://matrix.to/#/#iot-platform:curious.bio)
![bg right](./images/qrcode-chat.svg)
---
# Fab City Dashboard
This is a prototype of data management platform for Fab City Hamburg based on existing open source solutions.
![width:100pxy](https://code.curious.bio/curious.bio/iot-backend/raw/branch/main/docs/workshop/images/architecure.svg)
![width:100pxy](./images/architecure.svg)
---
# Features
* Eclipse Mosquitto: MQTT broker
* Node-RED: Flow-based development tool for visual programming and data flow automation
* InfluxDB: High-performance data storage
* Grafana: Real-time data visualization and monitoring dashboard
- [Eclipse Mosquitto](https://mosquitto.org/): MQTT broker
- [Node-RED](https://nodered.org/): Flow-based development tool for visual programming and data flow automation
- [InfluxDB](https://www.influxdata.com/): High-performance data storage
- [Grafana](https://grafana.com/): Real-time data visualization and monitoring dashboard
---
# Today's Goal
* install the stack
* configure one or two data sources
* transform data and store them in a database
* visualize data stored in the database
- install the stack
- configure one or two data sources
- transform data and store them in a database
- visualize data stored in the database
---
---
# Architecture
* Data is collected by IoT devices, e.g. an ESP32 based power monitor. These devices publish their data via MQTT into a topic in a message broker. We use Eclipse Mosquitto as a MQTT message broker.
- Data is collected by IoT devices, e.g. an ESP32 based power monitor. These devices publish their data via MQTT into a topic in a message broker. We use Eclipse Mosquitto as a MQTT message broker.
* Node-RED is used to read and transform or combine data and to implement more sophicsticated use cases like notifications or worksflow. Node-RED subscribes to topics in Mosquitto and can be used to save transformed data into a database.
- Node-RED is used to read and transform or combine data and to implement more sophicsticated use cases like notifications or worksflow. Node-RED subscribes to topics in Mosquitto and can be used to save transformed data into a database.
* As our data is bases on time, we are using a time series database to store information. We used InfluxDB as this database.
* Dashboards can already be created in Node-RED, but to be more flexible (and include more options) we are using Grafana. Grafana reads data from our database and other sources (like CSV files on the Internet) and displays them in a nice dashboard.
- As our data is bases on time, we are using a time series database to store information. We used InfluxDB as this database.
- Dashboards can already be created in Node-RED, but to be more flexible (and include more options) we are using Grafana. Grafana reads data from our database and other sources (like CSV files on the Internet) and displays them in a nice dashboard.
---
@ -52,64 +65,63 @@ This is a prototype of data management platform for Fab City Hamburg based on ex
Sensors can be build or bought:
* Sensor head
* ESP32 or equivalent
* OpenHardware or COTS (commercially of the self)
* Analog/Digital acquisition
* Communication gateway via WLAN / MQTT
- Sensor head
* Examples measurements
* Energy measurement
* Temperature sensor -> temperature measurement
* Pulse sensor -> incremental measurement of filament
- ESP32 or equivalent
- OpenHardware or COTS (commercially of the self)
- Analog/Digital acquisition
- Communication gateway via WLAN / MQTT
- Examples measurements
- Energy measurement
- Temperature sensor -> temperature measurement
- Pulse sensor -> incremental measurement of filament
---
# Example sensor - Open Engergy Monitor
![[bg contain]](https://code.curious.bio/curious.bio/smart-energy-monitor/media/branch/main/docs/images/breadboard.png)
![[bg]](./images/breadboard.png)
---
# Example sensor - Open Engergy Monitor
![bg left](https://code.curious.bio/curious.bio/smart-energy-monitor/media/branch/main/docs/images/clamp1.jpeg)
![bg left](./images/clamp1.jpeg)
---
# Example sensor - Shelly Plug
# Example sensor - Shelly Plug
![bg right](https://code.curious.bio/curious.bio/smart-energy-monitor/media/branch/main/docs/images/shelly_plug_s_1-1.jpg)
![bg right](./images/shelly_plug_s_1-1.jpg)
---
# Example sensor - GCode Sender
![bg left](https://pad.fabcity.hamburg/uploads/586181bc-6de2-46b8-9eba-8a11fbb59a5f.png)
![bg left](./images/gcode-sender.png)
---
# MQTT (Message Queuing Telemetry Transport)
* publish-subscribe, machine to machine network protocol
* designed for connections with remote locations
* devices with resource constraints
* limited network bandwidth
* Internet of Things (IoT)
* runs on top of TCP/IP, QUIC (UDP) or Bluetooth
- publish-subscribe, machine to machine network protocol
- designed for connections with remote locations
- devices with resource constraints
- limited network bandwidth
- Internet of Things (IoT)
- runs on top of TCP/IP, QUIC (UDP) or Bluetooth
---
# MQTT - Components
* one message broker (Mosquitto) and many clients
* broker receives published messages from clients
* routes them to subcribed clients
* clients subscribe to topic patterns
![bg right](https://upload.wikimedia.org/wikipedia/commons/8/82/MQTT_protocol_example_without_QoS.svg)
- one message broker (Mosquitto) and many clients
- broker receives published messages from clients
- routes them to subcribed clients
- clients subscribe to topic patterns
![bg right](./images/MQTT_protocol_example_without_QoS.svg)
---
@ -117,11 +129,12 @@ Sensors can be build or bought:
The idea behind it is to make it very easy to connect APIs, hardware devices, and anything else accessible over some type of network connection.
![bg left](https://nodered.org/images/nr-image-1.png)
* open-source
* low-code
* visual programming tool
* flow-based development
![bg left](./images/nr-image-1.png)
- open-source
- low-code
- visual programming tool
- flow-based development
---
@ -129,16 +142,16 @@ The idea behind it is to make it very easy to connect APIs, hardware devices, an
Nodes are the important part of Node-RED, they:
* are triggered by either receiving a message object from a previous node or an external event like an MQTT event
* process messages or events and then passes them on to the next node
- are triggered by either receiving a message object from a previous node or an external event like an MQTT event
- process messages or events and then passes them on to the next node
A node can:
* Inject: Starts a flow by injecting a message or a payload.
* Change: Here you can do basic transformation or modification on the message object.
* Debug: Can be used to help developing flows by sending messages to the side bar.
* Switch: Here you can add logic (like sending the message to different nodes).
* Function: Add custom JavaScript for uses cases where simple nodes do not do the trick.
- Inject: Starts a flow by injecting a message or a payload.
- Change: Here you can do basic transformation or modification on the message object.
- Debug: Can be used to help developing flows by sending messages to the side bar.
- Switch: Here you can add logic (like sending the message to different nodes).
- Function: Add custom JavaScript for uses cases where simple nodes do not do the trick.
---
@ -146,15 +159,15 @@ A node can:
Node-RED uses plugins:
* extend functionality (like dashboard)
* connectors (like influxdb)
* libraries (like aggregating watts and transform them to khw)
- extend functionality (like dashboard)
- connectors (like influxdb)
- libraries (like aggregating watts and transform them to khw)
---
# Node-RED - Simple Flow
![](https://code.curious.bio/curious.bio/iot-backend/media/branch/main/docs/flow/docs/images/influx-flow.png)
![height:600](../flow/docs/images/influx-flow.png)
---
@ -162,56 +175,57 @@ Node-RED uses plugins:
InfluxDB is a database for any time series data. Time series data is everywhere, since time is a constituent of everything that is observable. As our world gets increasingly instrumented, sensors and systems are constantly emitting a relentless stream of time series data. For example:
* Electrical activity in the brain
* Rainfall measurements
* Monthly subscribers
* Heartbeats per minute
* Electricity consumed by a chain saw
- Electrical activity in the brain
- Rainfall measurements
- Monthly subscribers
- Heartbeats per minute
- Electricity consumed by a chain saw
----
---
# Database - InfluxDB
![height:600](https://code.curious.bio/curious.bio/iot-backend/media/branch/main/docs/flow/docs/images/influx-data-explorer.png)
![height:600](../flow/docs/images/influx-data-explorer.png)
---
# Dashboard - Grafana
Grafana is an open source analytics and interactive visualization tool.
Grafana is an open source analytics and interactive visualization tool.
* charts
* graphs
* alerts for the web when connected to supported data sources.
- charts
- graphs
- alerts for the web when connected to supported data sources.
As a visualization tool, Grafana is a popular component in monitoring stacks, often used in combination with time series databases such as InfluxDB.
---
# Dashboard - Example
![bg left](https://code.curious.bio/curious.bio/iot-backend/raw/branch/main/docs/workshop/images/sampledashboard.png)
![bg left](../workshop/images/sampledashboard.png)
---
# Let's start
* Check installation requirements
* 64bit environment (AMD64, ARM64)
* Docker
* Docker-Compose
* Checkout the repository:
* https://code.curious.bio/curious.bio/iot-backend
* Let's follow the README, together!
- Check installation requirements
- 64bit environment (AMD64, ARM64)
- [Docker](https://docs.docker.com/engine/install/)
- [Docker-Compose](https://docs.docker.com/compose/install/)
- Checkout the repository:
- [https://code.curious.bio/curious.bio/iot-backend](https://code.curious.bio/curious.bio/iot-backend)
- [https://code.curious.bio/curious.bio/smart-energy-monitor](https://code.curious.bio/curious.bio/smart-energy-monitor)
- Let's follow the README, together!
---
# 🫵 Hands on
# <!--fit--> 🫵 Hands on
---
# Where can I find this presentation?
![](https://code.curious.bio/curious.bio/iot-backend/raw/branch/main/docs/workshop/images/qrcode.png)
https://code.curious.bio/curious.bio/iot-backend/src/branch/main/docs/workshop
![bg right](./images/qrcode-slides.svg)

BIN
docs/workshop/SLIDES.pdf Normal file

Binary file not shown.

View File

@ -0,0 +1,594 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="94.708138mm"
height="102.91763mm"
viewBox="0 0 335.58001 364.66878"
id="svg2"
version="1.1"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="MQTT.svg">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mend"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path5564"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6,-0.6)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker5196"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mend">
<path
transform="scale(-0.6,-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path5198"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker8345"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mend">
<path
transform="scale(-0.6,-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path8347"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="marker6249"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path6251"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6,-0.6)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2"
inkscape:cx="206.16273"
inkscape:cy="171.77554"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
showborder="true"
showguides="false"
inkscape:guide-bbox="true"
inkscape:snap-bbox="true"
inkscape:snap-text-baseline="true"
inkscape:object-nodes="true"
inkscape:window-width="1920"
inkscape:window-height="1043"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-global="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<sodipodi:guide
position="-85.244306,341.0045"
orientation="0,1"
id="guide4160"
inkscape:locked="false" />
<inkscape:grid
type="xygrid"
id="grid4658"
dotted="true"
spacingx="1"
spacingy="1"
color="#8f8fff"
opacity="0.1254902"
originx="-112.82147"
originy="-348.77814" />
<sodipodi:guide
position="51.178525,262.22182"
orientation="1,0"
id="guide6444"
inkscape:locked="false" />
<sodipodi:guide
position="57.178525,262.22182"
orientation="1,0"
id="guide6446"
inkscape:locked="false" />
<sodipodi:guide
position="142.17852,116.22183"
orientation="1,0"
id="guide6448"
inkscape:locked="false" />
<sodipodi:guide
position="187.17852,341.0045"
orientation="1,0"
id="guide6450"
inkscape:locked="false" />
<sodipodi:guide
position="197.17852,341.0045"
orientation="1,0"
id="guide6457"
inkscape:locked="false" />
<sodipodi:guide
position="203.17852,341.0045"
orientation="1,0"
id="guide6459"
inkscape:locked="false" />
<sodipodi:guide
position="262.17852,353.22182"
orientation="0,1"
id="guide6507"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Layer 3"
transform="translate(-112.82147,-338.91528)" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
transform="translate(-112.82147,-338.91528)">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#84b3ef;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 310,597.36218 90,0 0,55.43507 -90,0 -10,-27.71754 z"
id="path6461"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5c5c5c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.13333344;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 164,608.61957 91,0 0,49.98532 -91,0 -10.6066,-24.99266 z"
id="rect7383-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#9acadb;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect6067"
width="4.5884247"
height="349.99997"
x="132"
y="362.36221" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5c5c5c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.13333344;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect6069"
width="23"
height="349.99997"
x="271"
y="362.36221" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#84b3ef;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect6071"
width="4.9999967"
height="350"
x="409"
y="362.36221" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path6244"
d="m 164,494.53379 91,0 0,47.1569 -91,0 -10,-23.57845 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5c5c5c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.13333344;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path6246"
d="m 283,428.36222 -10e-6,91 -27.99999,0"
style="fill:none;fill-rule:evenodd;stroke:#84b3ef;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="ccc" />
<g
transform="translate(-137.40553,189.45803)"
id="g6349-9-8">
<path
inkscape:connector-curvature="0"
id="path6228-7-9"
d="m 277.40553,437.90418 0,11.66726 10.07627,0 0,-9.01561 -2.74004,-2.74004 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#84b3ef;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text6344-2-0"
y="446.17218"
x="278.69803"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="446.17218"
x="278.69803"
id="tspan6346-5-2"
sodipodi:role="line"
style="font-size:6.03868484px;line-height:1.25">38</tspan></text>
</g>
<g
id="g6410"
transform="translate(-0.19365986,132.91859)">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#9acadb;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 277.40553,437.90418 0,11.66726 10.07627,0 0,-9.01561 -2.74004,-2.74004 z"
id="path6412"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="278.69803"
y="446.17218"
id="text6414"><tspan
sodipodi:role="line"
id="tspan6416"
x="278.69803"
y="446.17218"
style="font-size:6.03868484px;line-height:1.25">20</tspan></text>
</g>
<path
sodipodi:nodetypes="ccc"
style="fill:none;fill-rule:evenodd;stroke:#84b3ef;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 255,634.86222 27.99999,0 0,-8.50002"
id="path6442"
inkscape:connector-curvature="0" />
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-112.82147,-338.91528)">
<g
id="g6354"
transform="translate(-137.40553,74.458036)">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#84b3ef;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 277.40553,437.90418 0,11.66726 10.07627,0 0,-9.01561 -2.74004,-2.74004 z"
id="path6356"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="278.69803"
y="446.17218"
id="text6358"><tspan
sodipodi:role="line"
id="tspan6360"
x="278.69803"
y="446.17218"
style="font-size:6.03868484px;line-height:1.25">25</tspan></text>
</g>
<text
xml:space="preserve"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
x="260.66577"
y="350.31177"
id="text4136"><tspan
sodipodi:role="line"
id="tspan4138"
x="260.66577"
y="350.31177"
style="font-size:15px;line-height:1.25">Broker</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="111.97919"
y="350.36221"
id="text4140"><tspan
sodipodi:role="line"
id="tspan4142"
x="111.97919"
y="350.36221"
style="font-size:15px;line-height:1.25">Client A</tspan></text>
<g
id="g6464"
transform="translate(0,-7.7781746)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="rect5475"
d="m 164,386.86222 91,0 10,10.25 -10,10.25 -91,0 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#9acadb;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text4144"
y="400.36221"
x="170"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start"
y="400.36221"
x="170"
id="tspan4146"
sodipodi:role="line">CONNECT</tspan></text>
</g>
<g
id="g6485"
transform="translate(0,13.328427)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="rect6589"
d="m 164,436.41246 91,0 10,18.94975 -10,18.94976 -91,0 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#84b3ef;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text4148"
y="452.36221"
x="170"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start"
y="452.36221"
x="170"
id="tspan4150"
sodipodi:role="line">SUBSCRIBE</tspan><tspan
id="tspan6180"
y="463.29971"
x="170"
sodipodi:role="line"
style="font-size:8.75px;line-height:1.25">temperature/roof</tspan></text>
</g>
<g
id="g6492"
transform="translate(0,3)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="rect7089"
d="m 255,548.32669 -91,0 0,49.07104 91,0 10,-24.53552 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#9acadb;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text4152"
y="563.86224"
x="170"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start"
y="563.86224"
x="170"
id="tspan4154"
sodipodi:role="line">PUBLISH</tspan><tspan
id="tspan6184"
y="574.79974"
x="170"
sodipodi:role="line"
style="font-size:8.75px;line-height:1.25">temperature/floor</tspan><tspan
id="tspan6186"
y="585.73724"
x="170"
sodipodi:role="line"
style="font-size:8.75px;line-height:1.25">20 °C</tspan></text>
</g>
<g
id="g6470"
transform="translate(0,-6.7175144)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="rect5473"
d="m 164,410.59445 91,0 0,22.03555 -91,0 -8.48528,-11.01778 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5c5c5c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.13333344;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text4652"
y="424.36221"
x="170"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1"
y="424.36221"
x="170"
id="tspan4654"
sodipodi:role="line">CONNACK</tspan></text>
</g>
<text
id="text6218"
y="624.86224"
x="170"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
xml:space="preserve"><tspan
y="624.86224"
x="170"
id="tspan6220"
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1">PUBLISH</tspan><tspan
y="635.79974"
x="170"
sodipodi:role="line"
id="tspan6190"
style="font-size:8.75px;line-height:1.25">temperature/roof</tspan><tspan
y="646.73724"
x="170"
sodipodi:role="line"
id="tspan6192"
style="font-size:8.75px;line-height:1.25">38 °C</tspan></text>
<text
id="text7333"
y="350.31177"
x="390.34241"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
xml:space="preserve"><tspan
y="350.31177"
x="390.34241"
id="tspan7335"
sodipodi:role="line"
style="font-size:15px;line-height:1.25">Client B</tspan></text>
<text
xml:space="preserve"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
x="312"
y="618.86218"
id="text7385"><tspan
sodipodi:role="line"
id="tspan7387"
x="312"
y="618.86218"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start">PUBLISH</tspan><tspan
sodipodi:role="line"
x="312"
y="629.79968"
id="tspan6196"
style="font-size:8.75px;line-height:1.25">temperature/roof</tspan><tspan
sodipodi:role="line"
x="312"
y="640.73718"
id="tspan6198"
style="font-size:8.75px;line-height:1.25">38 °C</tspan></text>
<g
id="g6476"
transform="translate(0,-20.152543)">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#84b3ef;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 310,409.26079 90,0 0,66.57199 -90,0 -10,-33.286 z"
id="path6200"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<text
xml:space="preserve"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
x="316"
y="428.36221"
id="text6202"><tspan
sodipodi:role="line"
id="tspan6204"
x="316"
y="428.36221"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start">PUBLISH</tspan><tspan
sodipodi:role="line"
x="316"
y="439.29971"
id="tspan6206"
style="font-size:8.75px;line-height:1.25">temperature/roof</tspan><tspan
sodipodi:role="line"
x="316"
y="450.23721"
id="tspan6208"
style="font-size:8.75px;line-height:1.25">25 °C</tspan><tspan
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Italic';text-align:start;writing-mode:lr-tb;text-anchor:start"
id="tspan6210"
sodipodi:role="line"
x="316"
y="461.17471">✓retain</tspan></text>
</g>
<text
xml:space="preserve"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
x="170"
y="510.36221"
id="text6248"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1"
sodipodi:role="line"
id="tspan6250"
x="170"
y="510.36221">PUBLISH</tspan><tspan
id="tspan6252"
sodipodi:role="line"
x="170"
y="521.29968"
style="font-size:8.75px;line-height:1.25">temperature/roof</tspan><tspan
id="tspan6254"
sodipodi:role="line"
x="170"
y="532.23718"
style="font-size:8.75px;line-height:1.25">25 °C</tspan></text>
<g
id="g6349"
transform="translate(0,-21.213203)">
<path
inkscape:connector-curvature="0"
id="path6228"
d="m 277.40553,437.90418 0,11.66726 10.07627,0 0,-9.01561 -2.74004,-2.74004 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#84b3ef;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text6344"
y="446.17218"
x="278.69803"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="446.17218"
x="278.69803"
id="tspan6346"
sodipodi:role="line"
style="font-size:6.03868484px;line-height:1.25">25</tspan></text>
</g>
<g
transform="translate(0.55633515,179.91859)"
id="g6349-9">
<path
inkscape:connector-curvature="0"
id="path6228-7"
d="m 277.40553,437.90418 0,11.66726 10.07627,0 0,-9.01561 -2.74004,-2.74004 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#84b3ef;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text6344-2"
y="446.17218"
x="278.69803"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="446.17218"
x="278.69803"
id="tspan6346-5"
sodipodi:role="line"
style="font-size:6.03868484px;line-height:1.25">38</tspan></text>
</g>
<g
transform="translate(0,296.22183)"
id="g6499">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#9acadb;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 164,386.86222 91,0 10,10.25 -10,10.25 -91,0 z"
id="path6501"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="170"
y="400.36221"
id="text6503"><tspan
sodipodi:role="line"
id="tspan6505"
x="170"
y="400.36221"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start">DISCONNECT</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -0,0 +1,427 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Created with qrencode 4.1.1 (https://fukuchi.org/works/qrencode/index.html) -->
<svg width="3.92cm" height="3.92cm" viewBox="0 0 37 37" preserveAspectRatio="none" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g id="QRcode">
<rect x="0" y="0" width="37" height="37" fill="#ffffff"/>
<g id="Pattern" transform="translate(4,4)">
<rect x="0" y="0" width="1" height="1" fill="#000000"/>
<rect x="1" y="0" width="1" height="1" fill="#000000"/>
<rect x="2" y="0" width="1" height="1" fill="#000000"/>
<rect x="3" y="0" width="1" height="1" fill="#000000"/>
<rect x="4" y="0" width="1" height="1" fill="#000000"/>
<rect x="5" y="0" width="1" height="1" fill="#000000"/>
<rect x="6" y="0" width="1" height="1" fill="#000000"/>
<rect x="10" y="0" width="1" height="1" fill="#000000"/>
<rect x="15" y="0" width="1" height="1" fill="#000000"/>
<rect x="17" y="0" width="1" height="1" fill="#000000"/>
<rect x="18" y="0" width="1" height="1" fill="#000000"/>
<rect x="19" y="0" width="1" height="1" fill="#000000"/>
<rect x="22" y="0" width="1" height="1" fill="#000000"/>
<rect x="23" y="0" width="1" height="1" fill="#000000"/>
<rect x="24" y="0" width="1" height="1" fill="#000000"/>
<rect x="25" y="0" width="1" height="1" fill="#000000"/>
<rect x="26" y="0" width="1" height="1" fill="#000000"/>
<rect x="27" y="0" width="1" height="1" fill="#000000"/>
<rect x="28" y="0" width="1" height="1" fill="#000000"/>
<rect x="0" y="1" width="1" height="1" fill="#000000"/>
<rect x="6" y="1" width="1" height="1" fill="#000000"/>
<rect x="8" y="1" width="1" height="1" fill="#000000"/>
<rect x="9" y="1" width="1" height="1" fill="#000000"/>
<rect x="10" y="1" width="1" height="1" fill="#000000"/>
<rect x="13" y="1" width="1" height="1" fill="#000000"/>
<rect x="15" y="1" width="1" height="1" fill="#000000"/>
<rect x="18" y="1" width="1" height="1" fill="#000000"/>
<rect x="20" y="1" width="1" height="1" fill="#000000"/>
<rect x="22" y="1" width="1" height="1" fill="#000000"/>
<rect x="28" y="1" width="1" height="1" fill="#000000"/>
<rect x="0" y="2" width="1" height="1" fill="#000000"/>
<rect x="2" y="2" width="1" height="1" fill="#000000"/>
<rect x="3" y="2" width="1" height="1" fill="#000000"/>
<rect x="4" y="2" width="1" height="1" fill="#000000"/>
<rect x="6" y="2" width="1" height="1" fill="#000000"/>
<rect x="8" y="2" width="1" height="1" fill="#000000"/>
<rect x="17" y="2" width="1" height="1" fill="#000000"/>
<rect x="22" y="2" width="1" height="1" fill="#000000"/>
<rect x="24" y="2" width="1" height="1" fill="#000000"/>
<rect x="25" y="2" width="1" height="1" fill="#000000"/>
<rect x="26" y="2" width="1" height="1" fill="#000000"/>
<rect x="28" y="2" width="1" height="1" fill="#000000"/>
<rect x="0" y="3" width="1" height="1" fill="#000000"/>
<rect x="2" y="3" width="1" height="1" fill="#000000"/>
<rect x="3" y="3" width="1" height="1" fill="#000000"/>
<rect x="4" y="3" width="1" height="1" fill="#000000"/>
<rect x="6" y="3" width="1" height="1" fill="#000000"/>
<rect x="9" y="3" width="1" height="1" fill="#000000"/>
<rect x="12" y="3" width="1" height="1" fill="#000000"/>
<rect x="14" y="3" width="1" height="1" fill="#000000"/>
<rect x="15" y="3" width="1" height="1" fill="#000000"/>
<rect x="16" y="3" width="1" height="1" fill="#000000"/>
<rect x="18" y="3" width="1" height="1" fill="#000000"/>
<rect x="22" y="3" width="1" height="1" fill="#000000"/>
<rect x="24" y="3" width="1" height="1" fill="#000000"/>
<rect x="25" y="3" width="1" height="1" fill="#000000"/>
<rect x="26" y="3" width="1" height="1" fill="#000000"/>
<rect x="28" y="3" width="1" height="1" fill="#000000"/>
<rect x="0" y="4" width="1" height="1" fill="#000000"/>
<rect x="2" y="4" width="1" height="1" fill="#000000"/>
<rect x="3" y="4" width="1" height="1" fill="#000000"/>
<rect x="4" y="4" width="1" height="1" fill="#000000"/>
<rect x="6" y="4" width="1" height="1" fill="#000000"/>
<rect x="8" y="4" width="1" height="1" fill="#000000"/>
<rect x="9" y="4" width="1" height="1" fill="#000000"/>
<rect x="10" y="4" width="1" height="1" fill="#000000"/>
<rect x="12" y="4" width="1" height="1" fill="#000000"/>
<rect x="14" y="4" width="1" height="1" fill="#000000"/>
<rect x="15" y="4" width="1" height="1" fill="#000000"/>
<rect x="16" y="4" width="1" height="1" fill="#000000"/>
<rect x="22" y="4" width="1" height="1" fill="#000000"/>
<rect x="24" y="4" width="1" height="1" fill="#000000"/>
<rect x="25" y="4" width="1" height="1" fill="#000000"/>
<rect x="26" y="4" width="1" height="1" fill="#000000"/>
<rect x="28" y="4" width="1" height="1" fill="#000000"/>
<rect x="0" y="5" width="1" height="1" fill="#000000"/>
<rect x="6" y="5" width="1" height="1" fill="#000000"/>
<rect x="8" y="5" width="1" height="1" fill="#000000"/>
<rect x="10" y="5" width="1" height="1" fill="#000000"/>
<rect x="12" y="5" width="1" height="1" fill="#000000"/>
<rect x="13" y="5" width="1" height="1" fill="#000000"/>
<rect x="14" y="5" width="1" height="1" fill="#000000"/>
<rect x="15" y="5" width="1" height="1" fill="#000000"/>
<rect x="16" y="5" width="1" height="1" fill="#000000"/>
<rect x="18" y="5" width="1" height="1" fill="#000000"/>
<rect x="19" y="5" width="1" height="1" fill="#000000"/>
<rect x="22" y="5" width="1" height="1" fill="#000000"/>
<rect x="28" y="5" width="1" height="1" fill="#000000"/>
<rect x="0" y="6" width="1" height="1" fill="#000000"/>
<rect x="1" y="6" width="1" height="1" fill="#000000"/>
<rect x="2" y="6" width="1" height="1" fill="#000000"/>
<rect x="3" y="6" width="1" height="1" fill="#000000"/>
<rect x="4" y="6" width="1" height="1" fill="#000000"/>
<rect x="5" y="6" width="1" height="1" fill="#000000"/>
<rect x="6" y="6" width="1" height="1" fill="#000000"/>
<rect x="8" y="6" width="1" height="1" fill="#000000"/>
<rect x="10" y="6" width="1" height="1" fill="#000000"/>
<rect x="12" y="6" width="1" height="1" fill="#000000"/>
<rect x="14" y="6" width="1" height="1" fill="#000000"/>
<rect x="16" y="6" width="1" height="1" fill="#000000"/>
<rect x="18" y="6" width="1" height="1" fill="#000000"/>
<rect x="20" y="6" width="1" height="1" fill="#000000"/>
<rect x="22" y="6" width="1" height="1" fill="#000000"/>
<rect x="23" y="6" width="1" height="1" fill="#000000"/>
<rect x="24" y="6" width="1" height="1" fill="#000000"/>
<rect x="25" y="6" width="1" height="1" fill="#000000"/>
<rect x="26" y="6" width="1" height="1" fill="#000000"/>
<rect x="27" y="6" width="1" height="1" fill="#000000"/>
<rect x="28" y="6" width="1" height="1" fill="#000000"/>
<rect x="8" y="7" width="1" height="1" fill="#000000"/>
<rect x="10" y="7" width="1" height="1" fill="#000000"/>
<rect x="11" y="7" width="1" height="1" fill="#000000"/>
<rect x="14" y="7" width="1" height="1" fill="#000000"/>
<rect x="16" y="7" width="1" height="1" fill="#000000"/>
<rect x="17" y="7" width="1" height="1" fill="#000000"/>
<rect x="19" y="7" width="1" height="1" fill="#000000"/>
<rect x="0" y="8" width="1" height="1" fill="#000000"/>
<rect x="1" y="8" width="1" height="1" fill="#000000"/>
<rect x="3" y="8" width="1" height="1" fill="#000000"/>
<rect x="6" y="8" width="1" height="1" fill="#000000"/>
<rect x="7" y="8" width="1" height="1" fill="#000000"/>
<rect x="11" y="8" width="1" height="1" fill="#000000"/>
<rect x="12" y="8" width="1" height="1" fill="#000000"/>
<rect x="13" y="8" width="1" height="1" fill="#000000"/>
<rect x="14" y="8" width="1" height="1" fill="#000000"/>
<rect x="16" y="8" width="1" height="1" fill="#000000"/>
<rect x="18" y="8" width="1" height="1" fill="#000000"/>
<rect x="22" y="8" width="1" height="1" fill="#000000"/>
<rect x="23" y="8" width="1" height="1" fill="#000000"/>
<rect x="24" y="8" width="1" height="1" fill="#000000"/>
<rect x="26" y="8" width="1" height="1" fill="#000000"/>
<rect x="27" y="8" width="1" height="1" fill="#000000"/>
<rect x="0" y="9" width="1" height="1" fill="#000000"/>
<rect x="1" y="9" width="1" height="1" fill="#000000"/>
<rect x="3" y="9" width="1" height="1" fill="#000000"/>
<rect x="4" y="9" width="1" height="1" fill="#000000"/>
<rect x="5" y="9" width="1" height="1" fill="#000000"/>
<rect x="7" y="9" width="1" height="1" fill="#000000"/>
<rect x="9" y="9" width="1" height="1" fill="#000000"/>
<rect x="11" y="9" width="1" height="1" fill="#000000"/>
<rect x="12" y="9" width="1" height="1" fill="#000000"/>
<rect x="16" y="9" width="1" height="1" fill="#000000"/>
<rect x="21" y="9" width="1" height="1" fill="#000000"/>
<rect x="22" y="9" width="1" height="1" fill="#000000"/>
<rect x="25" y="9" width="1" height="1" fill="#000000"/>
<rect x="28" y="9" width="1" height="1" fill="#000000"/>
<rect x="0" y="10" width="1" height="1" fill="#000000"/>
<rect x="3" y="10" width="1" height="1" fill="#000000"/>
<rect x="4" y="10" width="1" height="1" fill="#000000"/>
<rect x="6" y="10" width="1" height="1" fill="#000000"/>
<rect x="11" y="10" width="1" height="1" fill="#000000"/>
<rect x="12" y="10" width="1" height="1" fill="#000000"/>
<rect x="19" y="10" width="1" height="1" fill="#000000"/>
<rect x="22" y="10" width="1" height="1" fill="#000000"/>
<rect x="25" y="10" width="1" height="1" fill="#000000"/>
<rect x="26" y="10" width="1" height="1" fill="#000000"/>
<rect x="27" y="10" width="1" height="1" fill="#000000"/>
<rect x="1" y="11" width="1" height="1" fill="#000000"/>
<rect x="3" y="11" width="1" height="1" fill="#000000"/>
<rect x="4" y="11" width="1" height="1" fill="#000000"/>
<rect x="5" y="11" width="1" height="1" fill="#000000"/>
<rect x="8" y="11" width="1" height="1" fill="#000000"/>
<rect x="9" y="11" width="1" height="1" fill="#000000"/>
<rect x="10" y="11" width="1" height="1" fill="#000000"/>
<rect x="11" y="11" width="1" height="1" fill="#000000"/>
<rect x="12" y="11" width="1" height="1" fill="#000000"/>
<rect x="13" y="11" width="1" height="1" fill="#000000"/>
<rect x="18" y="11" width="1" height="1" fill="#000000"/>
<rect x="26" y="11" width="1" height="1" fill="#000000"/>
<rect x="27" y="11" width="1" height="1" fill="#000000"/>
<rect x="1" y="12" width="1" height="1" fill="#000000"/>
<rect x="2" y="12" width="1" height="1" fill="#000000"/>
<rect x="3" y="12" width="1" height="1" fill="#000000"/>
<rect x="5" y="12" width="1" height="1" fill="#000000"/>
<rect x="6" y="12" width="1" height="1" fill="#000000"/>
<rect x="7" y="12" width="1" height="1" fill="#000000"/>
<rect x="8" y="12" width="1" height="1" fill="#000000"/>
<rect x="10" y="12" width="1" height="1" fill="#000000"/>
<rect x="11" y="12" width="1" height="1" fill="#000000"/>
<rect x="13" y="12" width="1" height="1" fill="#000000"/>
<rect x="15" y="12" width="1" height="1" fill="#000000"/>
<rect x="17" y="12" width="1" height="1" fill="#000000"/>
<rect x="19" y="12" width="1" height="1" fill="#000000"/>
<rect x="20" y="12" width="1" height="1" fill="#000000"/>
<rect x="21" y="12" width="1" height="1" fill="#000000"/>
<rect x="22" y="12" width="1" height="1" fill="#000000"/>
<rect x="23" y="12" width="1" height="1" fill="#000000"/>
<rect x="25" y="12" width="1" height="1" fill="#000000"/>
<rect x="27" y="12" width="1" height="1" fill="#000000"/>
<rect x="28" y="12" width="1" height="1" fill="#000000"/>
<rect x="2" y="13" width="1" height="1" fill="#000000"/>
<rect x="8" y="13" width="1" height="1" fill="#000000"/>
<rect x="11" y="13" width="1" height="1" fill="#000000"/>
<rect x="14" y="13" width="1" height="1" fill="#000000"/>
<rect x="16" y="13" width="1" height="1" fill="#000000"/>
<rect x="17" y="13" width="1" height="1" fill="#000000"/>
<rect x="18" y="13" width="1" height="1" fill="#000000"/>
<rect x="19" y="13" width="1" height="1" fill="#000000"/>
<rect x="0" y="14" width="1" height="1" fill="#000000"/>
<rect x="1" y="14" width="1" height="1" fill="#000000"/>
<rect x="2" y="14" width="1" height="1" fill="#000000"/>
<rect x="6" y="14" width="1" height="1" fill="#000000"/>
<rect x="9" y="14" width="1" height="1" fill="#000000"/>
<rect x="10" y="14" width="1" height="1" fill="#000000"/>
<rect x="11" y="14" width="1" height="1" fill="#000000"/>
<rect x="14" y="14" width="1" height="1" fill="#000000"/>
<rect x="17" y="14" width="1" height="1" fill="#000000"/>
<rect x="18" y="14" width="1" height="1" fill="#000000"/>
<rect x="20" y="14" width="1" height="1" fill="#000000"/>
<rect x="23" y="14" width="1" height="1" fill="#000000"/>
<rect x="24" y="14" width="1" height="1" fill="#000000"/>
<rect x="25" y="14" width="1" height="1" fill="#000000"/>
<rect x="26" y="14" width="1" height="1" fill="#000000"/>
<rect x="27" y="14" width="1" height="1" fill="#000000"/>
<rect x="28" y="14" width="1" height="1" fill="#000000"/>
<rect x="3" y="15" width="1" height="1" fill="#000000"/>
<rect x="8" y="15" width="1" height="1" fill="#000000"/>
<rect x="11" y="15" width="1" height="1" fill="#000000"/>
<rect x="13" y="15" width="1" height="1" fill="#000000"/>
<rect x="14" y="15" width="1" height="1" fill="#000000"/>
<rect x="15" y="15" width="1" height="1" fill="#000000"/>
<rect x="16" y="15" width="1" height="1" fill="#000000"/>
<rect x="17" y="15" width="1" height="1" fill="#000000"/>
<rect x="21" y="15" width="1" height="1" fill="#000000"/>
<rect x="25" y="15" width="1" height="1" fill="#000000"/>
<rect x="27" y="15" width="1" height="1" fill="#000000"/>
<rect x="2" y="16" width="1" height="1" fill="#000000"/>
<rect x="3" y="16" width="1" height="1" fill="#000000"/>
<rect x="4" y="16" width="1" height="1" fill="#000000"/>
<rect x="5" y="16" width="1" height="1" fill="#000000"/>
<rect x="6" y="16" width="1" height="1" fill="#000000"/>
<rect x="8" y="16" width="1" height="1" fill="#000000"/>
<rect x="12" y="16" width="1" height="1" fill="#000000"/>
<rect x="15" y="16" width="1" height="1" fill="#000000"/>
<rect x="17" y="16" width="1" height="1" fill="#000000"/>
<rect x="19" y="16" width="1" height="1" fill="#000000"/>
<rect x="20" y="16" width="1" height="1" fill="#000000"/>
<rect x="23" y="16" width="1" height="1" fill="#000000"/>
<rect x="27" y="16" width="1" height="1" fill="#000000"/>
<rect x="2" y="17" width="1" height="1" fill="#000000"/>
<rect x="3" y="17" width="1" height="1" fill="#000000"/>
<rect x="5" y="17" width="1" height="1" fill="#000000"/>
<rect x="12" y="17" width="1" height="1" fill="#000000"/>
<rect x="13" y="17" width="1" height="1" fill="#000000"/>
<rect x="16" y="17" width="1" height="1" fill="#000000"/>
<rect x="17" y="17" width="1" height="1" fill="#000000"/>
<rect x="20" y="17" width="1" height="1" fill="#000000"/>
<rect x="21" y="17" width="1" height="1" fill="#000000"/>
<rect x="22" y="17" width="1" height="1" fill="#000000"/>
<rect x="23" y="17" width="1" height="1" fill="#000000"/>
<rect x="25" y="17" width="1" height="1" fill="#000000"/>
<rect x="28" y="17" width="1" height="1" fill="#000000"/>
<rect x="0" y="18" width="1" height="1" fill="#000000"/>
<rect x="2" y="18" width="1" height="1" fill="#000000"/>
<rect x="3" y="18" width="1" height="1" fill="#000000"/>
<rect x="6" y="18" width="1" height="1" fill="#000000"/>
<rect x="7" y="18" width="1" height="1" fill="#000000"/>
<rect x="8" y="18" width="1" height="1" fill="#000000"/>
<rect x="11" y="18" width="1" height="1" fill="#000000"/>
<rect x="12" y="18" width="1" height="1" fill="#000000"/>
<rect x="13" y="18" width="1" height="1" fill="#000000"/>
<rect x="14" y="18" width="1" height="1" fill="#000000"/>
<rect x="16" y="18" width="1" height="1" fill="#000000"/>
<rect x="21" y="18" width="1" height="1" fill="#000000"/>
<rect x="23" y="18" width="1" height="1" fill="#000000"/>
<rect x="24" y="18" width="1" height="1" fill="#000000"/>
<rect x="27" y="18" width="1" height="1" fill="#000000"/>
<rect x="28" y="18" width="1" height="1" fill="#000000"/>
<rect x="4" y="19" width="1" height="1" fill="#000000"/>
<rect x="7" y="19" width="1" height="1" fill="#000000"/>
<rect x="8" y="19" width="1" height="1" fill="#000000"/>
<rect x="9" y="19" width="1" height="1" fill="#000000"/>
<rect x="10" y="19" width="1" height="1" fill="#000000"/>
<rect x="12" y="19" width="1" height="1" fill="#000000"/>
<rect x="14" y="19" width="1" height="1" fill="#000000"/>
<rect x="16" y="19" width="1" height="1" fill="#000000"/>
<rect x="17" y="19" width="1" height="1" fill="#000000"/>
<rect x="19" y="19" width="1" height="1" fill="#000000"/>
<rect x="20" y="19" width="1" height="1" fill="#000000"/>
<rect x="21" y="19" width="1" height="1" fill="#000000"/>
<rect x="23" y="19" width="1" height="1" fill="#000000"/>
<rect x="27" y="19" width="1" height="1" fill="#000000"/>
<rect x="28" y="19" width="1" height="1" fill="#000000"/>
<rect x="0" y="20" width="1" height="1" fill="#000000"/>
<rect x="4" y="20" width="1" height="1" fill="#000000"/>
<rect x="6" y="20" width="1" height="1" fill="#000000"/>
<rect x="8" y="20" width="1" height="1" fill="#000000"/>
<rect x="10" y="20" width="1" height="1" fill="#000000"/>
<rect x="12" y="20" width="1" height="1" fill="#000000"/>
<rect x="13" y="20" width="1" height="1" fill="#000000"/>
<rect x="19" y="20" width="1" height="1" fill="#000000"/>
<rect x="20" y="20" width="1" height="1" fill="#000000"/>
<rect x="21" y="20" width="1" height="1" fill="#000000"/>
<rect x="22" y="20" width="1" height="1" fill="#000000"/>
<rect x="23" y="20" width="1" height="1" fill="#000000"/>
<rect x="24" y="20" width="1" height="1" fill="#000000"/>
<rect x="26" y="20" width="1" height="1" fill="#000000"/>
<rect x="8" y="21" width="1" height="1" fill="#000000"/>
<rect x="9" y="21" width="1" height="1" fill="#000000"/>
<rect x="10" y="21" width="1" height="1" fill="#000000"/>
<rect x="11" y="21" width="1" height="1" fill="#000000"/>
<rect x="16" y="21" width="1" height="1" fill="#000000"/>
<rect x="17" y="21" width="1" height="1" fill="#000000"/>
<rect x="19" y="21" width="1" height="1" fill="#000000"/>
<rect x="20" y="21" width="1" height="1" fill="#000000"/>
<rect x="24" y="21" width="1" height="1" fill="#000000"/>
<rect x="26" y="21" width="1" height="1" fill="#000000"/>
<rect x="27" y="21" width="1" height="1" fill="#000000"/>
<rect x="28" y="21" width="1" height="1" fill="#000000"/>
<rect x="0" y="22" width="1" height="1" fill="#000000"/>
<rect x="1" y="22" width="1" height="1" fill="#000000"/>
<rect x="2" y="22" width="1" height="1" fill="#000000"/>
<rect x="3" y="22" width="1" height="1" fill="#000000"/>
<rect x="4" y="22" width="1" height="1" fill="#000000"/>
<rect x="5" y="22" width="1" height="1" fill="#000000"/>
<rect x="6" y="22" width="1" height="1" fill="#000000"/>
<rect x="8" y="22" width="1" height="1" fill="#000000"/>
<rect x="10" y="22" width="1" height="1" fill="#000000"/>
<rect x="16" y="22" width="1" height="1" fill="#000000"/>
<rect x="18" y="22" width="1" height="1" fill="#000000"/>
<rect x="20" y="22" width="1" height="1" fill="#000000"/>
<rect x="22" y="22" width="1" height="1" fill="#000000"/>
<rect x="24" y="22" width="1" height="1" fill="#000000"/>
<rect x="27" y="22" width="1" height="1" fill="#000000"/>
<rect x="0" y="23" width="1" height="1" fill="#000000"/>
<rect x="6" y="23" width="1" height="1" fill="#000000"/>
<rect x="9" y="23" width="1" height="1" fill="#000000"/>
<rect x="11" y="23" width="1" height="1" fill="#000000"/>
<rect x="12" y="23" width="1" height="1" fill="#000000"/>
<rect x="13" y="23" width="1" height="1" fill="#000000"/>
<rect x="14" y="23" width="1" height="1" fill="#000000"/>
<rect x="16" y="23" width="1" height="1" fill="#000000"/>
<rect x="18" y="23" width="1" height="1" fill="#000000"/>
<rect x="19" y="23" width="1" height="1" fill="#000000"/>
<rect x="20" y="23" width="1" height="1" fill="#000000"/>
<rect x="24" y="23" width="1" height="1" fill="#000000"/>
<rect x="25" y="23" width="1" height="1" fill="#000000"/>
<rect x="26" y="23" width="1" height="1" fill="#000000"/>
<rect x="0" y="24" width="1" height="1" fill="#000000"/>
<rect x="2" y="24" width="1" height="1" fill="#000000"/>
<rect x="3" y="24" width="1" height="1" fill="#000000"/>
<rect x="4" y="24" width="1" height="1" fill="#000000"/>
<rect x="6" y="24" width="1" height="1" fill="#000000"/>
<rect x="10" y="24" width="1" height="1" fill="#000000"/>
<rect x="11" y="24" width="1" height="1" fill="#000000"/>
<rect x="12" y="24" width="1" height="1" fill="#000000"/>
<rect x="13" y="24" width="1" height="1" fill="#000000"/>
<rect x="15" y="24" width="1" height="1" fill="#000000"/>
<rect x="16" y="24" width="1" height="1" fill="#000000"/>
<rect x="17" y="24" width="1" height="1" fill="#000000"/>
<rect x="20" y="24" width="1" height="1" fill="#000000"/>
<rect x="21" y="24" width="1" height="1" fill="#000000"/>
<rect x="22" y="24" width="1" height="1" fill="#000000"/>
<rect x="23" y="24" width="1" height="1" fill="#000000"/>
<rect x="24" y="24" width="1" height="1" fill="#000000"/>
<rect x="27" y="24" width="1" height="1" fill="#000000"/>
<rect x="0" y="25" width="1" height="1" fill="#000000"/>
<rect x="2" y="25" width="1" height="1" fill="#000000"/>
<rect x="3" y="25" width="1" height="1" fill="#000000"/>
<rect x="4" y="25" width="1" height="1" fill="#000000"/>
<rect x="6" y="25" width="1" height="1" fill="#000000"/>
<rect x="8" y="25" width="1" height="1" fill="#000000"/>
<rect x="12" y="25" width="1" height="1" fill="#000000"/>
<rect x="17" y="25" width="1" height="1" fill="#000000"/>
<rect x="18" y="25" width="1" height="1" fill="#000000"/>
<rect x="19" y="25" width="1" height="1" fill="#000000"/>
<rect x="20" y="25" width="1" height="1" fill="#000000"/>
<rect x="22" y="25" width="1" height="1" fill="#000000"/>
<rect x="23" y="25" width="1" height="1" fill="#000000"/>
<rect x="24" y="25" width="1" height="1" fill="#000000"/>
<rect x="25" y="25" width="1" height="1" fill="#000000"/>
<rect x="26" y="25" width="1" height="1" fill="#000000"/>
<rect x="27" y="25" width="1" height="1" fill="#000000"/>
<rect x="0" y="26" width="1" height="1" fill="#000000"/>
<rect x="2" y="26" width="1" height="1" fill="#000000"/>
<rect x="3" y="26" width="1" height="1" fill="#000000"/>
<rect x="4" y="26" width="1" height="1" fill="#000000"/>
<rect x="6" y="26" width="1" height="1" fill="#000000"/>
<rect x="9" y="26" width="1" height="1" fill="#000000"/>
<rect x="10" y="26" width="1" height="1" fill="#000000"/>
<rect x="11" y="26" width="1" height="1" fill="#000000"/>
<rect x="13" y="26" width="1" height="1" fill="#000000"/>
<rect x="16" y="26" width="1" height="1" fill="#000000"/>
<rect x="17" y="26" width="1" height="1" fill="#000000"/>
<rect x="19" y="26" width="1" height="1" fill="#000000"/>
<rect x="20" y="26" width="1" height="1" fill="#000000"/>
<rect x="21" y="26" width="1" height="1" fill="#000000"/>
<rect x="24" y="26" width="1" height="1" fill="#000000"/>
<rect x="25" y="26" width="1" height="1" fill="#000000"/>
<rect x="26" y="26" width="1" height="1" fill="#000000"/>
<rect x="28" y="26" width="1" height="1" fill="#000000"/>
<rect x="0" y="27" width="1" height="1" fill="#000000"/>
<rect x="6" y="27" width="1" height="1" fill="#000000"/>
<rect x="8" y="27" width="1" height="1" fill="#000000"/>
<rect x="9" y="27" width="1" height="1" fill="#000000"/>
<rect x="10" y="27" width="1" height="1" fill="#000000"/>
<rect x="11" y="27" width="1" height="1" fill="#000000"/>
<rect x="13" y="27" width="1" height="1" fill="#000000"/>
<rect x="16" y="27" width="1" height="1" fill="#000000"/>
<rect x="17" y="27" width="1" height="1" fill="#000000"/>
<rect x="19" y="27" width="1" height="1" fill="#000000"/>
<rect x="20" y="27" width="1" height="1" fill="#000000"/>
<rect x="27" y="27" width="1" height="1" fill="#000000"/>
<rect x="0" y="28" width="1" height="1" fill="#000000"/>
<rect x="1" y="28" width="1" height="1" fill="#000000"/>
<rect x="2" y="28" width="1" height="1" fill="#000000"/>
<rect x="3" y="28" width="1" height="1" fill="#000000"/>
<rect x="4" y="28" width="1" height="1" fill="#000000"/>
<rect x="5" y="28" width="1" height="1" fill="#000000"/>
<rect x="6" y="28" width="1" height="1" fill="#000000"/>
<rect x="8" y="28" width="1" height="1" fill="#000000"/>
<rect x="11" y="28" width="1" height="1" fill="#000000"/>
<rect x="12" y="28" width="1" height="1" fill="#000000"/>
<rect x="17" y="28" width="1" height="1" fill="#000000"/>
<rect x="20" y="28" width="1" height="1" fill="#000000"/>
<rect x="23" y="28" width="1" height="1" fill="#000000"/>
<rect x="25" y="28" width="1" height="1" fill="#000000"/>
<rect x="27" y="28" width="1" height="1" fill="#000000"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,550 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Created with qrencode 4.1.1 (https://fukuchi.org/works/qrencode/index.html) -->
<svg width="4.34cm" height="4.34cm" viewBox="0 0 41 41" preserveAspectRatio="none" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g id="QRcode">
<rect x="0" y="0" width="41" height="41" fill="#ffffff"/>
<g id="Pattern" transform="translate(4,4)">
<rect x="0" y="0" width="1" height="1" fill="#000000"/>
<rect x="1" y="0" width="1" height="1" fill="#000000"/>
<rect x="2" y="0" width="1" height="1" fill="#000000"/>
<rect x="3" y="0" width="1" height="1" fill="#000000"/>
<rect x="4" y="0" width="1" height="1" fill="#000000"/>
<rect x="5" y="0" width="1" height="1" fill="#000000"/>
<rect x="6" y="0" width="1" height="1" fill="#000000"/>
<rect x="11" y="0" width="1" height="1" fill="#000000"/>
<rect x="13" y="0" width="1" height="1" fill="#000000"/>
<rect x="18" y="0" width="1" height="1" fill="#000000"/>
<rect x="19" y="0" width="1" height="1" fill="#000000"/>
<rect x="20" y="0" width="1" height="1" fill="#000000"/>
<rect x="21" y="0" width="1" height="1" fill="#000000"/>
<rect x="22" y="0" width="1" height="1" fill="#000000"/>
<rect x="23" y="0" width="1" height="1" fill="#000000"/>
<rect x="26" y="0" width="1" height="1" fill="#000000"/>
<rect x="27" y="0" width="1" height="1" fill="#000000"/>
<rect x="28" y="0" width="1" height="1" fill="#000000"/>
<rect x="29" y="0" width="1" height="1" fill="#000000"/>
<rect x="30" y="0" width="1" height="1" fill="#000000"/>
<rect x="31" y="0" width="1" height="1" fill="#000000"/>
<rect x="32" y="0" width="1" height="1" fill="#000000"/>
<rect x="0" y="1" width="1" height="1" fill="#000000"/>
<rect x="6" y="1" width="1" height="1" fill="#000000"/>
<rect x="8" y="1" width="1" height="1" fill="#000000"/>
<rect x="9" y="1" width="1" height="1" fill="#000000"/>
<rect x="13" y="1" width="1" height="1" fill="#000000"/>
<rect x="14" y="1" width="1" height="1" fill="#000000"/>
<rect x="15" y="1" width="1" height="1" fill="#000000"/>
<rect x="17" y="1" width="1" height="1" fill="#000000"/>
<rect x="18" y="1" width="1" height="1" fill="#000000"/>
<rect x="20" y="1" width="1" height="1" fill="#000000"/>
<rect x="26" y="1" width="1" height="1" fill="#000000"/>
<rect x="32" y="1" width="1" height="1" fill="#000000"/>
<rect x="0" y="2" width="1" height="1" fill="#000000"/>
<rect x="2" y="2" width="1" height="1" fill="#000000"/>
<rect x="3" y="2" width="1" height="1" fill="#000000"/>
<rect x="4" y="2" width="1" height="1" fill="#000000"/>
<rect x="6" y="2" width="1" height="1" fill="#000000"/>
<rect x="9" y="2" width="1" height="1" fill="#000000"/>
<rect x="11" y="2" width="1" height="1" fill="#000000"/>
<rect x="12" y="2" width="1" height="1" fill="#000000"/>
<rect x="14" y="2" width="1" height="1" fill="#000000"/>
<rect x="15" y="2" width="1" height="1" fill="#000000"/>
<rect x="21" y="2" width="1" height="1" fill="#000000"/>
<rect x="26" y="2" width="1" height="1" fill="#000000"/>
<rect x="28" y="2" width="1" height="1" fill="#000000"/>
<rect x="29" y="2" width="1" height="1" fill="#000000"/>
<rect x="30" y="2" width="1" height="1" fill="#000000"/>
<rect x="32" y="2" width="1" height="1" fill="#000000"/>
<rect x="0" y="3" width="1" height="1" fill="#000000"/>
<rect x="2" y="3" width="1" height="1" fill="#000000"/>
<rect x="3" y="3" width="1" height="1" fill="#000000"/>
<rect x="4" y="3" width="1" height="1" fill="#000000"/>
<rect x="6" y="3" width="1" height="1" fill="#000000"/>
<rect x="8" y="3" width="1" height="1" fill="#000000"/>
<rect x="10" y="3" width="1" height="1" fill="#000000"/>
<rect x="13" y="3" width="1" height="1" fill="#000000"/>
<rect x="14" y="3" width="1" height="1" fill="#000000"/>
<rect x="17" y="3" width="1" height="1" fill="#000000"/>
<rect x="22" y="3" width="1" height="1" fill="#000000"/>
<rect x="26" y="3" width="1" height="1" fill="#000000"/>
<rect x="28" y="3" width="1" height="1" fill="#000000"/>
<rect x="29" y="3" width="1" height="1" fill="#000000"/>
<rect x="30" y="3" width="1" height="1" fill="#000000"/>
<rect x="32" y="3" width="1" height="1" fill="#000000"/>
<rect x="0" y="4" width="1" height="1" fill="#000000"/>
<rect x="2" y="4" width="1" height="1" fill="#000000"/>
<rect x="3" y="4" width="1" height="1" fill="#000000"/>
<rect x="4" y="4" width="1" height="1" fill="#000000"/>
<rect x="6" y="4" width="1" height="1" fill="#000000"/>
<rect x="11" y="4" width="1" height="1" fill="#000000"/>
<rect x="13" y="4" width="1" height="1" fill="#000000"/>
<rect x="16" y="4" width="1" height="1" fill="#000000"/>
<rect x="17" y="4" width="1" height="1" fill="#000000"/>
<rect x="18" y="4" width="1" height="1" fill="#000000"/>
<rect x="19" y="4" width="1" height="1" fill="#000000"/>
<rect x="20" y="4" width="1" height="1" fill="#000000"/>
<rect x="23" y="4" width="1" height="1" fill="#000000"/>
<rect x="26" y="4" width="1" height="1" fill="#000000"/>
<rect x="28" y="4" width="1" height="1" fill="#000000"/>
<rect x="29" y="4" width="1" height="1" fill="#000000"/>
<rect x="30" y="4" width="1" height="1" fill="#000000"/>
<rect x="32" y="4" width="1" height="1" fill="#000000"/>
<rect x="0" y="5" width="1" height="1" fill="#000000"/>
<rect x="6" y="5" width="1" height="1" fill="#000000"/>
<rect x="8" y="5" width="1" height="1" fill="#000000"/>
<rect x="10" y="5" width="1" height="1" fill="#000000"/>
<rect x="14" y="5" width="1" height="1" fill="#000000"/>
<rect x="15" y="5" width="1" height="1" fill="#000000"/>
<rect x="16" y="5" width="1" height="1" fill="#000000"/>
<rect x="17" y="5" width="1" height="1" fill="#000000"/>
<rect x="18" y="5" width="1" height="1" fill="#000000"/>
<rect x="21" y="5" width="1" height="1" fill="#000000"/>
<rect x="26" y="5" width="1" height="1" fill="#000000"/>
<rect x="32" y="5" width="1" height="1" fill="#000000"/>
<rect x="0" y="6" width="1" height="1" fill="#000000"/>
<rect x="1" y="6" width="1" height="1" fill="#000000"/>
<rect x="2" y="6" width="1" height="1" fill="#000000"/>
<rect x="3" y="6" width="1" height="1" fill="#000000"/>
<rect x="4" y="6" width="1" height="1" fill="#000000"/>
<rect x="5" y="6" width="1" height="1" fill="#000000"/>
<rect x="6" y="6" width="1" height="1" fill="#000000"/>
<rect x="8" y="6" width="1" height="1" fill="#000000"/>
<rect x="10" y="6" width="1" height="1" fill="#000000"/>
<rect x="12" y="6" width="1" height="1" fill="#000000"/>
<rect x="14" y="6" width="1" height="1" fill="#000000"/>
<rect x="16" y="6" width="1" height="1" fill="#000000"/>
<rect x="18" y="6" width="1" height="1" fill="#000000"/>
<rect x="20" y="6" width="1" height="1" fill="#000000"/>
<rect x="22" y="6" width="1" height="1" fill="#000000"/>
<rect x="24" y="6" width="1" height="1" fill="#000000"/>
<rect x="26" y="6" width="1" height="1" fill="#000000"/>
<rect x="27" y="6" width="1" height="1" fill="#000000"/>
<rect x="28" y="6" width="1" height="1" fill="#000000"/>
<rect x="29" y="6" width="1" height="1" fill="#000000"/>
<rect x="30" y="6" width="1" height="1" fill="#000000"/>
<rect x="31" y="6" width="1" height="1" fill="#000000"/>
<rect x="32" y="6" width="1" height="1" fill="#000000"/>
<rect x="9" y="7" width="1" height="1" fill="#000000"/>
<rect x="10" y="7" width="1" height="1" fill="#000000"/>
<rect x="11" y="7" width="1" height="1" fill="#000000"/>
<rect x="12" y="7" width="1" height="1" fill="#000000"/>
<rect x="14" y="7" width="1" height="1" fill="#000000"/>
<rect x="19" y="7" width="1" height="1" fill="#000000"/>
<rect x="21" y="7" width="1" height="1" fill="#000000"/>
<rect x="22" y="7" width="1" height="1" fill="#000000"/>
<rect x="23" y="7" width="1" height="1" fill="#000000"/>
<rect x="24" y="7" width="1" height="1" fill="#000000"/>
<rect x="0" y="8" width="1" height="1" fill="#000000"/>
<rect x="1" y="8" width="1" height="1" fill="#000000"/>
<rect x="2" y="8" width="1" height="1" fill="#000000"/>
<rect x="3" y="8" width="1" height="1" fill="#000000"/>
<rect x="4" y="8" width="1" height="1" fill="#000000"/>
<rect x="6" y="8" width="1" height="1" fill="#000000"/>
<rect x="7" y="8" width="1" height="1" fill="#000000"/>
<rect x="8" y="8" width="1" height="1" fill="#000000"/>
<rect x="10" y="8" width="1" height="1" fill="#000000"/>
<rect x="11" y="8" width="1" height="1" fill="#000000"/>
<rect x="12" y="8" width="1" height="1" fill="#000000"/>
<rect x="13" y="8" width="1" height="1" fill="#000000"/>
<rect x="14" y="8" width="1" height="1" fill="#000000"/>
<rect x="15" y="8" width="1" height="1" fill="#000000"/>
<rect x="17" y="8" width="1" height="1" fill="#000000"/>
<rect x="22" y="8" width="1" height="1" fill="#000000"/>
<rect x="24" y="8" width="1" height="1" fill="#000000"/>
<rect x="25" y="8" width="1" height="1" fill="#000000"/>
<rect x="27" y="8" width="1" height="1" fill="#000000"/>
<rect x="29" y="8" width="1" height="1" fill="#000000"/>
<rect x="31" y="8" width="1" height="1" fill="#000000"/>
<rect x="1" y="9" width="1" height="1" fill="#000000"/>
<rect x="2" y="9" width="1" height="1" fill="#000000"/>
<rect x="4" y="9" width="1" height="1" fill="#000000"/>
<rect x="9" y="9" width="1" height="1" fill="#000000"/>
<rect x="10" y="9" width="1" height="1" fill="#000000"/>
<rect x="11" y="9" width="1" height="1" fill="#000000"/>
<rect x="16" y="9" width="1" height="1" fill="#000000"/>
<rect x="18" y="9" width="1" height="1" fill="#000000"/>
<rect x="19" y="9" width="1" height="1" fill="#000000"/>
<rect x="20" y="9" width="1" height="1" fill="#000000"/>
<rect x="23" y="9" width="1" height="1" fill="#000000"/>
<rect x="25" y="9" width="1" height="1" fill="#000000"/>
<rect x="26" y="9" width="1" height="1" fill="#000000"/>
<rect x="30" y="9" width="1" height="1" fill="#000000"/>
<rect x="31" y="9" width="1" height="1" fill="#000000"/>
<rect x="32" y="9" width="1" height="1" fill="#000000"/>
<rect x="1" y="10" width="1" height="1" fill="#000000"/>
<rect x="2" y="10" width="1" height="1" fill="#000000"/>
<rect x="5" y="10" width="1" height="1" fill="#000000"/>
<rect x="6" y="10" width="1" height="1" fill="#000000"/>
<rect x="8" y="10" width="1" height="1" fill="#000000"/>
<rect x="9" y="10" width="1" height="1" fill="#000000"/>
<rect x="12" y="10" width="1" height="1" fill="#000000"/>
<rect x="15" y="10" width="1" height="1" fill="#000000"/>
<rect x="20" y="10" width="1" height="1" fill="#000000"/>
<rect x="22" y="10" width="1" height="1" fill="#000000"/>
<rect x="29" y="10" width="1" height="1" fill="#000000"/>
<rect x="31" y="10" width="1" height="1" fill="#000000"/>
<rect x="2" y="11" width="1" height="1" fill="#000000"/>
<rect x="4" y="11" width="1" height="1" fill="#000000"/>
<rect x="9" y="11" width="1" height="1" fill="#000000"/>
<rect x="11" y="11" width="1" height="1" fill="#000000"/>
<rect x="12" y="11" width="1" height="1" fill="#000000"/>
<rect x="14" y="11" width="1" height="1" fill="#000000"/>
<rect x="16" y="11" width="1" height="1" fill="#000000"/>
<rect x="20" y="11" width="1" height="1" fill="#000000"/>
<rect x="21" y="11" width="1" height="1" fill="#000000"/>
<rect x="22" y="11" width="1" height="1" fill="#000000"/>
<rect x="23" y="11" width="1" height="1" fill="#000000"/>
<rect x="26" y="11" width="1" height="1" fill="#000000"/>
<rect x="30" y="11" width="1" height="1" fill="#000000"/>
<rect x="0" y="12" width="1" height="1" fill="#000000"/>
<rect x="1" y="12" width="1" height="1" fill="#000000"/>
<rect x="3" y="12" width="1" height="1" fill="#000000"/>
<rect x="4" y="12" width="1" height="1" fill="#000000"/>
<rect x="5" y="12" width="1" height="1" fill="#000000"/>
<rect x="6" y="12" width="1" height="1" fill="#000000"/>
<rect x="8" y="12" width="1" height="1" fill="#000000"/>
<rect x="9" y="12" width="1" height="1" fill="#000000"/>
<rect x="13" y="12" width="1" height="1" fill="#000000"/>
<rect x="14" y="12" width="1" height="1" fill="#000000"/>
<rect x="17" y="12" width="1" height="1" fill="#000000"/>
<rect x="19" y="12" width="1" height="1" fill="#000000"/>
<rect x="22" y="12" width="1" height="1" fill="#000000"/>
<rect x="23" y="12" width="1" height="1" fill="#000000"/>
<rect x="24" y="12" width="1" height="1" fill="#000000"/>
<rect x="25" y="12" width="1" height="1" fill="#000000"/>
<rect x="28" y="12" width="1" height="1" fill="#000000"/>
<rect x="29" y="12" width="1" height="1" fill="#000000"/>
<rect x="0" y="13" width="1" height="1" fill="#000000"/>
<rect x="3" y="13" width="1" height="1" fill="#000000"/>
<rect x="4" y="13" width="1" height="1" fill="#000000"/>
<rect x="7" y="13" width="1" height="1" fill="#000000"/>
<rect x="9" y="13" width="1" height="1" fill="#000000"/>
<rect x="11" y="13" width="1" height="1" fill="#000000"/>
<rect x="13" y="13" width="1" height="1" fill="#000000"/>
<rect x="16" y="13" width="1" height="1" fill="#000000"/>
<rect x="17" y="13" width="1" height="1" fill="#000000"/>
<rect x="18" y="13" width="1" height="1" fill="#000000"/>
<rect x="19" y="13" width="1" height="1" fill="#000000"/>
<rect x="21" y="13" width="1" height="1" fill="#000000"/>
<rect x="22" y="13" width="1" height="1" fill="#000000"/>
<rect x="23" y="13" width="1" height="1" fill="#000000"/>
<rect x="24" y="13" width="1" height="1" fill="#000000"/>
<rect x="26" y="13" width="1" height="1" fill="#000000"/>
<rect x="31" y="13" width="1" height="1" fill="#000000"/>
<rect x="32" y="13" width="1" height="1" fill="#000000"/>
<rect x="3" y="14" width="1" height="1" fill="#000000"/>
<rect x="5" y="14" width="1" height="1" fill="#000000"/>
<rect x="6" y="14" width="1" height="1" fill="#000000"/>
<rect x="15" y="14" width="1" height="1" fill="#000000"/>
<rect x="16" y="14" width="1" height="1" fill="#000000"/>
<rect x="17" y="14" width="1" height="1" fill="#000000"/>
<rect x="21" y="14" width="1" height="1" fill="#000000"/>
<rect x="22" y="14" width="1" height="1" fill="#000000"/>
<rect x="26" y="14" width="1" height="1" fill="#000000"/>
<rect x="28" y="14" width="1" height="1" fill="#000000"/>
<rect x="31" y="14" width="1" height="1" fill="#000000"/>
<rect x="4" y="15" width="1" height="1" fill="#000000"/>
<rect x="5" y="15" width="1" height="1" fill="#000000"/>
<rect x="11" y="15" width="1" height="1" fill="#000000"/>
<rect x="14" y="15" width="1" height="1" fill="#000000"/>
<rect x="15" y="15" width="1" height="1" fill="#000000"/>
<rect x="18" y="15" width="1" height="1" fill="#000000"/>
<rect x="20" y="15" width="1" height="1" fill="#000000"/>
<rect x="21" y="15" width="1" height="1" fill="#000000"/>
<rect x="22" y="15" width="1" height="1" fill="#000000"/>
<rect x="23" y="15" width="1" height="1" fill="#000000"/>
<rect x="25" y="15" width="1" height="1" fill="#000000"/>
<rect x="27" y="15" width="1" height="1" fill="#000000"/>
<rect x="30" y="15" width="1" height="1" fill="#000000"/>
<rect x="0" y="16" width="1" height="1" fill="#000000"/>
<rect x="1" y="16" width="1" height="1" fill="#000000"/>
<rect x="4" y="16" width="1" height="1" fill="#000000"/>
<rect x="6" y="16" width="1" height="1" fill="#000000"/>
<rect x="7" y="16" width="1" height="1" fill="#000000"/>
<rect x="8" y="16" width="1" height="1" fill="#000000"/>
<rect x="9" y="16" width="1" height="1" fill="#000000"/>
<rect x="11" y="16" width="1" height="1" fill="#000000"/>
<rect x="12" y="16" width="1" height="1" fill="#000000"/>
<rect x="13" y="16" width="1" height="1" fill="#000000"/>
<rect x="14" y="16" width="1" height="1" fill="#000000"/>
<rect x="15" y="16" width="1" height="1" fill="#000000"/>
<rect x="17" y="16" width="1" height="1" fill="#000000"/>
<rect x="20" y="16" width="1" height="1" fill="#000000"/>
<rect x="22" y="16" width="1" height="1" fill="#000000"/>
<rect x="23" y="16" width="1" height="1" fill="#000000"/>
<rect x="24" y="16" width="1" height="1" fill="#000000"/>
<rect x="25" y="16" width="1" height="1" fill="#000000"/>
<rect x="27" y="16" width="1" height="1" fill="#000000"/>
<rect x="28" y="16" width="1" height="1" fill="#000000"/>
<rect x="31" y="16" width="1" height="1" fill="#000000"/>
<rect x="4" y="17" width="1" height="1" fill="#000000"/>
<rect x="11" y="17" width="1" height="1" fill="#000000"/>
<rect x="13" y="17" width="1" height="1" fill="#000000"/>
<rect x="16" y="17" width="1" height="1" fill="#000000"/>
<rect x="18" y="17" width="1" height="1" fill="#000000"/>
<rect x="19" y="17" width="1" height="1" fill="#000000"/>
<rect x="20" y="17" width="1" height="1" fill="#000000"/>
<rect x="21" y="17" width="1" height="1" fill="#000000"/>
<rect x="22" y="17" width="1" height="1" fill="#000000"/>
<rect x="23" y="17" width="1" height="1" fill="#000000"/>
<rect x="26" y="17" width="1" height="1" fill="#000000"/>
<rect x="29" y="17" width="1" height="1" fill="#000000"/>
<rect x="31" y="17" width="1" height="1" fill="#000000"/>
<rect x="32" y="17" width="1" height="1" fill="#000000"/>
<rect x="0" y="18" width="1" height="1" fill="#000000"/>
<rect x="1" y="18" width="1" height="1" fill="#000000"/>
<rect x="5" y="18" width="1" height="1" fill="#000000"/>
<rect x="6" y="18" width="1" height="1" fill="#000000"/>
<rect x="8" y="18" width="1" height="1" fill="#000000"/>
<rect x="9" y="18" width="1" height="1" fill="#000000"/>
<rect x="10" y="18" width="1" height="1" fill="#000000"/>
<rect x="13" y="18" width="1" height="1" fill="#000000"/>
<rect x="14" y="18" width="1" height="1" fill="#000000"/>
<rect x="15" y="18" width="1" height="1" fill="#000000"/>
<rect x="20" y="18" width="1" height="1" fill="#000000"/>
<rect x="25" y="18" width="1" height="1" fill="#000000"/>
<rect x="26" y="18" width="1" height="1" fill="#000000"/>
<rect x="27" y="18" width="1" height="1" fill="#000000"/>
<rect x="28" y="18" width="1" height="1" fill="#000000"/>
<rect x="29" y="18" width="1" height="1" fill="#000000"/>
<rect x="31" y="18" width="1" height="1" fill="#000000"/>
<rect x="1" y="19" width="1" height="1" fill="#000000"/>
<rect x="2" y="19" width="1" height="1" fill="#000000"/>
<rect x="4" y="19" width="1" height="1" fill="#000000"/>
<rect x="5" y="19" width="1" height="1" fill="#000000"/>
<rect x="7" y="19" width="1" height="1" fill="#000000"/>
<rect x="9" y="19" width="1" height="1" fill="#000000"/>
<rect x="10" y="19" width="1" height="1" fill="#000000"/>
<rect x="11" y="19" width="1" height="1" fill="#000000"/>
<rect x="18" y="19" width="1" height="1" fill="#000000"/>
<rect x="19" y="19" width="1" height="1" fill="#000000"/>
<rect x="20" y="19" width="1" height="1" fill="#000000"/>
<rect x="21" y="19" width="1" height="1" fill="#000000"/>
<rect x="22" y="19" width="1" height="1" fill="#000000"/>
<rect x="24" y="19" width="1" height="1" fill="#000000"/>
<rect x="25" y="19" width="1" height="1" fill="#000000"/>
<rect x="26" y="19" width="1" height="1" fill="#000000"/>
<rect x="28" y="19" width="1" height="1" fill="#000000"/>
<rect x="30" y="19" width="1" height="1" fill="#000000"/>
<rect x="1" y="20" width="1" height="1" fill="#000000"/>
<rect x="2" y="20" width="1" height="1" fill="#000000"/>
<rect x="6" y="20" width="1" height="1" fill="#000000"/>
<rect x="7" y="20" width="1" height="1" fill="#000000"/>
<rect x="8" y="20" width="1" height="1" fill="#000000"/>
<rect x="9" y="20" width="1" height="1" fill="#000000"/>
<rect x="13" y="20" width="1" height="1" fill="#000000"/>
<rect x="15" y="20" width="1" height="1" fill="#000000"/>
<rect x="16" y="20" width="1" height="1" fill="#000000"/>
<rect x="17" y="20" width="1" height="1" fill="#000000"/>
<rect x="18" y="20" width="1" height="1" fill="#000000"/>
<rect x="19" y="20" width="1" height="1" fill="#000000"/>
<rect x="23" y="20" width="1" height="1" fill="#000000"/>
<rect x="24" y="20" width="1" height="1" fill="#000000"/>
<rect x="25" y="20" width="1" height="1" fill="#000000"/>
<rect x="27" y="20" width="1" height="1" fill="#000000"/>
<rect x="28" y="20" width="1" height="1" fill="#000000"/>
<rect x="31" y="20" width="1" height="1" fill="#000000"/>
<rect x="0" y="21" width="1" height="1" fill="#000000"/>
<rect x="1" y="21" width="1" height="1" fill="#000000"/>
<rect x="3" y="21" width="1" height="1" fill="#000000"/>
<rect x="7" y="21" width="1" height="1" fill="#000000"/>
<rect x="11" y="21" width="1" height="1" fill="#000000"/>
<rect x="13" y="21" width="1" height="1" fill="#000000"/>
<rect x="16" y="21" width="1" height="1" fill="#000000"/>
<rect x="17" y="21" width="1" height="1" fill="#000000"/>
<rect x="18" y="21" width="1" height="1" fill="#000000"/>
<rect x="19" y="21" width="1" height="1" fill="#000000"/>
<rect x="20" y="21" width="1" height="1" fill="#000000"/>
<rect x="23" y="21" width="1" height="1" fill="#000000"/>
<rect x="25" y="21" width="1" height="1" fill="#000000"/>
<rect x="26" y="21" width="1" height="1" fill="#000000"/>
<rect x="27" y="21" width="1" height="1" fill="#000000"/>
<rect x="29" y="21" width="1" height="1" fill="#000000"/>
<rect x="31" y="21" width="1" height="1" fill="#000000"/>
<rect x="32" y="21" width="1" height="1" fill="#000000"/>
<rect x="0" y="22" width="1" height="1" fill="#000000"/>
<rect x="3" y="22" width="1" height="1" fill="#000000"/>
<rect x="6" y="22" width="1" height="1" fill="#000000"/>
<rect x="13" y="22" width="1" height="1" fill="#000000"/>
<rect x="14" y="22" width="1" height="1" fill="#000000"/>
<rect x="15" y="22" width="1" height="1" fill="#000000"/>
<rect x="17" y="22" width="1" height="1" fill="#000000"/>
<rect x="20" y="22" width="1" height="1" fill="#000000"/>
<rect x="22" y="22" width="1" height="1" fill="#000000"/>
<rect x="24" y="22" width="1" height="1" fill="#000000"/>
<rect x="25" y="22" width="1" height="1" fill="#000000"/>
<rect x="29" y="22" width="1" height="1" fill="#000000"/>
<rect x="31" y="22" width="1" height="1" fill="#000000"/>
<rect x="0" y="23" width="1" height="1" fill="#000000"/>
<rect x="2" y="23" width="1" height="1" fill="#000000"/>
<rect x="3" y="23" width="1" height="1" fill="#000000"/>
<rect x="8" y="23" width="1" height="1" fill="#000000"/>
<rect x="11" y="23" width="1" height="1" fill="#000000"/>
<rect x="14" y="23" width="1" height="1" fill="#000000"/>
<rect x="21" y="23" width="1" height="1" fill="#000000"/>
<rect x="23" y="23" width="1" height="1" fill="#000000"/>
<rect x="24" y="23" width="1" height="1" fill="#000000"/>
<rect x="25" y="23" width="1" height="1" fill="#000000"/>
<rect x="29" y="23" width="1" height="1" fill="#000000"/>
<rect x="30" y="23" width="1" height="1" fill="#000000"/>
<rect x="0" y="24" width="1" height="1" fill="#000000"/>
<rect x="2" y="24" width="1" height="1" fill="#000000"/>
<rect x="4" y="24" width="1" height="1" fill="#000000"/>
<rect x="5" y="24" width="1" height="1" fill="#000000"/>
<rect x="6" y="24" width="1" height="1" fill="#000000"/>
<rect x="8" y="24" width="1" height="1" fill="#000000"/>
<rect x="9" y="24" width="1" height="1" fill="#000000"/>
<rect x="10" y="24" width="1" height="1" fill="#000000"/>
<rect x="11" y="24" width="1" height="1" fill="#000000"/>
<rect x="12" y="24" width="1" height="1" fill="#000000"/>
<rect x="13" y="24" width="1" height="1" fill="#000000"/>
<rect x="14" y="24" width="1" height="1" fill="#000000"/>
<rect x="15" y="24" width="1" height="1" fill="#000000"/>
<rect x="17" y="24" width="1" height="1" fill="#000000"/>
<rect x="19" y="24" width="1" height="1" fill="#000000"/>
<rect x="22" y="24" width="1" height="1" fill="#000000"/>
<rect x="24" y="24" width="1" height="1" fill="#000000"/>
<rect x="25" y="24" width="1" height="1" fill="#000000"/>
<rect x="26" y="24" width="1" height="1" fill="#000000"/>
<rect x="27" y="24" width="1" height="1" fill="#000000"/>
<rect x="28" y="24" width="1" height="1" fill="#000000"/>
<rect x="32" y="24" width="1" height="1" fill="#000000"/>
<rect x="8" y="25" width="1" height="1" fill="#000000"/>
<rect x="9" y="25" width="1" height="1" fill="#000000"/>
<rect x="11" y="25" width="1" height="1" fill="#000000"/>
<rect x="12" y="25" width="1" height="1" fill="#000000"/>
<rect x="16" y="25" width="1" height="1" fill="#000000"/>
<rect x="19" y="25" width="1" height="1" fill="#000000"/>
<rect x="20" y="25" width="1" height="1" fill="#000000"/>
<rect x="21" y="25" width="1" height="1" fill="#000000"/>
<rect x="24" y="25" width="1" height="1" fill="#000000"/>
<rect x="28" y="25" width="1" height="1" fill="#000000"/>
<rect x="30" y="25" width="1" height="1" fill="#000000"/>
<rect x="32" y="25" width="1" height="1" fill="#000000"/>
<rect x="0" y="26" width="1" height="1" fill="#000000"/>
<rect x="1" y="26" width="1" height="1" fill="#000000"/>
<rect x="2" y="26" width="1" height="1" fill="#000000"/>
<rect x="3" y="26" width="1" height="1" fill="#000000"/>
<rect x="4" y="26" width="1" height="1" fill="#000000"/>
<rect x="5" y="26" width="1" height="1" fill="#000000"/>
<rect x="6" y="26" width="1" height="1" fill="#000000"/>
<rect x="8" y="26" width="1" height="1" fill="#000000"/>
<rect x="9" y="26" width="1" height="1" fill="#000000"/>
<rect x="14" y="26" width="1" height="1" fill="#000000"/>
<rect x="15" y="26" width="1" height="1" fill="#000000"/>
<rect x="16" y="26" width="1" height="1" fill="#000000"/>
<rect x="17" y="26" width="1" height="1" fill="#000000"/>
<rect x="18" y="26" width="1" height="1" fill="#000000"/>
<rect x="20" y="26" width="1" height="1" fill="#000000"/>
<rect x="23" y="26" width="1" height="1" fill="#000000"/>
<rect x="24" y="26" width="1" height="1" fill="#000000"/>
<rect x="26" y="26" width="1" height="1" fill="#000000"/>
<rect x="28" y="26" width="1" height="1" fill="#000000"/>
<rect x="29" y="26" width="1" height="1" fill="#000000"/>
<rect x="31" y="26" width="1" height="1" fill="#000000"/>
<rect x="0" y="27" width="1" height="1" fill="#000000"/>
<rect x="6" y="27" width="1" height="1" fill="#000000"/>
<rect x="10" y="27" width="1" height="1" fill="#000000"/>
<rect x="11" y="27" width="1" height="1" fill="#000000"/>
<rect x="12" y="27" width="1" height="1" fill="#000000"/>
<rect x="16" y="27" width="1" height="1" fill="#000000"/>
<rect x="19" y="27" width="1" height="1" fill="#000000"/>
<rect x="20" y="27" width="1" height="1" fill="#000000"/>
<rect x="21" y="27" width="1" height="1" fill="#000000"/>
<rect x="23" y="27" width="1" height="1" fill="#000000"/>
<rect x="24" y="27" width="1" height="1" fill="#000000"/>
<rect x="28" y="27" width="1" height="1" fill="#000000"/>
<rect x="29" y="27" width="1" height="1" fill="#000000"/>
<rect x="30" y="27" width="1" height="1" fill="#000000"/>
<rect x="32" y="27" width="1" height="1" fill="#000000"/>
<rect x="0" y="28" width="1" height="1" fill="#000000"/>
<rect x="2" y="28" width="1" height="1" fill="#000000"/>
<rect x="3" y="28" width="1" height="1" fill="#000000"/>
<rect x="4" y="28" width="1" height="1" fill="#000000"/>
<rect x="6" y="28" width="1" height="1" fill="#000000"/>
<rect x="8" y="28" width="1" height="1" fill="#000000"/>
<rect x="13" y="28" width="1" height="1" fill="#000000"/>
<rect x="14" y="28" width="1" height="1" fill="#000000"/>
<rect x="17" y="28" width="1" height="1" fill="#000000"/>
<rect x="19" y="28" width="1" height="1" fill="#000000"/>
<rect x="22" y="28" width="1" height="1" fill="#000000"/>
<rect x="24" y="28" width="1" height="1" fill="#000000"/>
<rect x="25" y="28" width="1" height="1" fill="#000000"/>
<rect x="26" y="28" width="1" height="1" fill="#000000"/>
<rect x="27" y="28" width="1" height="1" fill="#000000"/>
<rect x="28" y="28" width="1" height="1" fill="#000000"/>
<rect x="31" y="28" width="1" height="1" fill="#000000"/>
<rect x="32" y="28" width="1" height="1" fill="#000000"/>
<rect x="0" y="29" width="1" height="1" fill="#000000"/>
<rect x="2" y="29" width="1" height="1" fill="#000000"/>
<rect x="3" y="29" width="1" height="1" fill="#000000"/>
<rect x="4" y="29" width="1" height="1" fill="#000000"/>
<rect x="6" y="29" width="1" height="1" fill="#000000"/>
<rect x="8" y="29" width="1" height="1" fill="#000000"/>
<rect x="9" y="29" width="1" height="1" fill="#000000"/>
<rect x="10" y="29" width="1" height="1" fill="#000000"/>
<rect x="11" y="29" width="1" height="1" fill="#000000"/>
<rect x="13" y="29" width="1" height="1" fill="#000000"/>
<rect x="19" y="29" width="1" height="1" fill="#000000"/>
<rect x="25" y="29" width="1" height="1" fill="#000000"/>
<rect x="27" y="29" width="1" height="1" fill="#000000"/>
<rect x="28" y="29" width="1" height="1" fill="#000000"/>
<rect x="29" y="29" width="1" height="1" fill="#000000"/>
<rect x="0" y="30" width="1" height="1" fill="#000000"/>
<rect x="2" y="30" width="1" height="1" fill="#000000"/>
<rect x="3" y="30" width="1" height="1" fill="#000000"/>
<rect x="4" y="30" width="1" height="1" fill="#000000"/>
<rect x="6" y="30" width="1" height="1" fill="#000000"/>
<rect x="8" y="30" width="1" height="1" fill="#000000"/>
<rect x="10" y="30" width="1" height="1" fill="#000000"/>
<rect x="13" y="30" width="1" height="1" fill="#000000"/>
<rect x="14" y="30" width="1" height="1" fill="#000000"/>
<rect x="15" y="30" width="1" height="1" fill="#000000"/>
<rect x="16" y="30" width="1" height="1" fill="#000000"/>
<rect x="17" y="30" width="1" height="1" fill="#000000"/>
<rect x="18" y="30" width="1" height="1" fill="#000000"/>
<rect x="20" y="30" width="1" height="1" fill="#000000"/>
<rect x="21" y="30" width="1" height="1" fill="#000000"/>
<rect x="23" y="30" width="1" height="1" fill="#000000"/>
<rect x="25" y="30" width="1" height="1" fill="#000000"/>
<rect x="26" y="30" width="1" height="1" fill="#000000"/>
<rect x="29" y="30" width="1" height="1" fill="#000000"/>
<rect x="31" y="30" width="1" height="1" fill="#000000"/>
<rect x="0" y="31" width="1" height="1" fill="#000000"/>
<rect x="6" y="31" width="1" height="1" fill="#000000"/>
<rect x="8" y="31" width="1" height="1" fill="#000000"/>
<rect x="9" y="31" width="1" height="1" fill="#000000"/>
<rect x="11" y="31" width="1" height="1" fill="#000000"/>
<rect x="12" y="31" width="1" height="1" fill="#000000"/>
<rect x="14" y="31" width="1" height="1" fill="#000000"/>
<rect x="18" y="31" width="1" height="1" fill="#000000"/>
<rect x="19" y="31" width="1" height="1" fill="#000000"/>
<rect x="20" y="31" width="1" height="1" fill="#000000"/>
<rect x="21" y="31" width="1" height="1" fill="#000000"/>
<rect x="22" y="31" width="1" height="1" fill="#000000"/>
<rect x="27" y="31" width="1" height="1" fill="#000000"/>
<rect x="29" y="31" width="1" height="1" fill="#000000"/>
<rect x="30" y="31" width="1" height="1" fill="#000000"/>
<rect x="0" y="32" width="1" height="1" fill="#000000"/>
<rect x="1" y="32" width="1" height="1" fill="#000000"/>
<rect x="2" y="32" width="1" height="1" fill="#000000"/>
<rect x="3" y="32" width="1" height="1" fill="#000000"/>
<rect x="4" y="32" width="1" height="1" fill="#000000"/>
<rect x="5" y="32" width="1" height="1" fill="#000000"/>
<rect x="6" y="32" width="1" height="1" fill="#000000"/>
<rect x="8" y="32" width="1" height="1" fill="#000000"/>
<rect x="9" y="32" width="1" height="1" fill="#000000"/>
<rect x="10" y="32" width="1" height="1" fill="#000000"/>
<rect x="12" y="32" width="1" height="1" fill="#000000"/>
<rect x="13" y="32" width="1" height="1" fill="#000000"/>
<rect x="14" y="32" width="1" height="1" fill="#000000"/>
<rect x="15" y="32" width="1" height="1" fill="#000000"/>
<rect x="17" y="32" width="1" height="1" fill="#000000"/>
<rect x="19" y="32" width="1" height="1" fill="#000000"/>
<rect x="22" y="32" width="1" height="1" fill="#000000"/>
<rect x="24" y="32" width="1" height="1" fill="#000000"/>
<rect x="25" y="32" width="1" height="1" fill="#000000"/>
<rect x="26" y="32" width="1" height="1" fill="#000000"/>
<rect x="31" y="32" width="1" height="1" fill="#000000"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -7,11 +7,11 @@
]
},
"locked": {
"lastModified": 1673295039,
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
"lastModified": 1695686713,
"narHash": "sha256-rJATx5B/nwlBpt7CJUf85LV27qWPbul5UVV8fu6ABPg=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
"rev": "e236a1e598a9a59265897948ac9874c364b9555f",
"type": "github"
},
"original": {
@ -28,11 +28,11 @@
"utils": "utils"
},
"locked": {
"lastModified": 1674127017,
"narHash": "sha256-QO1xF7stu5ZMDLbHN30LFolMAwY6TVlzYvQoUs1RD68=",
"lastModified": 1695052866,
"narHash": "sha256-agn7F9Oww4oU6nPiw+YiYI9Xb4vOOE73w8PAoBRP4AA=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "8c9ea9605eed20528bf60fae35a2b613b901fd77",
"rev": "e3f41832680801d0ee9e2ed33eb63af398b090e9",
"type": "github"
},
"original": {
@ -44,11 +44,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"lastModified": 1668681692,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
"type": "github"
},
"original": {
@ -90,12 +90,15 @@
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
@ -129,15 +132,14 @@
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"utils": "utils_2"
]
},
"locked": {
"lastModified": 1676367705,
"narHash": "sha256-un5UbRat9TwruyImtwUGcKF823rCEp4fQxnsaLFL7CM=",
"lastModified": 1695738267,
"narHash": "sha256-LTNAbTQ96xSj17xBfsFrFS9i56U2BMLpD0BduhrsVkU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "da72e6fc6b7dc0c3f94edbd310aae7cd95c678b5",
"rev": "0f4e5b4999fd6a42ece5da8a3a2439a50e48e486",
"type": "github"
},
"original": {
@ -148,11 +150,11 @@
},
"impermanence": {
"locked": {
"lastModified": 1675359654,
"narHash": "sha256-FPxzuvJkcO49g4zkWLSeuZkln54bLoTtrggZDJBH90I=",
"lastModified": 1694622745,
"narHash": "sha256-z397+eDhKx9c2qNafL1xv75lC0Q4nOaFlhaU1TINqb8=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "6138eb8e737bffabd4c8fc78ae015d4fd6a7e2fd",
"rev": "e9643d08d0d193a2e074a19d4d90c67a874d932e",
"type": "github"
},
"original": {
@ -163,11 +165,11 @@
},
"nixlib": {
"locked": {
"lastModified": 1636849918,
"narHash": "sha256-nzUK6dPcTmNVrgTAC1EOybSMsrcx+QrVPyqRdyKLkjA=",
"lastModified": 1693701915,
"narHash": "sha256-waHPLdDYUOHSEtMKKabcKIMhlUOHPOOPQ9UyFeEoovs=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "28a5b0557f14124608db68d3ee1f77e9329e9dd5",
"rev": "f5af57d3ef9947a70ac86e42695231ac1ad00c25",
"type": "github"
},
"original": {
@ -184,11 +186,11 @@
]
},
"locked": {
"lastModified": 1676297861,
"narHash": "sha256-YECUmK34xzg0IERpnbCnaO6z6YgfecJlstMWX7dqOZ8=",
"lastModified": 1693791338,
"narHash": "sha256-wHmtB5H8AJTUaeGHw+0hsQ6nU4VyvVrP2P4NeCocRzY=",
"owner": "nix-community",
"repo": "nixos-generators",
"rev": "1e0a05219f2a557d4622bc38f542abb360518795",
"rev": "8ee78470029e641cddbd8721496da1316b47d3b4",
"type": "github"
},
"original": {
@ -199,11 +201,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1676699914,
"narHash": "sha256-cM2Hd+odgCYWSUiYPZGW/4B+OI64S0lrdf9YR9ts9I4=",
"lastModified": 1695887975,
"narHash": "sha256-u3+5FR12dI305jCMb0fJNQx2qwoQ54lv1tPoEWp0hmg=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "9bbcc37b011b0d925f3115888ea77f58487619b8",
"rev": "adcfd6aa860d1d129055039696bc457af7d50d0e",
"type": "github"
},
"original": {
@ -214,11 +216,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1676549890,
"narHash": "sha256-sq/WcOEAl7gWrrfGkWdnyYazRyTf+enEim/o6LOQzI8=",
"lastModified": 1671417167,
"narHash": "sha256-JkHam6WQOwZN1t2C2sbp1TqMv3TVRjzrdoejqfefwrM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8c66bd1b68f4708c90dcc97c6f7052a5a7b33257",
"rev": "bb31220cca6d044baa6dc2715b07497a2a7c4bc7",
"type": "github"
},
"original": {
@ -230,27 +232,27 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1673800717,
"narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=",
"lastModified": 1685801374,
"narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f",
"rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.11",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1676569297,
"narHash": "sha256-2n4C4H3/U+3YbDrQB6xIw7AaLdFISCCFwOkcETAigqU=",
"lastModified": 1695644571,
"narHash": "sha256-asS9dCCdlt1lPq0DLwkVBbVoEKuEuz+Zi3DG7pR/RxA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ac1f5b72a9e95873d1de0233fddcb56f99884b37",
"rev": "6500b4580c2a1f3d0f980d32d285739d8e156d92",
"type": "github"
},
"original": {
@ -273,11 +275,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1676513100,
"narHash": "sha256-MK39nQV86L2ag4TmcK5/+r1ULpzRLPbbfvWbPvIoYJE=",
"lastModified": 1695576016,
"narHash": "sha256-71KxwRhTfVuh7kNrg3/edNjYVg9DCyKZl2QIKbhRggg=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "5f0cba88ac4d6dd8cad5c6f6f1540b3d6a21a798",
"rev": "cb770e93516a1609652fa8e945a0f310e98f10c0",
"type": "github"
},
"original": {
@ -300,22 +302,22 @@
"pre-commit-hooks": "pre-commit-hooks"
}
},
"utils": {
"systems": {
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils_2": {
"utils": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",

View File

@ -6,20 +6,12 @@ with self.pkgs.${system};
[
# Development
editorconfig-checker
esptool
micropython
nodePackages.node-red
openscad
pre-commit
python310Full
python310Packages.mkdocs
python310Packages.mkdocs-material
python310Packages.mkdocs-material-extensions
yaml-language-server
]
++ lib.optionals (pkgs.hostPlatform.system == "x86_64-linux") [
vscodium-fhs
freecad
vscode-extensions.marp-team.marp-vscode
]
++ [
# Linter
@ -27,19 +19,19 @@ with self.pkgs.${system};
yamllint
# Nix
deploy-rs
alejandra
nixUnstable
rnix-lsp
nil
# Service
mosquitto
# Marp slides
marp-cli
chromium
# Misc
reuse
zstd
wget
raspberrypi-eeprom
];
shellHook = ''
${self.checks.${system}.pre-commit-check.shellHook}