From 8e33f4cb0ba3adc81cf822525543033cd2bf0d06 Mon Sep 17 00:00:00 2001 From: John Coffey Date: Sat, 22 Aug 2026 17:26:26 -0700 Subject: [PATCH] Adopt the v2 "faceted glow" logo package, with the wordmark outlined Swaps every brand asset the web UI imports for the v2 package: faceted stones with per-stone gradients and an ambient glow, replacing v1's flat four-colour paths. Raster favicons (16/32/48/180/512) are the package's own renders at the sizes already referenced, so the layout head is unchanged. Two things the swap needed beyond copying files in: - v2 ships no light-background stacked lockup, but the landing page picks one on theme. Derived it from the stacked-dark file the same way the package derives its own horizontal-light variant: same stone geometry and gradients, glow dropped, wordmark on light-surface ink/accent. - The stacked lockup is 360x320, no longer square; the landing page hard set an 11rem square, which stretched the wordmark. Height is auto now. The wordmark is outlined rather than left as live text. Upstream sets it in JetBrains Mono, but these load via and are inlined as data URIs, and an -loaded SVG cannot reach the page's @font-face rules -- so neither JetBrains Mono nor our self-hosted Overpass Mono applied and the wordmark rendered in each visitor's default monospace, changing shape by platform. web/scripts/outline-wordmark.py converts every to paths set in Overpass Mono Bold, the font the app already ships, so the lockup is pixel-stable and agrees with the UI's own type. Re-run it after refreshing the package, which will ship live again. The four lockups now exceed Vite's 4KB inline threshold and ship as separate hashed immutable assets instead of data URIs duplicated across chunks. Unused package variants (icons, wordmarks, hero) are carried for completeness and imported nowhere, so they are not bundled. --- web/scripts/outline-wordmark.py | 148 +++++++++++++++++++ web/src/lib/assets/README.md | 70 +++++++++ web/src/lib/assets/favicon.svg | 25 +++- web/src/lib/assets/hero-grid.svg | 54 +++++++ web/src/lib/assets/icon-flat.svg | 25 ++++ web/src/lib/assets/icon-glow.svg | 47 ++++++ web/src/lib/assets/icon-mono-black.svg | 8 + web/src/lib/assets/icon-mono-white.svg | 8 + web/src/lib/assets/logo-horizontal-dark.svg | 47 ++++-- web/src/lib/assets/logo-horizontal-light.svg | 39 +++-- web/src/lib/assets/logo-stacked-dark.svg | 44 +++++- web/src/lib/assets/logo-stacked-light.svg | 37 ++++- web/src/lib/assets/wordmark-dark.svg | 6 + web/src/lib/assets/wordmark-light.svg | 6 + web/src/routes/+page.svelte | 4 +- web/static/icons/favicon-16.png | Bin 535 -> 516 bytes web/static/icons/favicon-180.png | Bin 4723 -> 7106 bytes web/static/icons/favicon-32.png | Bin 968 -> 1002 bytes web/static/icons/favicon-48.png | Bin 1491 -> 1596 bytes web/static/icons/favicon-512.png | Bin 11522 -> 22782 bytes 20 files changed, 524 insertions(+), 44 deletions(-) create mode 100644 web/scripts/outline-wordmark.py create mode 100644 web/src/lib/assets/README.md create mode 100644 web/src/lib/assets/hero-grid.svg create mode 100644 web/src/lib/assets/icon-flat.svg create mode 100644 web/src/lib/assets/icon-glow.svg create mode 100644 web/src/lib/assets/icon-mono-black.svg create mode 100644 web/src/lib/assets/icon-mono-white.svg create mode 100644 web/src/lib/assets/wordmark-dark.svg create mode 100644 web/src/lib/assets/wordmark-light.svg diff --git a/web/scripts/outline-wordmark.py b/web/scripts/outline-wordmark.py new file mode 100644 index 0000000..5c8a807 --- /dev/null +++ b/web/scripts/outline-wordmark.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python3 +"""Convert the in the brand lockups to outlines. + +Why: the lockups in src/lib/assets are loaded via (and inlined as +data URIs at build time). An -loaded SVG is an isolated document -- it +cannot reach the page's @font-face rules, so the app's self-hosted Overpass +Mono never applies to a element inside one. The wordmark therefore +rendered in whatever each visitor's default monospace happened to be, and +changed shape by platform. Outlining against the font we already ship makes +it pixel-stable everywhere and matches the product's own typography. + +Re-run this after refreshing the logo package from upstream (upstream ships +live ). Idempotent: files with no left are skipped. + + python3 web/scripts/outline-wordmark.py + +Only is rewritten; every other byte of each file is left alone. +""" + +import re +import sys +from pathlib import Path +from xml.dom import minidom + +from fontTools.pens.svgPathPen import SVGPathPen +from fontTools.pens.transformPen import TransformPen +from fontTools.ttLib import TTFont +from fontTools.varLib import instancer + +ROOT = Path(__file__).resolve().parent.parent +FONT = ROOT / "static/fonts/overpass-mono-variable.woff2" +ASSETS = ROOT / "src/lib/assets" + +# Every lockup sets font-weight 700; the variable font defaults to 300. +WEIGHT = 700 + +TEXT_RE = re.compile(r"[ \t]*\s*?\n", re.DOTALL) + + +def ntos(v): + """Two decimals is ~0.005px at the largest size any lockup is drawn at. + + The default str() emits full float repr (15.264000000000001), which more + than doubles the path data for no visible gain -- and these files ship + inlined in the bundle. + """ + return f"{v:.2f}".rstrip("0").rstrip(".") or "0" + + +def load_glyphset(): + font = TTFont(FONT) + font = instancer.instantiateVariableFont(font, {"wght": WEIGHT}) + return font.getGlyphSet(), font.getBestCmap(), font["hmtx"], font["head"].unitsPerEm + + +def runs_of(node): + """Flatten a into (string, fill-override) runs, in document order. + + Handles the one nesting the lockups use: bare text plus . + """ + out = [] + for child in node.childNodes: + if child.nodeType == child.TEXT_NODE: + if child.data: + out.append((child.data, None)) + elif child.nodeType == child.ELEMENT_NODE and child.localName == "tspan": + text = "".join(c.data for c in child.childNodes if c.nodeType == c.TEXT_NODE) + out.append((text, child.getAttribute("fill") or None)) + return [(t, f) for t, f in out if t] + + +def outline(gs, cmap, hmtx, upem, runs, x, y, size, spacing, anchor): + """Return [(fill, path-d)], laying runs out left to right from the anchor.""" + scale = size / upem + advances = [hmtx[cmap[ord(c)]][0] * scale for t, _ in runs for c in t] + n = len(advances) + # Trailing letter-spacing is excluded: it is not ink, and including it + # would bias a centred lockup half a unit to the left. + width = sum(advances) + spacing * (n - 1) if n else 0.0 + + if anchor == "middle": + cursor = x - width / 2 + elif anchor == "end": + cursor = x - width + else: + cursor = x + + paths = [] + for text, fill in runs: + pen = SVGPathPen(gs, ntos=ntos) + for ch in text: + gname = cmap[ord(ch)] + # y flips: font units are y-up, SVG user space is y-down. + gs[gname].draw(TransformPen(pen, (scale, 0, 0, -scale, cursor, y))) + cursor += hmtx[gname][0] * scale + spacing + paths.append((fill, pen.getCommands())) + return paths + + +def convert(path, gs, cmap, hmtx, upem): + src = path.read_text() + blocks = TEXT_RE.findall(src) + if not blocks: + return False + + out = src + for block in blocks: + node = minidom.parseString(block.strip()).documentElement + indent = re.match(r"[ \t]*", block).group(0) + + runs = runs_of(node) + base_fill = node.getAttribute("fill") or "#000" + paths = outline( + gs, cmap, hmtx, upem, runs, + x=float(node.getAttribute("x") or 0), + y=float(node.getAttribute("y") or 0), + size=float(node.getAttribute("font-size")), + spacing=float(node.getAttribute("letter-spacing") or 0), + anchor=node.getAttribute("text-anchor") or "start", + ) + + rendered = "".join( + f'{indent}\n' + for fill, d in paths if d + ) + out = out.replace(block, rendered, 1) + + path.write_text(out) + return True + + +def main(): + if not FONT.exists(): + sys.exit(f"font not found: {FONT}") + gs, cmap, hmtx, upem = load_glyphset() + + touched = 0 + for svg in sorted(ASSETS.glob("*.svg")): + if convert(svg, gs, cmap, hmtx, upem): + print(f"outlined {svg.relative_to(ROOT)}") + touched += 1 + else: + print(f"no {svg.relative_to(ROOT)}") + print(f"\n{touched} file(s) rewritten") + + +if __name__ == "__main__": + main() diff --git a/web/src/lib/assets/README.md b/web/src/lib/assets/README.md new file mode 100644 index 0000000..a26d846 --- /dev/null +++ b/web/src/lib/assets/README.md @@ -0,0 +1,70 @@ +# Brand assets + +Cairn OBS logo package **v2 ("faceted glow")**. Source package: +`cairn-obs-logo-v2`, copied in here and renamed to this directory's +convention (the `cairn-obs-` prefix is dropped -- the directory already +says whose brand it is). + +Everything is a plain `` over four shared gradient stops, so a +re-theme is a find/replace on the stops rather than a redraw. + +## What the app actually uses + +| File | Used by | +| --- | --- | +| `favicon.svg` | `routes/+layout.svelte` (``) | +| `logo-horizontal-dark.svg` / `-light.svg` | `components/NavSidebar.svelte`, picked on theme | +| `logo-stacked-dark.svg` / `-light.svg` | `routes/+page.svelte` (landing), picked on theme | + +The rest are carried for completeness and are **not** imported anywhere, +so Vite does not emit them into the bundle: + +- `icon-glow.svg` / `icon-flat.svg` -- mark only, with and without the + ambient glow. Use `-flat` anywhere an SVG filter gets stripped. +- `icon-mono-white.svg` / `icon-mono-black.svg` -- single-colour + silhouettes. +- `wordmark-dark.svg` / `wordmark-light.svg` -- text only. +- `hero-grid.svg` -- 800x480 banner scene (social card, splash). + +Raster favicons live in `web/static/icons/` (16/32/48/180/512), served +from `/icons/` and referenced by absolute path in the layout head. + +## Two things to know before editing + +**`logo-stacked-light.svg` is derived, not vendored.** The v2 package +ships no light-background stacked lockup, but the landing page needs one +for light theme. It is the stacked-dark file with the treatment the +package itself applies to its horizontal pair: same stone geometry and +gradients, ambient glow dropped (it reads as haze on white), wordmark +switched to the light-surface ink and accent (`#111315` / `#E6690E`). +If the package is refreshed, re-derive it rather than assuming an +upstream file appeared. + +**The wordmark is outlined, not live text.** Upstream ships the lockups +with a `` element set in `'JetBrains Mono','Fira Code',ui-monospace, +monospace`. That does not survive the way this app loads them: they go +through `` (and get inlined as data URIs at build time), and an +``-loaded SVG is an isolated document that cannot reach the page's +`@font-face` rules. Neither our self-hosted Overpass Mono nor JetBrains +Mono applied, so the wordmark fell back to each visitor's default +monospace and changed shape by platform. + +Every `` has therefore been converted to `` outlines set in +**Overpass Mono Bold** -- the font the app already ships and uses for its +own monospace UI, so the lockup and the interface now agree. The +conversion is scripted: + + python3 web/scripts/outline-wordmark.py + +Re-run it after refreshing the package from upstream (upstream will ship +live `` again). It rewrites only `` elements, leaves every +other byte alone, and skips files that have none, so it is safe to re-run. +Editing the wordmark's copy or spacing now means editing the upstream +`` and re-running the script -- not hand-editing path data. + +## Aspect ratios + +Changed from v1 -- constrain one axis and leave the other `auto`: + +- horizontal lockups: 640x160 (v1 was 600x140) +- stacked lockups: 360x320, **not square** (v1 was 360x360) diff --git a/web/src/lib/assets/favicon.svg b/web/src/lib/assets/favicon.svg index 4462b29..7109002 100644 --- a/web/src/lib/assets/favicon.svg +++ b/web/src/lib/assets/favicon.svg @@ -1,9 +1,20 @@ - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/web/src/lib/assets/hero-grid.svg b/web/src/lib/assets/hero-grid.svg new file mode 100644 index 0000000..291a8a2 --- /dev/null +++ b/web/src/lib/assets/hero-grid.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/lib/assets/icon-flat.svg b/web/src/lib/assets/icon-flat.svg new file mode 100644 index 0000000..62c1e00 --- /dev/null +++ b/web/src/lib/assets/icon-flat.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/lib/assets/icon-glow.svg b/web/src/lib/assets/icon-glow.svg new file mode 100644 index 0000000..940fec4 --- /dev/null +++ b/web/src/lib/assets/icon-glow.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/lib/assets/icon-mono-black.svg b/web/src/lib/assets/icon-mono-black.svg new file mode 100644 index 0000000..4ebcb8d --- /dev/null +++ b/web/src/lib/assets/icon-mono-black.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/web/src/lib/assets/icon-mono-white.svg b/web/src/lib/assets/icon-mono-white.svg new file mode 100644 index 0000000..28c5396 --- /dev/null +++ b/web/src/lib/assets/icon-mono-white.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/web/src/lib/assets/logo-horizontal-dark.svg b/web/src/lib/assets/logo-horizontal-dark.svg index 0fa3526..30135d5 100644 --- a/web/src/lib/assets/logo-horizontal-dark.svg +++ b/web/src/lib/assets/logo-horizontal-dark.svg @@ -1,12 +1,39 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - cairn - obs - + + + + diff --git a/web/src/lib/assets/logo-horizontal-light.svg b/web/src/lib/assets/logo-horizontal-light.svg index 8dcd73a..3ce7085 100644 --- a/web/src/lib/assets/logo-horizontal-light.svg +++ b/web/src/lib/assets/logo-horizontal-light.svg @@ -1,12 +1,31 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - cairn - obs - + + + + diff --git a/web/src/lib/assets/logo-stacked-dark.svg b/web/src/lib/assets/logo-stacked-dark.svg index 5a14136..f3b6743 100644 --- a/web/src/lib/assets/logo-stacked-dark.svg +++ b/web/src/lib/assets/logo-stacked-dark.svg @@ -1,10 +1,38 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - cairn obs + + + diff --git a/web/src/lib/assets/logo-stacked-light.svg b/web/src/lib/assets/logo-stacked-light.svg index b187a8f..ea34bf3 100644 --- a/web/src/lib/assets/logo-stacked-light.svg +++ b/web/src/lib/assets/logo-stacked-light.svg @@ -1,10 +1,31 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - cairn obs + + + diff --git a/web/src/lib/assets/wordmark-dark.svg b/web/src/lib/assets/wordmark-dark.svg new file mode 100644 index 0000000..ff772cf --- /dev/null +++ b/web/src/lib/assets/wordmark-dark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/web/src/lib/assets/wordmark-light.svg b/web/src/lib/assets/wordmark-light.svg new file mode 100644 index 0000000..6514aa9 --- /dev/null +++ b/web/src/lib/assets/wordmark-light.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte index 9e96e60..8cc0bb2 100644 --- a/web/src/routes/+page.svelte +++ b/web/src/routes/+page.svelte @@ -56,8 +56,10 @@ max-width: 48rem; } .logo { + /* The stacked lockup is 360x320, not square -- height must stay + auto or the wordmark under the cairn stretches. */ width: 11rem; - height: 11rem; + height: auto; } .tagline { margin-top: var(--space-4); diff --git a/web/static/icons/favicon-16.png b/web/static/icons/favicon-16.png index b2c751fa5ac20d442ec6e6508b1a769ebd53171e..f7fc0bbd1059edf0924199d0a6df4c3729932973 100644 GIT binary patch delta 472 zcmV;}0Vn>K1cU^THh;NEL_t(Ijg^zXYg17a$3N%2ke4=1Oe9csQG_^%=+?=0^2bm? zClN$&b8zWjpp%oMe}FCyoeNfQ)2UI5rGvlF6cJjaSa`(5`|f+^IJ88Pycj%i;NE-g z`SAVT%MpOebo~lq_keRik$*=DY>4XJxEHUpLilwK(vAi21FncKE zm$STbh)7c^<(eCoT`UCLxp@ovkpyq^1r z07#`=>sQa86n`GyG*lr|BLI@r=s4rWN8!n9q5V_FD>z;=yf?g8yf=DINxV_OxZG4` zXGWFu0Y|FPn9lgHt@zXivg?esZ?Lf=BY?hzrG<>Erxi6&1;yZC?K4n=tvy&;8T|DE z;DE?^@Trj*e<22{*57~G4TlA|Fe;WV04Lsj5BSj$W>F&OB#@+F20I<$<=2qq%>vIq z1!Oj0V_m9K)j11-S4^J5QU4~3LEMX5qPhUQWq(vBMFOFZtq delta 491 zcmVs-^{(_&X(RM3 z@43%=pZg^M_U_ySnkj^1fJy&qqWL5ucWRZT7ZSkmoSl@`mw${zD*Xh=hkHp=F`6Gh z1nO>Qn*=%N8@OTZb4Lexdh;+=T+#6~&)zO`9<#Uz)-A`J&0~ z={omc*LwnD;eXX{ok<1ox`{A;B(c$Jw7ke3By4cw^`_dle>#L;A z=v{3tr!5?Mkm2Xw^$^u<6f$j6@&2%{|M+8a1MV8Q-DI~gS#VLJnOlvqP&FuK+l=K~ zoXEFWuB!l^U+Xz{SL{8x_h?Fem)=&18N;&dMc~R#coDf~xQ##aR?_}}W&|PYzuy0F h{&z0>aILa5{SUJ1mb>jL9rpkL002ovPDHLkV1jag^Q-^> diff --git a/web/static/icons/favicon-180.png b/web/static/icons/favicon-180.png index 36b590b9c6ec61bb02735d4fd1aee5c3f530cb57..f3ab67eee40b8d6d4e522a09bbbab29ab1f10f15 100644 GIT binary patch literal 7106 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 delta 4713 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 diff --git a/web/static/icons/favicon-32.png b/web/static/icons/favicon-32.png index 1b9499eb155eff9475354abf76095a8a182fb588..1c8095518bfe95c50485d61fc799c30562e93444 100644 GIT binary patch delta 962 zcmV;z13mo62kHlqHh-T<{ zmbwvAtRR)9n=VRmE4UKeiDDOmM4<~^bW@=q?V?2&eiXGyDKQBqfdpwZC9%o8Nz$2l z_Z}DX^(JX%UP6)sk2m+@-T&{N^MCg-LMXD?Y>&Y^kIHd{{eM7)&4~p>M+Eb2p?JR^ zDAfm~Dc*fTRK5msn0>9CPBimkNc#m}Ilr9?{r1TfXyE zamQbrKjd{KQXhc4w$0)Ik0ldblSWnE+~^9P5sp2V;nAG8(IrkvE}i!gvg>*3@f|Tv z9`5GMt66qGB7b~8P~@F2W;X&bFS$%!qt4!yk8z>zNnSsY!cz+_Xk71o`5)g6mO3x8 zB23hYaZk8-ZZ}7tP2zL%~)8EUyx*)_=bVbZt1YpEm$7vD7vL^NRsD zC)ceX9pKL26@DLo0Cq(NYCzXV9l`o7K*w|7{UgHJm*L+6%q%LYM1tq{#OY2tumNK; z0hb0G-~0j7h4p{S+5((BBz$}vR25ZF1*ZT?DsFgCc2un5YGWfaaAioiIx5^>-UNUP zy>RRq8h-+*}!0_RXnihJ0uS`d)OLe!-$OcPy2K zgePm1p}G5tRi+EVjWL5?iUzRCg!vR)IbCU{lz-|SrCQw3T~P$ER;Xw-Gj*`CgD@XQO(s4*9AQN|_ zVnRAmt#2w0b4zf0+Auh67``WzZS?Pf2p{A8^Ft!(%+eUF! zq0jgISp(qv{$CjH70{7w5MNNCw^*FN3_H;HOH(c{&z38t{zNi0BT6122Xt+Uq*7F2 k$O!!y`);vVxK$teAG*DdxcdOk(*OVf07*qoM6N<$f-uI+;s5{u delta 928 zcmV;R17G~=2gnDIHh+CdL_t(og~gZ4PZL2L$G_60>B;yYygmg`C*8Gw0}^-9wk&0}D%t5mK%U^xPX0FzWpFL_rG-V}u;!A_xyVk??I1Rz8^^(}-J;Q|#ve zlwk3(QjtVO29%l^B?%O3vaHB+*^uk9!9S?tX=6VkYQnUF1VgC^AkXN4wOKMApY`bN zM7VP<;`Gf{_`#(3CpVsG&2} zg0(CDUHN3TR@R-Lu;82s~-%Hzj}=-2zUAT|{v~I%->kDBGTc ziXE#E2*=Roi{QI2f=ksMrgFfv07`(3P7zzyN$3wJ@PDjXg%9aJM0fTlG=Bf4E52ZL{nY*J~pBZ3eRYA5xfZIuR0UVxWJlS~CWv2=7cE|9!OG8sv9NumX zUw!eUB25Xfi442k!>~yVHJui8280=Hm&*y1rI|aCEwdC!VB2ong<+5KjP4 zzgcm$KE-?$9QQW1qqt4Jp$2G`~Uusy@o7YP9L! zXMck@(p|y1{v#GBke?aT#rVS%&)Tf|>J1Pisp+l;26(UpFpvfcf@&-gl;Gh~UQ7ar z32w?Siu|soM`ZC}jIr`isH;y;Q8l7`u`F|V39yTw8w>0_z!*EM4Epc$&RC7;B1A_e zzb-K_2La(*GWG2IKNJSmL7v=g<5^Epi&E7 zKoo7!h$3FlH}8Vti-P(nA}BtIf)^AOwJKtTiV9XJmDF0>+G<;B+NNz{o4uIL?q+6= z4||*0%w}(s#y^CaIp6L7Ki@g$+nERr(ASq-ZHSJday@V!FnkY3kLWbV4)J!_Wa3N=n8s$2_D2PQ2?pPD& zx%C5!vw-OBVc`6r=e=-Ql>659bMG|?hT;N_&F;emHjd>2UP&&IL|@V(fa((s3pZcU z&jag{th=ZOQ3uop#|CvcnVDnFOH)i{>;Q;YVM(Gdsej$ha^;B0$4@P1Fm6-{f~ue>XaSuoGBq7xARZ~PTc|`%VEQZom1p0eJShmAVzLc<9?w~-f2%Gl_U+jYIM}%%OqAdYG zJ%28oeTE-#t={|Dp|WG3lx+&fv%;pmu<>_;Bk4sJU`Alav*m{_hR!DluG_uoBxH6ui;}B|Dz`;{W zDhG+4%HpjNFWJ4swcNRKzxD6VkE51H?teHU-1&}hV5&sYDOJkSRTXsOs;ns8q&gzHJRSwA>Wx!O@IhctHJrVJgN4LlQ?K-dIX7b9m!y$eC!7}>PwKf|raerz_ z2Oc4{SwOUO#dQ^_3=k|wDON+vl{4ioe@+QM9yIu7UwdD87Tkdgl3HERLmsb}OV2uw zRIQ)-I-nYEz>2|A4h1S;`9Mj4KdIW{^GMYR@fS8<@b-!Jt5HJ%$sXvB`IN~9i~9;` z;B9|r!1klD>4Ziv#%s2ZCET_#K5ZxmQ^NfcOd8=996+_C?Yk%iBw}0WJ zTqqxkmaz99;rHVPV@HLfneN_bMR-w$hK3S_S?d6BX0rjYh;s2T#3PCsg}$iL7g5ZJ z(ia0WqL>lEjDi_1^*Nb?9TNt>P8jT&6pD6W@5JgLs|6q)A9zGm-w0~v(*otwY%Vn# z0w@;qW3gy#4akb6=G7unhJT}@1*aFt$(%C6 zx)x>2(s65wlwjPFnK|`s#o#&m3WY+xIG2Av7L8>=t_FhrcS`3_l+O%DM>DgjU)&81 zOF|-%7*q}4WvH%K7y-_u!w+E{zy?krIxfg&TjkT4ndzN=9sdIbV-nzV;mr^W00000 LNkvXXu0mjfrV01s delta 1455 zcmV;g1yK6D4ATpcHh+joL_t(&fz_H@Y!p=-#=moBcDB3QrB}LzvRJuDD@qHk0)~(n zk)S9Sfd>^6>J zQHcm+!0@nX&81ru75%=h&9iquQ?CH^8ugS*ZU&4;tIj(3L+F$b#I60AwZ-A_sOH-11yoeM+XsJGy|Xs@;!?Bj!E+)qgPOz`N?5?l zD@@QE#(-@#ehfs?AYglqACcq?BQ77;hj6BCXpY=*0gW9pb{-p>MSUT4#AOnty6$*ZHntOqh0BeOTon(GCuk(gu!U? zsVM0@Ac=si@58Vm_Lk{6~y4|7Z6sGd%mBM zts<-do)AsX5aM}YX^D)DWnpY652H9+MSn~MT3iPF)Gp!Ys}dTn8xV@c7gSyt!EuGU0lOU*P0;O_aNv~{#((fi zReFQxR20i7Fi&jF6AE~LbpVFDu-tpqBjBqRQ)&X9oFBo;dy>nLsj{cuqM1WV0?xEc zxYV0eu1ibrPbgp@O0e}v4gwLK)*dGy5+kVnD+@0i%bis3PuhjJUw^sDJMsdh7J002ov JPDHLkV1kZosvrOW diff --git a/web/static/icons/favicon-512.png b/web/static/icons/favicon-512.png index 0d389a1160c9bb350922058b1db831d54fd3ca13..cba8b8f20f0333c01fb4740beb5046eed61c38a6 100644 GIT binary patch literal 22782 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 DEohL<