Compare commits
8 commits
bbd5a12a62
...
2a63cc773d
Author | SHA1 | Date | |
---|---|---|---|
2a63cc773d | |||
383338fd60 | |||
7693aed71b | |||
8a7cd25071 | |||
a9ef1137c5 | |||
72801aced3 | |||
54b30d0f33 | |||
be98721c1c |
|
@ -1,11 +1,25 @@
|
||||||
---
|
---
|
||||||
marp: true
|
marp: true
|
||||||
|
title: IoT & Dashboard Workshop
|
||||||
|
description: Including examples Sensors for Energy Management
|
||||||
|
author: Oliver Ochs, Sebastian Wendel
|
||||||
class: invert
|
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)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -13,38 +27,37 @@ class: invert
|
||||||
|
|
||||||
This is a prototype of data management platform for Fab City Hamburg based on existing open source solutions.
|
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
|
# Features
|
||||||
|
|
||||||
* Eclipse Mosquitto: MQTT broker
|
- [Eclipse Mosquitto](https://mosquitto.org/): MQTT broker
|
||||||
* Node-RED: Flow-based development tool for visual programming and data flow automation
|
- [Node-RED](https://nodered.org/): Flow-based development tool for visual programming and data flow automation
|
||||||
* InfluxDB: High-performance data storage
|
- [InfluxDB](https://www.influxdata.com/): High-performance data storage
|
||||||
* Grafana: Real-time data visualization and monitoring dashboard
|
- [Grafana](https://grafana.com/): Real-time data visualization and monitoring dashboard
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Today's Goal
|
# Today's Goal
|
||||||
|
|
||||||
* install the stack
|
- install the stack
|
||||||
* configure one or two data sources
|
- configure one or two data sources
|
||||||
* transform data and store them in a database
|
- transform data and store them in a database
|
||||||
* visualize data stored in the database
|
- visualize data stored in the database
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Architecture
|
# 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.
|
- 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.
|
|
||||||
|
|
||||||
|
- 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:
|
Sensors can be build or bought:
|
||||||
|
|
||||||
* Sensor head
|
- Sensor head
|
||||||
* ESP32 or equivalent
|
|
||||||
* OpenHardware or COTS (commercially of the self)
|
|
||||||
* Analog/Digital acquisition
|
|
||||||
* Communication gateway via WLAN / MQTT
|
|
||||||
|
|
||||||
* Examples measurements
|
- ESP32 or equivalent
|
||||||
* Energy measurement
|
- OpenHardware or COTS (commercially of the self)
|
||||||
* Temperature sensor -> temperature measurement
|
- Analog/Digital acquisition
|
||||||
* Pulse sensor -> incremental measurement of filament
|
- Communication gateway via WLAN / MQTT
|
||||||
|
|
||||||
|
- Examples measurements
|
||||||
|
- Energy measurement
|
||||||
|
- Temperature sensor -> temperature measurement
|
||||||
|
- Pulse sensor -> incremental measurement of filament
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Example sensor - Open Engergy Monitor
|
# 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
|
# 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
|
# 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)
|
# MQTT (Message Queuing Telemetry Transport)
|
||||||
|
|
||||||
* publish-subscribe, machine to machine network protocol
|
- publish-subscribe, machine to machine network protocol
|
||||||
* designed for connections with remote locations
|
- designed for connections with remote locations
|
||||||
* devices with resource constraints
|
- devices with resource constraints
|
||||||
* limited network bandwidth
|
- limited network bandwidth
|
||||||
* Internet of Things (IoT)
|
- Internet of Things (IoT)
|
||||||
* runs on top of TCP/IP, QUIC (UDP) or Bluetooth
|
- runs on top of TCP/IP, QUIC (UDP) or Bluetooth
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# MQTT - Components
|
# MQTT - Components
|
||||||
|
|
||||||
* one message broker (Mosquitto) and many clients
|
- one message broker (Mosquitto) and many clients
|
||||||
* broker receives published messages from clients
|
- broker receives published messages from clients
|
||||||
* routes them to subcribed clients
|
- routes them to subcribed clients
|
||||||
* clients subscribe to topic patterns
|
- clients subscribe to topic patterns
|
||||||
|
|
||||||
![bg right](https://upload.wikimedia.org/wikipedia/commons/8/82/MQTT_protocol_example_without_QoS.svg)
|
|
||||||
|
|
||||||
|
![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.
|
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)
|
![bg left](./images/nr-image-1.png)
|
||||||
* open-source
|
|
||||||
* low-code
|
- open-source
|
||||||
* visual programming tool
|
- low-code
|
||||||
* flow-based development
|
- 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:
|
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
|
- 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
|
- process messages or events and then passes them on to the next node
|
||||||
|
|
||||||
A node can:
|
A node can:
|
||||||
|
|
||||||
* Inject: Starts a flow by injecting a message or a payload.
|
- Inject: Starts a flow by injecting a message or a payload.
|
||||||
* Change: Here you can do basic transformation or modification on the message object.
|
- 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.
|
- 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).
|
- 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.
|
- 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:
|
Node-RED uses plugins:
|
||||||
|
|
||||||
* extend functionality (like dashboard)
|
- extend functionality (like dashboard)
|
||||||
* connectors (like influxdb)
|
- connectors (like influxdb)
|
||||||
* libraries (like aggregating watts and transform them to khw)
|
- libraries (like aggregating watts and transform them to khw)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Node-RED - Simple Flow
|
# 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,17 +175,17 @@ 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:
|
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
|
- Electrical activity in the brain
|
||||||
* Rainfall measurements
|
- Rainfall measurements
|
||||||
* Monthly subscribers
|
- Monthly subscribers
|
||||||
* Heartbeats per minute
|
- Heartbeats per minute
|
||||||
* Electricity consumed by a chain saw
|
- Electricity consumed by a chain saw
|
||||||
|
|
||||||
----
|
---
|
||||||
|
|
||||||
# Database - InfluxDB
|
# 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)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -180,9 +193,9 @@ InfluxDB is a database for any time series data. Time series data is everywhere,
|
||||||
|
|
||||||
Grafana is an open source analytics and interactive visualization tool.
|
Grafana is an open source analytics and interactive visualization tool.
|
||||||
|
|
||||||
* charts
|
- charts
|
||||||
* graphs
|
- graphs
|
||||||
* alerts for the web when connected to supported data sources.
|
- 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.
|
As a visualization tool, Grafana is a popular component in monitoring stacks, often used in combination with time series databases such as InfluxDB.
|
||||||
|
|
||||||
|
@ -190,28 +203,29 @@ As a visualization tool, Grafana is a popular component in monitoring stacks, of
|
||||||
|
|
||||||
# Dashboard - Example
|
# 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
|
# Let's start
|
||||||
|
|
||||||
* Check installation requirements
|
- Check installation requirements
|
||||||
* 64bit environment (AMD64, ARM64)
|
- 64bit environment (AMD64, ARM64)
|
||||||
* Docker
|
- [Docker](https://docs.docker.com/engine/install/)
|
||||||
* Docker-Compose
|
- [Docker-Compose](https://docs.docker.com/compose/install/)
|
||||||
* Checkout the repository:
|
- 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/iot-backend)
|
||||||
* Let's follow the README, together!
|
- [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?
|
# 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
|
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
594
docs/workshop/images/MQTT_protocol_example_without_QoS.svg
Normal 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 |
BIN
docs/workshop/images/breadboard.png
Normal file
After Width: | Height: | Size: 232 KiB |
BIN
docs/workshop/images/clamp1.jpeg
Normal file
After Width: | Height: | Size: 280 KiB |
BIN
docs/workshop/images/gcode-sender.png
Normal file
After Width: | Height: | Size: 442 KiB |
BIN
docs/workshop/images/image.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
docs/workshop/images/nr-image-1.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
427
docs/workshop/images/qrcode-chat.svg
Normal 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 |
550
docs/workshop/images/qrcode-slides.svg
Normal 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 |
Before Width: | Height: | Size: 5.8 KiB |
BIN
docs/workshop/images/shelly_plug_s_1-1.jpg
Normal file
After Width: | Height: | Size: 48 KiB |
104
flake.lock
|
@ -7,11 +7,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673295039,
|
"lastModified": 1695686713,
|
||||||
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
|
"narHash": "sha256-rJATx5B/nwlBpt7CJUf85LV27qWPbul5UVV8fu6ABPg=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
|
"rev": "e236a1e598a9a59265897948ac9874c364b9555f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -28,11 +28,11 @@
|
||||||
"utils": "utils"
|
"utils": "utils"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1674127017,
|
"lastModified": 1695052866,
|
||||||
"narHash": "sha256-QO1xF7stu5ZMDLbHN30LFolMAwY6TVlzYvQoUs1RD68=",
|
"narHash": "sha256-agn7F9Oww4oU6nPiw+YiYI9Xb4vOOE73w8PAoBRP4AA=",
|
||||||
"owner": "serokell",
|
"owner": "serokell",
|
||||||
"repo": "deploy-rs",
|
"repo": "deploy-rs",
|
||||||
"rev": "8c9ea9605eed20528bf60fae35a2b613b901fd77",
|
"rev": "e3f41832680801d0ee9e2ed33eb63af398b090e9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -44,11 +44,11 @@
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673956053,
|
"lastModified": 1668681692,
|
||||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -90,12 +90,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676283394,
|
"lastModified": 1694529238,
|
||||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -129,15 +132,14 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
]
|
||||||
"utils": "utils_2"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676367705,
|
"lastModified": 1695738267,
|
||||||
"narHash": "sha256-un5UbRat9TwruyImtwUGcKF823rCEp4fQxnsaLFL7CM=",
|
"narHash": "sha256-LTNAbTQ96xSj17xBfsFrFS9i56U2BMLpD0BduhrsVkU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "da72e6fc6b7dc0c3f94edbd310aae7cd95c678b5",
|
"rev": "0f4e5b4999fd6a42ece5da8a3a2439a50e48e486",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -148,11 +150,11 @@
|
||||||
},
|
},
|
||||||
"impermanence": {
|
"impermanence": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1675359654,
|
"lastModified": 1694622745,
|
||||||
"narHash": "sha256-FPxzuvJkcO49g4zkWLSeuZkln54bLoTtrggZDJBH90I=",
|
"narHash": "sha256-z397+eDhKx9c2qNafL1xv75lC0Q4nOaFlhaU1TINqb8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "impermanence",
|
"repo": "impermanence",
|
||||||
"rev": "6138eb8e737bffabd4c8fc78ae015d4fd6a7e2fd",
|
"rev": "e9643d08d0d193a2e074a19d4d90c67a874d932e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -163,11 +165,11 @@
|
||||||
},
|
},
|
||||||
"nixlib": {
|
"nixlib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1636849918,
|
"lastModified": 1693701915,
|
||||||
"narHash": "sha256-nzUK6dPcTmNVrgTAC1EOybSMsrcx+QrVPyqRdyKLkjA=",
|
"narHash": "sha256-waHPLdDYUOHSEtMKKabcKIMhlUOHPOOPQ9UyFeEoovs=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "28a5b0557f14124608db68d3ee1f77e9329e9dd5",
|
"rev": "f5af57d3ef9947a70ac86e42695231ac1ad00c25",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -184,11 +186,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676297861,
|
"lastModified": 1693791338,
|
||||||
"narHash": "sha256-YECUmK34xzg0IERpnbCnaO6z6YgfecJlstMWX7dqOZ8=",
|
"narHash": "sha256-wHmtB5H8AJTUaeGHw+0hsQ6nU4VyvVrP2P4NeCocRzY=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-generators",
|
"repo": "nixos-generators",
|
||||||
"rev": "1e0a05219f2a557d4622bc38f542abb360518795",
|
"rev": "8ee78470029e641cddbd8721496da1316b47d3b4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -199,11 +201,11 @@
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676699914,
|
"lastModified": 1695887975,
|
||||||
"narHash": "sha256-cM2Hd+odgCYWSUiYPZGW/4B+OI64S0lrdf9YR9ts9I4=",
|
"narHash": "sha256-u3+5FR12dI305jCMb0fJNQx2qwoQ54lv1tPoEWp0hmg=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "9bbcc37b011b0d925f3115888ea77f58487619b8",
|
"rev": "adcfd6aa860d1d129055039696bc457af7d50d0e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -214,11 +216,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676549890,
|
"lastModified": 1671417167,
|
||||||
"narHash": "sha256-sq/WcOEAl7gWrrfGkWdnyYazRyTf+enEim/o6LOQzI8=",
|
"narHash": "sha256-JkHam6WQOwZN1t2C2sbp1TqMv3TVRjzrdoejqfefwrM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8c66bd1b68f4708c90dcc97c6f7052a5a7b33257",
|
"rev": "bb31220cca6d044baa6dc2715b07497a2a7c4bc7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -230,27 +232,27 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673800717,
|
"lastModified": 1685801374,
|
||||||
"narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=",
|
"narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f",
|
"rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-22.11",
|
"ref": "nixos-23.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676569297,
|
"lastModified": 1695644571,
|
||||||
"narHash": "sha256-2n4C4H3/U+3YbDrQB6xIw7AaLdFISCCFwOkcETAigqU=",
|
"narHash": "sha256-asS9dCCdlt1lPq0DLwkVBbVoEKuEuz+Zi3DG7pR/RxA=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ac1f5b72a9e95873d1de0233fddcb56f99884b37",
|
"rev": "6500b4580c2a1f3d0f980d32d285739d8e156d92",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -273,11 +275,11 @@
|
||||||
"nixpkgs-stable": "nixpkgs-stable"
|
"nixpkgs-stable": "nixpkgs-stable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676513100,
|
"lastModified": 1695576016,
|
||||||
"narHash": "sha256-MK39nQV86L2ag4TmcK5/+r1ULpzRLPbbfvWbPvIoYJE=",
|
"narHash": "sha256-71KxwRhTfVuh7kNrg3/edNjYVg9DCyKZl2QIKbhRggg=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "pre-commit-hooks.nix",
|
||||||
"rev": "5f0cba88ac4d6dd8cad5c6f6f1540b3d6a21a798",
|
"rev": "cb770e93516a1609652fa8e945a0f310e98f10c0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -300,22 +302,22 @@
|
||||||
"pre-commit-hooks": "pre-commit-hooks"
|
"pre-commit-hooks": "pre-commit-hooks"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"utils": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676283394,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
"owner": "numtide",
|
"owner": "nix-systems",
|
||||||
"repo": "flake-utils",
|
"repo": "default",
|
||||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "nix-systems",
|
||||||
"repo": "flake-utils",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"utils_2": {
|
"utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1667395993,
|
"lastModified": 1667395993,
|
||||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||||
|
|
|
@ -6,20 +6,12 @@ with self.pkgs.${system};
|
||||||
[
|
[
|
||||||
# Development
|
# Development
|
||||||
editorconfig-checker
|
editorconfig-checker
|
||||||
esptool
|
|
||||||
micropython
|
|
||||||
nodePackages.node-red
|
|
||||||
openscad
|
|
||||||
pre-commit
|
pre-commit
|
||||||
python310Full
|
|
||||||
python310Packages.mkdocs
|
|
||||||
python310Packages.mkdocs-material
|
|
||||||
python310Packages.mkdocs-material-extensions
|
|
||||||
yaml-language-server
|
yaml-language-server
|
||||||
]
|
]
|
||||||
++ lib.optionals (pkgs.hostPlatform.system == "x86_64-linux") [
|
++ lib.optionals (pkgs.hostPlatform.system == "x86_64-linux") [
|
||||||
vscodium-fhs
|
vscodium-fhs
|
||||||
freecad
|
vscode-extensions.marp-team.marp-vscode
|
||||||
]
|
]
|
||||||
++ [
|
++ [
|
||||||
# Linter
|
# Linter
|
||||||
|
@ -27,19 +19,19 @@ with self.pkgs.${system};
|
||||||
yamllint
|
yamllint
|
||||||
|
|
||||||
# Nix
|
# Nix
|
||||||
deploy-rs
|
|
||||||
alejandra
|
alejandra
|
||||||
nixUnstable
|
nixUnstable
|
||||||
rnix-lsp
|
nil
|
||||||
|
|
||||||
# Service
|
# Service
|
||||||
mosquitto
|
mosquitto
|
||||||
|
|
||||||
|
# Marp slides
|
||||||
|
marp-cli
|
||||||
|
chromium
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
reuse
|
reuse
|
||||||
zstd
|
|
||||||
wget
|
|
||||||
raspberrypi-eeprom
|
|
||||||
];
|
];
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
${self.checks.${system}.pre-commit-check.shellHook}
|
${self.checks.${system}.pre-commit-check.shellHook}
|
||||||
|
|