Files

786 lines
49 KiB
Python
Executable File

"""
Applet: Octoprint Status
Summary: Request 3D printer status from Octoprint server to render in colorful display
Description: Request 3D printer status from Octoprint server to render in colorful display
Author: poprhythm
"""
load("render.star", "render")
load("schema.star", "schema")
load("http.star", "http")
load("cache.star", "cache")
load("humanize.star", "humanize")
load("encoding/base64.star", "base64")
DEFAULT_ADDR = "192.168.1.192"
DEFAULT_APIKEY = "8732A9B5BA5F406E9F1B482A9BC3AC19"
def main(config):
addr = config.get("addr", DEFAULT_ADDR)
apikey = config.get("apikey", DEFAULT_APIKEY)
printer_url = "http://%s/api/printer" % addr
printer_rep = http.get(printer_url, headers={"X-Api-Key": apikey})
if printer_rep.status_code != 200:
print("OctoPrint printer request failed with status %d",
printer_rep.status_code)
return render_failure(printer_rep.status_code)
job_url = "http://%s/api/job" % addr
job_rep = http.get(job_url, headers={"X-Api-Key": apikey})
if job_rep.status_code != 200:
print("OctoPrint job request failed with status %d",
job_rep.status_code)
return render_failure(job_rep.status_code)
# heater status
printer_json = printer_rep.json()
toolTemp = float(printer_json["temperature"]["tool0"]["actual"])
toolTempTarget = float(printer_json["temperature"]["tool0"]["target"])
heaterImg = HEATER_IMG
if toolTempTarget != None and toolTempTarget > 0: # animated icon if it is heating
heaterImg = HEATER_HEATING_IMG
bedTemp = float(printer_json["temperature"]["bed"]["actual"])
bedTempTarget = float(printer_json["temperature"]["bed"]["target"])
bedImg = BED_IMG
if bedTempTarget != None and bedTempTarget > 0:
bedImg = BED_HEATING_IMG
render_temp = render.Row([
render.Row([
render.Padding(render.Image(src=heaterImg), (0,0,1,0)),
render.Text("%s°" % humanize.ftoa(toolTemp,0))
]),
render.Row([
render.Image(src=bedImg),
render.Text("%s°" % humanize.ftoa(bedTemp,1))
])
],
expanded = True,
main_align = "space_between"
)
# job status
job_json = job_rep.json()
job = job_json["job"]["file"]["name"]
if job != None:
percent = job_json["progress"]["completion"]
printTime = job_json["progress"]["printTime"]
printTimeLeft = job_json["progress"]["printTimeLeft"]
if printTime != None:
percent = printTime / (printTime + printTimeLeft) * 100
render_title = render.Marquee(
width = 64,
child = render.Text(job),
)
render_time = get_render_time(printTime, printTimeLeft)
render_progress = progress_bar(64, 6, percent)
else:
# no current job, print empty progress
render_title = render.Text("Ready.")
render_time = render.Text("")
render_progress = progress_bar(64, 6, 0)
return render.Root(
child = render.Stack([
render.Row([
render.Padding(
render.Image(src=OCTOPRINT_LOGO_IMG),
(0,1,10,0))
], expanded=True, main_align="center"),
render.Column(
children = [
render_temp,
render_title,
render.Padding(render_time, (0,2,0,0)),
render_progress
]
)]
)
)
def get_render_time(timeElapsed, timeLeft):
if timeElapsed == None:
return render.Text("")
if timeLeft == None or timeLeft == 0:
return render.Row([
render.Text("End: %s" % time_format(timeElapsed))
],
expanded = True,
main_align = "center"
)
return render.Stack([
render.Row([
render.Padding(render.Image(src=TIME_ELAPSED_IMG), pad=(0,1,0,0)),
render.Padding(render.Image(src=TIME_LEFT_IMG), pad=(0,1,0,0))
],
expanded = True,
main_align = "space_between"
),
render.Row([
render.Text(time_format(timeElapsed)),
render.Text(time_format(timeLeft))
],
expanded = True,
main_align = "space_between"
)
]
)
def progress_bar(width, height, percent):
percentWidth = int(percent / 100 * (width - 2))
percentWidth = max(percentWidth, 1) # value of 0 doesn't render correctly
return render.Box(
render.Box(
render.Row([
render.Box(
render.Row([
# highlight on percent
render.Box(
width=1,
height=height - 2,
color="#0F0"
)],
main_align="end",
expanded=True
),
# current progress
width=percentWidth,
height=height - 2,
color="#0A0",
)
],
main_align="start",
expanded=True
),
# dark center
width=width - 2,
height=height - 2,
color="#010"
),
# border
width=width,
height=height,
color="#060"
)
# https://stackoverflow.com/a/68321739/99492
def time_format(seconds):
if seconds != None:
seconds = int(seconds)
h = seconds // 3600 % 24
m = seconds % 3600 // 60
if h > 0:
return '{}H {}m'.format(h, m)
elif m > 0:
return '{}m'.format(m)
return '-'
def render_failure(msg):
return render.Stack([
render.Row([
render.Image(src=OCTOPRINT_LOGO_IMG)],
expanded=True, main_align="center"
),
render.Marquee(
render.Text(msg),
width = 64,
)
])
def get_schema():
return schema.Schema(
version = "1",
fields = [
schema.Text(
id = "addr",
name = "IP/Domain",
desc = "IP or Domain of OctoPrint Server",
icon = "location-dot",
default = DEFAULT_ADDR,
),
schema.Text(
id = "token",
name = "API key",
desc = "OctoPrint User API Key",
icon = "hashtag",
default = DEFAULT_APIKEY,
)
],
)
TIME_ELAPSED_IMG = base64.decode("""
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
""")
TIME_LEFT_IMG = base64.decode("""
R0lGODlhCgAGAPcAAAAAAAMDAwYHBgcJBwcICAgLCAkNCQoRCw0RDQ0WDg4ZDg8VEA8dEBIaEhIf
FBMgFBUnFQICAgYGBgcIBwkKCQoMCg0PDg0QDQ8UEBMWExIZEhUbFRMfFRgeGRgiGR4nHxcrGBop
HB01HyIxIyQ6JyU7KCVDISZIJCdIKihIKzFYLQkJCQsNDBASEREVEhYcFhkdGRkjGh0lHhwrHSEo
IiIvIyA3Iik1KiY6KClHLC5ULDFDMjFfMzZSOTdpMzZvNzljPTpkPkF5QUJ8QkaIRAwNDQ8RDxES
EhQXFBUZFRwfHBohGxwhHCAqISMsJCcvKCQ0JSc/Kis5LDI+MzM/NDFHMzBZMjVVOD1RPzh5PTtu
QEVkR0VlSEp2Tkt5UDuHRk6VSlCRRlGWVkyvW02xXGO0WWW1WgwODRETERcaGBgaGBgdGSAoISMp
JCIxJCg0KSY7KC45LyxOLy5CMDlKOjNQNiloNzhjPUJ5PUJdRUlyTS+ARD+rXEaFRUaIQ0aRSU6J
U0+KVECtXVunWFypWlm0W1q1XBASEBUYFRsiHB0jHSEsIiUuJiU2JikxKiw8LhtZMShCKzNBNTRC
NjJKNDNfNTZZOjR1PD5TQD9VQSV3Qj1zQUZnSUdoSkt8UU1+UjiHRjOmXDSpXVOWSFCaS1KaVlOc
WEmvXEqxXWW4W2a5XBoeGh8oHyEpIiQqJSMyJSk2KiY9KS86MDA7MRtYMTBEMTpLOzpMPC1SMDRS
NyVkNTlnPSx9RENfRURgRklzTkp1TzypXD2sXUGDQUeBQUmKR0KPSU6NU1CPVV6sWVWzXFa1XWCu
WhYbFx4kHyEtIiYxJyU4JyozKys0LC09LypGLDVENzNMNTdcOzhoODBwOj9WQUBXQkdqSkhsS0B5
QzWERk6RRk2XS02CUlWfV0evXVahWGG3W2K4XCcyKCY5KC4/LytKLTNONjdGODdfPC1sOT1wO0BZ
QkdtS0lvTEJ/RDKCRUqNRUmVSk6GU0OuXVijWFmlWV22W163XDOpXSH/C05FVFNDQVBFMi4wAwEA
AAAh/wtJbWFnZU1hZ2ljaw5nYW1tYT0wLjQ1NDU0NQAh+QQAHgD/ACH+IENyZWF0ZWQgd2l0aCBl
emdpZi5jb20gR0lGIG1ha2VyACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh/wtJbWFnZU1hZ2ljaw5nYW1t
YT0wLjQ1NDU0NQAh+QQAHgD/ACwAAAAACgAGAAACBoSPqcvtWQAh+QQAHgD/ACwAAAAACgAGAAAF
H6ByGMUgCEEKPc2CkGiwtm8Rzy6sOrRBxIzEy2CKhQAAIfkEAB4A/wAsAAAAAAoABgAABilAE4ij
wVwqE0lElSqNPp2MhbJsPqPTqhMqpapQpGs3chKFPJvMhaIMAgAh+QQAHgD/ACwAAAAACgAGAAAH
LoA+OjYzMS8uFisSRENBPTs3NDAtK4yOkJKUlo+Rk5VCQJyZKz88OTg1MocsEoEAIfkEAB4A/wAs
AAAAAAoABgAABzSAWWFWUVBNS0lGFGRmYl5cWFRPTEeMjpCSlJaPkZNHY2ViXVtYU09KR19gWldV
Uk5MSEWBACH5BAAeAP8ALAAAAAAKAAYAAAg5AO34wSMHjpsPazKcEWSIUCA9eejEaaOGoUOIEila
fBhxoho+hQYBwhiHTZo9f/rcqTPnDZs1aAICACH5BAAeAP8ALAAAAAAKAAYAAAg6ACFdGlUpUqNF
iRAdEoVKlalPnTJNcqSIoUOIEilafBhxoqJQp1KV8sQJkySKmkCR2mSJ0iNGihAFBAAh+QQAHgD/
ACwAAAAACgAGAAAIOwBp6RpGDFesV6xWZRAlbBkzZMB83ZrliqFDiBIpWnwYcaKrUMGUJTv2q5ct
Wa408TJWbFeuWrBarQoIACH5BAAeAP8ALAAAAAAKAAYAAAg7AGnR0hYuW7Voz5w1EyWqHDpz47xx
szaNoUOIEilafBhx4rRQocqdIzeu2zZr0jRpAifuG7Zr1KA5CwgAIfkEAB4A/wAsAAAAAAoABgCE
GiAaHykgIysjJDQlKjcrJz4qMTwxG1gxMEUyO049PE8+L1YxNFQ4IWAzOms+JXdCKntDPX5ARWNH
SXVPS3dQP4xIM6ZcNKldOatdTIpDTJFJT5FVUJNVUrNdY7NbAAAABSjgcTRRthRDAFwX1nkcJSkG
68Iybb/xbFiW22YiSRgeD0hF42AgCIIQACH5BAAeAP8ALAAAAAAKAAYAAAg1AGkJhHcvHjt1NWSI
WqjPH7989OS5Wyiq4cOIExk6hCgxlEd9/fblmydRk0l7+Oq9a7cuXUAAIfkEAB4A/wAsAAAAAAoA
BgCEICshJDUmKD8qKzksG1gxHVsyMUczMFkzNVY5PFA+O28/OHk+JXdCJ3lCRWRIS3hPTHpRO4lH
M6ZcNadcNKldT5dKUZNGUpdXTrJdZrdbAAAAAAAAAAAAAAAAAAAAAAAABSMgIRaLdQgBQK0Ull2Q
k7DtG8+sC8tSP+kPGWPYiFQUCMMgBAAh+QQAHgD/ACwAAAAACgAGAIQiMSQmOygbWDEsTi8uQjAz
UDYpaDc4Yz1CeT0ld0JBXERIcEwvgEQzplw0qV0/q1xGhUVGiENGkUlOiVNPilRArV1bp1lcqVpZ
tFtatVwAAAAAAAAAAAAAAAAAAAAAAAAFJaAgCkaEDAHgrE6VXdSisO0bz6wLy03fPBjLRJYoJhgS
yKFACAEAIfkEAB4A/wAsAAAAAAoABgAACDIAaQkUeGlUpUiN/olaKAqVKlOfOilk6BCiRIYNH0YM
xZHjqVSlPHHSRJIkKFKbLFEKCAAh+QQAHgD/ACwAAAAACgAGAIQmPSkaWDEtUjA0UjclZDU5Zz0j
d0Ild0IsfURJc05KdU8zplwzqV00qV08qVw9rF1Bg0FHgUFJikdCj0lPjVRQj1VerFlVs1xWtV1g
rloAAAAAAAAAAAAAAAAAAAAAAAAFJWAgigQUCQDDNOyDZZWiso0Ly2v7xkvfOxcLJWE4GA+IiaQw
CAEAIfkEAB4A/wAsAAAAAAoABgCEGlgxKkYsN1w7OWg4MHA6I3dCJXdCQHlDNYRGM6ZcM6ldNKld
TpFGTZdLTIBRVZ9XRq9dVqFYYbdbYrhcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAABSEgII4EMwSKsqwLNEVOyrZvrLIunOw8JD2OgmE4RDQOghAAIfkEAB4A/wAsAAAAAAoABgCE
GlgxL1YxIWAzOms+PX4/I3dCJXdCKXtDP4xIM6ZcMqldNKldOatdTYtETJFJT5FUUJNVUrNdYrFa
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAgII4C0QRKuqxMJEGpsi7t
G881lOx8/RQFg9BwQDgGIQAh+QQAHgD/ACwAAAAACgAGAIQaWDEsbDk9cDsjd0Ild0IygkUzplwy
qV00qV1DgERKjEVJlEpDrl1Yo1hZpVldtltet1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAFICAgjkCgCEeKrAgDOenBtm88u46h7wbzNIMBYTgsLBIhACH5BAAe
AP8ALAAAAAAKAAYAgxpYMR1bMjh5PiN3QiV3QiZ5QjuJRzOmXDWnXDGpXTSpXU+XSlKTR0ywXGW2
Wma4WwQcEMgJgmApJ8VVe9rWfWHnPUeqHkjjDDAhE4WxRAAh+QQAHgD/ACwAAAAACgAGAIMaWDEc
WzI3eD0jd0Ild0ImeEI7iUczplw0plwxqV00qV1SlEdQmEtMsFxlt1tmuVsEHBDICYJYKSfFVXva
1n1h5z1Hqh5I4wwwIROFwUQAIfkEAB4A/wAsAAAAAAoABgCDGlgxHFsyN3g9I3dCJXdCJnhCO4lH
M6ZcNKZcMaldNKldUpRHUJhLTLBcZbdbZrlbBBwQyAmCWCknxVV72tZ9Yec9R6oeSOMMMCEThcFE
ACH5BAAeAP8ALAAAAAAKAAYAgxpYMRxbMjd4PSN3QiV3QiZ4QjuJRzOmXDSmXDGpXTSpXVKUR1CY
S0ywXGW3W2a5WwQcEMgJglgpJ8VVe9rWfWHnPUeqHkjjDDAhE4XBRAAh+QQAHgD/ACwAAAAACgAG
AIMaWDEcWzI3eD0jd0Ild0ImeEI7iUczplw0plwxqV00qV1SlEdQmEtMsFxlt1tmuVsEHBDICYJY
KSfFVXva1n1h5z1Hqh5I4wwwIROFwUQAIfkEAB4A/wAsAAAAAAoABgCDGlgxHFsyN3g9I3dCJXdC
JnhCO4lHM6ZcNKZcMaldNKldUpRHUJhLTLBcZbdbZrlbBBwQyAmCWCknxVV72tZ9Yec9R6oeSOMM
MCEThcFEACH5BAAeAP8ALAAAAAAKAAYAgxpYMRxbMjd4PSN3QiV3QiZ4QjuJRzOmXDSmXDGpXTSp
XVKUR1CYS0ywXGW3W2a5WwQcEMgJglgpJ8VVe9rWfWHnPUeqHkjjDDAhE4XBRAAh+QQAHgD/ACwA
AAAACgAGAIMTQyUUQyUVRSYbWzIcWzIqWy8taDY+cTY9czknf0Yof0YlgUcogUc6hkZNi0VOjEUE
HRCAQKkoZ+nFOmvPxnmg6H1Poq6J0jhDPBA0YSARACH5BAAeAP8ALAAAAAAKAAYAgw0tGRw9HxM9
Ih5FJBlWLxtWLypLJClOJidZLzRdLgAAAAAAAAAAAAAAAAAAAAAAAAQWEMgpgyE4Y5S05lqRgR5R
cEKqpsMRAQAh+QQAHgD/ACwAAAAACgAGAIMHFw0KHxEKIBIPIBAPJBMNLBgWJxMVKBQULhgbMBgA
AAAAAAAAAAAAAAAAAAAAAAAEFRDIKYcpOGOUtOZeBoYFF5xoIBBHBAAh+QQAHgD/ACwAAAAACgAG
AIAAAQEAAAACBoSPqcvtWQA7
""")
BED_IMG = base64.decode("""
iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAACXBIWXMAAAABAAAAAQBPJcTWAAAA
JHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAAOklEQVQImWNg
GIyAkYGBQVhEkJuHCy70/duP16/eMjAwMBy7sOHD/xuvf115/OH04w+n5y/tYWBgAABvthTUZxtr
XQAAAABJRU5ErkJggg==
""")
BED_HEATING_IMG = base64.decode("""
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
""")
HEATER_IMG = base64.decode("""
iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAACXBIWXMAAAABAAAAAQBPJcTWAAAA
JHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAAYklEQVQImU2N
QRHAQAgD01OAJCQgAWknASlIiIQ4aB902tsXEyALAJLuA0kAVmaSvA5IZuaKiO7GQXdHBNxdUlVN
WlWS3H1N4957FjNIes0kzczMSI7/+ho+R0T8wrmdv0keZFdOYvzGnSEAAAAASUVORK5CYII=
""")
HEATER_HEATING_IMG = base64.decode("""
R0lGODlhCAAIAPcAAAAAABAQEDAwMEBAQGBgYN62PuivPeC3Pe21P/bBO/vJOLuibcuLRtSWRdub
Rt6kQ+SnRO20QMGraqOioamnorCwsLS0sdHR0ODg4PDw8P///963P/K8PvnFOvvIOb6ka9aVR9+i
Rd2yQOmvQsGpaqWkobW0sdLR0dyyPu23PffGN/jIN/XCOfXEOb6oa9qcRNuwQOOqQaelotLS0dux
P+iwP/G9OvfHN/XDOPbFOL6na9+jRNmtQMGraaimotPS0dmtP+25PfK+OvTDObyka7+qadWrQeSr
QOixPe+9OfC+OfTDNvXENfLBOLujar6padOoQdWsQOu3O+u4O+67OvC/OPLCNvHBOLmha7ymatCk
QtKoQOm2POy4O+68OfHBN7iga72lac2iQNGmQKinou69N+exOum2Oeu6OPC/N7efa7qlacueQs2i
QeOuPOq5N+29NuexO+m1Ou/ANbSca7miacedQsueQd+pPOOvO+y8NuezO+i1Oeq5OLmgacWZQ8md
QtumO96rOuOuOei3N+m6NeayOLafarKZbMKWQ8WYQaemotmhPdumPN6sO+OvOue3NuayObCXbLWf
asCSQ8OWQtaePNmjOtqoOd6rOOKwOOW0OL2PRL+TQ66Wa7ObarSzsdKcPdafPNupOeKvN7qMQr2P
Qq6WbbGbas+XPdKbPdahPNmkO96tObiLQ72OQqyTa7GYa6akoc2TPs+ZPNGcO9qoN9SgOdilOLWH
Q7iKQ6uRa7CYa6Sjoc6WPdGaPdWfPNiiO9qnOt2sObiIQ7yMQ6uTa7GXa9GbPtiiOt2qOOKuN7qL
Q66TbbGZatmjO+OwOr2PQ7+SQq+Wa7SbatmiPdyoO9+sOuSvOei4NuezOMOWQ8CSRN+qOuq6N+e0
OOi4OMSVQsaaQeCsPOu6N+6/NeWxO+izOum3OMeZQsqeQeWuOu6/Num4OfDANbWda7qiacmeQcug
QOm1PO27Ou++OLulacyfQtCkQO+8OfPDNvHAOL6nabujbNOnQtWrQCH/C05FVFNDQVBFMi4wAwEA
AAAh+QQAFAD/ACH+IENyZWF0ZWQgd2l0aCBlemdpZi5jb20gR0lGIG1ha2VyACwAAAAACAAIAAAF
MSCQaaSWAcTFNI9xEdXkQEhCVUNmRYmVDYLMIqGQZIIazKGAMQEAFYul8nwGMJjAMwQAIfkEABQA
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
""")
OCTOPRINT_LOGO_IMG = base64.decode("""
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAu5JREFUSEut
VkFrE0EU/t6mm11qq7WhVAUP6qEHD4IHkRSkiBGFLHjwVDClSNf/tCVCLj0FxKZCIeBFGhS8iyCo
KFSQxKq1ZpPuPnmzO+1umjQR3Ut2Zt77vpnve/M2hBEfO48QAMXh3G7AGCVVJwyMtRywLFIzHcK5
aOzXDkj7YhxLIOBLZ12VWNn2mJoRGOfUvHqvbHvHkhxL4Lqu2r1+BEweTarnPc8biDOUoFqt7rda
rTHXddVuNYHneWzbdlgqlTJDCSwHXQBj2kC/FhkoEvk1YGVlhSvbq0TxdpiBB7MPw3K5bFjOoQ+W
kyoEJR1ZRYhNRWWigZBPK3ABNqx5zGEab8RjWdfGJt+Nr7j++yVeaXD6hhAhDIkl4DXJLqmJsN1A
xs5HFSOLujqSc0k/dFW1G5HxMY4KkTk7j33OIUP2TXTaz5HVyQKYLEGpf55WN4BErhgMYDC1FJjI
dFDKmlDi7AV0ybqDjr+ZJtCnUL+MNSIsyrsTE9Qc7RaqINyXUe+JFMEtdI5U0SBJJOF2DYEJ0DPn
6C3uR6CIk7omtVQmNRFgAswWxuYnC6nQrZ91kI8udpHhHAxtfO/NHkiQlEmD61unk4QkKU+yOPRu
+hKktspgMTg/UWCiuFUwuLFbJzFa1pLxQ0+gZTpIYvBl/2o4NZPLJIE+f38ffKR3RpKgX+Pr2yp0
2WnAXv31vJZIj0ci6AWPRJZ6BeatgrJhy69HwqRaYUQzVKL4Rkqqgrgyu0BhCEyOm4xurLd5qH3j
Q13HpjrAQJN7PRB5dne6mBg3cebE+Q1Z//LrU1EBZIGkTCNJpJmVVAy+GMzRpfFrG2HAPHUqm/JM
iLbadVVJg75sA78HunlJb1lcWl43/Sd337YKm8oSZrpw7iSvVR47unf9E4GAuiWEne6U2lDW3EGw
bz0tr/n3/gvBoyUsB0Fmda89o+6Clf0RmOZexquotqy671+fIGU24YW/jhvJvy3ZIipEKPUrzeSF
/AM7fFQkgOzlEwAAAABJRU5ErkJggg==
""")