From 7ff45503625bc81ef126961681666d00cd074476 Mon Sep 17 00:00:00 2001 From: thomasrosen Date: Tue, 22 Feb 2022 12:43:13 +0000 Subject: [PATCH] thomasrosen published a site update --- asset-manifest.json | 165 +++++++++--------- index.html | 2 +- ...4932154a.chunk.js => 10.153781e5.chunk.js} | 4 +- ....chunk.js.map => 10.153781e5.chunk.js.map} | 2 +- ...164f0b08.chunk.js => 11.25130fd2.chunk.js} | 4 +- ....chunk.js.map => 11.25130fd2.chunk.js.map} | 2 +- ...2818067b.chunk.js => 12.d259e68b.chunk.js} | 4 +- ....chunk.js.map => 12.d259e68b.chunk.js.map} | 2 +- ....2469ec98.chunk.js => 3.9a061cd9.chunk.js} | 4 +- ...8.chunk.js.map => 3.9a061cd9.chunk.js.map} | 2 +- static/js/30.247d62e9.chunk.js | 2 + static/js/30.247d62e9.chunk.js.map | 1 + ...443ec393.chunk.js => 31.9147ffc8.chunk.js} | 4 +- ....chunk.js.map => 31.9147ffc8.chunk.js.map} | 2 +- ...91ae03f1.chunk.js => 32.fe730829.chunk.js} | 4 +- ....chunk.js.map => 32.fe730829.chunk.js.map} | 2 +- ...c5438e25.chunk.js => 33.dd9ab2c2.chunk.js} | 4 +- ....chunk.js.map => 33.dd9ab2c2.chunk.js.map} | 2 +- ...0016a6ac.chunk.js => 34.a4383948.chunk.js} | 4 +- ....chunk.js.map => 34.a4383948.chunk.js.map} | 2 +- ...30b43163.chunk.js => 35.d3fef40f.chunk.js} | 4 +- ....chunk.js.map => 35.d3fef40f.chunk.js.map} | 2 +- ...2db36579.chunk.js => 36.335a2700.chunk.js} | 4 +- ....chunk.js.map => 36.335a2700.chunk.js.map} | 2 +- ...a943d48f.chunk.js => 37.3d8d5f65.chunk.js} | 4 +- ....chunk.js.map => 37.3d8d5f65.chunk.js.map} | 2 +- ...7273f0d6.chunk.js => 38.f1df755b.chunk.js} | 4 +- ....chunk.js.map => 38.f1df755b.chunk.js.map} | 2 +- ...fc260971.chunk.js => 39.a35f2238.chunk.js} | 4 +- ....chunk.js.map => 39.a35f2238.chunk.js.map} | 2 +- ....ab158e3a.chunk.js => 4.751829f5.chunk.js} | 4 +- ...a.chunk.js.map => 4.751829f5.chunk.js.map} | 2 +- ...270220b7.chunk.js => 40.57e4a144.chunk.js} | 4 +- ....chunk.js.map => 40.57e4a144.chunk.js.map} | 2 +- ...a8558164.chunk.js => 41.bf200ed1.chunk.js} | 4 +- ....chunk.js.map => 41.bf200ed1.chunk.js.map} | 2 +- ...a54553fa.chunk.js => 42.a521b59c.chunk.js} | 4 +- ....chunk.js.map => 42.a521b59c.chunk.js.map} | 2 +- ...6946df7d.chunk.js => 43.881786d1.chunk.js} | 4 +- ....chunk.js.map => 43.881786d1.chunk.js.map} | 2 +- ...033b98ee.chunk.js => 44.b9cc7faa.chunk.js} | 4 +- ....chunk.js.map => 44.b9cc7faa.chunk.js.map} | 2 +- ...74688830.chunk.js => 45.f0e622fd.chunk.js} | 4 +- ....chunk.js.map => 45.f0e622fd.chunk.js.map} | 2 +- ...b9974e94.chunk.js => 46.f8ee47ad.chunk.js} | 4 +- ....chunk.js.map => 46.f8ee47ad.chunk.js.map} | 2 +- ...8cb97f49.chunk.js => 47.8c244f9b.chunk.js} | 4 +- ....chunk.js.map => 47.8c244f9b.chunk.js.map} | 2 +- ...8ddf12d7.chunk.js => 48.7efcaac9.chunk.js} | 4 +- ....chunk.js.map => 48.7efcaac9.chunk.js.map} | 2 +- ...0d79288c.chunk.js => 49.a0bb1a97.chunk.js} | 4 +- ....chunk.js.map => 49.a0bb1a97.chunk.js.map} | 2 +- ....689edf4d.chunk.js => 5.11dad6f7.chunk.js} | 4 +- ...d.chunk.js.map => 5.11dad6f7.chunk.js.map} | 2 +- ...1ab72649.chunk.js => 50.49377c35.chunk.js} | 4 +- ....chunk.js.map => 50.49377c35.chunk.js.map} | 2 +- ...3a3ea9cf.chunk.js => 51.43ea7bd0.chunk.js} | 4 +- ....chunk.js.map => 51.43ea7bd0.chunk.js.map} | 2 +- ...061b609a.chunk.js => 52.cb50ae53.chunk.js} | 4 +- ....chunk.js.map => 52.cb50ae53.chunk.js.map} | 2 +- ...955af917.chunk.js => 53.aa8f7ede.chunk.js} | 4 +- ....chunk.js.map => 53.aa8f7ede.chunk.js.map} | 2 +- ...1cdd8cc6.chunk.js => 54.15831eb7.chunk.js} | 4 +- ....chunk.js.map => 54.15831eb7.chunk.js.map} | 2 +- ...92235e3b.chunk.js => 55.f2576a24.chunk.js} | 4 +- ....chunk.js.map => 55.f2576a24.chunk.js.map} | 2 +- ...f9c85cb8.chunk.js => 56.541a2163.chunk.js} | 4 +- ....chunk.js.map => 56.541a2163.chunk.js.map} | 2 +- ...e6e315dc.chunk.js => 57.d7d11563.chunk.js} | 4 +- ....chunk.js.map => 57.d7d11563.chunk.js.map} | 2 +- ....b0b2f807.chunk.js => 6.e927e8b7.chunk.js} | 4 +- ...7.chunk.js.map => 6.e927e8b7.chunk.js.map} | 2 +- ....4e60068e.chunk.js => 7.aef40f4c.chunk.js} | 4 +- ...e.chunk.js.map => 7.aef40f4c.chunk.js.map} | 2 +- static/js/8.0c4243a7.chunk.js | 2 + ...1.chunk.js.map => 8.0c4243a7.chunk.js.map} | 2 +- static/js/8.127d9691.chunk.js | 2 - ....77f06e37.chunk.js => 9.48f16371.chunk.js} | 4 +- ...7.chunk.js.map => 9.48f16371.chunk.js.map} | 2 +- static/js/main.7c298977.chunk.js | 2 - static/js/main.7c298977.chunk.js.map | 1 - static/js/main.b8ca9d1f.chunk.js | 2 + static/js/main.b8ca9d1f.chunk.js.map | 1 + static/js/runtime-main.a3269c38.js | 2 + static/js/runtime-main.a3269c38.js.map | 1 + static/js/runtime-main.bb81121a.js | 2 - static/js/runtime-main.bb81121a.js.map | 1 - static/media/ukraine.d9765a7e.png | Bin 0 -> 54641 bytes 88 files changed, 205 insertions(+), 199 deletions(-) rename static/js/{10.4932154a.chunk.js => 10.153781e5.chunk.js} (55%) rename static/js/{10.4932154a.chunk.js.map => 10.153781e5.chunk.js.map} (72%) rename static/js/{11.164f0b08.chunk.js => 11.25130fd2.chunk.js} (55%) rename static/js/{11.164f0b08.chunk.js.map => 11.25130fd2.chunk.js.map} (72%) rename static/js/{12.2818067b.chunk.js => 12.d259e68b.chunk.js} (96%) rename static/js/{12.2818067b.chunk.js.map => 12.d259e68b.chunk.js.map} (99%) rename static/js/{3.2469ec98.chunk.js => 3.9a061cd9.chunk.js} (55%) rename static/js/{3.2469ec98.chunk.js.map => 3.9a061cd9.chunk.js.map} (72%) create mode 100644 static/js/30.247d62e9.chunk.js create mode 100644 static/js/30.247d62e9.chunk.js.map rename static/js/{30.443ec393.chunk.js => 31.9147ffc8.chunk.js} (97%) rename static/js/{30.443ec393.chunk.js.map => 31.9147ffc8.chunk.js.map} (98%) rename static/js/{31.91ae03f1.chunk.js => 32.fe730829.chunk.js} (97%) rename static/js/{31.91ae03f1.chunk.js.map => 32.fe730829.chunk.js.map} (98%) rename static/js/{32.c5438e25.chunk.js => 33.dd9ab2c2.chunk.js} (97%) rename static/js/{32.c5438e25.chunk.js.map => 33.dd9ab2c2.chunk.js.map} (98%) rename static/js/{33.0016a6ac.chunk.js => 34.a4383948.chunk.js} (97%) rename static/js/{33.0016a6ac.chunk.js.map => 34.a4383948.chunk.js.map} (98%) rename static/js/{34.30b43163.chunk.js => 35.d3fef40f.chunk.js} (97%) rename static/js/{34.30b43163.chunk.js.map => 35.d3fef40f.chunk.js.map} (98%) rename static/js/{35.2db36579.chunk.js => 36.335a2700.chunk.js} (98%) rename static/js/{35.2db36579.chunk.js.map => 36.335a2700.chunk.js.map} (98%) rename static/js/{36.a943d48f.chunk.js => 37.3d8d5f65.chunk.js} (98%) rename static/js/{36.a943d48f.chunk.js.map => 37.3d8d5f65.chunk.js.map} (98%) rename static/js/{37.7273f0d6.chunk.js => 38.f1df755b.chunk.js} (98%) rename static/js/{37.7273f0d6.chunk.js.map => 38.f1df755b.chunk.js.map} (98%) rename static/js/{38.fc260971.chunk.js => 39.a35f2238.chunk.js} (98%) rename static/js/{38.fc260971.chunk.js.map => 39.a35f2238.chunk.js.map} (98%) rename static/js/{4.ab158e3a.chunk.js => 4.751829f5.chunk.js} (55%) rename static/js/{4.ab158e3a.chunk.js.map => 4.751829f5.chunk.js.map} (72%) rename static/js/{39.270220b7.chunk.js => 40.57e4a144.chunk.js} (97%) rename static/js/{39.270220b7.chunk.js.map => 40.57e4a144.chunk.js.map} (98%) rename static/js/{40.a8558164.chunk.js => 41.bf200ed1.chunk.js} (98%) rename static/js/{40.a8558164.chunk.js.map => 41.bf200ed1.chunk.js.map} (98%) rename static/js/{41.a54553fa.chunk.js => 42.a521b59c.chunk.js} (98%) rename static/js/{41.a54553fa.chunk.js.map => 42.a521b59c.chunk.js.map} (98%) rename static/js/{42.6946df7d.chunk.js => 43.881786d1.chunk.js} (97%) rename static/js/{42.6946df7d.chunk.js.map => 43.881786d1.chunk.js.map} (98%) rename static/js/{43.033b98ee.chunk.js => 44.b9cc7faa.chunk.js} (98%) rename static/js/{43.033b98ee.chunk.js.map => 44.b9cc7faa.chunk.js.map} (99%) rename static/js/{44.74688830.chunk.js => 45.f0e622fd.chunk.js} (97%) rename static/js/{44.74688830.chunk.js.map => 45.f0e622fd.chunk.js.map} (98%) rename static/js/{45.b9974e94.chunk.js => 46.f8ee47ad.chunk.js} (97%) rename static/js/{45.b9974e94.chunk.js.map => 46.f8ee47ad.chunk.js.map} (98%) rename static/js/{46.8cb97f49.chunk.js => 47.8c244f9b.chunk.js} (97%) rename static/js/{46.8cb97f49.chunk.js.map => 47.8c244f9b.chunk.js.map} (98%) rename static/js/{47.8ddf12d7.chunk.js => 48.7efcaac9.chunk.js} (98%) rename static/js/{47.8ddf12d7.chunk.js.map => 48.7efcaac9.chunk.js.map} (98%) rename static/js/{48.0d79288c.chunk.js => 49.a0bb1a97.chunk.js} (97%) rename static/js/{48.0d79288c.chunk.js.map => 49.a0bb1a97.chunk.js.map} (98%) rename static/js/{5.689edf4d.chunk.js => 5.11dad6f7.chunk.js} (55%) rename static/js/{5.689edf4d.chunk.js.map => 5.11dad6f7.chunk.js.map} (72%) rename static/js/{49.1ab72649.chunk.js => 50.49377c35.chunk.js} (97%) rename static/js/{49.1ab72649.chunk.js.map => 50.49377c35.chunk.js.map} (98%) rename static/js/{50.3a3ea9cf.chunk.js => 51.43ea7bd0.chunk.js} (98%) rename static/js/{50.3a3ea9cf.chunk.js.map => 51.43ea7bd0.chunk.js.map} (98%) rename static/js/{51.061b609a.chunk.js => 52.cb50ae53.chunk.js} (98%) rename static/js/{51.061b609a.chunk.js.map => 52.cb50ae53.chunk.js.map} (99%) rename static/js/{52.955af917.chunk.js => 53.aa8f7ede.chunk.js} (97%) rename static/js/{52.955af917.chunk.js.map => 53.aa8f7ede.chunk.js.map} (98%) rename static/js/{53.1cdd8cc6.chunk.js => 54.15831eb7.chunk.js} (98%) rename static/js/{53.1cdd8cc6.chunk.js.map => 54.15831eb7.chunk.js.map} (98%) rename static/js/{54.92235e3b.chunk.js => 55.f2576a24.chunk.js} (98%) rename static/js/{54.92235e3b.chunk.js.map => 55.f2576a24.chunk.js.map} (98%) rename static/js/{55.f9c85cb8.chunk.js => 56.541a2163.chunk.js} (97%) rename static/js/{55.f9c85cb8.chunk.js.map => 56.541a2163.chunk.js.map} (98%) rename static/js/{56.e6e315dc.chunk.js => 57.d7d11563.chunk.js} (97%) rename static/js/{56.e6e315dc.chunk.js.map => 57.d7d11563.chunk.js.map} (98%) rename static/js/{6.b0b2f807.chunk.js => 6.e927e8b7.chunk.js} (55%) rename static/js/{6.b0b2f807.chunk.js.map => 6.e927e8b7.chunk.js.map} (72%) rename static/js/{7.4e60068e.chunk.js => 7.aef40f4c.chunk.js} (55%) rename static/js/{7.4e60068e.chunk.js.map => 7.aef40f4c.chunk.js.map} (72%) create mode 100644 static/js/8.0c4243a7.chunk.js rename static/js/{8.127d9691.chunk.js.map => 8.0c4243a7.chunk.js.map} (72%) delete mode 100644 static/js/8.127d9691.chunk.js rename static/js/{9.77f06e37.chunk.js => 9.48f16371.chunk.js} (55%) rename static/js/{9.77f06e37.chunk.js.map => 9.48f16371.chunk.js.map} (72%) delete mode 100644 static/js/main.7c298977.chunk.js delete mode 100644 static/js/main.7c298977.chunk.js.map create mode 100644 static/js/main.b8ca9d1f.chunk.js create mode 100644 static/js/main.b8ca9d1f.chunk.js.map create mode 100644 static/js/runtime-main.a3269c38.js create mode 100644 static/js/runtime-main.a3269c38.js.map delete mode 100644 static/js/runtime-main.bb81121a.js delete mode 100644 static/js/runtime-main.bb81121a.js.map create mode 100644 static/media/ukraine.d9765a7e.png diff --git a/asset-manifest.json b/asset-manifest.json index 0d994bc..769c4b9 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,32 +1,32 @@ { "files": { "main.css": "/static/css/main.cc86ad2e.chunk.css", - "main.js": "/static/js/main.7c298977.chunk.js", - "main.js.map": "/static/js/main.7c298977.chunk.js.map", - "runtime-main.js": "/static/js/runtime-main.bb81121a.js", - "runtime-main.js.map": "/static/js/runtime-main.bb81121a.js.map", + "main.js": "/static/js/main.b8ca9d1f.chunk.js", + "main.js.map": "/static/js/main.b8ca9d1f.chunk.js.map", + "runtime-main.js": "/static/js/runtime-main.a3269c38.js", + "runtime-main.js.map": "/static/js/runtime-main.a3269c38.js.map", "static/js/2.02aed69b.chunk.js": "/static/js/2.02aed69b.chunk.js", "static/js/2.02aed69b.chunk.js.map": "/static/js/2.02aed69b.chunk.js.map", - "static/js/3.2469ec98.chunk.js": "/static/js/3.2469ec98.chunk.js", - "static/js/3.2469ec98.chunk.js.map": "/static/js/3.2469ec98.chunk.js.map", - "static/js/4.ab158e3a.chunk.js": "/static/js/4.ab158e3a.chunk.js", - "static/js/4.ab158e3a.chunk.js.map": "/static/js/4.ab158e3a.chunk.js.map", - "static/js/5.689edf4d.chunk.js": "/static/js/5.689edf4d.chunk.js", - "static/js/5.689edf4d.chunk.js.map": "/static/js/5.689edf4d.chunk.js.map", - "static/js/6.b0b2f807.chunk.js": "/static/js/6.b0b2f807.chunk.js", - "static/js/6.b0b2f807.chunk.js.map": "/static/js/6.b0b2f807.chunk.js.map", - "static/js/7.4e60068e.chunk.js": "/static/js/7.4e60068e.chunk.js", - "static/js/7.4e60068e.chunk.js.map": "/static/js/7.4e60068e.chunk.js.map", - "static/js/8.127d9691.chunk.js": "/static/js/8.127d9691.chunk.js", - "static/js/8.127d9691.chunk.js.map": "/static/js/8.127d9691.chunk.js.map", - "static/js/9.77f06e37.chunk.js": "/static/js/9.77f06e37.chunk.js", - "static/js/9.77f06e37.chunk.js.map": "/static/js/9.77f06e37.chunk.js.map", - "static/js/10.4932154a.chunk.js": "/static/js/10.4932154a.chunk.js", - "static/js/10.4932154a.chunk.js.map": "/static/js/10.4932154a.chunk.js.map", - "static/js/11.164f0b08.chunk.js": "/static/js/11.164f0b08.chunk.js", - "static/js/11.164f0b08.chunk.js.map": "/static/js/11.164f0b08.chunk.js.map", - "static/js/12.2818067b.chunk.js": "/static/js/12.2818067b.chunk.js", - "static/js/12.2818067b.chunk.js.map": "/static/js/12.2818067b.chunk.js.map", + "static/js/3.9a061cd9.chunk.js": "/static/js/3.9a061cd9.chunk.js", + "static/js/3.9a061cd9.chunk.js.map": "/static/js/3.9a061cd9.chunk.js.map", + "static/js/4.751829f5.chunk.js": "/static/js/4.751829f5.chunk.js", + "static/js/4.751829f5.chunk.js.map": "/static/js/4.751829f5.chunk.js.map", + "static/js/5.11dad6f7.chunk.js": "/static/js/5.11dad6f7.chunk.js", + "static/js/5.11dad6f7.chunk.js.map": "/static/js/5.11dad6f7.chunk.js.map", + "static/js/6.e927e8b7.chunk.js": "/static/js/6.e927e8b7.chunk.js", + "static/js/6.e927e8b7.chunk.js.map": "/static/js/6.e927e8b7.chunk.js.map", + "static/js/7.aef40f4c.chunk.js": "/static/js/7.aef40f4c.chunk.js", + "static/js/7.aef40f4c.chunk.js.map": "/static/js/7.aef40f4c.chunk.js.map", + "static/js/8.0c4243a7.chunk.js": "/static/js/8.0c4243a7.chunk.js", + "static/js/8.0c4243a7.chunk.js.map": "/static/js/8.0c4243a7.chunk.js.map", + "static/js/9.48f16371.chunk.js": "/static/js/9.48f16371.chunk.js", + "static/js/9.48f16371.chunk.js.map": "/static/js/9.48f16371.chunk.js.map", + "static/js/10.153781e5.chunk.js": "/static/js/10.153781e5.chunk.js", + "static/js/10.153781e5.chunk.js.map": "/static/js/10.153781e5.chunk.js.map", + "static/js/11.25130fd2.chunk.js": "/static/js/11.25130fd2.chunk.js", + "static/js/11.25130fd2.chunk.js.map": "/static/js/11.25130fd2.chunk.js.map", + "static/js/12.d259e68b.chunk.js": "/static/js/12.d259e68b.chunk.js", + "static/js/12.d259e68b.chunk.js.map": "/static/js/12.d259e68b.chunk.js.map", "static/js/13.1623337e.chunk.js": "/static/js/13.1623337e.chunk.js", "static/js/13.1623337e.chunk.js.map": "/static/js/13.1623337e.chunk.js.map", "static/js/14.d66df10b.chunk.js": "/static/js/14.d66df10b.chunk.js", @@ -61,60 +61,62 @@ "static/js/28.7de9d9d6.chunk.js.map": "/static/js/28.7de9d9d6.chunk.js.map", "static/js/29.cd552abf.chunk.js": "/static/js/29.cd552abf.chunk.js", "static/js/29.cd552abf.chunk.js.map": "/static/js/29.cd552abf.chunk.js.map", - "static/js/30.443ec393.chunk.js": "/static/js/30.443ec393.chunk.js", - "static/js/30.443ec393.chunk.js.map": "/static/js/30.443ec393.chunk.js.map", - "static/js/31.91ae03f1.chunk.js": "/static/js/31.91ae03f1.chunk.js", - "static/js/31.91ae03f1.chunk.js.map": "/static/js/31.91ae03f1.chunk.js.map", - "static/js/32.c5438e25.chunk.js": "/static/js/32.c5438e25.chunk.js", - "static/js/32.c5438e25.chunk.js.map": "/static/js/32.c5438e25.chunk.js.map", - "static/js/33.0016a6ac.chunk.js": "/static/js/33.0016a6ac.chunk.js", - "static/js/33.0016a6ac.chunk.js.map": "/static/js/33.0016a6ac.chunk.js.map", - "static/js/34.30b43163.chunk.js": "/static/js/34.30b43163.chunk.js", - "static/js/34.30b43163.chunk.js.map": "/static/js/34.30b43163.chunk.js.map", - "static/js/35.2db36579.chunk.js": "/static/js/35.2db36579.chunk.js", - "static/js/35.2db36579.chunk.js.map": "/static/js/35.2db36579.chunk.js.map", - "static/js/36.a943d48f.chunk.js": "/static/js/36.a943d48f.chunk.js", - "static/js/36.a943d48f.chunk.js.map": "/static/js/36.a943d48f.chunk.js.map", - "static/js/37.7273f0d6.chunk.js": "/static/js/37.7273f0d6.chunk.js", - "static/js/37.7273f0d6.chunk.js.map": "/static/js/37.7273f0d6.chunk.js.map", - "static/js/38.fc260971.chunk.js": "/static/js/38.fc260971.chunk.js", - "static/js/38.fc260971.chunk.js.map": "/static/js/38.fc260971.chunk.js.map", - "static/js/39.270220b7.chunk.js": "/static/js/39.270220b7.chunk.js", - "static/js/39.270220b7.chunk.js.map": "/static/js/39.270220b7.chunk.js.map", - "static/js/40.a8558164.chunk.js": "/static/js/40.a8558164.chunk.js", - "static/js/40.a8558164.chunk.js.map": "/static/js/40.a8558164.chunk.js.map", - "static/js/41.a54553fa.chunk.js": "/static/js/41.a54553fa.chunk.js", - "static/js/41.a54553fa.chunk.js.map": "/static/js/41.a54553fa.chunk.js.map", - "static/js/42.6946df7d.chunk.js": "/static/js/42.6946df7d.chunk.js", - "static/js/42.6946df7d.chunk.js.map": "/static/js/42.6946df7d.chunk.js.map", - "static/js/43.033b98ee.chunk.js": "/static/js/43.033b98ee.chunk.js", - "static/js/43.033b98ee.chunk.js.map": "/static/js/43.033b98ee.chunk.js.map", - "static/js/44.74688830.chunk.js": "/static/js/44.74688830.chunk.js", - "static/js/44.74688830.chunk.js.map": "/static/js/44.74688830.chunk.js.map", - "static/js/45.b9974e94.chunk.js": "/static/js/45.b9974e94.chunk.js", - "static/js/45.b9974e94.chunk.js.map": "/static/js/45.b9974e94.chunk.js.map", - "static/js/46.8cb97f49.chunk.js": "/static/js/46.8cb97f49.chunk.js", - "static/js/46.8cb97f49.chunk.js.map": "/static/js/46.8cb97f49.chunk.js.map", - "static/js/47.8ddf12d7.chunk.js": "/static/js/47.8ddf12d7.chunk.js", - "static/js/47.8ddf12d7.chunk.js.map": "/static/js/47.8ddf12d7.chunk.js.map", - "static/js/48.0d79288c.chunk.js": "/static/js/48.0d79288c.chunk.js", - "static/js/48.0d79288c.chunk.js.map": "/static/js/48.0d79288c.chunk.js.map", - "static/js/49.1ab72649.chunk.js": "/static/js/49.1ab72649.chunk.js", - "static/js/49.1ab72649.chunk.js.map": "/static/js/49.1ab72649.chunk.js.map", - "static/js/50.3a3ea9cf.chunk.js": "/static/js/50.3a3ea9cf.chunk.js", - "static/js/50.3a3ea9cf.chunk.js.map": "/static/js/50.3a3ea9cf.chunk.js.map", - "static/js/51.061b609a.chunk.js": "/static/js/51.061b609a.chunk.js", - "static/js/51.061b609a.chunk.js.map": "/static/js/51.061b609a.chunk.js.map", - "static/js/52.955af917.chunk.js": "/static/js/52.955af917.chunk.js", - "static/js/52.955af917.chunk.js.map": "/static/js/52.955af917.chunk.js.map", - "static/js/53.1cdd8cc6.chunk.js": "/static/js/53.1cdd8cc6.chunk.js", - "static/js/53.1cdd8cc6.chunk.js.map": "/static/js/53.1cdd8cc6.chunk.js.map", - "static/js/54.92235e3b.chunk.js": "/static/js/54.92235e3b.chunk.js", - "static/js/54.92235e3b.chunk.js.map": "/static/js/54.92235e3b.chunk.js.map", - "static/js/55.f9c85cb8.chunk.js": "/static/js/55.f9c85cb8.chunk.js", - "static/js/55.f9c85cb8.chunk.js.map": "/static/js/55.f9c85cb8.chunk.js.map", - "static/js/56.e6e315dc.chunk.js": "/static/js/56.e6e315dc.chunk.js", - "static/js/56.e6e315dc.chunk.js.map": "/static/js/56.e6e315dc.chunk.js.map", + "static/js/30.247d62e9.chunk.js": "/static/js/30.247d62e9.chunk.js", + "static/js/30.247d62e9.chunk.js.map": "/static/js/30.247d62e9.chunk.js.map", + "static/js/31.9147ffc8.chunk.js": "/static/js/31.9147ffc8.chunk.js", + "static/js/31.9147ffc8.chunk.js.map": "/static/js/31.9147ffc8.chunk.js.map", + "static/js/32.fe730829.chunk.js": "/static/js/32.fe730829.chunk.js", + "static/js/32.fe730829.chunk.js.map": "/static/js/32.fe730829.chunk.js.map", + "static/js/33.dd9ab2c2.chunk.js": "/static/js/33.dd9ab2c2.chunk.js", + "static/js/33.dd9ab2c2.chunk.js.map": "/static/js/33.dd9ab2c2.chunk.js.map", + "static/js/34.a4383948.chunk.js": "/static/js/34.a4383948.chunk.js", + "static/js/34.a4383948.chunk.js.map": "/static/js/34.a4383948.chunk.js.map", + "static/js/35.d3fef40f.chunk.js": "/static/js/35.d3fef40f.chunk.js", + "static/js/35.d3fef40f.chunk.js.map": "/static/js/35.d3fef40f.chunk.js.map", + "static/js/36.335a2700.chunk.js": "/static/js/36.335a2700.chunk.js", + "static/js/36.335a2700.chunk.js.map": "/static/js/36.335a2700.chunk.js.map", + "static/js/37.3d8d5f65.chunk.js": "/static/js/37.3d8d5f65.chunk.js", + "static/js/37.3d8d5f65.chunk.js.map": "/static/js/37.3d8d5f65.chunk.js.map", + "static/js/38.f1df755b.chunk.js": "/static/js/38.f1df755b.chunk.js", + "static/js/38.f1df755b.chunk.js.map": "/static/js/38.f1df755b.chunk.js.map", + "static/js/39.a35f2238.chunk.js": "/static/js/39.a35f2238.chunk.js", + "static/js/39.a35f2238.chunk.js.map": "/static/js/39.a35f2238.chunk.js.map", + "static/js/40.57e4a144.chunk.js": "/static/js/40.57e4a144.chunk.js", + "static/js/40.57e4a144.chunk.js.map": "/static/js/40.57e4a144.chunk.js.map", + "static/js/41.bf200ed1.chunk.js": "/static/js/41.bf200ed1.chunk.js", + "static/js/41.bf200ed1.chunk.js.map": "/static/js/41.bf200ed1.chunk.js.map", + "static/js/42.a521b59c.chunk.js": "/static/js/42.a521b59c.chunk.js", + "static/js/42.a521b59c.chunk.js.map": "/static/js/42.a521b59c.chunk.js.map", + "static/js/43.881786d1.chunk.js": "/static/js/43.881786d1.chunk.js", + "static/js/43.881786d1.chunk.js.map": "/static/js/43.881786d1.chunk.js.map", + "static/js/44.b9cc7faa.chunk.js": "/static/js/44.b9cc7faa.chunk.js", + "static/js/44.b9cc7faa.chunk.js.map": "/static/js/44.b9cc7faa.chunk.js.map", + "static/js/45.f0e622fd.chunk.js": "/static/js/45.f0e622fd.chunk.js", + "static/js/45.f0e622fd.chunk.js.map": "/static/js/45.f0e622fd.chunk.js.map", + "static/js/46.f8ee47ad.chunk.js": "/static/js/46.f8ee47ad.chunk.js", + "static/js/46.f8ee47ad.chunk.js.map": "/static/js/46.f8ee47ad.chunk.js.map", + "static/js/47.8c244f9b.chunk.js": "/static/js/47.8c244f9b.chunk.js", + "static/js/47.8c244f9b.chunk.js.map": "/static/js/47.8c244f9b.chunk.js.map", + "static/js/48.7efcaac9.chunk.js": "/static/js/48.7efcaac9.chunk.js", + "static/js/48.7efcaac9.chunk.js.map": "/static/js/48.7efcaac9.chunk.js.map", + "static/js/49.a0bb1a97.chunk.js": "/static/js/49.a0bb1a97.chunk.js", + "static/js/49.a0bb1a97.chunk.js.map": "/static/js/49.a0bb1a97.chunk.js.map", + "static/js/50.49377c35.chunk.js": "/static/js/50.49377c35.chunk.js", + "static/js/50.49377c35.chunk.js.map": "/static/js/50.49377c35.chunk.js.map", + "static/js/51.43ea7bd0.chunk.js": "/static/js/51.43ea7bd0.chunk.js", + "static/js/51.43ea7bd0.chunk.js.map": "/static/js/51.43ea7bd0.chunk.js.map", + "static/js/52.cb50ae53.chunk.js": "/static/js/52.cb50ae53.chunk.js", + "static/js/52.cb50ae53.chunk.js.map": "/static/js/52.cb50ae53.chunk.js.map", + "static/js/53.aa8f7ede.chunk.js": "/static/js/53.aa8f7ede.chunk.js", + "static/js/53.aa8f7ede.chunk.js.map": "/static/js/53.aa8f7ede.chunk.js.map", + "static/js/54.15831eb7.chunk.js": "/static/js/54.15831eb7.chunk.js", + "static/js/54.15831eb7.chunk.js.map": "/static/js/54.15831eb7.chunk.js.map", + "static/js/55.f2576a24.chunk.js": "/static/js/55.f2576a24.chunk.js", + "static/js/55.f2576a24.chunk.js.map": "/static/js/55.f2576a24.chunk.js.map", + "static/js/56.541a2163.chunk.js": "/static/js/56.541a2163.chunk.js", + "static/js/56.541a2163.chunk.js.map": "/static/js/56.541a2163.chunk.js.map", + "static/js/57.d7d11563.chunk.js": "/static/js/57.d7d11563.chunk.js", + "static/js/57.d7d11563.chunk.js.map": "/static/js/57.d7d11563.chunk.js.map", "index.html": "/index.html", "static/css/main.cc86ad2e.chunk.css.map": "/static/css/main.cc86ad2e.chunk.css.map", "static/js/2.02aed69b.chunk.js.LICENSE.txt": "/static/js/2.02aed69b.chunk.js.LICENSE.txt", @@ -143,12 +145,13 @@ "static/media/nl.ftl": "/static/media/nl.fee96cbf.ftl", "static/media/pl.ftl": "/static/media/pl.bc186684.ftl", "static/media/pt.ftl": "/static/media/pt.1d8c1bab.ftl", - "static/media/ru.ftl": "/static/media/ru.9be0d24d.ftl" + "static/media/ru.ftl": "/static/media/ru.9be0d24d.ftl", + "static/media/ukraine.png": "/static/media/ukraine.d9765a7e.png" }, "entrypoints": [ - "static/js/runtime-main.bb81121a.js", + "static/js/runtime-main.a3269c38.js", "static/js/2.02aed69b.chunk.js", "static/css/main.cc86ad2e.chunk.css", - "static/js/main.7c298977.chunk.js" + "static/js/main.b8ca9d1f.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index b140197..07709d9 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Volt Social Media Frame Generator
\ No newline at end of file +Volt Social Media Frame Generator
\ No newline at end of file diff --git a/static/js/10.4932154a.chunk.js b/static/js/10.153781e5.chunk.js similarity index 55% rename from static/js/10.4932154a.chunk.js rename to static/js/10.153781e5.chunk.js index 65dca58..52eb149 100644 --- a/static/js/10.4932154a.chunk.js +++ b/static/js/10.153781e5.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[10],{101:function(t,e,p){"use strict";p.r(e),e.default=p.p+"static/media/pt.1d8c1bab.ftl"}}]); -//# sourceMappingURL=10.4932154a.chunk.js.map \ No newline at end of file +(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[10],{102:function(t,e,p){"use strict";p.r(e),e.default=p.p+"static/media/pt.1d8c1bab.ftl"}}]); +//# sourceMappingURL=10.153781e5.chunk.js.map \ No newline at end of file diff --git a/static/js/10.4932154a.chunk.js.map b/static/js/10.153781e5.chunk.js.map similarity index 72% rename from static/js/10.4932154a.chunk.js.map rename to static/js/10.153781e5.chunk.js.map index bf36bf5..d313791 100644 --- a/static/js/10.4932154a.chunk.js.map +++ b/static/js/10.153781e5.chunk.js.map @@ -1 +1 @@ -{"version":3,"sources":["locales/pt.ftl"],"names":[],"mappings":"+IAAA,OAAe,cAA0B","file":"static/js/10.4932154a.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/pt.1d8c1bab.ftl\";"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["locales/pt.ftl"],"names":[],"mappings":"+IAAA,OAAe,cAA0B","file":"static/js/10.153781e5.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/pt.1d8c1bab.ftl\";"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/11.164f0b08.chunk.js b/static/js/11.25130fd2.chunk.js similarity index 55% rename from static/js/11.164f0b08.chunk.js rename to static/js/11.25130fd2.chunk.js index 8a9d1d6..102e8cc 100644 --- a/static/js/11.164f0b08.chunk.js +++ b/static/js/11.25130fd2.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[11],{102:function(e,t,r){"use strict";r.r(t),t.default=r.p+"static/media/ru.9be0d24d.ftl"}}]); -//# sourceMappingURL=11.164f0b08.chunk.js.map \ No newline at end of file +(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[11],{103:function(e,t,r){"use strict";r.r(t),t.default=r.p+"static/media/ru.9be0d24d.ftl"}}]); +//# sourceMappingURL=11.25130fd2.chunk.js.map \ No newline at end of file diff --git a/static/js/11.164f0b08.chunk.js.map b/static/js/11.25130fd2.chunk.js.map similarity index 72% rename from static/js/11.164f0b08.chunk.js.map rename to static/js/11.25130fd2.chunk.js.map index dbcc132..ed4499a 100644 --- a/static/js/11.164f0b08.chunk.js.map +++ b/static/js/11.25130fd2.chunk.js.map @@ -1 +1 @@ -{"version":3,"sources":["locales/ru.ftl"],"names":[],"mappings":"+IAAA,OAAe,cAA0B","file":"static/js/11.164f0b08.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/ru.9be0d24d.ftl\";"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["locales/ru.ftl"],"names":[],"mappings":"+IAAA,OAAe,cAA0B","file":"static/js/11.25130fd2.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/ru.9be0d24d.ftl\";"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/12.2818067b.chunk.js b/static/js/12.d259e68b.chunk.js similarity index 96% rename from static/js/12.2818067b.chunk.js rename to static/js/12.d259e68b.chunk.js index 20c6669..3f85636 100644 --- a/static/js/12.2818067b.chunk.js +++ b/static/js/12.d259e68b.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[12],{103:function(t,n,e){"use strict";e.r(n),e.d(n,"getCLS",(function(){return v})),e.d(n,"getFCP",(function(){return g})),e.d(n,"getFID",(function(){return h})),e.d(n,"getLCP",(function(){return y})),e.d(n,"getTTFB",(function(){return F}));var i,a,r=function(){return"".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)},o=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return{name:t,value:n,delta:0,entries:[],id:r(),isFinal:!1}},u=function(t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var e=new PerformanceObserver((function(t){return t.getEntries().map(n)}));return e.observe({type:t,buffered:!0}),e}}catch(t){}},c=!1,s=!1,p=function(t){c=!t.persisted},f=function(){addEventListener("pagehide",p),addEventListener("beforeunload",(function(){}))},d=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];s||(f(),s=!0),addEventListener("visibilitychange",(function(n){var e=n.timeStamp;"hidden"===document.visibilityState&&t({timeStamp:e,isUnloading:c})}),{capture:!0,once:n})},l=function(t,n,e,i){var a;return function(){e&&n.isFinal&&e.disconnect(),n.value>=0&&(i||n.isFinal||"hidden"===document.visibilityState)&&(n.delta=n.value-(a||0),(n.delta||n.isFinal||void 0===a)&&(t(n),a=n.value))}},v=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=o("CLS",0),a=function(t){t.hadRecentInput||(i.value+=t.value,i.entries.push(t),n())},r=u("layout-shift",a);r&&(n=l(t,i,r,e),d((function(t){var e=t.isUnloading;r.takeRecords().map(a),e&&(i.isFinal=!0),n()})))},m=function(){return void 0===i&&(i="hidden"===document.visibilityState?0:1/0,d((function(t){var n=t.timeStamp;return i=n}),!0)),{get timeStamp(){return i}}},g=function(t){var n,e=o("FCP"),i=m(),a=u("paint",(function(t){"first-contentful-paint"===t.name&&t.startTime1&&void 0!==arguments[1]&&arguments[1],i=o("LCP"),a=m(),r=function(t){var e=t.startTime;e1&&void 0!==arguments[1]?arguments[1]:-1;return{name:t,value:n,delta:0,entries:[],id:r(),isFinal:!1}},u=function(t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var e=new PerformanceObserver((function(t){return t.getEntries().map(n)}));return e.observe({type:t,buffered:!0}),e}}catch(t){}},c=!1,s=!1,p=function(t){c=!t.persisted},f=function(){addEventListener("pagehide",p),addEventListener("beforeunload",(function(){}))},d=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];s||(f(),s=!0),addEventListener("visibilitychange",(function(n){var e=n.timeStamp;"hidden"===document.visibilityState&&t({timeStamp:e,isUnloading:c})}),{capture:!0,once:n})},l=function(t,n,e,i){var a;return function(){e&&n.isFinal&&e.disconnect(),n.value>=0&&(i||n.isFinal||"hidden"===document.visibilityState)&&(n.delta=n.value-(a||0),(n.delta||n.isFinal||void 0===a)&&(t(n),a=n.value))}},v=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=o("CLS",0),a=function(t){t.hadRecentInput||(i.value+=t.value,i.entries.push(t),n())},r=u("layout-shift",a);r&&(n=l(t,i,r,e),d((function(t){var e=t.isUnloading;r.takeRecords().map(a),e&&(i.isFinal=!0),n()})))},m=function(){return void 0===i&&(i="hidden"===document.visibilityState?0:1/0,d((function(t){var n=t.timeStamp;return i=n}),!0)),{get timeStamp(){return i}}},g=function(t){var n,e=o("FCP"),i=m(),a=u("paint",(function(t){"first-contentful-paint"===t.name&&t.startTime1&&void 0!==arguments[1]&&arguments[1],i=o("LCP"),a=m(),r=function(t){var e=t.startTime;e1&&void 0!==arguments[1]?arguments[1]:-1;return{name:t,value:n,delta:0,entries:[],id:e(),isFinal:!1}},a=function(t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var e=new PerformanceObserver((function(t){return t.getEntries().map(n)}));return e.observe({type:t,buffered:!0}),e}}catch(t){}},r=!1,o=!1,s=function(t){r=!t.persisted},u=function(){addEventListener(\"pagehide\",s),addEventListener(\"beforeunload\",(function(){}))},c=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];o||(u(),o=!0),addEventListener(\"visibilitychange\",(function(n){var e=n.timeStamp;\"hidden\"===document.visibilityState&&t({timeStamp:e,isUnloading:r})}),{capture:!0,once:n})},l=function(t,n,e,i){var a;return function(){e&&n.isFinal&&e.disconnect(),n.value>=0&&(i||n.isFinal||\"hidden\"===document.visibilityState)&&(n.delta=n.value-(a||0),(n.delta||n.isFinal||void 0===a)&&(t(n),a=n.value))}},p=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=i(\"CLS\",0),o=function(t){t.hadRecentInput||(r.value+=t.value,r.entries.push(t),n())},s=a(\"layout-shift\",o);s&&(n=l(t,r,s,e),c((function(t){var e=t.isUnloading;s.takeRecords().map(o),e&&(r.isFinal=!0),n()})))},d=function(){return void 0===t&&(t=\"hidden\"===document.visibilityState?0:1/0,c((function(n){var e=n.timeStamp;return t=e}),!0)),{get timeStamp(){return t}}},v=function(t){var n,e=i(\"FCP\"),r=d(),o=a(\"paint\",(function(t){\"first-contentful-paint\"===t.name&&t.startTime1&&void 0!==arguments[1]&&arguments[1],r=i(\"LCP\"),o=d(),s=function(t){var e=t.startTime;e1&&void 0!==arguments[1]?arguments[1]:-1;return{name:t,value:n,delta:0,entries:[],id:e(),isFinal:!1}},a=function(t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var e=new PerformanceObserver((function(t){return t.getEntries().map(n)}));return e.observe({type:t,buffered:!0}),e}}catch(t){}},r=!1,o=!1,s=function(t){r=!t.persisted},u=function(){addEventListener(\"pagehide\",s),addEventListener(\"beforeunload\",(function(){}))},c=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];o||(u(),o=!0),addEventListener(\"visibilitychange\",(function(n){var e=n.timeStamp;\"hidden\"===document.visibilityState&&t({timeStamp:e,isUnloading:r})}),{capture:!0,once:n})},l=function(t,n,e,i){var a;return function(){e&&n.isFinal&&e.disconnect(),n.value>=0&&(i||n.isFinal||\"hidden\"===document.visibilityState)&&(n.delta=n.value-(a||0),(n.delta||n.isFinal||void 0===a)&&(t(n),a=n.value))}},p=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=i(\"CLS\",0),o=function(t){t.hadRecentInput||(r.value+=t.value,r.entries.push(t),n())},s=a(\"layout-shift\",o);s&&(n=l(t,r,s,e),c((function(t){var e=t.isUnloading;s.takeRecords().map(o),e&&(r.isFinal=!0),n()})))},d=function(){return void 0===t&&(t=\"hidden\"===document.visibilityState?0:1/0,c((function(n){var e=n.timeStamp;return t=e}),!0)),{get timeStamp(){return t}}},v=function(t){var n,e=i(\"FCP\"),r=d(),o=a(\"paint\",(function(t){\"first-contentful-paint\"===t.name&&t.startTime1&&void 0!==arguments[1]&&arguments[1],r=i(\"LCP\"),o=d(),s=function(t){var e=t.startTime;e0})))).map(function(){var e=Object(f.a)(p.a.mark((function e(t){var a;return p.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t,""===t){e.next=5;break}return e.next=4,n(43)("./".concat(t,".png"));case 4:a=e.sent.default;case 5:return e.abrupt("return",{name:t,src:a});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())).then((function(e){l(e),b(e[0])}));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}!function(){e.apply(this,arguments)}()}),[w]);var m=Object(o.useCallback)((function(e){b(e)}),[b]);return Object(o.useEffect)((function(){t(j)}),[t,j]),Object(r.jsx)("div",{className:"HashtagChooser",children:u.map((function(e){var t=e.src,n=g===t;return Object(r.jsx)("button",{"data-src":t,className:n?"isInRow choosen":"isInRow",onClick:function(){return m(e)},children:""===e.name?a("button_no_hashtag"):e.name},e.name)}))})})),C=n(28),D=n.n(C),Q=n(29),H=n.n(Q);function T(e,t,n){return Math.min(Math.max(t,e),n)}var U=function(e){var t=e.onChange,n=e.backgroundURL,a=e.backgroundRatio,s=e.frameURL,i=e.hashtagURL,u=Object(o.useRef)(null),O=Object(o.useRef)(null),l=Object(o.useState)(!1),h=Object(c.a)(l,2),d=h[0],j=h[1],b=Object(o.useState)(null),p=Object(c.a)(b,2),f=p[0],g=p[1],w=Object(o.useState)(null),m=Object(c.a)(w,2),x=m[0],v=m[1],A=Object(o.useState)(0),C=Object(c.a)(A,2),Q=C[0],U=C[1],N=Object(o.useState)(0),k=Object(c.a)(N,2),S=k[0],E=k[1],F=Object(o.useState)(0),_=Object(c.a)(F,2),M=_[0],y=_[1],K=Object(o.useState)(0),B=Object(c.a)(K,2),R=B[0],L=B[1],I=Object(o.useState)(1),V=Object(c.a)(I,2),P=V[0],Y=V[1],G=Object(o.useState)(300),z=Object(c.a)(G,2),J=z[0],X=z[1],W=Object(o.useState)(300),q=Object(c.a)(W,2),Z=q[0],$=q[1],ee=Object(o.useState)(300),te=Object(c.a)(ee,2),ne=te[0],ae=te[1],ce=Object(o.useState)(300),re=Object(c.a)(ce,2),oe=re[0],se=re[1],ie=Object(o.useState)(0),ue=Object(c.a)(ie,2),Oe=ue[0],le=ue[1],he=Object(o.useState)(0),de=Object(c.a)(he,2),je=de[0],be=de[1],pe=Object(o.useState)(0),fe=Object(c.a)(pe,2),ge=fe[0],we=fe[1],me=Object(o.useState)(0),xe=Object(c.a)(me,2),ve=xe[0],Ae=xe[1];Object(o.useEffect)((function(){t&&t({x:Q,y:S,scale:P})}),[t,Q,S,P]),Object(o.useEffect)((function(){if(u&&u.current){var e=u.current.offsetWidth,t=u.current.offsetHeight;se(t),ae(e);var n=1,c=1;a<1?n=1/a:a>1&&(c=1*a),X(n),$(c)}}),[a]),Object(o.useEffect)((function(){var e=function(e,t,n,a,c){var r=Math.max(0,e*n-a)/2,o=Math.max(0,t*n-c)/2;return{rangeMaxX:r,rangeMinX:0-r,rangeMaxY:o,rangeMinY:0-o}}(J*ne,Z*oe,P,ne,oe),t=e.rangeMinX,n=e.rangeMinY,a=e.rangeMaxX,c=e.rangeMaxY;le(t),be(n),we(a),Ae(c)}),[J,Z,ne,oe,P]),Object(o.useEffect)((function(){U(0),E(0),y(0),L(0),Y(1)}),[n]);var Ce=Object(o.useCallback)((function(e){var t=1*e.target.dataset.x,n=1*e.target.dataset.y,a=T(t+e.deltaX,Oe,ge),c=T(n+e.deltaY,je,ve);e.isFinal?(U(a||0),E(c||0),y(0),L(0)):(y(a-t||0),L(c-n||0))}),[Oe,je,ge,ve]),De=Object(o.useCallback)((function(e,t,n,a){e.preventDefault();var c=T(1*e.target.dataset.scale+t/200,1,8);Y(c||1);var r=1*e.target.dataset.x,o=1*e.target.dataset.y;U(T(r,Oe,ge)||0),E(T(o,je,ve)||0)}),[Oe,je,ge,ve]);return Object(o.useEffect)((function(){if(!d&&u&&u.current){var e=u.current;e.addEventListener("mousedown",(function(e){e.preventDefault()}),!1),e.addEventListener("touchstart",(function(e){e.preventDefault()}),!1),e.addEventListener("touchend",(function(e){e.preventDefault()}),!1),e.addEventListener("touchmove",(function(e){e.preventDefault()}),!1),g(new D.a(e,{direction:"DIRECTION_ALL"})),v(H()(e)),j(!0)}}),[u,d]),Object(o.useEffect)((function(){if(f&&x&&d&&u&&u.current)return f.on("pan",Ce),x.wheel(De),function(){f.off("pan",Ce),x.unwheel()}}),[u,Ce,De,d,f,x]),Object(r.jsxs)("div",{className:"Editor",ref:u,"data-x":Q,"data-y":S,"data-scale":P,children:[Object(r.jsx)("img",{src:n,ref:O,alt:"",className:"background",style:{width:100*J+"%",height:100*Z+"%",transform:"translate3d(calc(-50% + ".concat(Q+M,"px), calc(-50% + ").concat(S+R,"px), 0) scale(").concat(P,",").concat(P,")")}}),Object(r.jsx)("img",{src:s,alt:"",className:"foreground"}),Object(r.jsx)("img",{src:i,alt:"",className:"hashtag"})]})},N=n.p+"static/media/VoltLogoPurple.125355f6.svg",k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDgAAAQ4AgMAAACRfoQcAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJUExURVAjeFAjeE8jd3Yl3xwAAAADdFJOU//+/Q3dsqEAAATsSURBVHgB7dAxAQAABAAwQtI/ipMCvi3CgiMV6NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQ4cOdOjQoUOHDh06dOjQoUOHDh06dOjQoQMdOnTo0KFDhw4dOnTo0KFDhw4dOnToQIcOHTp06NChQ4cOHTp06NChQ4cOHejQoUOHDh06dOjQoUOHDh06dOjQoUMHOnTo0KFDhw4dOnTo0KFDhw4dOnTo0IEOHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NChQIcOHTp06NChQ4cOHTp06NChQ4cOHejQoUOHDh06dOjQoUOHDh06dOjQoUMHOnTo0KFDhw4dOnTo0KFDhw4dOnTo0IEOHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06ECHDh06dOjQoUOHDh06dOjQoUOHDh060KFDhw4dOnTo0KFDhw4dOnTo0KFDhw506NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQ4cOBTp06NChQ4cOHTp06NChQ4cOHTp06ECHDh06dOjQoUOHDh06dOjQoUOHDh060KFDhw4dOnTo0KFDhw4dOnTo0KFDhw506NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQwc6dOjQoUOHDh06dOjQoUOHDh06dOjQgQ4dOnTo0KFDhw4dOnTo0KFDhw4dOnSgQ4cOHTp06NChQ4cOHTp06NChQ4cOHTx06NChQ4cOdOjQoUOHDh06dOjQoUOHDh06dOjQoQMdOnTo0KFDhw4dOnTo0KFDhw4dOnToQIcOHTp06NChQ4cOHTp06NChQ4cOHTrQoUOHDh06dOjQoUOHDh06dOjQoUOHDnTo0KFDhw4dOnTo0KFDhw4dOnTo0KEDHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NCBDh06dOjQoUOHDh06dOjQoUOHDh06dKBDhw4dOnTo0KFDhw4dOnTo0KFDhw4d6NChQ4cOHTp06NChQ4cOHTp06NChQ4cCHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NCBDh06dOjQoUOHDh06dOjQoUOHDh06dKBDhw4dOnTo0KFDhw4dOnTo0KFDhw4dxeoB30xd38yzCvgAAAAASUVORK5CYII=",S="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAALSURBVHgBY2BgAAAAAwABjPg5OgAAAABJRU5ErkJggg==",E=1080;function F(e){var t=e.href,n=e.name,a=e.target,c=e.children,s=Object(h.a)(e,["href","name","target","children"]),i=Object(o.useCallback)((function(e){return window.umami&&n&&window.umami.trackEvent("A: "+n),a?window.open(t,a):setTimeout((function(){window.location=t}),200),e.preventDefault(),!1}),[t,n,a]);return Object(r.jsx)("a",Object(l.a)(Object(l.a)({},s),{},{href:t,onClick:i,children:c}))}var _=v((function(e){var t=e.getString,n=e.locales,a=e.currentLocale,s=e.onLanguageChange,i=Object(o.useState)(null),u=Object(c.a)(i,2),h=u[0],b=u[1],p=Object(o.useState)(null),f=Object(c.a)(p,2),w=f[0],m=f[1],v=Object(o.useState)(null),C=Object(c.a)(v,2),D=C[0],Q=C[1],H=Object(o.useState)(1),T=Object(c.a)(H,2),_=T[0],M=T[1],y=Object(o.useState)(null),K=Object(c.a)(y,2),B=K[0],R=K[1],L=h?h.src:null,I=w?w.src:null,V=Object(o.useState)(0),P=Object(c.a)(V,2),Y=P[0],G=P[1],z=Object(o.useState)(0),J=Object(c.a)(z,2),X=J[0],W=J[1],q=Object(o.useState)({x:0,y:0,scale:1}),Z=Object(c.a)(q,2),$=Z[0],ee=Z[1],te=Object(o.useCallback)((function(e){b(e)}),[b]),ne=Object(o.useCallback)((function(e){m(e)}),[m]),ae=Object(o.useCallback)((function(e){var t=e.x,n=e.y,a=e.scale;ee({x:t,y:n,scale:a})}),[]),ce=Object(o.useCallback)((function(e){if(e){var t=new FileReader;t.onload=function(t){var n=new Image;n.onload=function(){var a,c;n.width0?e[0]:"")}),[l]);return Object(r.jsx)(G,{userLocales:n,onLocaleChange:d,children:Object(r.jsx)(_,{locales:R,currentLocale:O,onLanguageChange:h})},"AppLocalizationProvider")}u.a.render(Object(r.jsx)(s.a.StrictMode,{children:Object(r.jsx)(z,{})}),document.getElementById("root")),M()}},[[49,1,2]]]); -//# sourceMappingURL=main.7c298977.chunk.js.map \ No newline at end of file diff --git a/static/js/main.7c298977.chunk.js.map b/static/js/main.7c298977.chunk.js.map deleted file mode 100644 index f160580..0000000 --- a/static/js/main.7c298977.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["frames lazy /^/.//.*/.png$/ groupOptions: {} namespace object","hashtags lazy /^/.//.*/.png$/ groupOptions: {} namespace object","locales lazy /^/.//.*/.ftl$/ groupOptions: {} namespace object","FrameChooser.js","Localized.js","HashtagChooser.js","Editor.js","VoltLogoPurple.svg","purpleBG.png","empty_1x1.png","App.js","reportWebVitals.js","l10n.js","index.js"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","FrameChooser","onChange","useState","frames","setFrames","choosenFrame","setChoosenFrame","choosenFrameSRC","src","useEffect","a","all","frame_filename","default","name","new_frames","loadFrames","handleImageChoosing","useCallback","frame","className","frame_src_path","isChoosen","data-src","onClick","alt","Localized","props","elems","br","Fragment","children","withLocalization","Inner","l10n","React","useContext","FluentContext","createElement","getString","args","fallback","hashtags","split","tag","trim","filter","length","clamp","value","min","max","Math","Editor","backgroundURL","backgroundRatio","frameURL","hashtagURL","editorRef","useRef","backgroundImageRef","hammer_got_init","set_hammer_got_init","hammertime","set_hammertime","hamster","set_hamster","x","set_x","y","set_y","add_x","set_add_x","add_y","set_add_y","scale","set_scale","photoWidth","setPhotoWidth","photoHeight","setPhotoHeight","editorWidth","setEditorWidth","editorHeight","setEditorHeight","rangeMinX","set_rangeMinX","rangeMinY","set_rangeMinY","rangeMaxX","set_rangeMaxX","rangeMaxY","set_rangeMaxY","current","new_editorWidth","offsetWidth","new_editorHeight","offsetHeight","new_photoWidth","new_photoHeight","imageWidth","imageHeight","imageScale","containerWidth","containerHeight","updateRange","handleMove","event","prev_x","target","dataset","prev_y","new_x","deltaX","new_y","deltaY","isFinal","handleScale","delta","preventDefault","new_scale","element","addEventListener","Hammer","direction","Hamster","on","wheel","off","unwheel","ref","data-x","data-y","data-scale","style","width","height","transform","frameSize","UmamiLink","href","handleClick","window","umami","trackEvent","open","setTimeout","location","locales","currentLocale","onLanguageChange","setFrame","hashtag","setHashtag","originalPhoto","setOriginalPhoto","originalPhotoRation","setOriginalPhotoRation","orientation","set_orientation","set_width","set_height","cords","setCords","handleFrame","newFrame","handleHashtag","newHashtag","handleCordsChange","handleReadFile","file","reader","FileReader","onload","reader_event","img","Image","callback","view","DataView","result","getUint16","byteLength","offset","marker","getUint32","little","tags","i","readAsArrayBuffer","slice","getOrientation","new_orientation","original_ration","readAsDataURL","handleImage","files_event","files","onDrop","acceptedFiles","handleDownload","canvas","document","ctx","getContext","alpha","translate","rotate","PI","width_scaled","height_scaled","drawImage","pngUrl","toDataURL","mergeImages","purpleBG","b64","data","body","appendChild","download","click","remove","trigger_download","frameName","hashtagName","join","useDropzone","accept","maxFiles","noKeyboard","isDragActive","getRootProps","VoltLogoPurple","tabIndex","outline","type","display","startsWith","empty_1x1","entries","locale","data-locale","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","de","en","es","pt","fr","it","nl","pl","ru","_supportedLocales_","fetchMessages","path","fetch","response","text","messages","FluentResource","createMessagesGenerator","currentLocales","fetched","reduce","obj","cur","assign","generateBundles","bundle","FluentBundle","addResource","f","AppLocalizationProvider","userLocales","onLocaleChange","ReactLocalization","getDefaultBundles","bundles","setBundles","negotiateLanguages","defaultLocale","loadBundles","AppLanguageWrapper","navigator","languages","setUserLocales","setCurrentLocale","systemLocales","Array","isArray","handleLanguageChange","handleCurrentLocalesChange","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.7c298977.chunk.js","sourcesContent":["var map = {\n\t\"./0xSOM.png\": [\n\t\t50,\n\t\t13\n\t],\n\t\"./2xSOM-Blue-Green.png\": [\n\t\t51,\n\t\t14\n\t],\n\t\"./2xSOM-Red-Yellow.png\": [\n\t\t52,\n\t\t15\n\t],\n\t\"./4xSOM-Blue-Red-Yellow-Green.png\": [\n\t\t53,\n\t\t16\n\t],\n\t\"./5xSOM-Blue.png\": [\n\t\t54,\n\t\t17\n\t],\n\t\"./5xSOM-Green.png\": [\n\t\t55,\n\t\t18\n\t],\n\t\"./5xSOM-Pride.png\": [\n\t\t56,\n\t\t19\n\t],\n\t\"./5xSOM-Red.png\": [\n\t\t57,\n\t\t20\n\t],\n\t\"./5xSOM-White.png\": [\n\t\t58,\n\t\t21\n\t],\n\t\"./5xSOM-Yellow.png\": [\n\t\t59,\n\t\t22\n\t],\n\t\"./Volt-Stars.png\": [\n\t\t60,\n\t\t23\n\t],\n\t\"./btw_Meine_Stimme_Balken.png\": [\n\t\t61,\n\t\t24\n\t],\n\t\"./btw_Meine_Stimme_Sterne_bunt.png\": [\n\t\t62,\n\t\t25\n\t],\n\t\"./btw_Meine_Stimme_Sterne_lila.png\": [\n\t\t63,\n\t\t26\n\t],\n\t\"./btw_VoteVolt_Balken.png\": [\n\t\t64,\n\t\t27\n\t],\n\t\"./btw_VoteVolt_Sterne_bunt.png\": [\n\t\t65,\n\t\t28\n\t],\n\t\"./btw_VoteVolt_Sterne_lila.png\": [\n\t\t66,\n\t\t29\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 42;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./#DeineWahl.png\": [\n\t\t67,\n\t\t30\n\t],\n\t\"./#EUReform.png\": [\n\t\t68,\n\t\t31\n\t],\n\t\"./#Europa.png\": [\n\t\t69,\n\t\t32\n\t],\n\t\"./#EuropeCares.png\": [\n\t\t70,\n\t\t33\n\t],\n\t\"./#European.png\": [\n\t\t71,\n\t\t34\n\t],\n\t\"./#FutureMadeInEurope.png\": [\n\t\t72,\n\t\t35\n\t],\n\t\"./#GeneratieEuropa.png\": [\n\t\t73,\n\t\t36\n\t],\n\t\"./#GeneratieVolt.png\": [\n\t\t74,\n\t\t37\n\t],\n\t\"./#GenerationEuropa.png\": [\n\t\t75,\n\t\t38\n\t],\n\t\"./#IkStemVolt.png\": [\n\t\t76,\n\t\t39\n\t],\n\t\"./#JetztBistDuDran.png\": [\n\t\t77,\n\t\t40\n\t],\n\t\"./#JoinTheChange.png\": [\n\t\t78,\n\t\t41\n\t],\n\t\"./#RejoinEU.png\": [\n\t\t79,\n\t\t42\n\t],\n\t\"./#ValuesOverPower.png\": [\n\t\t80,\n\t\t43\n\t],\n\t\"./#Volt.png\": [\n\t\t81,\n\t\t44\n\t],\n\t\"./#Volt21.png\": [\n\t\t82,\n\t\t45\n\t],\n\t\"./#VoltEuropa.png\": [\n\t\t83,\n\t\t46\n\t],\n\t\"./#VoltForLGBTIAQ.png\": [\n\t\t84,\n\t\t47\n\t],\n\t\"./#VoltRLP.png\": [\n\t\t85,\n\t\t48\n\t],\n\t\"./#VoteVolt.png\": [\n\t\t86,\n\t\t49\n\t],\n\t\"./#WirWerdenLaut.png\": [\n\t\t87,\n\t\t50\n\t],\n\t\"./#ZukunftMadeInEurope.png\": [\n\t\t88,\n\t\t51\n\t],\n\t\"./#democracy.png\": [\n\t\t89,\n\t\t52\n\t],\n\t\"./#paneuropäisch.png\": [\n\t\t90,\n\t\t53\n\t],\n\t\"./#pragmatisch.png\": [\n\t\t91,\n\t\t54\n\t],\n\t\"./#progressiv.png\": [\n\t\t92,\n\t\t55\n\t],\n\t\"./stemvolt.nl.png\": [\n\t\t93,\n\t\t56\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 43;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./de.ftl\": [\n\t\t94,\n\t\t3\n\t],\n\t\"./en.ftl\": [\n\t\t95,\n\t\t4\n\t],\n\t\"./es.ftl\": [\n\t\t96,\n\t\t5\n\t],\n\t\"./fr.ftl\": [\n\t\t97,\n\t\t6\n\t],\n\t\"./it.ftl\": [\n\t\t98,\n\t\t7\n\t],\n\t\"./nl.ftl\": [\n\t\t99,\n\t\t8\n\t],\n\t\"./pl.ftl\": [\n\t\t100,\n\t\t9\n\t],\n\t\"./pt.ftl\": [\n\t\t101,\n\t\t10\n\t],\n\t\"./ru.ftl\": [\n\t\t102,\n\t\t11\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 48;\nmodule.exports = webpackAsyncContext;","import { useState, useEffect, useCallback } from 'react'\n\nfunction FrameChooser({ onChange }) {\n const [frames, setFrames] = useState([])\n const [choosenFrame, setChoosenFrame] = useState(null)\n\n const choosenFrameSRC = !!choosenFrame ? choosenFrame.src : null\n\n useEffect(() => {\n async function loadFrames(){\n Promise.all(\n [\n // 'btw_VoteVolt_Balken',\n // 'btw_Meine_Stimme_Balken',\n '4xSOM-Blue-Red-Yellow-Green',\n '5xSOM-Pride',\n // 'btw_VoteVolt_Sterne_bunt',\n // 'btw_Meine_Stimme_Sterne_bunt',\n 'Volt-Stars',\n // 'btw_VoteVolt_Sterne_lila',\n // 'btw_Meine_Stimme_Sterne_lila',\n '0xSOM', // SOM = Stripes of Movement\n '5xSOM-Blue',\n '5xSOM-Green',\n '5xSOM-Red',\n '5xSOM-Yellow',\n // '5xSOM-White',\n // '2xSOM-Blue-Green',\n // '2xSOM-Red-Yellow',\n ]\n .map(async frame_filename => {\n return {\n name: frame_filename,\n src: (await import(`./frames/${frame_filename}.png`)).default,\n }\n })\n )\n .then(new_frames => {\n setFrames(new_frames)\n setChoosenFrame(new_frames[0])\n })\n }\n loadFrames()\n }, [])\n\n const handleImageChoosing = useCallback(frame => {\n setChoosenFrame(frame)\n }, [setChoosenFrame])\n\n useEffect(() => {\n onChange(choosenFrame)\n }, [onChange, choosenFrame])\n\n return (\n
\n {\n frames.map(frame => {\n const frame_src_path = frame.src\n const isChoosen = choosenFrameSRC === frame_src_path\n return handleImageChoosing(frame)}\n >\n {frame.name}\n
\n })\n }\n \n )\n}\n\nexport default FrameChooser\n","import React from 'react'\nimport {\n Localized as LocalizedOriginal,\n // withLocalization,\n} from '@fluent/react'\n\nimport { FluentContext } from '../node_modules/@fluent/react/esm/context.js'\n\nconst Localized = props => (\n ,\n ...props.elems,\n }}\n >\n {props.children}\n \n)\n\n// A custom withLocalization to have an empty fallback.\n// It is nearly identical to the original.\nfunction withLocalization(Inner) {\n function WithLocalization(props) {\n const l10n = React.useContext(FluentContext)\n\n const getString = (id, args, fallback) => l10n.getString(id, args, fallback || ' ')\n\n return React.createElement(Inner, { getString, ...props })\n }\n return WithLocalization\n}\n\nexport {\n withLocalization,\n Localized,\n Localized as default,\n}\n\n/*\n\nimport { Localized, withLocalization } from '../Localized/'\n\n\nexport default withLocalization(componentName)\n\n\nimport Localized from '../Localized/'\n\n\nimport { withLocalization } from '@fluent/react'\nexport default withLocalization(componentName)\n\n*/\n","import { useState, useEffect, useCallback } from 'react'\nimport { withLocalization } from './Localized.js'\n\nfunction HashtagChooser({ onChange, getString }) {\n const [frames, setFrames] = useState([])\n const [choosenFrame, setChoosenFrame] = useState(null)\n\n const choosenFrameSRC = !!choosenFrame ? choosenFrame.src : null\n\n let hashtags = getString('hashtags')\n\n useEffect(() => {\n async function loadFrames() {\n Promise.all(\n [\n '',\n ...(\n hashtags.split('\\n')\n .map(tag => tag.trim())\n .filter(tag => tag.length > 0)\n )\n ]\n .map(async frame_filename => {\n let src = frame_filename\n if (frame_filename !== '') {\n src = (await import(`./hashtags/${frame_filename}.png`)).default\n }\n return {\n name: frame_filename,\n src\n }\n })\n )\n .then(new_frames => {\n setFrames(new_frames)\n setChoosenFrame(new_frames[0])\n })\n }\n loadFrames()\n }, [hashtags])\n\n const handleImageChoosing = useCallback(frame => {\n setChoosenFrame(frame)\n }, [setChoosenFrame])\n\n useEffect(() => {\n onChange(choosenFrame)\n }, [onChange, choosenFrame])\n\n return (\n
\n {\n frames.map(frame => {\n const frame_src_path = frame.src\n const isChoosen = choosenFrameSRC === frame_src_path\n return handleImageChoosing(frame)}\n >\n {frame.name === '' ? getString('button_no_hashtag') : frame.name}\n \n })\n }\n
\n )\n}\n\nexport default withLocalization(HashtagChooser)\n","import { useEffect, useRef, useState, useCallback } from 'react'\n\nimport Hammer from 'hammerjs'\nimport Hamster from 'hamsterjs'\n\nfunction updateRange(imageWidth, imageHeight, imageScale, containerWidth, containerHeight) {\n\n const rangeX = Math.max(0, (imageWidth * imageScale) - containerWidth)\n const rangeY = Math.max(0, (imageHeight * imageScale) - containerHeight)\n\n const rangeMaxX = (rangeX / 2)\n const rangeMinX = 0 - rangeMaxX\n\n const rangeMaxY = (rangeY / 2)\n const rangeMinY = 0 - rangeMaxY\n\n return {\n rangeMaxX,\n rangeMinX,\n rangeMaxY,\n rangeMinY,\n }\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(min, value), max)\n}\n\n\n\nlet minScale = 1;\nlet maxScale = 8;\n\n\n\nfunction Editor({ onChange, backgroundURL, backgroundRatio, frameURL, hashtagURL }) {\n const editorRef = useRef(null)\n const backgroundImageRef = useRef(null)\n\n const [hammer_got_init, set_hammer_got_init] = useState(false)\n\n const [hammertime, set_hammertime] = useState(null)\n const [hamster, set_hamster] = useState(null)\n\n const [x, set_x] = useState(0)\n const [y, set_y] = useState(0)\n const [add_x, set_add_x] = useState(0)\n const [add_y, set_add_y] = useState(0)\n const [scale, set_scale] = useState(1)\n // const [add_scale, set_add_scale] = useState(0)\n\n const [photoWidth, setPhotoWidth] = useState(300)\n const [photoHeight, setPhotoHeight] = useState(300)\n const [editorWidth, setEditorWidth] = useState(300)\n const [editorHeight, setEditorHeight] = useState(300)\n\n const [rangeMinX, set_rangeMinX] = useState(0)\n const [rangeMinY, set_rangeMinY] = useState(0)\n const [rangeMaxX, set_rangeMaxX] = useState(0)\n const [rangeMaxY, set_rangeMaxY] = useState(0)\n\n useEffect(() => {\n if (!!onChange) {\n onChange({ x, y, scale})\n }\n }, [onChange, x, y, scale])\n\n useEffect(() => {\n if (!!editorRef && !!editorRef.current) {\n const new_editorWidth = editorRef.current.offsetWidth\n const new_editorHeight = editorRef.current.offsetHeight\n setEditorHeight(new_editorHeight)\n setEditorWidth(new_editorWidth)\n\n let new_photoWidth = 1\n let new_photoHeight = 1\n if (backgroundRatio < 1) {\n new_photoWidth = 1 / backgroundRatio\n } else if (backgroundRatio > 1) {\n new_photoHeight = 1 * backgroundRatio\n }\n\n setPhotoWidth(new_photoWidth)\n setPhotoHeight(new_photoHeight)\n }\n }, [backgroundRatio])\n\n useEffect(() => {\n const {\n rangeMinX,\n rangeMinY,\n rangeMaxX,\n rangeMaxY,\n } = updateRange(photoWidth * editorWidth, photoHeight * editorHeight, scale, editorWidth, editorHeight)\n\n set_rangeMinX(rangeMinX)\n set_rangeMinY(rangeMinY)\n set_rangeMaxX(rangeMaxX)\n set_rangeMaxY(rangeMaxY)\n }, [\n photoWidth,\n photoHeight,\n editorWidth,\n editorHeight,\n scale,\n ])\n\n useEffect(() => {\n set_x(0)\n set_y(0)\n set_add_x(0)\n set_add_y(0)\n set_scale(1)\n }, [backgroundURL])\n\n const handleMove = useCallback(event => {\n const prev_x = event.target.dataset.x * 1\n const prev_y = event.target.dataset.y * 1\n\n const new_x = clamp(prev_x + event.deltaX, rangeMinX, rangeMaxX)\n const new_y = clamp(prev_y + event.deltaY, rangeMinY, rangeMaxY)\n\n if (event.isFinal) {\n set_x(new_x || 0)\n set_y(new_y || 0)\n set_add_x(0)\n set_add_y(0)\n }else{\n set_add_x(new_x - prev_x || 0)\n set_add_y(new_y - prev_y || 0)\n }\n }, [\n rangeMinX,\n rangeMinY,\n rangeMaxX,\n rangeMaxY,\n ])\n\n const handleScale = useCallback((event, delta, deltaX, deltaY) => {\n event.preventDefault()\n\n const prev_scale = event.target.dataset.scale * 1\n const new_scale = clamp(prev_scale + delta / 200, minScale, maxScale)\n set_scale(new_scale || 1)\n\n const prev_x = event.target.dataset.x * 1\n const prev_y = event.target.dataset.y * 1\n set_x(clamp(prev_x, rangeMinX, rangeMaxX) || 0)\n set_y(clamp(prev_y, rangeMinY, rangeMaxY) || 0)\n }, [\n rangeMinX,\n rangeMinY,\n rangeMaxX,\n rangeMaxY,\n ])\n\n useEffect(() => {\n if (!hammer_got_init && !!editorRef && !!editorRef.current) {\n const element = editorRef.current\n\n element.addEventListener('mousedown', event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n element.addEventListener(\"touchstart\", event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n element.addEventListener(\"touchend\", event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n element.addEventListener(\"touchmove\", event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n\n set_hammertime(new Hammer(element, {\n direction: 'DIRECTION_ALL',\n }))\n\n set_hamster(Hamster(element))\n\n set_hammer_got_init(true)\n }\n }, [editorRef, hammer_got_init])\n\n useEffect(() => {\n if (!!hammertime && !!hamster && hammer_got_init && !!editorRef && !!editorRef.current) {\n hammertime.on('pan', handleMove)\n hamster.wheel(handleScale)\n\n return function () {\n hammertime.off('pan', handleMove)\n hamster.unwheel()\n }\n }\n }, [editorRef, handleMove, handleScale, hammer_got_init, hammertime, hamster])\n\n return (\n \n \n \n \n \n )\n}\n\nexport default Editor\n","export default __webpack_public_path__ + \"static/media/VoltLogoPurple.125355f6.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDgAAAQ4AgMAAACRfoQcAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJUExURVAjeFAjeE8jd3Yl3xwAAAADdFJOU//+/Q3dsqEAAATsSURBVHgB7dAxAQAABAAwQtI/ipMCvi3CgiMV6NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQ4cOdOjQoUOHDh06dOjQoUOHDh06dOjQoQMdOnTo0KFDhw4dOnTo0KFDhw4dOnToQIcOHTp06NChQ4cOHTp06NChQ4cOHejQoUOHDh06dOjQoUOHDh06dOjQoUMHOnTo0KFDhw4dOnTo0KFDhw4dOnTo0IEOHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NChQIcOHTp06NChQ4cOHTp06NChQ4cOHejQoUOHDh06dOjQoUOHDh06dOjQoUMHOnTo0KFDhw4dOnTo0KFDhw4dOnTo0IEOHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06ECHDh06dOjQoUOHDh06dOjQoUOHDh060KFDhw4dOnTo0KFDhw4dOnTo0KFDhw506NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQ4cOBTp06NChQ4cOHTp06NChQ4cOHTp06ECHDh06dOjQoUOHDh06dOjQoUOHDh060KFDhw4dOnTo0KFDhw4dOnTo0KFDhw506NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQwc6dOjQoUOHDh06dOjQoUOHDh06dOjQgQ4dOnTo0KFDhw4dOnTo0KFDhw4dOnSgQ4cOHTp06NChQ4cOHTp06NChQ4cOHTx06NChQ4cOdOjQoUOHDh06dOjQoUOHDh06dOjQoQMdOnTo0KFDhw4dOnTo0KFDhw4dOnToQIcOHTp06NChQ4cOHTp06NChQ4cOHTrQoUOHDh06dOjQoUOHDh06dOjQoUOHDnTo0KFDhw4dOnTo0KFDhw4dOnTo0KEDHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NCBDh06dOjQoUOHDh06dOjQoUOHDh06dKBDhw4dOnTo0KFDhw4dOnTo0KFDhw4d6NChQ4cOHTp06NChQ4cOHTp06NChQ4cCHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NCBDh06dOjQoUOHDh06dOjQoUOHDh06dKBDhw4dOnTo0KFDhw4dOnTo0KFDhw4dxeoB30xd38yzCvgAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAALSURBVHgBY2BgAAAAAwABjPg5OgAAAABJRU5ErkJggg==\"","import { useState, useCallback } from 'react'\nimport './App.css'\nimport { useDropzone } from 'react-dropzone'\nimport mergeImages from 'merge-images'\nimport FrameChooser from './FrameChooser.js'\nimport HashtagChooser from './HashtagChooser.js'\nimport Editor from './Editor.js'\nimport VoltLogoPurple from './VoltLogoPurple.svg'\nimport purpleBG from './purpleBG.png'\nimport empty_1x1 from './empty_1x1.png'\n\nimport { withLocalization, Localized } from './Localized.js'\n\nconst frameSize = 1080\n\nfunction getOrientation(file, callback) {\n // Source: http://stackoverflow.com/a/32490603\n // (With some modifications: I just made the code fit the style-guide.)\n const reader = new FileReader()\n\n reader.onload = function (event) {\n const view = new DataView(event.target.result)\n\n if (view.getUint16(0, false) !== 0xFFD8) {\n return callback(-2)\n }\n\n const length = view.byteLength\n let offset = 2\n\n while (offset < length) {\n const marker = view.getUint16(offset, false)\n offset += 2\n\n if (marker === 0xFFE1) {\n if (view.getUint32(offset += 2, false) !== 0x45786966) {\n return callback(-1)\n }\n const little = view.getUint16(offset += 6, false) === 0x4949\n offset += view.getUint32(offset + 4, little)\n const tags = view.getUint16(offset, little)\n offset += 2\n\n for (var i = 0; i < tags; i++) {\n if (view.getUint16(offset + (i * 12), little) === 0x0112) {\n return callback(view.getUint16(offset + (i * 12) + 8, little))\n }\n }\n } else if ((marker & 0xFF00) !== 0xFF00) {\n break\n } else {\n offset += view.getUint16(offset, false)\n }\n }\n return callback(-1)\n }\n\n reader.readAsArrayBuffer(file.slice(0, 64 * 1024))\n}\n\nfunction trigger_download(name, data){\n const a = document.createElement('a')\n document.body.appendChild(a)\n // a.target = '_blank'\n a.download = name\n a.href = data\n a.click()\n a.remove()\n}\n\nfunction UmamiLink({ href, name, target, children, ...props }) {\n const handleClick = useCallback(event => {\n\n if (window.umami && name) {\n window.umami.trackEvent('A: ' + name) // Log Anker / Link\n }\n\n // follow link\n if (!(!!target)) {\n setTimeout(() => {\n window.location = href\n }, 200)\n }else{\n window.open(href, target)\n }\n\n // Prevent normal href-follow\n event.preventDefault()\n return false\n }, [href, name, target])\n\n return \n {children}\n \n}\n\nfunction App({ getString, locales, currentLocale, onLanguageChange }) {\n const [frame, setFrame] = useState(null)\n const [hashtag, setHashtag] = useState(null)\n const [originalPhoto, setOriginalPhoto] = useState(null)\n const [originalPhotoRation, setOriginalPhotoRation] = useState(1)\n const [orientation, set_orientation] = useState(null)\n\n const frameURL = !!frame ? frame.src : null\n const hashtagURL = !!hashtag ? hashtag.src : null\n\n // const [combinedImage, set_combinedImage] = useState(null)\n\n const [width, set_width] = useState(0)\n const [height, set_height] = useState(0)\n\n const [cords, setCords] = useState({x:0, y:0, scale:1})\n\n const handleFrame = useCallback(newFrame => {\n setFrame(newFrame)\n }, [setFrame])\n\n const handleHashtag = useCallback(newHashtag => {\n setHashtag(newHashtag)\n }, [setHashtag])\n\n const handleCordsChange = useCallback(({x, y, scale}) => {\n setCords({ x, y, scale })\n }, [])\n\n const handleReadFile = useCallback(file => {\n if (!(!!file)) {\n return;\n }\n\n const reader = new FileReader()\n reader.onload = reader_event => {\n const img = new Image()\n img.onload = function () {\n let width, height;\n if (img.width < img.height) {\n height = (img.height / img.width) * frameSize\n width = frameSize\n } else {\n height = frameSize\n width = (img.width / img.height) * frameSize\n }\n\n getOrientation(file, new_orientation => {\n let original_ration = 1\n // use the correct image orientation\n switch (new_orientation) {\n // Source: https://stackoverflow.com/a/30242954/2387277\n // Source: https://stackoverflow.com/questions/19463126/how-to-draw-photo-with-correct-orientation-in-canvas-after-capture-photo-by-usin\n case 2:\n // horizontal flip\n original_ration = height / width\n break\n case 3:\n // 180° rotate left\n original_ration = height / width\n break\n case 4:\n // vertical flip\n original_ration = height / width\n break\n case 5:\n // vertical flip + 90 rotate right\n original_ration = width / height\n break\n case 6:\n // 90° rotate right\n original_ration = width / height\n break\n case 7:\n // horizontal flip + 90 rotate right\n original_ration = width / height\n break\n case 8:\n // 90° rotate left\n original_ration = width / height\n break\n default:\n original_ration = height / width\n break\n }\n\n set_width(width)\n set_height(height)\n setOriginalPhoto(reader_event.target.result)\n set_orientation(new_orientation)\n setOriginalPhotoRation(original_ration)\n })\n }\n img.src = reader_event.target.result\n }\n reader.readAsDataURL(file)\n }, [])\n\n const handleImage = useCallback(files_event => {\n handleReadFile(files_event.target.files[0])\n }, [handleReadFile])\n\n const onDrop = useCallback(acceptedFiles => {\n handleReadFile(acceptedFiles[0])\n }, [handleReadFile])\n\n const handleDownload = useCallback(() => {\n const img = new Image()\n img.onload = function () {\n const canvas = document.createElement('canvas')\n canvas.width = frameSize\n canvas.height = frameSize\n\n const ctx = canvas.getContext('2d', { alpha: true })\n\n // use the correct image orientation\n switch (orientation) {\n // Source: https://stackoverflow.com/a/30242954/2387277\n // Source: https://stackoverflow.com/questions/19463126/how-to-draw-photo-with-correct-orientation-in-canvas-after-capture-photo-by-usin\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0)\n ctx.scale(-1, 1)\n break\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height)\n ctx.rotate(Math.PI)\n break\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height)\n ctx.scale(1, -1)\n break\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.scale(1, -1)\n break\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.translate(0, -canvas.height)\n break\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.translate(canvas.width, -canvas.height)\n ctx.scale(-1, 1)\n break\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI)\n ctx.translate(-canvas.width, 0)\n break\n default:\n break\n }\n\n\n const width_scaled = width * cords.scale\n const height_scaled = height * cords.scale\n\n ctx.drawImage(\n img,\n cords.x * 3.5 + (frameSize - width_scaled) * 0.5,\n cords.y * 3.5 + (frameSize - height_scaled) * 0.5,\n width_scaled,\n height_scaled,\n )\n // ctx.drawImage(\n // img,\n // ((frameSize - width_scaled) * 0.5),\n // ((frameSize - height_scaled) * 0.5),\n // width_scaled,\n // height_scaled,\n // )\n\n const pngUrl = canvas.toDataURL()\n\n mergeImages([\n purpleBG,\n ...(pngUrl ? [pngUrl] : []),\n ...(frameURL ? [frameURL] : []),\n ...(hashtagURL ? [hashtagURL] : []),\n ])\n .then(b64 => {\n // set_combinedImage(b64)\n trigger_download('volt-profile-picture.png', b64)\n\n const frameName = frame.name || 'No-Frame'\n const hashtagName = hashtag.name || 'No-Hashtag'\n\n if (window.umami) {\n window.umami.trackEvent('F: ' + frameName) // Log Frame\n window.umami.trackEvent('H: ' + hashtagName) // Log Hashtag\n window.umami.trackEvent('C: ' + [frameName, hashtagName].join(' | ')) // Log Combined\n }\n })\n\n }\n img.src = originalPhoto\n }, [\n originalPhoto,\n cords.x,\n cords.y,\n cords.scale,\n orientation,\n frameURL,\n hashtagURL,\n height,\n width,\n frame,\n hashtag\n ])\n\n const { isDragActive, getRootProps } = useDropzone({\n onDrop,\n accept: 'image/*',\n maxFiles: 1,\n noKeyboard: true,\n })\n\n return (\n
\n {getString('alt_volt_logo')}\n

\n\n
\n \n
\n\n

\n

\n\n \n\n {true || !!originalPhoto ? (<>\n

\n \n {\n (frameURL || '').startsWith('/static/media/btw_')\n ? null\n : <>\n

\n \n \n }\n ) : null}\n\n {!!originalPhoto && !!frameURL ? (<>\n

\n {/*\n

Edit your Photo:

\n

Your can reposition the image and scale it. Use pinch-to-zoom or scroll to scale.

\n */}\n\n \n\n \n ) : null}\n\n
\n \n \n \n   •  \n \n \n \n   •  \n \n \n \n   •  \n \n \n \n
\n\n {\n !!locales && !!onLanguageChange\n ?
\n {\n Object.entries(locales)\n .map(([locale, name]) => {\n return \n {name}\n \n })\n }\n
\n : null\n }\n
\n )\n}\nexport default withLocalization(App)\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry)\n getFID(onPerfEntry)\n getFCP(onPerfEntry)\n getLCP(onPerfEntry)\n getTTFB(onPerfEntry)\n })\n }\n}\n\nexport default reportWebVitals\n","import React, { useEffect, useState } from 'react'\n\n// https://projectfluent.org/play/\n\n// import {LocalizationProvider,Localized} from '@fluent/react' // '@fluent/react/compat'\nimport { ReactLocalization, LocalizationProvider } from '@fluent/react'\nimport { FluentBundle, FluentResource } from '@fluent/bundle'\nimport { negotiateLanguages } from '@fluent/langneg'\n\n\nexport const locales = {\n de: 'Deutsch',\n en: 'English',\n es: 'Español',\n pt: 'Português',\n fr: 'Français',\n it: 'Italiano',\n nl: 'Nederlands',\n pl: 'Polska',\n ru: 'Pусский',\n}\n\nconst _supportedLocales_ = Object.keys(locales)\nconst _defaultLocale_ = 'en'\n\n\nasync function fetchMessages(locale) {\n const path = await import('./locales/' + locale + '.ftl')\n\n const response = await fetch(path.default)\n const messages = await response.text()\n\n return { [locale]: new FluentResource(messages) }\n}\n\nfunction getDefaultBundles() {\n const bundle = new FluentBundle('')\n bundle.addResource(new FluentResource(''))\n return new ReactLocalization([bundle])\n}\n\nasync function createMessagesGenerator(currentLocales) {\n const fetched = await Promise.all(\n currentLocales.map(fetchMessages)\n )\n const messages = fetched.reduce(\n (obj, cur) => Object.assign(obj, cur)\n )\n\n return function* generateBundles() {\n for (const locale of currentLocales) {\n const bundle = new FluentBundle(locale)\n bundle.addResource(messages[locale])\n yield bundle\n }\n }\n}\n\nexport function AppLocalizationProvider({ userLocales, children, onLocaleChange }){\n const [bundles, setBundles] = useState(getDefaultBundles())\n\n useEffect(() => {\n async function loadBundles() {\n const currentLocales = negotiateLanguages(\n userLocales,\n _supportedLocales_,\n { defaultLocale: _defaultLocale_ }\n )\n\n if (!!onLocaleChange) {\n onLocaleChange(currentLocales)\n }\n\n const generateBundles = await createMessagesGenerator(currentLocales)\n setBundles( new ReactLocalization(generateBundles()) )\n }\n loadBundles()\n }, [userLocales, onLocaleChange])\n\n if (!bundles) {\n // Show a loader.\n return
Loading texts…
\n }\n\n return \n {children}\n \n}\n\n","import React, { useState, useEffect, useCallback } from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\nimport reportWebVitals from './reportWebVitals'\n\nimport 'intl-pluralrules'\nimport { AppLocalizationProvider, locales } from './l10n.js'\n\nfunction AppLanguageWrapper() {\n const [userLocales, setUserLocales] = useState(navigator.languages)\n const [currentLocale, setCurrentLocale] = useState(null)\n\n useEffect(() => {\n let systemLocales = navigator.languages\n if (window.umami && (!!systemLocales || Array.isArray(systemLocales))) {\n for (const locale of systemLocales) {\n window.umami.trackEvent('L: ' + locale) // Log Locale / Languages\n }\n }\n }, [])\n\n const handleLanguageChange = useCallback(event => {\n setUserLocales([event.target.dataset.locale])\n }, [setUserLocales])\n\n const handleCurrentLocalesChange = useCallback(currentLocales => {\n setCurrentLocale(currentLocales.length > 0 ? currentLocales[0] : '')\n }, [setCurrentLocale])\n\n return \n \n \n}\n\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.b8ca9d1f.chunk.js b/static/js/main.b8ca9d1f.chunk.js new file mode 100644 index 0000000..426642d --- /dev/null +++ b/static/js/main.b8ca9d1f.chunk.js @@ -0,0 +1,2 @@ +(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[0],{38:function(e,t,n){},42:function(e,t,n){var a={"./0xSOM.png":[50,13],"./2xSOM-Blue-Green.png":[51,14],"./2xSOM-Red-Yellow.png":[52,15],"./4xSOM-Blue-Red-Yellow-Green.png":[53,16],"./5xSOM-Blue.png":[54,17],"./5xSOM-Green.png":[55,18],"./5xSOM-Pride.png":[56,19],"./5xSOM-Red.png":[57,20],"./5xSOM-White.png":[58,21],"./5xSOM-Yellow.png":[59,22],"./Volt-Stars.png":[60,23],"./btw_Meine_Stimme_Balken.png":[61,24],"./btw_Meine_Stimme_Sterne_bunt.png":[62,25],"./btw_Meine_Stimme_Sterne_lila.png":[63,26],"./btw_VoteVolt_Balken.png":[64,27],"./btw_VoteVolt_Sterne_bunt.png":[65,28],"./btw_VoteVolt_Sterne_lila.png":[66,29],"./ukraine.png":[67,30]};function c(e){if(!n.o(a,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=a[e],c=t[0];return n.e(t[1]).then((function(){return n(c)}))}c.keys=function(){return Object.keys(a)},c.id=42,e.exports=c},43:function(e,t,n){var a={"./#DeineWahl.png":[68,31],"./#EUReform.png":[69,32],"./#Europa.png":[70,33],"./#EuropeCares.png":[71,34],"./#European.png":[72,35],"./#FutureMadeInEurope.png":[73,36],"./#GeneratieEuropa.png":[74,37],"./#GeneratieVolt.png":[75,38],"./#GenerationEuropa.png":[76,39],"./#IkStemVolt.png":[77,40],"./#JetztBistDuDran.png":[78,41],"./#JoinTheChange.png":[79,42],"./#RejoinEU.png":[80,43],"./#ValuesOverPower.png":[81,44],"./#Volt.png":[82,45],"./#Volt21.png":[83,46],"./#VoltEuropa.png":[84,47],"./#VoltForLGBTIAQ.png":[85,48],"./#VoltRLP.png":[86,49],"./#VoteVolt.png":[87,50],"./#WirWerdenLaut.png":[88,51],"./#ZukunftMadeInEurope.png":[89,52],"./#democracy.png":[90,53],"./#paneurop\xe4isch.png":[91,54],"./#pragmatisch.png":[92,55],"./#progressiv.png":[93,56],"./stemvolt.nl.png":[94,57]};function c(e){if(!n.o(a,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=a[e],c=t[0];return n.e(t[1]).then((function(){return n(c)}))}c.keys=function(){return Object.keys(a)},c.id=43,e.exports=c},48:function(e,t,n){var a={"./de.ftl":[95,3],"./en.ftl":[96,4],"./es.ftl":[97,5],"./fr.ftl":[98,6],"./it.ftl":[99,7],"./nl.ftl":[100,8],"./pl.ftl":[101,9],"./pt.ftl":[102,10],"./ru.ftl":[103,11]};function c(e){if(!n.o(a,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=a[e],c=t[0];return n.e(t[1]).then((function(){return n(c)}))}c.keys=function(){return Object.keys(a)},c.id=48,e.exports=c},49:function(e,t,n){"use strict";n.r(t);var a=n(5),c=n(2),r=n(1),o=n(0),s=n.n(o),i=n(25),u=n.n(i),O=n(13),l=n(6),h=n(32),d=(n(38),n(30)),j=n(27),b=n(4),p=n.n(b),f=n(9);var g=function(e){var t=e.onChange,a=Object(o.useState)([]),s=Object(c.a)(a,2),i=s[0],u=s[1],O=Object(o.useState)(null),l=Object(c.a)(O,2),h=l[0],d=l[1],j=h?h.src:null;Object(o.useEffect)((function(){function e(){return(e=Object(f.a)(p.a.mark((function e(){return p.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:Promise.all(["ukraine","4xSOM-Blue-Red-Yellow-Green","5xSOM-Pride","Volt-Stars","0xSOM","5xSOM-Blue","5xSOM-Green","5xSOM-Red","5xSOM-Yellow"].map(function(){var e=Object(f.a)(p.a.mark((function e(t){return p.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=t,e.next=3,n(42)("./".concat(t,".png"));case 3:return e.t1=e.sent.default,e.abrupt("return",{name:e.t0,src:e.t1});case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())).then((function(e){u(e),d(e[0])}));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}!function(){e.apply(this,arguments)}()}),[]);var b=Object(o.useCallback)((function(e){d(e)}),[d]);return Object(o.useEffect)((function(){t(h)}),[t,h]),Object(r.jsx)("div",{className:"FrameChooser",children:i.map((function(e){var t=e.src,n=j===t;return Object(r.jsx)("div",{"data-src":t,className:n?"frame choosen":"frame",onClick:function(){return b(e)},children:Object(r.jsx)("img",{alt:e.name,src:t})},t)}))})},w=n(17),m=n(10),x=function(e){return Object(r.jsx)(w.b,Object(l.a)(Object(l.a)({},e),{},{elems:Object(l.a)({br:Object(r.jsx)("br",{})},e.elems),children:Object(r.jsx)(s.a.Fragment,{children:e.children})}),e.id)};function v(e){return function(t){var n=s.a.useContext(m.a);return s.a.createElement(e,Object(l.a)({getString:function(e,t,a){return n.getString(e,t,a||" ")}},t))}}var A=v((function(e){var t=e.onChange,a=e.getString,s=Object(o.useState)([]),i=Object(c.a)(s,2),u=i[0],l=i[1],h=Object(o.useState)(null),d=Object(c.a)(h,2),j=d[0],b=d[1],g=j?j.src:null,w=a("hashtags");Object(o.useEffect)((function(){function e(){return(e=Object(f.a)(p.a.mark((function e(){return p.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:Promise.all([""].concat(Object(O.a)(w.split("\n").map((function(e){return e.trim()})).filter((function(e){return e.length>0})))).map(function(){var e=Object(f.a)(p.a.mark((function e(t){var a;return p.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t,""===t){e.next=5;break}return e.next=4,n(43)("./".concat(t,".png"));case 4:a=e.sent.default;case 5:return e.abrupt("return",{name:t,src:a});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())).then((function(e){l(e),b(e[0])}));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}!function(){e.apply(this,arguments)}()}),[w]);var m=Object(o.useCallback)((function(e){b(e)}),[b]);return Object(o.useEffect)((function(){t(j)}),[t,j]),Object(r.jsx)("div",{className:"HashtagChooser",children:u.map((function(e){var t=e.src,n=g===t;return Object(r.jsx)("button",{"data-src":t,className:n?"isInRow choosen":"isInRow",onClick:function(){return m(e)},children:""===e.name?a("button_no_hashtag"):e.name},e.name)}))})})),C=n(28),D=n.n(C),Q=n(29),H=n.n(Q);function T(e,t,n){return Math.min(Math.max(t,e),n)}var U=function(e){var t=e.onChange,n=e.backgroundURL,a=e.backgroundRatio,s=e.frameURL,i=e.hashtagURL,u=Object(o.useRef)(null),O=Object(o.useRef)(null),l=Object(o.useState)(!1),h=Object(c.a)(l,2),d=h[0],j=h[1],b=Object(o.useState)(null),p=Object(c.a)(b,2),f=p[0],g=p[1],w=Object(o.useState)(null),m=Object(c.a)(w,2),x=m[0],v=m[1],A=Object(o.useState)(0),C=Object(c.a)(A,2),Q=C[0],U=C[1],N=Object(o.useState)(0),k=Object(c.a)(N,2),S=k[0],E=k[1],F=Object(o.useState)(0),_=Object(c.a)(F,2),M=_[0],y=_[1],K=Object(o.useState)(0),B=Object(c.a)(K,2),R=B[0],L=B[1],I=Object(o.useState)(1),V=Object(c.a)(I,2),P=V[0],Y=V[1],G=Object(o.useState)(300),z=Object(c.a)(G,2),J=z[0],X=z[1],W=Object(o.useState)(300),q=Object(c.a)(W,2),Z=q[0],$=q[1],ee=Object(o.useState)(300),te=Object(c.a)(ee,2),ne=te[0],ae=te[1],ce=Object(o.useState)(300),re=Object(c.a)(ce,2),oe=re[0],se=re[1],ie=Object(o.useState)(0),ue=Object(c.a)(ie,2),Oe=ue[0],le=ue[1],he=Object(o.useState)(0),de=Object(c.a)(he,2),je=de[0],be=de[1],pe=Object(o.useState)(0),fe=Object(c.a)(pe,2),ge=fe[0],we=fe[1],me=Object(o.useState)(0),xe=Object(c.a)(me,2),ve=xe[0],Ae=xe[1];Object(o.useEffect)((function(){t&&t({x:Q,y:S,scale:P})}),[t,Q,S,P]),Object(o.useEffect)((function(){if(u&&u.current){var e=u.current.offsetWidth,t=u.current.offsetHeight;se(t),ae(e);var n=1,c=1;a<1?n=1/a:a>1&&(c=1*a),X(n),$(c)}}),[a]),Object(o.useEffect)((function(){var e=function(e,t,n,a,c){var r=Math.max(0,e*n-a)/2,o=Math.max(0,t*n-c)/2;return{rangeMaxX:r,rangeMinX:0-r,rangeMaxY:o,rangeMinY:0-o}}(J*ne,Z*oe,P,ne,oe),t=e.rangeMinX,n=e.rangeMinY,a=e.rangeMaxX,c=e.rangeMaxY;le(t),be(n),we(a),Ae(c)}),[J,Z,ne,oe,P]),Object(o.useEffect)((function(){U(0),E(0),y(0),L(0),Y(1)}),[n]);var Ce=Object(o.useCallback)((function(e){var t=1*e.target.dataset.x,n=1*e.target.dataset.y,a=T(t+e.deltaX,Oe,ge),c=T(n+e.deltaY,je,ve);e.isFinal?(U(a||0),E(c||0),y(0),L(0)):(y(a-t||0),L(c-n||0))}),[Oe,je,ge,ve]),De=Object(o.useCallback)((function(e,t,n,a){e.preventDefault();var c=T(1*e.target.dataset.scale+t/200,1,8);Y(c||1);var r=1*e.target.dataset.x,o=1*e.target.dataset.y;U(T(r,Oe,ge)||0),E(T(o,je,ve)||0)}),[Oe,je,ge,ve]);return Object(o.useEffect)((function(){if(!d&&u&&u.current){var e=u.current;e.addEventListener("mousedown",(function(e){e.preventDefault()}),!1),e.addEventListener("touchstart",(function(e){e.preventDefault()}),!1),e.addEventListener("touchend",(function(e){e.preventDefault()}),!1),e.addEventListener("touchmove",(function(e){e.preventDefault()}),!1),g(new D.a(e,{direction:"DIRECTION_ALL"})),v(H()(e)),j(!0)}}),[u,d]),Object(o.useEffect)((function(){if(f&&x&&d&&u&&u.current)return f.on("pan",Ce),x.wheel(De),function(){f.off("pan",Ce),x.unwheel()}}),[u,Ce,De,d,f,x]),Object(r.jsxs)("div",{className:"Editor",ref:u,"data-x":Q,"data-y":S,"data-scale":P,children:[Object(r.jsx)("img",{src:n,ref:O,alt:"",className:"background",style:{width:100*J+"%",height:100*Z+"%",transform:"translate3d(calc(-50% + ".concat(Q+M,"px), calc(-50% + ").concat(S+R,"px), 0) scale(").concat(P,",").concat(P,")")}}),Object(r.jsx)("img",{src:s,alt:"",className:"foreground"}),Object(r.jsx)("img",{src:i,alt:"",className:"hashtag"})]})},N=n.p+"static/media/VoltLogoPurple.125355f6.svg",k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDgAAAQ4AgMAAACRfoQcAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJUExURVAjeFAjeE8jd3Yl3xwAAAADdFJOU//+/Q3dsqEAAATsSURBVHgB7dAxAQAABAAwQtI/ipMCvi3CgiMV6NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQ4cOdOjQoUOHDh06dOjQoUOHDh06dOjQoQMdOnTo0KFDhw4dOnTo0KFDhw4dOnToQIcOHTp06NChQ4cOHTp06NChQ4cOHejQoUOHDh06dOjQoUOHDh06dOjQoUMHOnTo0KFDhw4dOnTo0KFDhw4dOnTo0IEOHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NChQIcOHTp06NChQ4cOHTp06NChQ4cOHejQoUOHDh06dOjQoUOHDh06dOjQoUMHOnTo0KFDhw4dOnTo0KFDhw4dOnTo0IEOHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06ECHDh06dOjQoUOHDh06dOjQoUOHDh060KFDhw4dOnTo0KFDhw4dOnTo0KFDhw506NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQ4cOBTp06NChQ4cOHTp06NChQ4cOHTp06ECHDh06dOjQoUOHDh06dOjQoUOHDh060KFDhw4dOnTo0KFDhw4dOnTo0KFDhw506NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQwc6dOjQoUOHDh06dOjQoUOHDh06dOjQgQ4dOnTo0KFDhw4dOnTo0KFDhw4dOnSgQ4cOHTp06NChQ4cOHTp06NChQ4cOHTx06NChQ4cOdOjQoUOHDh06dOjQoUOHDh06dOjQoQMdOnTo0KFDhw4dOnTo0KFDhw4dOnToQIcOHTp06NChQ4cOHTp06NChQ4cOHTrQoUOHDh06dOjQoUOHDh06dOjQoUOHDnTo0KFDhw4dOnTo0KFDhw4dOnTo0KEDHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NCBDh06dOjQoUOHDh06dOjQoUOHDh06dKBDhw4dOnTo0KFDhw4dOnTo0KFDhw4d6NChQ4cOHTp06NChQ4cOHTp06NChQ4cCHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NCBDh06dOjQoUOHDh06dOjQoUOHDh06dKBDhw4dOnTo0KFDhw4dOnTo0KFDhw4dxeoB30xd38yzCvgAAAAASUVORK5CYII=",S="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAALSURBVHgBY2BgAAAAAwABjPg5OgAAAABJRU5ErkJggg==",E=1080;function F(e){var t=e.href,n=e.name,a=e.target,c=e.children,s=Object(h.a)(e,["href","name","target","children"]),i=Object(o.useCallback)((function(e){return window.umami&&n&&window.umami.trackEvent("A: "+n),a?window.open(t,a):setTimeout((function(){window.location=t}),200),e.preventDefault(),!1}),[t,n,a]);return Object(r.jsx)("a",Object(l.a)(Object(l.a)({},s),{},{href:t,onClick:i,children:c}))}var _=v((function(e){var t=e.getString,n=e.locales,a=e.currentLocale,s=e.onLanguageChange,i=Object(o.useState)(null),u=Object(c.a)(i,2),h=u[0],b=u[1],p=Object(o.useState)(null),f=Object(c.a)(p,2),w=f[0],m=f[1],v=Object(o.useState)(null),C=Object(c.a)(v,2),D=C[0],Q=C[1],H=Object(o.useState)(1),T=Object(c.a)(H,2),_=T[0],M=T[1],y=Object(o.useState)(null),K=Object(c.a)(y,2),B=K[0],R=K[1],L=h?h.src:null,I=w?w.src:null,V=Object(o.useState)(0),P=Object(c.a)(V,2),Y=P[0],G=P[1],z=Object(o.useState)(0),J=Object(c.a)(z,2),X=J[0],W=J[1],q=Object(o.useState)({x:0,y:0,scale:1}),Z=Object(c.a)(q,2),$=Z[0],ee=Z[1],te=Object(o.useCallback)((function(e){b(e)}),[b]),ne=Object(o.useCallback)((function(e){m(e)}),[m]),ae=Object(o.useCallback)((function(e){var t=e.x,n=e.y,a=e.scale;ee({x:t,y:n,scale:a})}),[]),ce=Object(o.useCallback)((function(e){if(e){var t=new FileReader;t.onload=function(t){var n=new Image;n.onload=function(){var a,c;n.width0?e[0]:"")}),[l]);return Object(r.jsx)(G,{userLocales:n,onLocaleChange:d,children:Object(r.jsx)(_,{locales:R,currentLocale:O,onLanguageChange:h})},"AppLocalizationProvider")}u.a.render(Object(r.jsx)(s.a.StrictMode,{children:Object(r.jsx)(z,{})}),document.getElementById("root")),M()}},[[49,1,2]]]); +//# sourceMappingURL=main.b8ca9d1f.chunk.js.map \ No newline at end of file diff --git a/static/js/main.b8ca9d1f.chunk.js.map b/static/js/main.b8ca9d1f.chunk.js.map new file mode 100644 index 0000000..b7e6aa6 --- /dev/null +++ b/static/js/main.b8ca9d1f.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["frames lazy /^/.//.*/.png$/ groupOptions: {} namespace object","hashtags lazy /^/.//.*/.png$/ groupOptions: {} namespace object","locales lazy /^/.//.*/.ftl$/ groupOptions: {} namespace object","FrameChooser.js","Localized.js","HashtagChooser.js","Editor.js","VoltLogoPurple.svg","purpleBG.png","empty_1x1.png","App.js","reportWebVitals.js","l10n.js","index.js"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","FrameChooser","onChange","useState","frames","setFrames","choosenFrame","setChoosenFrame","choosenFrameSRC","src","useEffect","a","all","frame_filename","default","name","new_frames","loadFrames","handleImageChoosing","useCallback","frame","className","frame_src_path","isChoosen","data-src","onClick","alt","Localized","props","elems","br","Fragment","children","withLocalization","Inner","l10n","React","useContext","FluentContext","createElement","getString","args","fallback","hashtags","split","tag","trim","filter","length","clamp","value","min","max","Math","Editor","backgroundURL","backgroundRatio","frameURL","hashtagURL","editorRef","useRef","backgroundImageRef","hammer_got_init","set_hammer_got_init","hammertime","set_hammertime","hamster","set_hamster","x","set_x","y","set_y","add_x","set_add_x","add_y","set_add_y","scale","set_scale","photoWidth","setPhotoWidth","photoHeight","setPhotoHeight","editorWidth","setEditorWidth","editorHeight","setEditorHeight","rangeMinX","set_rangeMinX","rangeMinY","set_rangeMinY","rangeMaxX","set_rangeMaxX","rangeMaxY","set_rangeMaxY","current","new_editorWidth","offsetWidth","new_editorHeight","offsetHeight","new_photoWidth","new_photoHeight","imageWidth","imageHeight","imageScale","containerWidth","containerHeight","updateRange","handleMove","event","prev_x","target","dataset","prev_y","new_x","deltaX","new_y","deltaY","isFinal","handleScale","delta","preventDefault","new_scale","element","addEventListener","Hammer","direction","Hamster","on","wheel","off","unwheel","ref","data-x","data-y","data-scale","style","width","height","transform","frameSize","UmamiLink","href","handleClick","window","umami","trackEvent","open","setTimeout","location","locales","currentLocale","onLanguageChange","setFrame","hashtag","setHashtag","originalPhoto","setOriginalPhoto","originalPhotoRation","setOriginalPhotoRation","orientation","set_orientation","set_width","set_height","cords","setCords","handleFrame","newFrame","handleHashtag","newHashtag","handleCordsChange","handleReadFile","file","reader","FileReader","onload","reader_event","img","Image","callback","view","DataView","result","getUint16","byteLength","offset","marker","getUint32","little","tags","i","readAsArrayBuffer","slice","getOrientation","new_orientation","original_ration","readAsDataURL","handleImage","files_event","files","onDrop","acceptedFiles","handleDownload","canvas","document","ctx","getContext","alpha","translate","rotate","PI","width_scaled","height_scaled","drawImage","pngUrl","toDataURL","mergeImages","purpleBG","b64","data","body","appendChild","download","click","remove","trigger_download","frameName","hashtagName","join","useDropzone","accept","maxFiles","noKeyboard","isDragActive","getRootProps","VoltLogoPurple","tabIndex","outline","type","display","startsWith","empty_1x1","entries","locale","data-locale","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","de","en","es","pt","fr","it","nl","pl","ru","_supportedLocales_","fetchMessages","path","fetch","response","text","messages","FluentResource","createMessagesGenerator","currentLocales","fetched","reduce","obj","cur","assign","generateBundles","bundle","FluentBundle","addResource","f","AppLocalizationProvider","userLocales","onLocaleChange","ReactLocalization","getDefaultBundles","bundles","setBundles","negotiateLanguages","defaultLocale","loadBundles","AppLanguageWrapper","navigator","languages","setUserLocales","setCurrentLocale","systemLocales","Array","isArray","handleLanguageChange","handleCurrentLocalesChange","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.b8ca9d1f.chunk.js","sourcesContent":["var map = {\n\t\"./0xSOM.png\": [\n\t\t50,\n\t\t13\n\t],\n\t\"./2xSOM-Blue-Green.png\": [\n\t\t51,\n\t\t14\n\t],\n\t\"./2xSOM-Red-Yellow.png\": [\n\t\t52,\n\t\t15\n\t],\n\t\"./4xSOM-Blue-Red-Yellow-Green.png\": [\n\t\t53,\n\t\t16\n\t],\n\t\"./5xSOM-Blue.png\": [\n\t\t54,\n\t\t17\n\t],\n\t\"./5xSOM-Green.png\": [\n\t\t55,\n\t\t18\n\t],\n\t\"./5xSOM-Pride.png\": [\n\t\t56,\n\t\t19\n\t],\n\t\"./5xSOM-Red.png\": [\n\t\t57,\n\t\t20\n\t],\n\t\"./5xSOM-White.png\": [\n\t\t58,\n\t\t21\n\t],\n\t\"./5xSOM-Yellow.png\": [\n\t\t59,\n\t\t22\n\t],\n\t\"./Volt-Stars.png\": [\n\t\t60,\n\t\t23\n\t],\n\t\"./btw_Meine_Stimme_Balken.png\": [\n\t\t61,\n\t\t24\n\t],\n\t\"./btw_Meine_Stimme_Sterne_bunt.png\": [\n\t\t62,\n\t\t25\n\t],\n\t\"./btw_Meine_Stimme_Sterne_lila.png\": [\n\t\t63,\n\t\t26\n\t],\n\t\"./btw_VoteVolt_Balken.png\": [\n\t\t64,\n\t\t27\n\t],\n\t\"./btw_VoteVolt_Sterne_bunt.png\": [\n\t\t65,\n\t\t28\n\t],\n\t\"./btw_VoteVolt_Sterne_lila.png\": [\n\t\t66,\n\t\t29\n\t],\n\t\"./ukraine.png\": [\n\t\t67,\n\t\t30\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 42;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./#DeineWahl.png\": [\n\t\t68,\n\t\t31\n\t],\n\t\"./#EUReform.png\": [\n\t\t69,\n\t\t32\n\t],\n\t\"./#Europa.png\": [\n\t\t70,\n\t\t33\n\t],\n\t\"./#EuropeCares.png\": [\n\t\t71,\n\t\t34\n\t],\n\t\"./#European.png\": [\n\t\t72,\n\t\t35\n\t],\n\t\"./#FutureMadeInEurope.png\": [\n\t\t73,\n\t\t36\n\t],\n\t\"./#GeneratieEuropa.png\": [\n\t\t74,\n\t\t37\n\t],\n\t\"./#GeneratieVolt.png\": [\n\t\t75,\n\t\t38\n\t],\n\t\"./#GenerationEuropa.png\": [\n\t\t76,\n\t\t39\n\t],\n\t\"./#IkStemVolt.png\": [\n\t\t77,\n\t\t40\n\t],\n\t\"./#JetztBistDuDran.png\": [\n\t\t78,\n\t\t41\n\t],\n\t\"./#JoinTheChange.png\": [\n\t\t79,\n\t\t42\n\t],\n\t\"./#RejoinEU.png\": [\n\t\t80,\n\t\t43\n\t],\n\t\"./#ValuesOverPower.png\": [\n\t\t81,\n\t\t44\n\t],\n\t\"./#Volt.png\": [\n\t\t82,\n\t\t45\n\t],\n\t\"./#Volt21.png\": [\n\t\t83,\n\t\t46\n\t],\n\t\"./#VoltEuropa.png\": [\n\t\t84,\n\t\t47\n\t],\n\t\"./#VoltForLGBTIAQ.png\": [\n\t\t85,\n\t\t48\n\t],\n\t\"./#VoltRLP.png\": [\n\t\t86,\n\t\t49\n\t],\n\t\"./#VoteVolt.png\": [\n\t\t87,\n\t\t50\n\t],\n\t\"./#WirWerdenLaut.png\": [\n\t\t88,\n\t\t51\n\t],\n\t\"./#ZukunftMadeInEurope.png\": [\n\t\t89,\n\t\t52\n\t],\n\t\"./#democracy.png\": [\n\t\t90,\n\t\t53\n\t],\n\t\"./#paneuropäisch.png\": [\n\t\t91,\n\t\t54\n\t],\n\t\"./#pragmatisch.png\": [\n\t\t92,\n\t\t55\n\t],\n\t\"./#progressiv.png\": [\n\t\t93,\n\t\t56\n\t],\n\t\"./stemvolt.nl.png\": [\n\t\t94,\n\t\t57\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 43;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./de.ftl\": [\n\t\t95,\n\t\t3\n\t],\n\t\"./en.ftl\": [\n\t\t96,\n\t\t4\n\t],\n\t\"./es.ftl\": [\n\t\t97,\n\t\t5\n\t],\n\t\"./fr.ftl\": [\n\t\t98,\n\t\t6\n\t],\n\t\"./it.ftl\": [\n\t\t99,\n\t\t7\n\t],\n\t\"./nl.ftl\": [\n\t\t100,\n\t\t8\n\t],\n\t\"./pl.ftl\": [\n\t\t101,\n\t\t9\n\t],\n\t\"./pt.ftl\": [\n\t\t102,\n\t\t10\n\t],\n\t\"./ru.ftl\": [\n\t\t103,\n\t\t11\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 48;\nmodule.exports = webpackAsyncContext;","import { useState, useEffect, useCallback } from 'react'\n\nfunction FrameChooser({ onChange }) {\n const [frames, setFrames] = useState([])\n const [choosenFrame, setChoosenFrame] = useState(null)\n\n const choosenFrameSRC = !!choosenFrame ? choosenFrame.src : null\n\n useEffect(() => {\n async function loadFrames(){\n Promise.all(\n [\n 'ukraine',\n // 'btw_VoteVolt_Balken',\n // 'btw_Meine_Stimme_Balken',\n '4xSOM-Blue-Red-Yellow-Green',\n '5xSOM-Pride',\n // 'btw_VoteVolt_Sterne_bunt',\n // 'btw_Meine_Stimme_Sterne_bunt',\n 'Volt-Stars',\n // 'btw_VoteVolt_Sterne_lila',\n // 'btw_Meine_Stimme_Sterne_lila',\n '0xSOM', // SOM = Stripes of Movement\n '5xSOM-Blue',\n '5xSOM-Green',\n '5xSOM-Red',\n '5xSOM-Yellow',\n // '5xSOM-White',\n // '2xSOM-Blue-Green',\n // '2xSOM-Red-Yellow',\n ]\n .map(async frame_filename => {\n return {\n name: frame_filename,\n src: (await import(`./frames/${frame_filename}.png`)).default,\n }\n })\n )\n .then(new_frames => {\n setFrames(new_frames)\n setChoosenFrame(new_frames[0])\n })\n }\n loadFrames()\n }, [])\n\n const handleImageChoosing = useCallback(frame => {\n setChoosenFrame(frame)\n }, [setChoosenFrame])\n\n useEffect(() => {\n onChange(choosenFrame)\n }, [onChange, choosenFrame])\n\n return (\n
\n {\n frames.map(frame => {\n const frame_src_path = frame.src\n const isChoosen = choosenFrameSRC === frame_src_path\n return handleImageChoosing(frame)}\n >\n {frame.name}\n
\n })\n }\n \n )\n}\n\nexport default FrameChooser\n","import React from 'react'\nimport {\n Localized as LocalizedOriginal,\n // withLocalization,\n} from '@fluent/react'\n\nimport { FluentContext } from '../node_modules/@fluent/react/esm/context.js'\n\nconst Localized = props => (\n ,\n ...props.elems,\n }}\n >\n {props.children}\n \n)\n\n// A custom withLocalization to have an empty fallback.\n// It is nearly identical to the original.\nfunction withLocalization(Inner) {\n function WithLocalization(props) {\n const l10n = React.useContext(FluentContext)\n\n const getString = (id, args, fallback) => l10n.getString(id, args, fallback || ' ')\n\n return React.createElement(Inner, { getString, ...props })\n }\n return WithLocalization\n}\n\nexport {\n withLocalization,\n Localized,\n Localized as default,\n}\n\n/*\n\nimport { Localized, withLocalization } from '../Localized/'\n\n\nexport default withLocalization(componentName)\n\n\nimport Localized from '../Localized/'\n\n\nimport { withLocalization } from '@fluent/react'\nexport default withLocalization(componentName)\n\n*/\n","import { useState, useEffect, useCallback } from 'react'\nimport { withLocalization } from './Localized.js'\n\nfunction HashtagChooser({ onChange, getString }) {\n const [frames, setFrames] = useState([])\n const [choosenFrame, setChoosenFrame] = useState(null)\n\n const choosenFrameSRC = !!choosenFrame ? choosenFrame.src : null\n\n let hashtags = getString('hashtags')\n\n useEffect(() => {\n async function loadFrames() {\n Promise.all(\n [\n '',\n ...(\n hashtags.split('\\n')\n .map(tag => tag.trim())\n .filter(tag => tag.length > 0)\n )\n ]\n .map(async frame_filename => {\n let src = frame_filename\n if (frame_filename !== '') {\n src = (await import(`./hashtags/${frame_filename}.png`)).default\n }\n return {\n name: frame_filename,\n src\n }\n })\n )\n .then(new_frames => {\n setFrames(new_frames)\n setChoosenFrame(new_frames[0])\n })\n }\n loadFrames()\n }, [hashtags])\n\n const handleImageChoosing = useCallback(frame => {\n setChoosenFrame(frame)\n }, [setChoosenFrame])\n\n useEffect(() => {\n onChange(choosenFrame)\n }, [onChange, choosenFrame])\n\n return (\n
\n {\n frames.map(frame => {\n const frame_src_path = frame.src\n const isChoosen = choosenFrameSRC === frame_src_path\n return handleImageChoosing(frame)}\n >\n {frame.name === '' ? getString('button_no_hashtag') : frame.name}\n \n })\n }\n
\n )\n}\n\nexport default withLocalization(HashtagChooser)\n","import { useEffect, useRef, useState, useCallback } from 'react'\n\nimport Hammer from 'hammerjs'\nimport Hamster from 'hamsterjs'\n\nfunction updateRange(imageWidth, imageHeight, imageScale, containerWidth, containerHeight) {\n\n const rangeX = Math.max(0, (imageWidth * imageScale) - containerWidth)\n const rangeY = Math.max(0, (imageHeight * imageScale) - containerHeight)\n\n const rangeMaxX = (rangeX / 2)\n const rangeMinX = 0 - rangeMaxX\n\n const rangeMaxY = (rangeY / 2)\n const rangeMinY = 0 - rangeMaxY\n\n return {\n rangeMaxX,\n rangeMinX,\n rangeMaxY,\n rangeMinY,\n }\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(min, value), max)\n}\n\n\n\nlet minScale = 1;\nlet maxScale = 8;\n\n\n\nfunction Editor({ onChange, backgroundURL, backgroundRatio, frameURL, hashtagURL }) {\n const editorRef = useRef(null)\n const backgroundImageRef = useRef(null)\n\n const [hammer_got_init, set_hammer_got_init] = useState(false)\n\n const [hammertime, set_hammertime] = useState(null)\n const [hamster, set_hamster] = useState(null)\n\n const [x, set_x] = useState(0)\n const [y, set_y] = useState(0)\n const [add_x, set_add_x] = useState(0)\n const [add_y, set_add_y] = useState(0)\n const [scale, set_scale] = useState(1)\n // const [add_scale, set_add_scale] = useState(0)\n\n const [photoWidth, setPhotoWidth] = useState(300)\n const [photoHeight, setPhotoHeight] = useState(300)\n const [editorWidth, setEditorWidth] = useState(300)\n const [editorHeight, setEditorHeight] = useState(300)\n\n const [rangeMinX, set_rangeMinX] = useState(0)\n const [rangeMinY, set_rangeMinY] = useState(0)\n const [rangeMaxX, set_rangeMaxX] = useState(0)\n const [rangeMaxY, set_rangeMaxY] = useState(0)\n\n useEffect(() => {\n if (!!onChange) {\n onChange({ x, y, scale})\n }\n }, [onChange, x, y, scale])\n\n useEffect(() => {\n if (!!editorRef && !!editorRef.current) {\n const new_editorWidth = editorRef.current.offsetWidth\n const new_editorHeight = editorRef.current.offsetHeight\n setEditorHeight(new_editorHeight)\n setEditorWidth(new_editorWidth)\n\n let new_photoWidth = 1\n let new_photoHeight = 1\n if (backgroundRatio < 1) {\n new_photoWidth = 1 / backgroundRatio\n } else if (backgroundRatio > 1) {\n new_photoHeight = 1 * backgroundRatio\n }\n\n setPhotoWidth(new_photoWidth)\n setPhotoHeight(new_photoHeight)\n }\n }, [backgroundRatio])\n\n useEffect(() => {\n const {\n rangeMinX,\n rangeMinY,\n rangeMaxX,\n rangeMaxY,\n } = updateRange(photoWidth * editorWidth, photoHeight * editorHeight, scale, editorWidth, editorHeight)\n\n set_rangeMinX(rangeMinX)\n set_rangeMinY(rangeMinY)\n set_rangeMaxX(rangeMaxX)\n set_rangeMaxY(rangeMaxY)\n }, [\n photoWidth,\n photoHeight,\n editorWidth,\n editorHeight,\n scale,\n ])\n\n useEffect(() => {\n set_x(0)\n set_y(0)\n set_add_x(0)\n set_add_y(0)\n set_scale(1)\n }, [backgroundURL])\n\n const handleMove = useCallback(event => {\n const prev_x = event.target.dataset.x * 1\n const prev_y = event.target.dataset.y * 1\n\n const new_x = clamp(prev_x + event.deltaX, rangeMinX, rangeMaxX)\n const new_y = clamp(prev_y + event.deltaY, rangeMinY, rangeMaxY)\n\n if (event.isFinal) {\n set_x(new_x || 0)\n set_y(new_y || 0)\n set_add_x(0)\n set_add_y(0)\n }else{\n set_add_x(new_x - prev_x || 0)\n set_add_y(new_y - prev_y || 0)\n }\n }, [\n rangeMinX,\n rangeMinY,\n rangeMaxX,\n rangeMaxY,\n ])\n\n const handleScale = useCallback((event, delta, deltaX, deltaY) => {\n event.preventDefault()\n\n const prev_scale = event.target.dataset.scale * 1\n const new_scale = clamp(prev_scale + delta / 200, minScale, maxScale)\n set_scale(new_scale || 1)\n\n const prev_x = event.target.dataset.x * 1\n const prev_y = event.target.dataset.y * 1\n set_x(clamp(prev_x, rangeMinX, rangeMaxX) || 0)\n set_y(clamp(prev_y, rangeMinY, rangeMaxY) || 0)\n }, [\n rangeMinX,\n rangeMinY,\n rangeMaxX,\n rangeMaxY,\n ])\n\n useEffect(() => {\n if (!hammer_got_init && !!editorRef && !!editorRef.current) {\n const element = editorRef.current\n\n element.addEventListener('mousedown', event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n element.addEventListener(\"touchstart\", event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n element.addEventListener(\"touchend\", event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n element.addEventListener(\"touchmove\", event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n\n set_hammertime(new Hammer(element, {\n direction: 'DIRECTION_ALL',\n }))\n\n set_hamster(Hamster(element))\n\n set_hammer_got_init(true)\n }\n }, [editorRef, hammer_got_init])\n\n useEffect(() => {\n if (!!hammertime && !!hamster && hammer_got_init && !!editorRef && !!editorRef.current) {\n hammertime.on('pan', handleMove)\n hamster.wheel(handleScale)\n\n return function () {\n hammertime.off('pan', handleMove)\n hamster.unwheel()\n }\n }\n }, [editorRef, handleMove, handleScale, hammer_got_init, hammertime, hamster])\n\n return (\n \n \n \n \n \n )\n}\n\nexport default Editor\n","export default __webpack_public_path__ + \"static/media/VoltLogoPurple.125355f6.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDgAAAQ4AgMAAACRfoQcAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJUExURVAjeFAjeE8jd3Yl3xwAAAADdFJOU//+/Q3dsqEAAATsSURBVHgB7dAxAQAABAAwQtI/ipMCvi3CgiMV6NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQ4cOdOjQoUOHDh06dOjQoUOHDh06dOjQoQMdOnTo0KFDhw4dOnTo0KFDhw4dOnToQIcOHTp06NChQ4cOHTp06NChQ4cOHejQoUOHDh06dOjQoUOHDh06dOjQoUMHOnTo0KFDhw4dOnTo0KFDhw4dOnTo0IEOHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NChQIcOHTp06NChQ4cOHTp06NChQ4cOHejQoUOHDh06dOjQoUOHDh06dOjQoUMHOnTo0KFDhw4dOnTo0KFDhw4dOnTo0IEOHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06ECHDh06dOjQoUOHDh06dOjQoUOHDh060KFDhw4dOnTo0KFDhw4dOnTo0KFDhw506NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQ4cOBTp06NChQ4cOHTp06NChQ4cOHTp06ECHDh06dOjQoUOHDh06dOjQoUOHDh060KFDhw4dOnTo0KFDhw4dOnTo0KFDhw506NChQ4cOHTp06NChQ4cOHTp06NChAx06dOjQoUOHDh06dOjQoUOHDh06dOhAhw4dOnTo0KFDhw4dOnTo0KFDhw4dOtChQ4cOHTp06NChQ4cOHTp06NChQwc6dOjQoUOHDh06dOjQoUOHDh06dOjQgQ4dOnTo0KFDhw4dOnTo0KFDhw4dOnSgQ4cOHTp06NChQ4cOHTp06NChQ4cOHTx06NChQ4cOdOjQoUOHDh06dOjQoUOHDh06dOjQoQMdOnTo0KFDhw4dOnTo0KFDhw4dOnToQIcOHTp06NChQ4cOHTp06NChQ4cOHTrQoUOHDh06dOjQoUOHDh06dOjQoUOHDnTo0KFDhw4dOnTo0KFDhw4dOnTo0KEDHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NCBDh06dOjQoUOHDh06dOjQoUOHDh06dKBDhw4dOnTo0KFDhw4dOnTo0KFDhw4d6NChQ4cOHTp06NChQ4cOHTp06NChQ4cCHTp06NChQ4cOHTp06NChQ4cOHTp0oEOHDh06dOjQoUOHDh06dOjQoUOHDh3o0KFDhw4dOnTo0KFDhw4dOnTo0KFDBzp06NChQ4cOHTp06NChQ4cOHTp06NCBDh06dOjQoUOHDh06dOjQoUOHDh06dKBDhw4dOnTo0KFDhw4dOnTo0KFDhw4dxeoB30xd38yzCvgAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAALSURBVHgBY2BgAAAAAwABjPg5OgAAAABJRU5ErkJggg==\"","import { useState, useCallback } from 'react'\nimport './App.css'\nimport { useDropzone } from 'react-dropzone'\nimport mergeImages from 'merge-images'\nimport FrameChooser from './FrameChooser.js'\nimport HashtagChooser from './HashtagChooser.js'\nimport Editor from './Editor.js'\nimport VoltLogoPurple from './VoltLogoPurple.svg'\nimport purpleBG from './purpleBG.png'\nimport empty_1x1 from './empty_1x1.png'\n\nimport { withLocalization, Localized } from './Localized.js'\n\nconst frameSize = 1080\n\nfunction getOrientation(file, callback) {\n // Source: http://stackoverflow.com/a/32490603\n // (With some modifications: I just made the code fit the style-guide.)\n const reader = new FileReader()\n\n reader.onload = function (event) {\n const view = new DataView(event.target.result)\n\n if (view.getUint16(0, false) !== 0xFFD8) {\n return callback(-2)\n }\n\n const length = view.byteLength\n let offset = 2\n\n while (offset < length) {\n const marker = view.getUint16(offset, false)\n offset += 2\n\n if (marker === 0xFFE1) {\n if (view.getUint32(offset += 2, false) !== 0x45786966) {\n return callback(-1)\n }\n const little = view.getUint16(offset += 6, false) === 0x4949\n offset += view.getUint32(offset + 4, little)\n const tags = view.getUint16(offset, little)\n offset += 2\n\n for (var i = 0; i < tags; i++) {\n if (view.getUint16(offset + (i * 12), little) === 0x0112) {\n return callback(view.getUint16(offset + (i * 12) + 8, little))\n }\n }\n } else if ((marker & 0xFF00) !== 0xFF00) {\n break\n } else {\n offset += view.getUint16(offset, false)\n }\n }\n return callback(-1)\n }\n\n reader.readAsArrayBuffer(file.slice(0, 64 * 1024))\n}\n\nfunction trigger_download(name, data){\n const a = document.createElement('a')\n document.body.appendChild(a)\n // a.target = '_blank'\n a.download = name\n a.href = data\n a.click()\n a.remove()\n}\n\nfunction UmamiLink({ href, name, target, children, ...props }) {\n const handleClick = useCallback(event => {\n\n if (window.umami && name) {\n window.umami.trackEvent('A: ' + name) // Log Anker / Link\n }\n\n // follow link\n if (!(!!target)) {\n setTimeout(() => {\n window.location = href\n }, 200)\n }else{\n window.open(href, target)\n }\n\n // Prevent normal href-follow\n event.preventDefault()\n return false\n }, [href, name, target])\n\n return \n {children}\n \n}\n\nfunction App({ getString, locales, currentLocale, onLanguageChange }) {\n const [frame, setFrame] = useState(null)\n const [hashtag, setHashtag] = useState(null)\n const [originalPhoto, setOriginalPhoto] = useState(null)\n const [originalPhotoRation, setOriginalPhotoRation] = useState(1)\n const [orientation, set_orientation] = useState(null)\n\n const frameURL = !!frame ? frame.src : null\n const hashtagURL = !!hashtag ? hashtag.src : null\n\n // const [combinedImage, set_combinedImage] = useState(null)\n\n const [width, set_width] = useState(0)\n const [height, set_height] = useState(0)\n\n const [cords, setCords] = useState({x:0, y:0, scale:1})\n\n const handleFrame = useCallback(newFrame => {\n setFrame(newFrame)\n }, [setFrame])\n\n const handleHashtag = useCallback(newHashtag => {\n setHashtag(newHashtag)\n }, [setHashtag])\n\n const handleCordsChange = useCallback(({x, y, scale}) => {\n setCords({ x, y, scale })\n }, [])\n\n const handleReadFile = useCallback(file => {\n if (!(!!file)) {\n return;\n }\n\n const reader = new FileReader()\n reader.onload = reader_event => {\n const img = new Image()\n img.onload = function () {\n let width, height;\n if (img.width < img.height) {\n height = (img.height / img.width) * frameSize\n width = frameSize\n } else {\n height = frameSize\n width = (img.width / img.height) * frameSize\n }\n\n getOrientation(file, new_orientation => {\n let original_ration = 1\n // use the correct image orientation\n switch (new_orientation) {\n // Source: https://stackoverflow.com/a/30242954/2387277\n // Source: https://stackoverflow.com/questions/19463126/how-to-draw-photo-with-correct-orientation-in-canvas-after-capture-photo-by-usin\n case 2:\n // horizontal flip\n original_ration = height / width\n break\n case 3:\n // 180° rotate left\n original_ration = height / width\n break\n case 4:\n // vertical flip\n original_ration = height / width\n break\n case 5:\n // vertical flip + 90 rotate right\n original_ration = width / height\n break\n case 6:\n // 90° rotate right\n original_ration = width / height\n break\n case 7:\n // horizontal flip + 90 rotate right\n original_ration = width / height\n break\n case 8:\n // 90° rotate left\n original_ration = width / height\n break\n default:\n original_ration = height / width\n break\n }\n\n set_width(width)\n set_height(height)\n setOriginalPhoto(reader_event.target.result)\n set_orientation(new_orientation)\n setOriginalPhotoRation(original_ration)\n })\n }\n img.src = reader_event.target.result\n }\n reader.readAsDataURL(file)\n }, [])\n\n const handleImage = useCallback(files_event => {\n handleReadFile(files_event.target.files[0])\n }, [handleReadFile])\n\n const onDrop = useCallback(acceptedFiles => {\n handleReadFile(acceptedFiles[0])\n }, [handleReadFile])\n\n const handleDownload = useCallback(() => {\n const img = new Image()\n img.onload = function () {\n const canvas = document.createElement('canvas')\n canvas.width = frameSize\n canvas.height = frameSize\n\n const ctx = canvas.getContext('2d', { alpha: true })\n\n // use the correct image orientation\n switch (orientation) {\n // Source: https://stackoverflow.com/a/30242954/2387277\n // Source: https://stackoverflow.com/questions/19463126/how-to-draw-photo-with-correct-orientation-in-canvas-after-capture-photo-by-usin\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0)\n ctx.scale(-1, 1)\n break\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height)\n ctx.rotate(Math.PI)\n break\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height)\n ctx.scale(1, -1)\n break\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.scale(1, -1)\n break\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.translate(0, -canvas.height)\n break\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.translate(canvas.width, -canvas.height)\n ctx.scale(-1, 1)\n break\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI)\n ctx.translate(-canvas.width, 0)\n break\n default:\n break\n }\n\n\n const width_scaled = width * cords.scale\n const height_scaled = height * cords.scale\n\n ctx.drawImage(\n img,\n cords.x * 3.5 + (frameSize - width_scaled) * 0.5,\n cords.y * 3.5 + (frameSize - height_scaled) * 0.5,\n width_scaled,\n height_scaled,\n )\n // ctx.drawImage(\n // img,\n // ((frameSize - width_scaled) * 0.5),\n // ((frameSize - height_scaled) * 0.5),\n // width_scaled,\n // height_scaled,\n // )\n\n const pngUrl = canvas.toDataURL()\n\n mergeImages([\n purpleBG,\n ...(pngUrl ? [pngUrl] : []),\n ...(frameURL ? [frameURL] : []),\n ...(hashtagURL ? [hashtagURL] : []),\n ])\n .then(b64 => {\n // set_combinedImage(b64)\n trigger_download('volt-profile-picture.png', b64)\n\n const frameName = frame.name || 'No-Frame'\n const hashtagName = hashtag.name || 'No-Hashtag'\n\n if (window.umami) {\n window.umami.trackEvent('F: ' + frameName) // Log Frame\n window.umami.trackEvent('H: ' + hashtagName) // Log Hashtag\n window.umami.trackEvent('C: ' + [frameName, hashtagName].join(' | ')) // Log Combined\n }\n })\n\n }\n img.src = originalPhoto\n }, [\n originalPhoto,\n cords.x,\n cords.y,\n cords.scale,\n orientation,\n frameURL,\n hashtagURL,\n height,\n width,\n frame,\n hashtag\n ])\n\n const { isDragActive, getRootProps } = useDropzone({\n onDrop,\n accept: 'image/*',\n maxFiles: 1,\n noKeyboard: true,\n })\n\n return (\n
\n {getString('alt_volt_logo')}\n

\n\n
\n \n
\n\n

\n

\n\n \n\n {true || !!originalPhoto ? (<>\n

\n \n {\n (frameURL || '').startsWith('/static/media/btw_')\n ? null\n : <>\n

\n \n \n }\n ) : null}\n\n {!!originalPhoto && !!frameURL ? (<>\n

\n {/*\n

Edit your Photo:

\n

Your can reposition the image and scale it. Use pinch-to-zoom or scroll to scale.

\n */}\n\n \n\n \n ) : null}\n\n
\n \n \n \n   •  \n \n \n \n   •  \n \n \n \n   •  \n \n \n \n
\n\n {\n !!locales && !!onLanguageChange\n ?
\n {\n Object.entries(locales)\n .map(([locale, name]) => {\n return \n {name}\n \n })\n }\n
\n : null\n }\n
\n )\n}\nexport default withLocalization(App)\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry)\n getFID(onPerfEntry)\n getFCP(onPerfEntry)\n getLCP(onPerfEntry)\n getTTFB(onPerfEntry)\n })\n }\n}\n\nexport default reportWebVitals\n","import React, { useEffect, useState } from 'react'\n\n// https://projectfluent.org/play/\n\n// import {LocalizationProvider,Localized} from '@fluent/react' // '@fluent/react/compat'\nimport { ReactLocalization, LocalizationProvider } from '@fluent/react'\nimport { FluentBundle, FluentResource } from '@fluent/bundle'\nimport { negotiateLanguages } from '@fluent/langneg'\n\n\nexport const locales = {\n de: 'Deutsch',\n en: 'English',\n es: 'Español',\n pt: 'Português',\n fr: 'Français',\n it: 'Italiano',\n nl: 'Nederlands',\n pl: 'Polska',\n ru: 'Pусский',\n}\n\nconst _supportedLocales_ = Object.keys(locales)\nconst _defaultLocale_ = 'en'\n\n\nasync function fetchMessages(locale) {\n const path = await import('./locales/' + locale + '.ftl')\n\n const response = await fetch(path.default)\n const messages = await response.text()\n\n return { [locale]: new FluentResource(messages) }\n}\n\nfunction getDefaultBundles() {\n const bundle = new FluentBundle('')\n bundle.addResource(new FluentResource(''))\n return new ReactLocalization([bundle])\n}\n\nasync function createMessagesGenerator(currentLocales) {\n const fetched = await Promise.all(\n currentLocales.map(fetchMessages)\n )\n const messages = fetched.reduce(\n (obj, cur) => Object.assign(obj, cur)\n )\n\n return function* generateBundles() {\n for (const locale of currentLocales) {\n const bundle = new FluentBundle(locale)\n bundle.addResource(messages[locale])\n yield bundle\n }\n }\n}\n\nexport function AppLocalizationProvider({ userLocales, children, onLocaleChange }){\n const [bundles, setBundles] = useState(getDefaultBundles())\n\n useEffect(() => {\n async function loadBundles() {\n const currentLocales = negotiateLanguages(\n userLocales,\n _supportedLocales_,\n { defaultLocale: _defaultLocale_ }\n )\n\n if (!!onLocaleChange) {\n onLocaleChange(currentLocales)\n }\n\n const generateBundles = await createMessagesGenerator(currentLocales)\n setBundles( new ReactLocalization(generateBundles()) )\n }\n loadBundles()\n }, [userLocales, onLocaleChange])\n\n if (!bundles) {\n // Show a loader.\n return
Loading texts…
\n }\n\n return \n {children}\n \n}\n\n","import React, { useState, useEffect, useCallback } from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\nimport reportWebVitals from './reportWebVitals'\n\nimport 'intl-pluralrules'\nimport { AppLocalizationProvider, locales } from './l10n.js'\n\nfunction AppLanguageWrapper() {\n const [userLocales, setUserLocales] = useState(navigator.languages)\n const [currentLocale, setCurrentLocale] = useState(null)\n\n useEffect(() => {\n let systemLocales = navigator.languages\n if (window.umami && (!!systemLocales || Array.isArray(systemLocales))) {\n for (const locale of systemLocales) {\n window.umami.trackEvent('L: ' + locale) // Log Locale / Languages\n }\n }\n }, [])\n\n const handleLanguageChange = useCallback(event => {\n setUserLocales([event.target.dataset.locale])\n }, [setUserLocales])\n\n const handleCurrentLocalesChange = useCallback(currentLocales => {\n setCurrentLocale(currentLocales.length > 0 ? currentLocales[0] : '')\n }, [setCurrentLocale])\n\n return \n \n \n}\n\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/runtime-main.a3269c38.js b/static/js/runtime-main.a3269c38.js new file mode 100644 index 0000000..185f6ff --- /dev/null +++ b/static/js/runtime-main.a3269c38.js @@ -0,0 +1,2 @@ +!function(e){function r(r){for(var n,f,c=r[0],u=r[1],i=r[2],l=0,p=[];l)-ex_3Rhc09UveY$s_x9|G)kYFUuo*Qu|pm)!|XU~=R4?~jO zi6qP(sp+5GvE$zHPwCmU>)-ni?AJpocS&Vn-=0f5iD8#SP67n=?Rj_alED8%MbeWr zBpy;Pk`nzN3Hm=I34kKOdiMf*_edHN)#cx(fN1Yvt}L=;9~04dAm3X zcCnC7LSBrbNZ^Z&8WNsl)y0sVclWPEpW^|&`ld4NZflvqlb*=DdMzzva$Sr}b>B=|&rZG}dT~c?B`4u03LQ@2q+CBy#xR z)6~)B#Tm(lf89wYHGvyiLrKEtj-oS?ZQn@8brRbdiJwGRca_9RGAyBI@Vu5Kxsz~K z%R;J>%ClPLvl`}e($IBRNv8g**0RL(PXFs(Luz8W7;*lmufIwHT#Wmi)w7*r@n0#@u^!Z{s@?!2| zq*=8&X)~O98tFZ}{MFx7l7S1hQQ;+%FhFfFWm=NW(%JTr8o!*Lxr%ChjYo%W|@_Qr;)v zB7#Eue0@DGU7k5yKEAXtGt!ll5fQpvyv%KO|KA-va(TIMnMkTsTy~7Xwy)WekqwG! z-B&gCCEuI|))hcmsSOP5ZNYq7Gbj272Q!K{Bpr)X&v@#|*4~l=_W$$KQM(b|{Ur6v zNkI2em-swl>FLI9vcf*j*> zJ?EtE!?-IVvS%2!4=2|z^8ScU8DsG=`LH1a3eqJ!>};ud{2(gadBY3*_qHMxjsq>c z!LK}Aw26ITX;B*e_*6OAKk3m~^qpUrQ!^E1v1X#N*lh0Htl@A5 znV;pnb=lcBC-T#0{UauW6#I|pyjjJ{0o|N`ABNpwTr*Mq{cDo`bEBg-LH=Rb7e`fV zz&WVqp|ipA?dG)~&lr@9uX}`EEy$=?YQs!68m%httSMK@!|)1K$HwpBHw`|Oj$t0y zM1Hq&{lfxtDILpy7}-LN<$}3n{v^LF`~$|@bWohLC`?u9Z%eJ$wDTFbNr#w-8;j-| zmd1cuSb(km4{WgCt=fLkrt--QYzCiEihOzt^1NTG?-@L9vv&0@!yi-(RV%f+C$9_> z*IS1BKs&%7xt$uRm5Ga2rgSW1oFH@SCaxr8HCS<-UHP78aMWJqtsH$adpdfgP3*VU z3_dx6@ar2lkA)9XR6erq-#-DmYHz<#i+CAs3UqQSUG~&O9^Wefq=0kHR1)s34e{Ah zM)^~j(5|x?-!i~ZRInaSVkp4Yxn{?{ei8kzgl;8&s%fH_X35m*;`X9F20p9Nb5s3QZjf}=_Y+|~{Z zR*sE*a{y{c)K-j`5}SYaYGf$)Ej7CB50c*MeyQRSd)?226^*=WtH?ySgdZ9dXX>cd zhTfrCqW$oVa3}Gzcq#px`dc;iq1OToif3sRpB_~S>G6Lg^Dy^bdo;!Ho)1m&uz||S z)5$$p1Nfn5aFuXKEhAUjNN(@Xa62cM{g&4i-^}N_FGGvO2lx*d6rJKQbOZcPGH$6v zy$@O@>*ugf{XT5*T#h&Tp@d~KjH)w)D4WS}rTQTOIm*Ev{bbr1&>3>T&^Py7j(?p~ zoQjUiSCGlxyf7$a5eMdl7e<9%lUubQJal?2N8=_&IE7pNoo{ekdtIAOal5!Cono|q ziCPo1NF5KT4Ovui3;wUy;{RDyOaA|$wlAoCGg<b+=$T_uF4X=-lad_%ro+UQNxn1TT3+ zS=%tv*OGr05`7V(Ui$YZg=na42%yjdIZNh#h5NxZ@hf$<EQfFyHAQsFEzv2Mwag zq05jE+8TTJObWLy&fMUXa%!kerClb4hRClnA7CfLx;CpyGe##5;(}i}Ju|2DlrnH9YKS5CQ8I>kZJNkRd zOC6hAgqgh~85rTMqBYgHmFNi-#wOmH7q~nuGq7AL!n8<`f|0p`u7C!X2WI~haLW>( zC?+AC5Q2iueX2SqkMU-5Zx1I_u&nt5jSw%D5y<_1_1@-`!jH&pp^Y2tmZql?>`ZmF zxvaCgqv}+Yn(7*=!6V*wDD$!gprxtk7P+Nq&)1Od$O##gIogo?Bil7Ll=%rj92(pm zxq7XpF!7)6E_AlsE|J^mHdJMO?Gr^S_igAUZE2lvku^n6`LfC;P8w+R*HM^Vv(Zx{ z1bKCi%t&8Z2T&H?C%k=ek=rMX0zIxD1C!}KWgXyQki!T6)2+s?M~9x}_WX}<;y=6} zd~)h~Yu4!8FhCnUsL%aMno9OizPA%JbczlGHRNBuID!p;}ud2Jzpx4K{KvgnL# z%B^QR=5Db=;0{f}!z6VK2%_SA@eT-5p>?@Uh!YsjCqsa2Jy45GGC%|f2(s~>C9~@d z0ceVmfSagUGNUK}kVzf_3m%y#khhW$yj3t1S=lmyJll~}8U5Gd!U$w~&i;}-Z-O*} zbU|;(h)Wfm={bpE-IGN3hzJA`Rt^@dE~&Tu8Y|&2jAlxhKsW%1A~EHePeSBwP<~}c z@l|YJW2(PGqWK5_ZeLt8cP}F>im_|{Ch-)SOVegM78&w-Z>)>4Z}ZoSQF-q07f918 zG_+CVO<0ODJy)#MApdRXUY4ntFHJj%x4;t$rDpaT_31NN;5OVXE06nW;)S>L+eBN@%tN^(w?Z5Ds2b(|MVrbE&>S4WUs zLwoQZU>=ei)z^^Rb0bYQq}W!RK&>jvhBB)i*QG+4P0+6XEw+guZWxceL-Q@t4pQX_)l}^EZmLi*!sr4FyRuKRjb4z z@%M!Jt*a@TEUyJh3Ogt2FNe)Q5gV@p=jkmKU#b1VSSnF&`;hTfNp?*|g?5U(ANHcS zNyT=GvSpG+SI9nOWOD<-`}M?tN^`pCmL9qC?y`z=oGj2Tr2&qUt0c|b+D#$eDkn5q znPC(_lgonS`^Y?L%GrTTKk4&HL$WHerVS4KfXX~O6ITUh|=CZWe%iR~b z6vvO3OsC1*grWT+JOH69Z3Ws@n`8wWW`*J8c|3y~_^|C$?SbQEVj64pUBznti6PTb_EAm38- z$i-hulIQ)v)8Z^B`$EQrP@rr#Zj<1VIYUzX6iCMY*QAqAvNM|&$Eo+>Kj`^QRnrRGz(hM0L?Tz$Ss?yd5EUiSCVF021E)km|Qbv*IH%$_9ay| z_W5EH*_F}^3c15w@Ku}~6@s)GF0YYnCJAn6UZ$U-AW9?rtT3+b7Ae}d(V%Ql1ZhyL=q<#^Usr9T3qsP7|$@rZ(U`sM&iE)lA!dz0tuE0pao|BBm7r{t1AUF*aZI@>%W2) zxV^t7HCydJEB=oKDMBd>`Sk-ndq(&lh@{C%@EU;bzrI8>FA(hF@4tqlbqI>*#iN2g za@S+mYFctyA~FroUVV*3v0X+hkq;Xzgax#QHm{~-y!UOiy?81QwD;gF)I=JkhvMLLycYWV0nM=6M} z1xk2M)0qkwW{QUcv3!Caph`YLIohc=xK-g&2EIW<8{gQ^Wb%D#&&fmaSz8o^P>?QF z$II8>XmOXc({!XFhE)Ab%e0^=Mm2uP=FiUC&U|`XC0ao0hccNYNELLf9N-foc#Hlu zT4Cc4Slt5mmj|7q@Kr?0U_s-eDX;dsS^vF_=8vh3CbG>XDiju|_8q2UexQsN*uL`k z(+MZgdXcO+JEm%s!?j!-{v!Xm9S@z6z@1S8bfA%$JrAAJMruWzBt86FUO`zbRUTh^ z{6b`8n5*btB;oYxwTTV`j|P*CaUw;#Uj`)+>9NY}Za+b!_*hBDckF?YSgLUbcmIP* zY{xzNV4i6S8Yv?XwyC$B%6lXEPM0Ez8t0~8Th#GjFS*6H-?ck! zF>a>sJJ3ZGQw_CP`D)Q)1GIgjy~KpmZ0;E zjVOCCF!Pc;ozIM$ngwix*6c-_w9S1s>y(Gj6oelh(rr(z+PzeGtL1tBhm9PBjRlNf z1DiYIbr97cw=oD_5OzNqT(OgDeJM)36$yhqm8-KwEtSFHK%!C-X5>?3u_o5M zP@K zms7#ds*SAs5K#&70_L5L$M6g@Xq&jc{kt>e!#+TL9EAGQOzK`2yxs#8KYY&kmFmN) zs`y{O-RQ|M@%&f=MqzfsUMuqrLwf#OaEgxtIVj8|(aWqF0jgM0v2ZLaQ0ni36{QRRHfOnY`W zhQ^>--RL&}y@T9Gs~8nol<|7tlUl=WENA!fF-v^hin-pBO|Po^NGJ8%RFtLuJBZCF zw_ROxyCk3SD?PyrH|9H4zlj3mR*36Co;n#W1Dh$@+{SMTxS0 zJkO#;!|apuhl@3x;}M)G>r^n!ac*OFF&rhf6y8hq|GOo-Elbz)gKV zu87<4S70VuL@uN`6a3j;M$vg@l|sPgO_`h)v_r!r;fdkmrpcW_hVU^4pPSv0Ejv?2 z*k^(JClmfQe>IdvmCx-scv2P$y7+!*7cdsbl21_3E@!~VytN}{Q>wjFcUX?|nXyWhx)fgcj*Li>yD1BQ zn47cJ6D4mYYcyq1q#0Ix)ne(FV%t!9x=i$WcOl-nG6rHWNAtNJC$`gVToHdt&w={R ze8QCIY(nDAy^$@S;i#`&A^7)d za%`mu3=rkDH-PUSlR}f#%pm#8$NbvZjH8b7Sb_sNY+(V&Zb4OQ1n&k?`|1$qf&Xuw(A zxETTxM7Geglxu@4kFkJ^C5fmO9qjb?@uu5(oW~+_WV+q{fN%*p=*zy*mAb`&y1D0A z8|K7h&tZY`xz@gdh8M1JPh+m3O%Xc;h!oJ}&32L?Y-vt2))Ub(hC{UQPul8iBwghIm85p&0QrX!Ip2%F}-P_W?`m=4v&l|(h zexV!i@}`Rn%z;6pw9zb1FtG$yN6q7iSlZGBxqB?Sn36X1XU}8R>XUeZT-aH3;le^A z|8sWW$-%W2Up2kG`heB;^WR*)>!ztKlEvm867rK9`?=4JeTzPQjCCA|QTV}l12rP% zYpq_3Z?5X<-26K{EKF1)nz&peO>29Oqw?Ao9~d^2H|6(ZyioS}3J%mF{C%#T?FmNe zKx9qWuYmu3l78&ER&|bib( zSL?~UslzmwK{K78d&(|e0OFIr6w`XVbA(Mh`NWCq%6sgzvaD1%jn*vSedlZ^quAo$!{v9!vCkd>zed z((8}6=?!tav0*ZjFW3}GFJc37H<4OYDIghTQ84g0<0E8?>`r)2+TSNa0Vxl#AyzkT zVqwutbQ3(`gfO4*caAzEx+Y+#Jwq?tf8J(-e13Z;mkko0E33l!*Er-E--DK}F`%ge zaI?jAqV|tqgO)T=rizm!lm8yFTTM6yN^X~!pKGl)4b7hb_Mlz_93p1m&XG%Y7X@2aCtid=K|v$IpLt71N(%P^ zYhv5XtKaj~{0P`MC#$k9_F3onrhM+OO6X#2SYz)-T6a)WFsAe9)fY?aaF!B%r=+A; zAnI-L09@k2@wFIO`PwS^DD+UF4^i3NW5*mG3nv>lDPJ@kODiGb-OCNIF^!QvA}MKZ z$b$RFV?K{bbp42T#VL9}i>sQR*{cJcv9zttOWIkl3kRa$!ty{bNH)D{DYZqyqn_ql z#Eu+@CGn5Y%($)*sK`{|J>Ul78*<00t@j{o5Fa7)V&ruKs$HXm1=ZO;SO}PW_VbgW zBo3C0?){-{5(yh9%Dx4xPjK)8Je~b5LKE$b6%82qrjIN*R{B8Z-od}IFeqAed_d4( zuc6JY)+R*~!J?tmS^f-T_Wx_R5l{*};KY_?o~I7E-Dw)!GYaW32# zG8au{#|QQ;wJ(&+cn6;}|7qSyK0gp`KlN6I_DtJinih+Q)#5@Bsac53BG|C^Ji=_q zx_1NB(2VVJV^G5)azdL87_8AYGnUu(T}3q9cER?`RxgP*rd}rmSfa-s^}0;s>4>cW z7L@4uPAlrQXat^OGvh)-Q)$%|=vrahna+9dc-z ziF+~+V?jWg(nwo_Z^yNyB)q#S zW|}J3aouxl%dg_zJSruH$Lr?~5-Vm1tio6Kb$nCrje}3iT%X3|JW^WV@UELqktdNh zYR@(w?qFVJcH`!mGZw81Q{R*6om&mK;lsP=b!jz-m|?#f`^)HObCh6Y$-(TD7q6Fb}fd?{4{J*z#%9+5Hc1!Q~-9o~Jn?EfaxMe-isU!D$u=&*-EPbQ87t zpw2!KEP~3{p(@S`56%Pp;(mZNM%Q?Iaw++Dm)ga)4$6wyVSQfIUbu3vE@)KSw$PT9 z&DUH?cB~rDH;}@yvFqaHPrF>|Y#%WpoYe9Le|Ru7$Zo}E3K=bVD`Nyj9n|=MGhuCSPYFPB8%AGBhbwHwLIF#1Ce;H#X zYSc?ue0TiN&d9W)4L2*`R>&4q9P& zuvLeoQEyhufiT?r&RlKJL4@2?ar|9ksr3ysk#yhv@<-|JO2$1#Qp`Iw{M-uBj_yy$ ze0o0S!VS>l8#NEtHmk1sPbZgAXR~D%MHae|IjK!Y>XdKnK{-8gAEOyKD1w4xgN}v$ z*)HxwYSq6oE_Db{2Dm8ozL%fAAU?nD z!Y4myW7A>l(4`Y&2T&C>0>(@Ju70Kp;$*yO*g5xx%|`IIQxlHrYpI!*GpI@V{4fo7 zVnT18%qYRs#fN{y&F7o(f5$~aPQHoE9Vchn4t|;obCK$@dMz^H)^{s>@QtFMDJKij z*Rt%UC-`5bpv+hE@P5*GHa>$~4kARMf(PX#iSC%RdkYC9l#w?@^}QT7fnLait64yFEh zLH4ci=LFA?vwp#&{$s6@ zT*9geh4@jQcuDbX`a*bcMa9E-qI2_(uxYs+$QW{$8Tg0|K*W=+Kt5yOdXZP1;UmR1 zU1&mR7)z-d+(9`^@y;y-rZ96}VpsD5S!^;=1ao)d6Y&T##VnRVW@A=Te&E&W_Fn2h z{&U24du(}qeRub4eabhi6^;IqY@fibfqxKBorABKU{wdwfxcjL*2_YkvUE9kwxHgt z1B(t04{n+od#u()hV(`PLngYhs?aLmsGc%c)F@ddw=@p+s=;h$$LX61dYwa$iSpCK z2-3X!Y&-i0`T0>T*GLVK5g_^S8f23A%DPDnl02xgXOT=OdM^o8U<6P%>3AI5t@Fmd z2jL~emx1QJXK-=aVAdQQhP)asBT{3jKd*^p+kGP$o^wKP?vO#}$As(ytIhcH{ujEG z?c=?r-h+eQr5~T?zH>)nA8rGa)TYWTJ4^38>O0L3GXnj!_#9hqn-@RmTEzX^tUQ|g zhvO1Tj3;4xD!s&nb$KBPa!*cK*S)b(OkB=$xc9~Lb>9RNNFM|&R^H;n@@m!ili3ye zxw)J_-Mv-hOK;ALqh)XR_iKUIO-$z*Siv6AaNb3-Nvl3dNm5SErGg+sf{h#IsLf3v zz|>gIM6YzAYzjFx6wnFKF&`MMFeJxr63$a>CK~=rtK;_A%8P`oTj6`uJB)7y{`05= zTl_8X1mof15#$l{Z1(-aJU??db+(9?$b&x)AMXY<)^oE+#K6A{VB=wl7M7-L*?2op zjma#IYUuN;Duk(_QUrXridGw>tRgmpx`kl3==r2JZ1@ywNpWbW(k0mgd3hA=;t8EA zVpN!V6e=Api}bMkWZs+!$VS^{hgknA6um+5up(52=SGMs25Y4*jR=zrZ-vk?N6CKRQuUovN$fOV4jI5T&Mxs)h%!PAA&5vAxBB5wlm5%cM^?WC zlzB3u@9Fy=6z^YM_cSvzd-?5A$=JG=eaxhHZ%V>%u^dp0{qLu{!Z<(H7_~1R-*5`~ z)Be7ITr=`5bc)tk(tSv`NIYE6O?B7Fv=xGW)Ml01G5O1Qvi1@qj`%~KQrAPNH`Ld! zy##wXTr`u?d|PRqOY8dT&$hr20Dc6vt>hOVCjUe*!xwqfxfy;Qv~#{8 zoz~cZyKgq|r5fH0cTx&O1+YUoPCsvj{ z4ls?@BVnM3aNQ!_3&=qQG{^~sY4`42X93sE#UHjVx)bvyteps+rDdGW89#l}bnES27^7u!T-MSn`PabuU=HSm~hGPSRo zboc?3*BBzN2bsxt$u$pA6vPzr#Zv#QMH8Q5FxfF|6qL-Gc`#x58GVXd{6M7l)a>2k zv{w>wjmb+VXG(ewEh;kVv2|4RfV{2IoLcQa^5P2baG?Y%xeYyv#Gks==5h%EFJByY z?9?O|h)T`W)c^97%7uF$t(vTlK)%F$=fb`5fu`icdOY16L6dA^b<_0rY&U3(FoDkE zR&icOxgl2SX^{;OdWWT@0sls75y`-Pi*n3c*pN+|;!5O_rmBq{D9jFSjJ`i_!=I7| zdH84WQ~W||$fo5hjKa}=Tf4Qe%za2gf<1bt>!9)c%UgWe*eh7Du1Pd3k=Ui+jJgy? z`rtZk8J&i8zj~m!(rNv3k!rq{)1j6l>`RP3M@NjHL&j9u zXqkpZm3h?ic-Cs>BJSmgZwq%!SF#J_jXVfjz~MDj*-5Li$cqE~p+QU|OAyP!(#Kgi zPFFH*&|9^;=8wZ1R1cFI@K9LsnH3GVTy9;+^6=m^>JUOQ4OUrluh;OsBCSVi4o0-s zx>GW2`fSGfnc)SXb*E+P!xgp}-;#+tqY~?-ml_qS1r(f2;oT5<8}RbBiL8Q6v+{Z+ zpFEMPyib?!wY)JV(D6pN1)CW>T2@o^!$*6zBd5fI!qUf0q8B(nDRuVnZNo8msGOX1 zJVRmJeBf=Mmy~s}S!Z(+C9V^%!Buibmy@*YrhYh)^Fu8v!al@5A%DEa(7ozW(WvV4 zOF}?G81;?tW=+7zdI)?#OrL~ipdETVT2En z{t3JFh^F%qes zdUR_*BP5{GruJJfysODlIUr|u)}0kh)mn!9x)&+^;YdEsEoa)5TpWH_WTLe<{x}a( z^_an7TDk6ZPn_xWd&NkZy7uswtbVK;wK_KG7Lfa(1L$FcezOkP5(xJDY6MRH1?O2Qu%Z z8HxGDb>wcU`DV6-D%d@Q6zG_s67Ys&85JT>zddQ-oYzXN>{}af!Wo8W^;s+(t z)m|yI87$flOIXRUViXg?o_s(Q*ey)EF?#xs=2iaQ_-cz~X9G5nqowE%G!&&os^sQ# zRc`>5#X2~n<)z*&<)>VOxGe?4Q>8tJdJ{lnuvHWKA=pU4Kt9Za?1+?(vN4vi-3MkB z_PEe?=(lpr^*<5@7)#dOQjh6SdMm8#-Cwn|pt-YJZ6o-yE#grA?rIiQtK=_JY^3ze z%yoMI^YrG6Ir?Fk+-Ly-EP?Q_ZkS7>y@Bvd8=GZ_AZ5QSQ09{ahvm`+yT?x{GCb_s ziXa(fC7+BzVq+qz14>+8bW?oG$T$V(jK#rC&mdlq7c>NBP@pO3cdgbu za#T!HsYZa3X7~C?z6zwr7!$-gR@>-1#Bde)3Uv3@J(R^_2NWynS1BCeiFK<}ln>*! zP=V}C78oPz%I-q2Z^D{OmG?vO!y7)Iv3KI6CvkK=(pblFk9SvGh$0}BHgfk&G}%?S z%so+J@@1-2v_du-*=f7YQL69KFII;rnjv_)^>ebVK@54?h|Pd8X=F3GV=#R4bEMkG zBvwix0;e4RgXX!taTf&ptFkU|P6NJ#(^cmP8X?ygC7*$Kwme8 z2H{R>1K+#W2J9q(!XUAW12}hSc^AIFKQo-21(DDt`4V}W>Er7QkMJt zcz#fGK*Ae#hc+-@0$#7vu!Ul|k#;KUhPgAghL3KvX4#QI>1fcllNV^i^K7`6WW*nC z^?9GeI?YtxH);s?!JP`H@@tTf^Vq@<8)BWlheYZJeF`{}?ux)(>2`sox&1!KDFd=bR}-HqQYjZjTP?$%?=O1)pzASL3?k zmQGxf6*!0bs#_tj{)ZKxx(_yMZOQEmzkeuXpH?w|PbuYlB`}66I0wt#huEr_CbhjO z=;JywMhPYee1-CTg>`c$tU;DL7z)-A81|BbNqjcJAmG=iPP&TbuZ$3vUb+tztg9_wy7HNb^>!@hnlxe3;`?H&R+b~!` z;X2DU{LhtT(@LiIF@W7*Ii)K(N%TC|Jyt2JELR9eQ}n7!nnzPcOdP?m;zil%T@@a# zSMS@I*{6l&?n82h`yN)rvpe)x2D9A-Hfo<-GkqZw5EXxwsL+XLyX_V$^se(=nF*w9 znIjsM2cuR@#OL@G?rD5XZgE{XZ3t65wJk5Lk&6QB2%h$)Z_rUGwHFpJulrnc5`W< zNSK;FM2ZU;2NeAQao0i6M8YFYu%B8E2D=UQy!KD*6!%~1LT2TEo%4M9K19R|;A8CZ z^kHlevSkhi%S9#+n`N8gA!i>8LT!uB#!+CYQ8;Y#$1B$mNA+r66HgWJEC@9}8)rf9 zZnMO@mHMsG#LwkF%9Y)Oe}CcPNxCO!hYnCTt#ZGX zOI4t)Kvb=HkE(oqE2o{>wUhSn14CrY#9RE?uG8z!zhq*uSRur_g@p(c@Vl}yVwMCd z6La5h#5XKot&o{oq*5e+0kDU3Ep)22s$||0)SMgOGuN>x?9g7GO@Gv|N-c#u*n?&` zK?-P8t3%elb!oep41L&?K7b+#QYM40U$U{<;NE4Z5^l*)6w$@hb0zdFElLsrv z!J1|SZLxU#V??)_8l@^DyQc?#HxR8Ww+^I3uu^(F< zn-;{`q!kjFlmOrem|bG>qKp$TgBxRn6%7F9(JQ-Hia^MFh&%hM*kw}?8d3Heve;ut z`m08V^ZcIw>Sn9q`qC-wgDsh+v-JmWTY_7eQ`m+PaR^|vy)D*?Co}pE_C_D@HS4@V zW^AGW6A)ZJlfU|n*2Z345A;W$uKL_RXxwxVbFSMK98`RtCna~5_lBB5W8@$GFqFEt zc}F?oN1i2vmd$lnr&7BPwJ7mUDve1$C=7GtRE%c*01;=)#-ygL?9my)U)|Bh52-!9 ziH#>^@!Nm&zMYcNxp?fiJM+QvLh%S@&7{0>@VL(CK(%9ACw?qJY5hv*-w_DuVtVy! ziZ-^gv^-)fb)xI^g9Y0fzOxH`)1_9@SW+VP3IB6BpiLqFJn}~f8&}x-kARM@tZp6B zdw{$cCrFA1aGDm^#djp!8nQDL9B1#$pVHS68dx6xIyO?KFQenb*LmM!Bx70{EI-2K zdf9&G;)XbbbA{!j9G;oissd~c$HMeGD# znmJsaP#OzWF$iPJiIJZ6eCP3=ZX|ebSafW-$f?STPNbdt{zhXGrUbivT=)iH7tZK**})K-S>n*Un$aK<^=Az6HmEQJzv2efE>; zqlc%3juu})EC;!aB6>@>zr&!zfv{)D&@~7ORsQY zS+sYC`woE0$@&Qva24##`sl<)z%AgoA(&XPgghZ`XVC$%ZPpIquYV5*1O(K(&iOvl zPdHW_*=(JvrYX#W|7m!_7j6n72ht$|$srDyaVvdc;Hqk9X8XJ$bXrqB=RUhwxD4nX zWgB*#vp!vxtrah#R6qkW&0c(~FM{}z_J|llxyg2&tgXp6zGV zRsApK=<2P<8D?olXg0UIb|$>z4s^W{xmmS8b;?nYpS7rMQ&n%Q?d!_D<7X?gMHDC+ zc*kDWO}=j4g6fON8#a>9KaP~J++6^`7I7xW!XA7EExU$lh)vE?h!vb3;^z5aYP*a1 zAsASb1y8Emi#0(9b@dsBeEy?QbO21+;Dcl4a_zpPb3Xw|)G3N|?DUy^JEgAhokh;7 zd-r&(RDU~sov5fv{F5$=?Qgf9eRGHnj{qBmL@cZL&fJ5~*T*D=2}<-FNZtMX9)Kl1 z)8{n3Qvp-zMwAu8`krzst&iIcLyT4J;(B>Y=|Z(N%)xRoj#y? z=)?;g^*`@UXn9990x`7;TN>Zwkl&gbJ)+3d@&b7*`Aycu|Uvk6rF7d*Y*L0Yb!nt)R_=^gi0+ zl_-NG0oX5-;}^R8&#t06%F8+L6MMYbv3V)ma;*HUMqtX%ZTwo%ieN!n zipWAh1!>j2B9tA%rsD z*v-Ui6w(y3lw1+udQq+ur0v>vJ2`4|v5(mT)SGr}=Ud`}u zWWj=7B>WvAFs_lZn^|DC=6+nE042IWVqFVq_-B?0wLeV7z;r?hS-EMT(EvS{UI%D^OpVr;ceBc}7}s z;V%M@z}A=TV>ZGO8#jKX|h<=MLHXd-Yi_;%nduSG< zO?W#!@JeXkA`0N89{Xv@CZ3z2fL23xqwiT*Pt@jKU4fI_Ekryd9gqz{`|hPy5T8!W?=V`K*LZAbi<*!!t^}0+E*?gL1fg^U+=kjJJRu_rl%-7Hu#K+c<^E9E_khjqGUx{wX3Ude2X8 zFK{M=@iA#<_%3nm4eAH|e)Nk1Mu?#RSv$oxU|3JEH%xfiOwXi-{`UH?ECH2 z^5}By(btYI{`<=pkJ_k2z7_;SjO)lDez?!cS{;=NA9dWZ|TX9srJyjNi`1zWjt?mY6&n((3k9K;{ll%m?9zR(~Mw zpWmzPU9UGOt#iegO-vR#3n`R?C@Qv7gIYR55TomZA}qLhq+xI-wKVXvTe1e~EswfF zT{*_>B$Nj0K?W>?lxX(Mb$*O=SjmpXAa_({3J)6Jw-9Vs-{v_Ay@PDyi?xIoB~YFs zhWZAs>PTy7XY6Dd zrfIEj%Xy`PQq`ZO(!<3rKE^OzUjRPyYH5}`N_Dgh(m@cEKVn+77Xx;vx&}evmF}~i z_8&e5#oq{Ib#KfBL~UNDF`A>60zxI4-_V&t`wTyGF^RE62Lu=UN$TpVz5cNO4nT$=Hxpgb^mc5Pz6z|x(xHJ?rKKR?J78i6EH z3H{EUI*{PXW+%2bJ^531f-D=>Ws#Vp=20yF1jnV(!HjyE+xh%Ghp3X+&E*}u-sv9X zDshWA!t0D=!`TD;Zy>@UTCx5stKa)Fv^~z{`6iD4fTKuP3Xz0%1)rTi`sXA1RBkkI zO7JN_t^rLWxBJ{H2yP7l()k4bc-{9Os4$mU5&$ z35ikaCx%f*hbCO*>AauuVrlg=p z?ESKQAqhk-%>f{$->^A#UI<p0|5rU@(8hYfushNzI!CopT7Vb-zr=RC& z2S%-^U1NmMS;9#nU7FKh8tIapfF1f^8cAA`;Fe^2{@UAzXA2UtFA%()rmrL$5r*0qBc04`|Aw&D|~o#%uLz)x_Gn<9nK_TSWH zLKfEUjHUd`LD32JbAhY+KLQc*h*=H&SUsAd$A8LdJ&udxv)bf}aNfmsLQ*z9acRFa zIY#bibVov|H~@Fo$UkG0#1f~;0V*f^!VlngS!uFufRH( zMjGamDV0!RT1{OKa?o`q`%c1y{2?*L@=>f1CVNbG#7UjTG0H_fmYo>KF99H)MTyol zE9m+ph+oimx7&r-7eb;CF(NNMv0_NO9|%7Ey@QnOZhk@~Mil5d2!W_$DIl5%*SKE1 z3jnKo29>pQLCzJ&FZ&z8;~{M&cJ;K%JPy6sH$TLFK|Kqdgf>?(nQu(7$4?gx-ej_a z&acP?#*2l!h&a-ouV&jUEgYDtcG@nMZl2*s(KU77&Y;OF1;KKR<%){5F0HcG-d0a= z8l*SDOlQ@a>V5yadN>()5xF>9_+8MG3`~vnFOVcjc9inPuy9!NgA z%`ZaNK+FDC4kgS=ldbsM@vj$b7G`6{3%y8!&;U79$vDDtd z;H5Zqh5V1S%%NrxVqb>E)&{$4F_v8ec36=u|H1+4waUFWT*jRgoDQ+HFbD5~i#2@* zXt+*!8AhTO6AY$cVAx;1GK{x$cx=gYH!toW+n#E1+Y@fnNqVHUSLR>INb%Q)Zuy^W z0$YLPfvbP?xnR?e)ra#CRFGDT#Q#Opx5qR2{{K4B$M3)WxBI^C>$+ag*Yj{) zFTerwDIYF;`NH(0JSJ{J>1=Rq8`^^C(hG*GO)k-R&$grt^-)aWAttK^RRUP1*a={_zaw4NSw$)p(CD_Ahv=yC`OL_h zeQi^hiLG?lta$S_E%4-U>q&;Bi*dP_PCDoC*AkO|tD&_56SEjI7srX4J5E}ag*aED zCFPw+6v7Mkv0z)M+ABwSMI}0%)bYjjTWm9DQK8H@;Ox<@dbn>~V`XAaHv-Yh|QX=gTw2m4ib0l)@PvEmW z_i%NB<3gH(ph4OE?nI9gt0$Y{=fy%6`-*Vy?FL>4aLvyJT7wb~BA?0KT<}NE_BU#4 zJnEzHCsWlKClEPpmnhqpLMY9Zo9Yl|7#;Ou0lhHgXez%u(9RFpNOYYNlKapQ-acslkMa-W5LSs?0l+}j`l3wWfLPfBgj80JVQ;c%5sCR*z&b<0D8RzDh zbjDg`SN^N5YrZ(QO|SNEgUY|tT1cNLdO-K&u-ZX(3gp4=jFP;w+`5#SZp#&|hzI{B8wT(w>5 zDylz`z)bGlf>$33^4&h(h2drS_h>jQxYk}Ln>6$G^5TL9mO8Gr?_vs8oDJpCTwJ%3 z7L?(Q^sj`OZLnPmB1Py!8V7$U&GmVy5}cuQ zPFsF-Wq?EVTcyy0!CK)izIoMWvTy#?^PESK#Q!Y{=+%eSDqZ5=uz5neBbSv;t%whd z`k5Pr2gCJLA)C7p?@8e|_==Kk{rd-`uy@c`x|n=Y@)0!ucgFnBj{b{{U_a~yZN z@O0Si4jfrPD2V3ibYFa?$t$r6#gD%yopvHQLeYfr6nSFe=9V3m^GHkwBu;R?55+?$ z+Ye+C#BLDzEj)cme8Aqubhh>#?hQL}h66wkGXDKp57)j?GWBHj)gtB^(#EvQx&0^|eXeKb zWlH{vOwWwM+ArOoF2q$lRkgK-0t?IV`y_zyt`9qY>T5(jb(8JReLgGDI#TG-S=Z%q z;R#~up)q`X!0f8Ts*^cBR`aF&dZjNM!kh4Yv}N_BXrn@GRs_oI3v9~?X&v_{opbk3 z5I%F+_|2KLn5uyJNyoA&+oQ;LsoaJ~tix2j^`ALV_j z1@Q95HS~?M)p%WlXA%?JR1XV1$QX#m{IHm(uyZ2ua`$0#xPY%TX845~zV^Xa!G++1 zy$ExVdD0=0u;tX**)!{IZ1{ZiN0@0(Olr_|;Qt^Ls=HRp6yN8{{dgZ%7>z#x0`j0# z^~h9pKk|AWH(+`2r-QBnNB*`$T`7f=eLD4GM69kq$A3O9%*ot1WfhoYx{2fDd51~t zS$IT&Ag*Ut_T`5Z3HH8&-Tx?{rn9~rk8pN#zN)Fv2)pd=BtlQqW_$Z-V1j3=Mli^7 z97pa7v{vT@Mw5GEDPOut(PfQcn`#7Qm^zFlh3M!4%SGn-Xy04eiAg?oe`(wsA32W& z>Hr<~=tZt(V@X|#P$~_|cuVXZH9L1QQ+P;hjw+AFf}LArGtx}U6ICM_6U@D&%`(6K zdRJaI+h=E1@Dp58{;}&~lU*v$ zUKHe59)?XRQpHM23x@~*NIg@l_<);I?OWg4N* zn8_eJL(&vr^u$rp-nXS?vfXJO`Y!c<_k+E7xBd5Vg&0^orCwL~K%G)i=bRS7$wZ z*@gL5!jJgVH;occg?&y1Bo*!rU$?U-x|{4?5LC;5D^_AjF^}d3jF+Sa>0h{*Nwzc? zrruaFhq4N(Mh(_db50@W4J_NY0AKB@dkS2okIM1ZoniB|H;<74{-=A=*$O>cctoAk z7s=VaRJoI(4hfGm8C~j;x(7;whwC>Uqci6h^*lFReC6(>o18Yq^FT13iQ*i8vgcwHPoUbxsecxy_wI5Kt-(AplTdD9A9`v-HwuQaQ4rPG1SaI`S82PcgD zRy&(xW1E8Z0TwckBwXi?fA5&kwaw^t?%do%Mm-3@7v*Nn{KMevy|7F&iBV@AB8 z8`Mf^Ct}`R;1Iws6|PW9)fVOJE)sZ04d^?|m)ulTlCxytjWiaN`Q8){Sd&v^(L~)A(V_f zu)p;VO(=IWZOP|vNw{M*(SD@2VHKlQkI}k)tdk--W92^WGHMwl|58^!QskkDdiM8| zBB#)HxEoL{8jvCP`{wolFF?4A6p}Oa5Xfe?+LC?5C7n#M;|33aNcOXwPIrTKs;?9) z$FyM*VYLwkn=3GO%#XnEDSpmVIw%h2>`MCju#>`ZxDLD}<{m}=NR?QP&<*Vw#MSc} z%p<0n6C~%^R?v+SmMpkgg?-cP?!cf}tx=S#)niIV%V{Wjx}D^$l_}HPm&`DL0&h4b zA+AkFt3z-kuXCo5Kg2|a@!&#RvZRBj6*2}J7)zNjoE>EEn|q2YX~(%$WU4O@DkGq^ zfV72h8A`wGE+7k4D;ETAw}}d<9-7EJLB|Ccise3{syTTXrqbqlGEl>QB%LW&uJ8^x zT4s9N18qbl&-^z{vXh?Qza6{Q)}vAY zdorM}m&6EvSL~^1szP$lKu2C~bM=e3U8pXXgnJ~@?pC8!94-PhuH=v(UgID*FT2#F zNb}c}OF()N24T-M*u((7-L<&5EY#0rCUuZ1D?R1%VaNR2;9qR>hGw?U`EnSO7Y`hf zGmJ~zS>W8q>A}!~@i#>c7#32~RvI97>@&Kgd%%dW2Cu~-%)h?)Qfsqu|6_^~*b7{B z6FhRK%0g=VtHt*Zj#khFrsggCNNDd&wB#qX>5d*|{QLhVMK4JfItp*xSLjvoLBwpt4sFyK2+(q7~BkfxOXRBGcx@5rbC40bcF-d|NLLQ;n$AO;yw&pkUFC9F^fFV z)h%$Ru-SijJU&{l6j)1mII1+)QPT85l1Iw593 z$>tP9Wg<6*wq5x6d(o@@8iAbVB)iVDCuE9H?a=sU%*6bS=ey$E$ADNp>U457sBzZwDLEI!3 z#Ej5Oz${<^TXSPFwJ zgeQZ(4o?2X)DtcKTNSbAxuI#RySAnVC_?WRow`=+u8&-vkG5qDP+bgMzE#BjJjsZI zfC?b>h`iG>#vPu!Qa2(t9XC7BZy|E~dqDfnVWjcKduo607JK%R*Z*y6zkZ8rUHwIx zMSadGw|R=L^K4gUsLEa!QwyvP0U$0!ov}n9Z-GOkI20xVrADlpqc25E+Ak^-Zb?+1 zCb)tAS;UTx(eZ^q0)mp>yT2jPqlTkX@3gF+{zD*0}el;%o$EA~sc>&~K{MQonWA0-9 zO3SFM+O2oEcZZFG(%;j=v%K1w=6jv?7=0#&wWM^**WHm`Up$wJKJp)IOx0=TnRobW zvxmWc8NE`@eYFneS9LOdlCTZx_+eq=qcK^8uGj?mWJwo^!a9L}>_;k%2 zbuFR3x9TzTDrewesBwH#?D@3S!T(>gNn{y~>^3{e4Qi%@vo%w1Cj1)2`Ic{b;YU|F zddWm^vg9ze;3nCRz0tZnFKnLH2hzcBiSDDtj-HoB_s6e?I93Jgl2P7JAM{@RhV5Ti zUZi{anz06Bgv|$F`*7F{5$o{|@XtzC9wn*Y?B-;EO^C+3KHL-`@vo}UaZ;1-94 zb@gocQms?kl)zZrla=zbCen82mSnw~JZOiN2%PNI@~0k2F=mZHh2aGrK?3R}0dJNu~(PwbOB_znHe%drx)P zVsV_^la=T+Kr```XnVFABURy(bJ;{J0J%gS8dg}x(tLjxa z$I_ov^dwL9WBCjsA4=P+rv1vXJ|s?N17wvy1R_Nd(17YBUZ7vNsqwVVVprddMKsF{94&~VAk95RfN9H29B>k>uiN^S^ zzZ6K4yX7XlFg_@h0TP=AG;Y9VMT*1+bNw2)wmPtbZ3-R-m2-NcrNQm<8#4^Xo9~>u zyzV^B7e^;1bPhSY!~au)=|IKiqn)5}iq|9_z*5wuaJh2aQu}X%OP5RY^XwxuMRHT~ zW-H~jeomU|d30f_2y*_=%-5Y3Bgwq2_k$(e-%O7fq$n2XT5I<@pWo0%O&c$9W?Uj@+}Wn6WX4Ybyb| zG>BnQCO?J3&Cj5D(8+}xE=btG{$)&>0WrHPT|kuyN{UxU%(LTX?|Im6>1eBDaI7Nr zOgWYd)jz;21Fh#dyKgW~J5Bue8V`|b*!icsl_2Z5@9>7n*6=IGvM|%PP$8VdT6C-B zFE6J+bI+^QSAs*D@CQTRVuU04d zq5RV0hS&+yhPv&Qe$Pwk(FYUs#2LrX9BR`iW=YHMTR~XbyR+@-?NYcW*=?OvV@E_K z-i3(tBZuP`ZioMNo4c`4zHwhC&WBfXqLmQqp^CoGd}gWtp4tH&rpCh_`pUgqlwEn5 za&6_yzC{%156ON`Euip6CWd`K9zG?lwFgOWek~=})b5Ua%eB;mm@wehR^_g05!WmY z%6HrlEkXH-w}O5>XL}D*fBvedW)uyN7JgKy{IqLGy8%QNby80}@e}NA`iB0Qs{XXS zA7;3lM71-z^UGqCy}k$CPk>HuANsp}WDXT|h;(?W3&U<5>GS$8Kv}psHox0ON_l+A zKYCNwl*S|;H6n1?^bG{&8rlhXGy7zEdSCjrRSa959lssk=TQ6_b?x|G;= zkRqz5VC2D_<0MK}A?un2wjl#oUnjbkP^Qk%Zx%sF=))--!7ng>Bs`1ijcf*Wa=sO7 z;+M}$-}jg$4qfA6J>D5yKaM*Eo)tyRNbK&qDdh9o z-~Q+xyu8su>09gXrJ@@82Fqq?g~6a|0j}?zdjoCuM0K0RJy6wU8O#jbBW z>fj;z^pT2U!q>YyIHf?(-8s*3MAzjSOllB66kz-qaK&lZuY&*f=7swnJuWf9=}GhKKY=m9_3SRCTi++0G1M2$stvgV-q9;{ zXTF!h{k=JHa_>E&GOzDNS0Ep|Tbw1N=EaF!KpPh7DiUZ#e`gPw^;$@2Lm1&=lND}^Pl({_A!?8y-8Hyto)ajV zcSyNL5Czmh3Ycd@L%%GY3ixqIJ>IR!QACPlSKimkIO%(R8%^K3>`}zuQqI?yo8_JU z$I5Z<#(WnZKpDG|NE@kKEHr))}oBSRgU&+a%`HM~ucv-M#>cbzkvDbsCu#Ka& zK+z`qSf|%SlYQ#N&el`7cQwD@f-)wZg9~xJYKdn|b}NgoOdMveoA#K&Vivu=#ehsk zTUt%H)1a@UQgitCv>w@{IlAzwh6157&n=Ta)sY7j>w44R2>U zclbINRD3)M?r^Wj1D(7UDTCKvJT7c&0uKB3dtpVyoTfYMjhz_q8LlUCR(zZ-?X0eL zS89*ZLHS$@hE#lQ*dyaFP&E<2QPK5~b2s`{womMKz;&SI`$~(#?L{7<;8!ZxY2M9J zlvA_D&H4Bl94iH~nkN)tjq$mhH!2rUa_X$>Q@$nWkedtJdS_W;$f;?xhU`>h(cI#S z4%?p!gAuyG!)ckg>2OyA)(l0lD)`_954x8i?_o#A@};mcQYVI6c%}HG-mT60K;mfk zlM~L+W0`0(?0efj?zUA|-%II5R_?{V+mNlF=(CZ>;z% z(6id2C_Nj2A_+O8NibbDrr2>HZm0V3t8i6j-_o;$3`Hf+D}D4(z5kALZJm6N2rM`> z-{u=2-`LD5hSw`CDl!`NiRy_5yZ2wL1^R!|zr`$&HS&FkH?nrBPP8+$<9tfIiC_&q zZL%9dr@mzK$>c3ujFsFTlv#iX1y8|gVI&ab2}RybNBI|(MwlE{&SVP9PzU%{5Ns{=$0%@)xRNp9Q` zBOOZHQ93E|*u<;Kfm2fkG~iWO*4itOW~u5wkuZLkY5r#sBx7IVa_6-0N@iELDv)69 zYYOunzbQ{}S4)OoL!(Tdr75;kMU4%Np6Re{WlM*}6d>xX6$f2y=iWJadS$QdS-XVq zVp!-Q8m$8v`JTDor@=;D_9?FsDoC4aJL%(ETJVQ!{$kg0dtq_#S-RgteD%Z^>#y~N zoTQ6k&TnTLiGH%k}wM@>^J60x6FU=jK|16kf7q87PyEy?h}% z*H|+fT?dR*%JYJ5lB(cl_SO7oJ!x!p>YP@0NoLRu-`h^A8t7jk%Y$D>SDr~&i1^~( zu`D8my3MsS7Y9p~HPx=nAkKt2881^%0KxJ)`JyVibmyxJvb0WAozMr5AS*+9u9H=s z4W+$INvGQFTlHH2PfVfx`VjKB?{rQYFK`c}9HX}>RB?^-30ViVZZB0C810gi_$y)I zhhh&-TFvZKZC@d+V&`|rU6}dZO}4-8ff67PUzdeCA<2uL-}&mG9U4k{-!-#{5et#r z#+YDFM?pga_QF8YI1(Bv&|WfZV~9QW0n-z#6kh)_Wsd@egv->(R=kKbRhqo<=Z<0D^)e=YMyh<;Uq(Oh*&U25y%WwY;P?j?I zK>J`I8B_KN{)T<5n-_G7zB_SC0>QT7?I44l5h)1dvP0Q8vRHycc-!~rbIBy^-}>jk zTwJ?{F?OhCR_Lk~G!K+S3X=qSeh-f*jr0w6$@dRrJX#&Bue>YV193ho;2P%{Lk7Ti zGV6^!Mu?>YMXS~b%u^u0+EclsvGpL1iTgGBw)i+d0{3SPoabNCe_Q5sVF;4ffnf*e zO!6oAi?J)yO+LuA7Y!*BgH_uv6onq>u&ZFx9b!;5F@r~F&Yr28qjssBQ>M}aOMW+? zuN@Ds!COgv>hj71khu#I<6T2tNz=)JO$9tzw-82PT5;6ekC_EI}nD_J@ z@Ra-LjK1mbsnQ{_*v%KFis(~91j)zf5Cm!f;`}gJ9dI|S4%E3dLXuQNRwT^jEDz?L zM#>}cmjZvo)eNiD^A^bO|J$qSECqdxHu>2}jir6X&d9HnDpJvQN00)*ZiZ~BCs$xI zV9RcgQHIRzH&C^v@WUr(#ZB?k?;e9bP7)Zc!vAB7v~N(Tt_0BKTif~;66pD6p@ z)q*4$2{psgn`SOe9K8i57vJFoj8gIwu?9u(+E5-~Y|E)>nZh|~(2VR;Ns*w*Zkg*R zr_$)C#&{vy6Ck*c>-4?b4MFh9`q8LZy>E6{mL$P~GVtFxDy!GJafyc<>F*zV5IW z_t9P;+Wz?@y^WtWGYryvs=Q|xw;R0_t)b+^<65sBHqT}xE;$j8B4htM>v4JeU%grH z+F0n@1nmxB_3ho7w){qYUn5}zx#O2Erh(3GzAw{$6lPX|$pSw9Bhwu`@#f7hW!D2b z3JVl|A5@%X|05C3&xNu?b%>6BIvKlSeBx*#)*`xFDy-OL#25P;hkZO>>O8ntZ3#x+m?t#ozxcV00^&SRKTjnSn7tBqk zwhF~c_M)E+oxAw7J^!hwt<($cJ%YsckG?k_&oS0pT|o&eV{`G-AB)H_wwDG02|eSf zr+Z&k5;w`E4O-7VAGX^v;|2Z8MYkFp3{es9M)4jig7vE_40?No|rgfgv{|uL_6W+VNXo}a% z;E&GoxX--DTks71w_onpADEeTc3SxnL?bQc6dWq$L4Vs-qFP>%n)eH<-8oa9@`&@s z8ahH9pIogz6uK{p`2N4)WMa07ba6J(urtGX^;2{xibOfan`wbn&ia9a45B422lU9NdB(0#KiFKkxNiN7Y zoidTGFb`TUIH-G5I@A~D>xLaM>+NdwX&(SdwO7Gb$Wvlxk#Qi?qDR|j`V7;S@aGn(>^DDcGv3{@Xp+-B#z*%{FV$r5tB zSZ9aA2}T}&M^^N~BK~lbjeCWP{sfV^Q=KJIqTFFUWzZ0xgqu9gFU2geqbszfl!C?@ zrkFGq?>N}+NIp2$?Rp2)MZr(ydrjHq2qNr+XJYp%;=1^%jEUI2h#BB zsHX)&bJMbC%ftu5RI0XKIR>|XsBL=MHFxXoP16FDd3njT^}xNpMf4$+!H{Lbo0g1WFu08kk|`_ z#qF-eGt{?YVuze{f%AM+Xhxc1I#rXQ;*5BfFY5)fEIHljd0 zlA8eLCr*jwo}z-0iYtHd>!8Z(1Ac>R?NSpJ)nmeXtJMt_*fRtt;&$e83`n2N_TOB% zEBttFUw_!duSMnCe8f}4_lVA+r81Tczql`WPNBL8@}NtMsb|}2KxLvWZZlI=woulW zBl~f2u&>6uz}4MXMqv>lS1x6D%lGeBl2i-W_Bs9X;i3&qHxGm2^Z&ezSeVuH0gDE!rCS(8VoTGCBKhp8`y- z?P6&L({xwe6eAS+)#*sgqQVmZk_mVm2wojr%np%U*l9fT;$d(ZnnPFvBEi#OJ<%M- zZ16E_ijT(2ymw?xwc8^)^bP!l;*XZi%@s}y{)H~a@%V3kPWo8V{+KA@B ztjJH!zCVVR%l3n}NOS^xI+<7|p#jnb&L-H{lSmz8U$SacCQiRmmsjiBe;2K7G5nHGIyb ztE;3l4JDvDps+gK^exB?91VGSkd8W_PqSTxCxO*fDEOU+DfTYxfGR-;S&yHzOQn%f zc9f4r*IAGb9^e$gKGoXj$60Q~6;Q-Uk$Wu^jL6|%KfZZ9Suz{yA~9QxLcR(+9^=4P zSah=Ky@_ppo$+h2yGXq{s-z$-m{+=7V=mVQ>4bP7{uYrTXj4lEtxflda4 z4ept++a8Lpm&vz=b3}htL_x>c(VWIxavA)}5P;z43AeFIRliK`Qhzb{-?``Jq9;FG zYqz6R!ZX@kNn__$gqEnkoK3F&cRWXu^a-vmV_#T@YeZqc4c4>$uZBru-QU&@Jw_)1 z7eK6DmLqwV`Q45|zho&EC&-|kg-!XEe zza=}s=-C^vpZoR?ETF zLXQI#KEnQZ$JEs`Cizz=uLD0cUGtTT17^`O0>|FpbiqF4&t{uHCdsMU>^pd)UTVTt zgGg#f*;7$v*g_K*IlPRy>dUPzKAE~|@fzzA=Xn*)@wf^`r9_QloI8sIE>K0WT9tJC z-Dtf(Wg!&O63Z3^D&QoD+-`g>FEHr~{&->!tpoJOayV?74x5 zA$ylH;uQgga|W{`U2vpB%pN&ZB~koI74QWGs?6r_WW8du%X*+l;InSvyge{gY}k>> z<_!i$=-%V(Q*uzogqz2+jT_JIu02$!&n*&wPrYbj!@JPmFbg~Hip3c)1*4qT?(8s= z_{1LXt5e>Okn)JHO-u9)!I5jttiDzJhL>PX%BYwv<6YqjBf(1@Q0nQ zX~%4p0ZvPZG>)xjU`rn{OBrnQrHNB z^#0}WbP>}me=RrXarrw1rvG(5)f_`?q z@pPom{2?i{?WQTEYyaAAwuz|RZbxoAA8QtMyN5tTo-*m`tG#rYEU@daFZcDW1of)w}lx>&qHp%|9tCrJC`cR!w7`&pZsb*hv1?m*u zT$mZ?cb~#Bb|jzG8!IQb$vP`SnClsesTu-pw6`_iVi;%iW6O*F*|AuB0mRG@M$iM* ztpFROq1d?Qk%YhqPHjeB`&IuB5aKO)LJz2FX)?qNU+5J~cN{}g3M`>5j-a`|yCm#5 z2ukT3+)6QVe)smwPN^r7{f*aP^e)WJXGfLprjWnE#@)9Ss)`J# z{_M?RQxx}LX}oIhK^q3cK7706?a-j~l#>zm%6|F9<>(_=tmZdXpI7X`L8RA0Gi|Yd z12>Gzo!7$MSUME}wa70GmIMt#4qr=BRnCBVLH_&=kpH%YGC|7DfEddie?Hbry^R{+ z#nl%HT)MDF-}|6z5V5Uy>xM6;aOGu5t@-GY1k*|&+0o+&Y#5j4dm+duq zqtN>p$Fg}PN%|AgP3Wl`aU1dMLT!eL$hadGpDsBTM%0|ByVu8W^awF|8T1z7fTCg5 z`5QmXzjHc>(Ut?$4|Awu+hg zT_vR6`=fin<`i`&0jj_XG{JPJ%Oa%Cg+H8>?(Xmz0XySO3A&VAV-D89a4Lfnn*0cq zajgeHoW|2SgqvjCz=vnf?`GlXp-v{dh8m2X_t)yp8KLjwI3u&Uj?e9CYWgNKZ zQ7yUQ-S$P9{89&)@!4%@!ERW+A)&GDNWwk zAb7hLv?)73^bYIXt<`bOQ<%H(gmf{rcC6T_`xRqzIZu}iXwO0XTT(1B3y;wk`TbkE zNHV%0zYON9?}%T0C~KGX_f7`&2>>;UI+^(=E^QlF@|g}jnHk!aAAZ>WjOWLw7bXo2 zwxkbkA<+(O(6h!5nU7uvgrJ{P_b+A|p$Di^ah;4=qQLhw$41OLa41_)W?_<^u@=3E z*%~dFC7;FaVJV69SQ>bzx=!vC%e1L<@jwGWcGlGE!_AQD{=&A#nJ{SXBBl@i7V5CD z?}>e(qT!D~zk-&kMSNvrxVRc5Y~huoFtA$71l;EWzox+h~& zQ=T$U^I^UUIc&sGX$@SERfO0Ohs*zLj{h^Qu>Vb~OgbPalLYKI#LM_~ExkZNbLV;K zGq*W?t|M&2OvOLLf~v9jx^-}&`v)If3ix$Q);Sd!N^^>SQ?x|Q8P!w{U2IGk6q|M$ zbz^=>7P4iw{t#^fs`1_7v|hMhdPLR7r#XLoL2t4oBDci=^hh30JkvE}&M!59vG#P% zWDb}We#0CZ``MJ>C8&W`mk9z2EN~SKrn&-yh1Vu~d1 zM<5I1do+uo)1bG)#b6Cy?LSL9{S$u_{T0Z+2tudtOmls33f*BYVtCPZr2P4TF5aNS zNSAYOQC{Zb8j6%`D#I+RqZH(HcuAV`?5=Yqwh$x1h&FIMQ)IKg|cu! z9lZ)Dm_U#T@})!naSc1)5{O5b>xb@~d^COE8Hy!#ZQOsFe|N836)Qy_stE>s@7HhW z(B4^KRh<3R6jN`LCGi7G*?XT3_i1qVb+6|?2Q;0$I6NnvkivYfC(V}2MK4jXH4F)Y zW5k9da!ecRa- zB{KZ}lNqp3#rW9})o_Wwq-1zh}!`{PUI23FOOc+&eCb;j<|J{1|py0bu} z+;pz~m|FA*bLMcbJHriJz$U{&#}KIdzzaOu9Qig70L<0q*fLo)i~j6ZV?pQ&*-?rl48?GY*8PZ-Q?Yp<8^8wiC0s&a-8gFU`n^L2$f#XN`!K4Q{ko&C=!!a#qS zEFC%5=+)NseYC81E4ETt-=X*2Tk~<`GR7V}I_g}Ts0%R;dZ=^xX~sb9v*Iss{jo!M zH{nUAPj_fm`14o89wjF&@WK*77xa3OI;@TUZR?Y(xY05|znsdvXY{!?Hj8gLGF=cc zvNVr1m;q_9BDM1ygO2T{29&->#b-wAQGkcO|J9%)-bnj2z&0!5K+oN6X7Zk? zx0g>$>{MzDT=@#_j^KAO!H}f&cLmHR;o7R;1}pCkt%e%~Mzp#7%~njk7!fR?fKeUtk_7x&B!Ktg@(PCxW3lpkNj zj425tmyiBzJ{Aa;>E~m5m#T-{K0_G^P-8|stWqO0QOa5De!CMkyI*^uYA&>`OQoFv z9RVd>cTHHE+h<68p6qjr?1e7HA9k+c?%9$O0ukgSKrAw=p-X=k^U+aX)u}ep0X*lT z%WFO0fiv`q6u(U4WHl}PlESHdZ7F^WvuJ*UAs4$#r#%V3YA4L9s9h8Pv|=9Oj|bv1 z8Vt}vnu2aA)3Hj6Q@kb7NDII_HW7+YHlTu~2CBi4V2y zHF*HCVe(cri{(vEQq=)MBGaMAH+E!ov3(D(?0Medix$jU{Agit_Z^*VP&oM_CTG|s zf6*j=GhhMVy}a9yD!1jDRG4^Qz`O{~14)*QXX)DzbI+MzLz}09AQLabpDa(p>4(d4 z6=L?`NO5qq79iEIlm45dmHC|^pb1q;u3fqNBz6zTpv6o7@2lV5%U7AY8Z7Z7Po90b zJ%sXL-$Pl`Q>&%cHNNuV*BI0trh;%go`4;h|8i;=!Pg ziZE2dqnCNX5-zkw3}jcyT(mR3;ZwZn87W2MhFqWD5};9_InUZyhq0BT zl?0oZ1R}oqa`&G=fhXT87oR4){G{Ss>_{#|g)LU$(n}M2W=BuS)VAOGj`sNTvE}#u zcz`7i{z)y*6qx0V`Qcjn-tJ|t$m;l^`2QU2-twymH^2B3%tILNyG?p;9(l2NVi0RK z)hutac4=_j{cnC~+x`UUF(pLZ_-4hAw39ZzX@HG-S^m;&@vlFh|5Sx?CeTD)AW{5w zq-e#@+2~>51LFHJDd)3HdSyVqP!D@O@0c7{{$-j)q_oQSOPzlgSU-%QXLlB)Wd0 zh0hzf#atYWsEJ;P{jLb~K17B?CA7|gmIc|UV0rZ9XsZ0{BcEcQ!)1~1(2@P6aUYuS zKUozS_=WF$2CKvNNe3qA8zORar>fO^%=#=bL8pa8e)Pv%&^anLj=LkvA0m-KNb>K3(AkdBF`#!MeSBj@rOU5p{cE+qg!GZ+tb8+)lr zc#7UnN}g!qByVE|fr>t^%WA_`5nW;(p7ju&=Qv5>X#I-$wD=m^-TJg3j^n9f`TeKd zcO_s-G4?~4&zJe-+0%{bkEln{`9DhXaT-nBpnp4= zUll~f7cY@yZ{bZgkB5;{tiEDOd&6Ew6Xzl{6}5tpPMt1CaG_2i9znhl3M)^8r5#t# zjFNmk9{3-qbgemzeZ@me0k}M98Su_BzV6FNCw9>-?WZyR4(qRN7W+D@2=k#DknDDq z2XJ5vgs{uuIxT>@dKS+bYA>))SnCr?XS1u&u{ZrgHB?Q!8|e)8I662t`Pla zKLXxloXZJLNe8L^L`gpETeAUY@OFu|I;W&NkAB5S-@cwF{6fY+ugc1(EAaL`rVG$4 zVrW&p&}`~2Y2pROY!_opUG`>kP7z1K&U9mz1~cNQmO$2L+(7uRd<)$$`8{UK?SA0P z;@#vJ;bB10a#=D;uBiQuQ()>`s2n}&dK7p2eiE&fV9n%#UZx$s3WjOle1D(PmJFYa z`E`!KU%4(nW61|agI6>h+6)jRe*Wtk6F@1v;zbTrhB3m`3M=DaZZu)T<0vtY%JD0$ zwk(zc?+W{jmXzB5o;hiH_82wM^Nj9Jt0*D(Q&@#+Np}pKcy7HWt#iaYZ(wnQOvl(P!-k8=uLx)eZ`LK;u z;uAjR%aGx*@&gR+zjd9}fH0?~iZ#cZQClnqcm-hGxQPXz(k-|!*ksg>>CwNiLm&b0^tX_AtKa(okA z&xhusQukEf>B9fa(7^H`GNQ9=4Jzv|&3JP4G^bvjHi5^Y47Khv@pQ2GBn7$A0$jWl zDk-!8;@DmDWh<$Pa$h)9wNe{~O&dLU!Y&i6sPpkmwwIe_m>M zwx1VJ8atp^;IP0$a3P)v(`&{Lt4xQgXl=p1oQ^26l#JrL*jADya06d&w4RdZvO!rJtOdoG2k+y2G-uwc<4E|FLu)j#R(z|F@6CK{?*#yd2{s zIvO-M$I3oZ$`Qv5S&?~;ky%DLM$WNUS)G(|tP>d_vSpo;O&ohihZq1Lt+0 zdpxh}zV7R~9y6T@;3^R3j*hNaSh08+t5pV1cOJukvYzjPxGjD%$WLvtWtS%zYE92X z#EjrpYMM8!7`yJ5Z6B6P{#7@S6)`b3qts*&$b7>^P{6IZKTT`_-F%yel@6mrdQ3nNR;yJNe@+!)t;ah(_pqWPsU0 zsV%4y6QhoVAc`;xIF~W0ZiD)#u%)cX(=$hlcCuLRTR=O&dh6}8el6ZR0zQ+q@nE^5 z!{U$Qj2S*iY>KeQqJFMgCVzF&uWt=S5RU<(|1~8MFzc!#5$AZarMr5Caq*uCbKK7R z!p*z3pLSx@!vd@khZ)F%hR{hWxG6qVV!mk&I5HCCj#v5=TAQrJ2bL*6GAI)(tqucJ zTliejh$Ej;%I)p@zfh+LJ#6U1Ap=n`;-)j!83==bW4`|eck$!avxa*YCr{vwD~vHa z*A=f})Qp_5E|{om&Nnl4yKa!-9;&D>wGTuk#Im4eWnzf8{L_(7Rf|8${^;1)akUX>vbK*Ipsgw=-szkmcW^VWi zZa1}`&l*;na8lR9y*qZNf;Lo-G0U*B4#Q9H^2qD@iRM&Hau><0`PjH1FIt=YflyQ6 z3@Ifl0+0|oc`~Dx#q|_Z0BrQB?h}Q{B(EJuLF-$AZEQ&8lvKyj$*EM(#Xz z5anhBs8l4r0J^irji9cy6aF<*LkCNZF>4H`@dHyAFfZ45<}s~Qqwgn`!5tV;6Y}jx z6{3K8uk#x&d`bp_pK_{593qCQe2Ste;_I#=;jMxRak6X0p;zbzwvVHbPp~?oFZnV7 zBR~#&P2_O7DQ4Hin08q?_WjTr+pl9=Pj2{d9H~*Ui@_M?D#$ZNE~ZA`)j;6M?gMr?Ly(M2=<+bz-~<&0^U+S*!CCwa8?S z=+AvaIkt-XM!x=De{!uBWwlmxYFVf_bXs zKrVe{Vy@|tOy#@|Q}H#KCUlA!+$BF(Ol0~a^RYQG=%_i$&y(hqtOsU94uWIP%BTKIFLp85B6Dt5lOp@Guj)%$!4 z&X*x-IFbmR&-*#0^A)!lTv@SK^FO_Y(FN&1? z=Q`by0;pO3J@=9FFa$5;iyPkcN*BT&IlC#G&uF*1w$QYg9}|YaPQ|+`gf+MiHiyB^ z&2NqzmKR1mMs92+K5y z78vtfgWiW;gXUxTbm0c}`Dtr7nCu2m+;mggPt>6}x=%4oXI&*~Hcz0!yJh3BiRZsC z)-m>lAI@*qo-gBW1OBb|#~?CjbznTRN24vzPA9X)za^?g1!{s)@6P%-R}-KJ_ViZY z%zBEhg!Hsf6IhQjYc7YQ=ZKvM6PvaSt@ETZf#hl1iWluXCM5Ze2lsv-X`C#5Kgt{z z;u4mvI)y#cmS@2kuUzMrq4nEL0Z$A{R-9A^xX8r=^WuHVba_j$R)ULmVoQJL>6&S| zuDdBQZqS><<4R%-t{#SG|Lb4B9WIWBq5Ukspe(m_^WMhP0>WZfqR`wUzSg z*NlYR+4=HcpQT&3#Ey{T0SzGRx=ln6Ty~v!*!?5xR~84$Nx71_=}*irZfs*Cw?ZF^ z4JO2-7#K_yv;jlrXJE>n(vzv?ftB|%siUeZJzK3A?CUZN>xjd${?5pcf~{NXQ8FOa zYUZTe7gS-DT|Fz~ZfJ{qj@sYDouK1Dk%_{ya|!yeQGg|yN)uwUUzv!3LQTt0Ky9snW5yX*$t)Ccb4XN2Iw!8(^8ULBxjGdxhcyUzlB~%+z zFIBwc9Gw;nwZmA{soo#F8>7Wlc#3qKWRt5~AxUZRx=(xzj!Ljb;3gG#Kbuyz!UDw#1fIk2Xj9Yc#;8V{V-wSf!dym0)d-@rd|HCj?!f5ZlZvQ zuXoz)`x!D9ful|w^KkegHXHF|x`}_E5v-&JKqKS}BSx-noQGthlv7X(#6jP2vqE0S zWzo_6^oT5&#%ge|wyeJ0@r_s5REMX|voyio*XmQRT9hPRt@BD^cZc1B?wa`6a$dNEsZ5!Te&F!= zN@so9F-uGxiNZ-xDVq6dMd%cD94(mI*(EL$a?5= zrQv;xA{R80Dg;Sy39#2>8YbFbpPHt)r{qoGY&Fo{h8|}dj2U<`oI8u>CE=>tgw)CjG(nH(Ut)KO{zP}u z&B}4)CAPS-{~p5$llt&k*CAu7cl3(hQKC%umNBHD!8qXkcbR}$*4UJ$4z;5df~|yI zuO#Yn@!Sj}r~mb%cfZE7ygVzz-Z#(46o|<(Y@r#{efxZ-dy1cnymgC+ z;wwdBTi$f-*PMlIoVsOf8$4Rc&NiRjZua&uxR@N_kkU|WOO`cA{FMX!^FjU+2XN_< z9+$zyeT7KvOAWaU`Ufa_Gq>aH_ip@NU6r+Y;o*XnO7?Wmmz{PIX&FZ_xrX4P(X&&2J<83M=;xD}(g{=WJucj%=}WPrNp zq$Rry|5S zpR}GVpCT*uzKofj$hy$atGmUg+tRESZ68zp|eH z6BLn=ks;{9UN0Y`#>rnPxHFlDD%lpWG#Fh#` zlDv21p0K6ZuF6|FwjV_PFw@5j6cD%BQgpXe+#3 zt)jn(OKE540?B!=`;KHTXohtM`fFSf8=+v zm@;HkTs7>HpMWPSu)IZmr_h%+8}*$57Aa^2*A|apbXx&NXzBPf50Uo!h*bl{i=@xN z#AE4hiyLoyyZ=t#E>7GyWsK@DU&*_T1xyG9bLz3%whOFsT87{Wfnj;^`{S|rwpG-M zaUdQV1&DOTD36r1s^jfp%9x=p(ISkV=r^3AWEb^v=!_td(%qAwYCFeQ4|4R_Reg%0 zsi*0GeHXX)o55DLO;~0VwKGf%qs6wI9SEy!T96^0Vsd{CDA!fb-Z2ffLOWxyAWAES-OKU?Bm{7b}3gjs|_T!Cw(oI!@aT)P%!$~hLg!q)WH?I>HO9%K+ zA7b9LG`Cq76WuaOy(wS}JyB>cD^NcZ?Kb?8a9??^F=h^z0wiKBLz3&||CUBa^ax6I zw9O%;`a;qA{8<;7G7J6(eINXTIVV34q=uRQFb z+GwEBnx{;!yUMq2SS-0R?f7c7i#_%Huua?RMD}_K<|grX#>P+@!lG5)AQVxjWG%WA zt>mP11=3{gcscQb&m;bI+;+R_PGlg=6!>qX*l@Z$=&~c_ZLvodS}a(E7JnHXpH?|i0%+<`8Pt+s)~qxiP=vf>dLX1d43qmAa~W|UxMf(6V4Xo`BCCzheL z+dgGI2dSG|nz&|L#$02Z?p=f(Cs8g1Xbmx))d_0i{8cFTuDcn?ZT7Mk<{9_)3sh~h zJL^m^)I{p{0ZH8k0Y1#iCzvUif;@{ow;^c6p#WLCCB5Zk*N$ zA~tp4)w9#Gdv@1`z~0-Kb(o<>2;TtU)%-kykBUFd-EYC;ynoW^)!%#AO?K{hrEH3jkKnrk! z`pIg)E0Y{iyT33%Y$ySF>3VRVtao$b4+W&KGtcr!!UW@3;(>%7yKNWiRC#AYR0|$z zH{jM~B$D#zvY*2@wupg*MU+yqz~bxbmhR^MQR;;0%)P0abF$b~w%9z{=f2O4`cc$A zgh_Ft-|CZ>WHqq`nUA`H*yTJMOt8Pd-q`eoffVc(V)Lkv;$$n}^4XnyvE#X)!x0iu zMoYl3>_xFhW>M#Z_0KmHhet~UPJ>EubKW@vnHz&tnDiOss}D=_tV>YH{$)`8Z`t(u zRaJyM1&+2CMMb=qXT$*E4<^;&baJ9{xQfqd)_w@Se(5bdU{P6L`O%XBc|9lL)yD2f zE_w{2YAYB|I_Cc<)7jJ^CJb^$F`8Dn3cIgO2x^`|Jy!lBTmp1BRGQRyFlFh|d>LiSXDkFN%T`cH={g zELoC#uj&0YP}pTueH`Z#yhhGpdH@LPC6W%=uiAQN#49^i#YakGP=hHhv>0*AKIKH$ zdb*pluin3jPY9qrp@KTTh z_8e8)b-WMnvG~O@f4kY|`_EM@b{g8$Dv^S`O>g=%x7m?eMb{ucK+rRs;^ueXj-@phz{rJVCpJz7f@kJ+0-9%W zod$>{p^XVZh7zJm3c|=Lu9?e)JZ*@PribjvWWT^76RBz45*&mPwIWe-A)xWj`!Cr} zk|05+`Q5qwrfxn*;^rb=O3bVx#lBHKtV>mYKW6R0>b#8V_YE~xAyA;UT_l~^`v)sD zSC)dnW|F|DYEd|nB>Z|4H`>RFBXvf!<|VcqH#f)lo%g@?0~Uv`uh3ivr6n$9L67aK zSj4HHY=z{`i-Ci9s4`|O!HwtKACG@xDhba0*N1Or_*8Zx1uDb7&Ybc5j-?m#2m*_z z-$}~7&Kk~r>+%*=;so^(N`b@{?s^TI>!Es6ZuQ@c{vOwvW9E~z(`1XYI&~%;gKMlO|@Dey) ztR7<5ijx!4*wO>Ilxxaj*J`UcNxtOfrYocsz8t3yVms`}4HeskT&0y5d+F3wQH!-T z+$c7Be1DL}p?C6e8zUE_Es6!wwjWlahOnP)^Ec+iy&a4zwoFk9ub!cK{sympn|^8= zH&M(TfRG)=d}V7Cz_tM|$bUQ<7AwXQL^)kI4-PN?4SnwSaCmi>_xq8!mbcznPM=PW zRxZEIR>ZrB`L-q018T`EQ`71{B4kYyJGVro>AuX|D5`~!Fx>ynx_~Fk0$+VPt;Td& zQ5I1Qyj)^{?z1x8fZL4L$rg0@-2D0asR6dP@8AeIQQz^?zPYB&iyRtXbF7Cybo15p zxg$88ZvBUEoD-Luyf$E_)0!6on|?RuBRk~$zZFjVYGr-ebM8fp6e&Y%=>qL#1`sobFE_Xq%XA&lmkBaz1DM3I=mQ!s*= zn1NJBt9AbW{z3ooj~ehpqplge4mT5>c;xK2p;%=O7;xMu_DLjKx3?Vx(T$j9j2~s{ zHSQdp;}alJG<2ORN&vWZ!WH)@#k29<-K^0qq}81pZ?8}q#|r>$S;{fYxB8g4uM|7# zzoQVTu*tmx$}v3+Y1vf2e7dtMtRD=w#ksN0{`cd;xwp)r|{JGvUb8 z)$xzJJl|^#R>Z9c6XiV#XKjTr$qUB^XA);4CTJt7W0xqY|D^t0ch^DEPI!9DigPOV zvsM0e0HaYZ_VF&WJf!lCrDs6psE=z8wO-P7N9HOXkc4&uHtt#N6JSWYNLB>l?fMA40llo-XIzfjuX ziT1IT5{m#h32Ri-EyJOE$A&sVlTP25SZ9bzaerc87-4=!i+Od_g)GY70YS_vrt;o3 zb6#T@6X-?keqS5B~k=QaQk*=`+Sv_^yc)q}s_4+m2A6b^- zCcOy?4q9^q>iF$~TN*?yg*y>GZ50vofwrdq7gS!6324!UrU2oYus#sp`TI#qAF;u^ zNn13aR_&{gtZHSHz5eb%e#dnUcw|(|BuI~?2YlbxgOQ?;d#C^{KVONgoSPA_eiN2& zU%)5ih8P-Pk!Y}vbEK>nn2t_usiY1v6lAp@oL&t{u_doYqfZf>tN%z{s0*l8yHICP zQ*IQvG$@Fj`Ex7VM$&aI#(vvMr-$&|eUZthjKLdych01xqrslAbBwU{i*a0+LkpKi zjxP*7XIB`mUG~$^u*G>fGx$cvJlHr)d;~0fZg)u}u$Ko69v`Id zbcf+OZZb!KkdBcI@_C(ty(WtDn&#h)^r*|y4cqOzm89^zd&Uf^Qm*?E(0+qdzFVzk zi2-ku2&PQ%_Mdzy%^pFtpl6M#`N9Q02LsVjcBe`_Il5Q>I($^+eoDj%J_tRuErTPg z6yh!59Z;Pu3DJkLIYDCp%ev*$30lP-o+mIVNNuvie0)+1DI+sc3n3Q^JiZ79d~UY_ zG2b;SaILt&rT(n5s?FGV#m$N0mx(R)GYMyHwzFOvLazZy6b+tPH?b;o_bn>Sz#*)m zD#Qg)cdNUGn78HhdMv(iYvWV*OhpV8tB9er#qOZ^n&7KyR$r0OVyZ}|b=!ZkV9&zn zmb6s^(a+w}&Hvlj;&IY1_->O1OtD+}wLFM;9q2}}gDgp!?qSjc1XNGykm{+)n8Bj* zrSc%-VexsTt0owrn?dVr|IqEy#c0p^RRFhy-MM$sJ6_3|b@iYxdT$1i(zB&emlU6w zQYbxj z;%}iqtgE(ClDI5Hm+l0e4-G>A*hN7LV1e=DDGfsJ zQnd(NioF4P6OSG)FDJd`^DJO?f|15fSO++B*U5j*b<)T`lA7o#NU&`@mQ>&K@)BL7 zc)IM`4wz8z6wz>WYCrrs*-yuhI%y{1z7NdRW!S&12= g{g@Q#JKhC5V|C$(%EE5 zH-Z22wJu%1#VSwgL>2_NB0^j=}<} zGV8dvh1ra;R6r9;47C&^PG(}Xyu2@2E#AiuX^1l8##djFWiU0!)tDB9+-;I)-PZLV zjKQMmXmpWIz)Tc%b1yA5`@Gt>iycOG{0vRf|m?-l@<9% z`uU>iD=7`b|84bK!v9@^YrbZ7nqc3XRs;y$>SQ|i?U*mOfl-L1XyB;+&NWg7uQUY; zMn^ue3rDMY#|0(lT!&6;3Xn=qt)VnFkG>?!pgRE%le3hcA}?j3MbsknWm7@VrB~xv z4M3?^dnJ7XtPFBnyb$j=o1-Ri;}Sv0`p@UWx7 zSsc;8o5N5y$8{gW^w=S90ff4 zjii4<57m|(I~k6)`f7&R#Jn++BzA~%w+mQ{xg-XcUS55G$TOd5&@n78QLr^k` z65SU^RWp03x}{)*DN4~tM&k-811aXq?)}mi_7O0`vQsxh1&?6{OQX=iV2(Bk?|?kQ z+se3hZfej$XJtvZn#t|%Bf1+2kN`(PbcZQ+aA1t;lbt((xMd&hFU^~4MsV(u&wiOvjzde%^d)0|scl%YOzophcNZp5HWX)9dBgT9Oef?YQ2cPbV%F zjNb?z!ftKd(t;HMh)yt$)ia}`h=Z{D8kfY#f{XL`A|_p}Zr!oE09}8lECy)~W_GmY zp>t#~BgOG5LKe?y;H}C6+`AnenOFWyW4{KvZk_vc%zb*kR=)^s1O|5;u9$Uw+^wC9 zM~ggg2$G)s38(v`(9lnL91LA!fOVToUb{_$!}D?2;C6wjLly_u@ez+%#IDOLzCcXP zDYyQ{AN{@ikznwJyfjSU*sTFI(ouc*c+~@>`a6P}f&@`+d>z|>p zZ;^oXmHpkU?}3k+n>Xxg-eml-lJakvo8dISL~6sSea#_@mxrB#W+m)8INt0blpTLi zTJ8-AbJ4*cl_fm-c^Z+?0>dVWFR{yZBS42{{ggoO6}_AsKj*EZzMl>LeGvwKA8ywo z;L81q54lP;N2r3VBP2)Kn3@hTCZ;GIe1LZyz&j}fWi96f7 z_pycxW3+*HGs=|9Vu!(l=Y;WgwSVFYz^iiH&ct0cg1r>p!2qyMh`ZU=5HlNm`c8rY zK`o#3@N6`7v-;}KziU~|9$BWaCoKYnJwGK?xY}9s1KL7- z(mPR)l)P%Q>*9{#&*!@mPS@oTrx!kF!X}HwiJ{Gj_5w=hIeb|XGuoAHX+%Q;2e%on zQUBw$bOpB6z@`1TF)wcC1>YQ_8;*1?*L+7`()_{vaNOJhDo@%V`rp*F z?R#@#N0T?fmUf(T#E}IkZ!d zg3rH!Uw7=n)gUcW2*67eG%CVcN*45V->L?}#mb2ivPijiCDjorrKD_0=FA^1%z?3h3gtBZ^zGN92*)HXzeR1DIs(!A__By$oBZ=SlLhpALpOXW@9P8b zd*6O-oKt;RU-|o|YY~{V#q@?X%0H;-mRJ|ajeEklVT56R!An_t3sg3En^V}F?S(3s zF7Z6MLt_C^Kng}qY;s^I;0|Jb;GEZN`|n#_Ib`K(?p$5O7eWKs;aR(&E$dmEcczRn zOb>3Yk1#Lu49H$~dJAmo4r?hBo|Eln8?y4lzum!M>zA9mqc9U!y_lcASq3d`Jyp;oBI|8)?o2fBj#Uccea1@cwzuebeN5cSgq<|^&X%JSc!E8r2xgD6QaGd zKZz3X3!w)x|Iu>>iYi6rz7Yo#*_j2hwz5a(7%bz|JN(~T2`CF8vk0+2-~Jd*g0$vW zln?NO({4?NH4n%7AyEn|+s?sHuCV#0Xk8)A-@;bgNzm!@GRMt%$oscnJ$u`y1K2@% zpu+tTiZwpBFCXubZ#`9D$*|3DJ(XOwv!EhU76p7qwFER6Idu6@E#;BrpM5348_aR6 zC(bX`&u^Q5%K!P-*$Y2fMXU)UKV<4z4{aR-gN!9fJCPH8Uy52?F-L}q)5mKqU~ij1 z*m#%{;%+?a_G|Vf>L`uH2ij+%(4F_p$bt0yaeC*}y(A=JlII=J9qv$i(W(peFmpEW zTy`2hUkNmO$8Q2}UXc8lOKn^No=t#l&_$t?mAQ(x~E*-%p*za=nRaZ!Nb0k>||P9#h6C-n_^xpmCNbX3a{2= zTT7)Q&9zpklF)n&{W+O!=Qqmt9wa9}4(h%ZMY>${4cA5euRX&xAHyl>oK&C z)HzV7_c<$+q3 z=21O`z>4tIqr7FS@$R z)iPViHZJF01tXeTE%Pfn>kwXGe@0Cf!?iv# z^}GLNpI{COYNKpZ!@gh-+uLEBC%tV7PHV|%DO;7I6q&ogNN=%oXUh4gG^M9+|d{S|?tVtQBhkS_Y%MJlc65SoB& zN!b+kD8-REIkEEnqqG@6#DLyVRKzZ>kje^murFovw)G|NI;UVKHRL+&y%6U(A=30c z2Z@4Yj@m4UZ*JWEBeWu583exC-;u(CvwjQez%G3QJmrkoxKJ4It4PtJ%t)5}W-DCD zP}vQD_d7r*YkMzbKU&{I**-jV)P0l3^Kuq4y~Ph>ObD&=Hv%J)iQvQEDPNTlAPO0F zAj3LXNaXO;W~n;)lh+%TuW{_EXgz^5#27_#i)Eni3%?A;u++1H`K<1%DpPYm3Qp6d z_5Xc;ci_@Jk8Hw%-q=W)6zPg={&W)z%2(Km|tf`Yg%Ua{3l^Vr^L4!SHvei!4TCE^%ltZ{@o z5on|QpC>Oa9)+2xtT~@mR+=4UH+xSAo&_2);%OH50uvlVV#RApAY3t*ETfF_+~ic@ zyJ-F7UfpudREzk3KSR5;1Rxr+Xtxx5A$7i1_%j;CZlOhMKFV|fWloT(nVQGZGjhoQ z4J^tzhE)---XTgJ^^Q+6q-M0g12*n&sN{Xa9R@paEXW`6!Vc)>uI6Q-Z|cVqxj>ca zfj3#ENTmQRre5X0kOYz`(AZspu0iZuwWT#3e&QRT)$A1<_GKv=6DtkK%q~{f%?LS> ztLENO=vMfC)}j?S&pn{=B&12nF}UJ*DkV~=f~0$OE;QmhUVM5{y5Pt;M*GZ+L~F&^ zzoRalKjJkNwRo}PQ+T3Q{g%{K8;=d^?}=J4tXJggx&Wf8RLA#iXTnZlD{Cb?7a`c` zy6r>B>r_dI#`T2x^6XLluK1K)=Xyg7+cJkPSP~L2Z4_FvbL&fSxv#aILrU*UW5rkW zD}0GZ&Hc50%Bb1OVYhbj%r$1gogY!xB}ik%Yy6*Oi??ejXbDV-ZjRZ~%_sXuU-)sJ zyu$ZYnX<^ZafOc_O?^Q=IBssET;>vw=$YF?5$9#%)B3gEC_hs73R!>N@fiVW)nME$ z1>_*kA|ww7OEN7y+CH1OgCf#o)sy=*YQnQ@ku$NzkM(tD*~f^iBe zkEKHME|ONMA8Jews!NFeAN2F$un`f{nXbUgPA-MjG0Y*MVX7{n$H!cf^kNkmQfCah z8oAH~)X0HQ0@5GZ=x-Jl@>~o#8gQF@G2xv2k*#>FEAjWU_c>C~nYfHJQ1HLCZgpD< zHA7_m%8gFbDGipmuDl|uo#n*c;oW`_nw6Ch*K*Jz=djtlS#Y^z$ak?CVebm2B3-15 z%Uj6HoZnsMQ?G{ubz)lEPaEJEhD4$}o8O$sh;Y)8r?+Xz$q~wpr0LafERWCz4akb0Kef3!%b@!3%~--ZS{-!OB!&vEU~>-s4zz(IHPla$9{~gy{SmB`_bvbMbLl(bH?wMo^d(S8 zUDOA41An56SbFS{RC;vu+19)}P+i$?cJum7YeSOeWIQ%WfypU@VG>F&5(R+8TgQ8a zYC>FBm+?%Qzpa2_$KA%XYW7#c`Ny$W@5b8AVxn3c$hrt4%=T-I2A)UA6?CW)_}<0Oa3XDPXcT_so*kG9 z7}m0pAo!^Iu)XzzI@WZ`Z+s*S1;Ls#VFG{2)Xj7r-`Llpa>{1W!|`+KtF;s}D5(|QAqB_>ee>On!@dn(Nys=b8@Beu0UGP1 zIlnJ%W`D4J+aD=+41J;)IM7zuk~CE?cJpB_1ul8tZ8UY+L&cb$sg$@pHUPP7k+-C$ z61`z1jA-nVhxN_{E#3rBXdk4j6sbU~dUu;OXs%;-UA*(hQbefHvGa@PJEj+B!Q2V| zS=}O_^;XAhopq|3U)ja8VO{-TLi=!EiMjb-FIQL0K3f#pKkVcqu#wlCe_lcvcnE&4 zR|-C|2D=tLE2hS&T8Wr+v1W7lo@$Kw&?1S~hD(x{MdffEO9OEpoC3=V8A;-V!7q#z zznf3bx&l(RPvGWj!RL#ahA+pPfW6swf^&?(6j==sUPp6;d)n?lC;vbFH{nV}5h>O9 z#)ozFK$Wf>HuxC2RWun;IYs{OVL9DucYs_F=6G0|y=WEOHd+v?$viwfk)MKHF4B zSz@>Wnf@{F(4`KRA$*&V?C?t2EsWDuCN%SAep_dI8voS3^Y5YU&xdR{mnQg@Ho#YM zyW$Qwh(<%OH1;661x&ijde$j1Ch%bJKGHTK<*{H#l93-E{Q$rY6JaZxzZu2U#1>a5 zj&vh-_R4K&K}!R+m@oZ1?gAzr%X;2+i`2vF>+tT_705W%-je*C?H#{bo2FcbR%u&Z z>9G3Sxl_TC!%WKc*V~I%wez=n6+f2i#&--6g#iJ*A(40zBhmyYX1A_FfNt_?Uca@N zdsYlgbZ0V#-$Was)h1~8<^#Kis7*-9+}6h-TF-b^@m#q9+21{heJtwzwFE6zS&Dv5({+rPwu?oFFNNNwACe=&f2_c4T9*wCkt)2!XLOT^Jh z>D!+pN6p;g9EV5b7^R$VEXuE0f8M+3lBC$P_^_|x=J~5vLYCRr_p*Z?@*ipHz$`uw zDl_HA6N7)7=HgCW;X(5%A?VgC9N1K>i30xT_EG_9-H3`%D*Q&mn#Tbs&vV%-E0HM0 z@1ayqc+Cr`3H4vUt~NZ}JF858FJa0G$TV*i6)9Wg6n0Z4L)1noafemm-f>e$F# z8%|=b%AJi~s%?a0(Y666$pFS%g`IROuAE_%eQj*8Dp7A=*`8S;Iu7El1BXrTTYF4K zFs#CF0Q8`=EEQ3AJuc9>tmHLTddg>&pQguGauo9u1p)i&C*VjHFLncK>rr_f+V)bl z%_{>80}9^5_IO-Mqr|TQ9YCh9SdK&Z=WA*FbLBL6Dt12dg_4C36;MmEEwT%!yh)rW zB(}cUz4fG>W*f1gRX;M&!t1w%6Xgq|fc1W)Nfc&qeI-u|9E2+Rv^{xQ5;F7}b?23& z($AkV^ykRJ z)Cv)dpEa44{=D4S5<95IhNd|MeiDrnZ&ajIM{($r(2T20bv#-`Ep=eRM zo%Z!=h_Yo5{!*1$FR$X|ODS`ah>uQddvSsOHj(q*IMe#3=*8!>|IZv)$q z>v*w|&KbrF4$}R6TzS|9$!Wt?`gF&^YR*@c)mPYG=1@y|!0uA&2umjJ4v*B#-;dnV({_o%%#%SJ}h3xf6&a4QJq zQoyJxF%nWl%;)#buK)Nuny916e)Jnj@-Ab@lsPL99K0vpiMy0?1J8VExyQ0AThVNE z>;ApA@nB+LWijQLM>3LrmW}LJ_s6DwX~+Z7i|Vki!6l_^L}LU@pwM>>0w<-tg)PKK z^Bza$&^2@iBE%NXuuzvB`-tT!bDheu8>R@+-2qnU6;*o0vv&O-_HR@&Czh1yMHh(W z7B-yraAL0G7acpT@%I-0&5VxuHg~*<-a-9cwxEy3pHuDvlP9Cey5!(5d`Ti^f^$*Z z&R!8;tV^+v0d9wS(g`;9tE3aG~ zoL|c9ods)DCN)2ob^67nczmz-q@C~x$O<;$pDs)|41EF7l0pVD9^`|@5zA0Sau7&GM5ROgBb^a-|5{r(^V^4=V& zb8tg+v{kn+w3dz@OVEq8LyE4XZjygybm6IeM9OOszOtS(cIVA{iIgk ze%b%FU}X?KWUO;l0>uP4K$A4N!1N<(<3Lm zSkps}?5}w*3S%plBRq;cOXl{S?IQTlMvOZeF!;KK=(+9U#~r@rdeT?P{ z;Fo*!DQuAYTiP8*TEfi|{-YRmQYE*TCU!(nxUQigWK)C8a?CLNq51<7R%>aW-v-y| z-;<*X5sG>=;ieFDVoW@gkSlUo^YAHK2M}z0&dASXq-KcH;KnZcEs8c$-rn4Y!X8yZ zsn9Dv{7E);^t&7$=MIY5uXdp5U1g1D@k=`Rr0vh4RQ@N~4VtwmjvXdDa$f3g*Gza} zwVbf7mo`#UvL^Fm`t4b{@Rnkmhs`5}4XO&c(~$QH5OMaTlj&pSt&!`M_sL%AGrGx& zn|T=)E@Uzn`Z;r8xZK{3_bh*>i2Jlwh?bw?twv~^kfWXl?FHEoMSm)t|wA zZKIL7GpQn-r7;r%K=3&)nniuH!iZNg^-MQBP0*`=S2-MU40(ZVwQ~!1|M^oP$DlY{ zdsmMewKzq~KP3f>^+{F|#XEH^Ev@NTsiRlYlxu$qSr--@7n^9C5#Xj6m zh~odz+DiqEC;PvTa$Xs^4Zaq(?1uPW9!;q2=0NwDtQ9PMMq7}>9CxHSFL?bZu_mXR_=PmwnkysW(9ogKWAEUvaA=Fy!h zd7pdzeiLtg+j_94+W#)=@}JimCF42M1xmg}_nSEsb_bGdSMnakDyCi-{)|7VYHMD= zyUvjM1<(0n5xzy-IzifGV*X8>Ok(-K73vR!C zUwA{}!^u-X3HjI{MQY&x1?UYI@>%J$qcsjbx0lo^giZaFZFtDdd%$8mwtfU!vdtRf zwsS+Y;gn!f|k=Qc-|4_MLO=O&_p_$`x2c?br&y*@j#k&Nv8U9rk}2p^s)i z1(-L|1jb~2PREY5%G5(w$4oX(w|sQbcMb+G$B(R3T&&a!!axdhBz`rLI6CPd*+_h= z-)rO?JVw?jE>vKSZLvl@um*6MLMX;?TXrXb6wWYnpmyN@0=I6fP^y#xtZe6jr?>EA zanw_8$IpHARTl5o4_9QT9(oeYWaA{0ZlC^N&S7ZGt)AG+ah;=XIkEy+ANa@v)RV23 zoFknaeB4tJV|;yC5;(w?M=D1YEr;x`xVM6t;}{{2f=FXuA_s6wmRJ2)V3Fg>u5-Qg zWla_}?soIs8-1XSLaq?BlOusVYDBSe0zGtM>Y?lDqoNI?ZRdfpSV@IcT1T{1jv(K# zJ_>OF=Nnn9)W>L@Bgw;Fj#20^>;l^!Ms+mm6~G5^)IAl#TcJXrPBAQT@Bo>>$TlQ& z^q6e#|7!oJa}E(lUy`-b5wv07dDbc?&_gF?iL#!P1LTNo7|%r;?c^ZvQ(J|XG9`Ml zU8p=-9!+snaHT?Q+Ta-rmDESWJ<1DdR7j1~8b_KrT(3mRp$~-$+|lUXm86YD5&zER(1~06!9i5{@!?f|`ONA<0Jm&Tm zVGV*S6_+Y)AoU`!kT;%qJ?a(~ur5}7w%(I&!`=F*RsMN*iV|gFCL61IIZ_?{vwc44 z085Djh1ACLxCJQ>SnTBZCD!PHm9ZoHJG7y^qg0LxZm1~VsF31lMF3~iC%qgz2IWdc ziyV?i<>laoH(-u-bd1Ap8#0edG|U^DjaZ`sueN{{;-H(Y9I?*_#vm3p+wT_>lQz3?J^Rbtmb$GU(Tti-tO}&Vtc){FJG2$}Q(k;lm zKRxa&{`dazVqy}<^2yh8kvR-0q@Q@BR*4B&!v|J=E?To^$Jy^=%G^SgoBXE zDCF^CFNe?;j)Zj4Z^UgPCf!`5@FmYUbk-q#WAB!Vz30$ITRG|>)2L_%7(nbm97W(L zXil~`!)uG%3kFgi1t9kMTs@vJ*_fCm%9>V=XvhxpDgo0*dO46dT(9JT6%z*ruo6i> zkG6B3;tildx3F>;!5oH%WQ{0SJRw_81yKhH2SHVef`(O?RM}T_p(0%RTcp7YXCRPT z8^w9fzT&W+t773tQ`Q|>a|QvV3+(=ITGp7Ddgwa(XcQ}rv~nbEG_AP#6F zHI910+pybHJ@AIMa%iIuy_NeMt&go7QK{U|5@iy{c=Gl9OOJ46IytXR#E>|QoRHlUWdcLx z(12_KeM8n!UN)WIDdo_e6;HZp$jys=eA0~*vdYi-lKZo~8HYTPXy0-0n z@PL7!4c;`JhnFL`!w_dU?Z}Md5!Oi3@PIus$B=WRLfXisJ~`>Obx3{Gv;l%VJmzMF zbhlT=p-iJom3n%vp5Xf`o~{>tY}{F?07M%=^l{(D^X87*hl`0x9M(h69e+}*xLO&E z9Lv<<#!3v=n>fZ&1q&F|QQ)fExXve=u>^1Au#g?q-dRU@I25|Avf+(G3GDNcI{F;hhF@90jtDEq^R#TdC#D{{?r?pYN3&L0-pb*6 zC7c`!ZIuVyqpgkhR-aHgD$^h&G+6Jar`^&$+VzTqh@;+vog9mm%E9CH0Q+cxtsMNI z4<{TNkJWtr<=vHLRc_54Bpmp_dAf7pyas6}hgvJnI1DWx1>qfy;d(-rDsHM2hGjk#0|)U(y3Xx8&!s+= zM+Ki(LEhMTT1E3JR!FY^KN7*$Bh*Wq>@N0ggV-JhpxJTK9W%1Tmsf(Zk9*^-`)g9-T`v;Xb;I+ z=pbM@$2gh;_MLQ4s}QYnSl{3*hp^aY766Iqs_0ZMUou@py zXadVx#l*pr?ongd%F%}s0Gz@5NXj8E7}-Ysya%k$tAsq7^-69YCFE8PVB;tum}3}{ z9aj2SAKkS++LLbD0(R^6N}4&!%>iF*!g$VTy(*SobAH3^`m3pjei)`6x_ZiCfz%?0 zYn5P*Mv5GxKH6=S`pLziTIIo{fi}u(&JcYRbA*w@uU3z~5W@qOwaTD$99*p!&Ny;X zcF)iDQIE(v@kq{_`5B*3?J@oJ657znAvsA0Z zT8^fUA3SkL_D821&Nv?1bIzOhAYG@VJ{tGyooD1VNF#bHMmjk>TW@&OEr;tpC5uAJ zZ)b$(9LRlcKpO2lhdLy8^pL%pvfd#`zH#|&CL14$sfV6mVC8!pXZjSU>y4qUVr0f~ z-N=>2k9Lp7QMdG+x5g2bN(I#_E>ir0*I4BY*QvsfV6;-Fce8k~fT;bX&HLUdPA^urw;2!=(zm z5i5N}8s2qomDCbxz`Q|pzA-KlL?4YQ*?KzJ=mmlrtUrELs(@~(ka6Ju!f?(bd357) zMSwtjm&v6{eeQljn_rxq4p%Le8{vM`3> zyY*421a-h1nR2KVo3n0VAC)#5jKNEg#=#?@L-|HKIqC;*7{lfIJ2H+gRlIyO=iQ#2 zb1*5}4lv@hY@7+E9=f6ltn-aAbk3qL+tORkSGFsm*R4%oA6z8aR7XygnX|uruCVlki zBi+tqV-m;uCl1b{u`)V22vMsT?y2yx>ztqaD%p{xPI1B!<%&4N0;yAuv0Qoa0qQuB zFyLxs7hh=D1bKh$sG0b%u4P8bFeo0#v70ZF9WjPKDv9E$;SC$ z>Y*p-t9(!2c`iF&_J9#pskO>U-Xy>TE*^y0& zqe9w8Qy_&oyb6qJMUc+X$EQK~MtM+2>rbDqx0xdr2tIoSnEu{uUjKD5aYmRW%Gxr= zI9#9HF*?tC*?BHJZ{&Ry5cj8fQAe$DbiQHoFk-geaJrGp&eJ)nI%UhpH)Jh{dJ|ZS z9L_pA=a4ok2dSDWdC~2blp~Ha^#(yn9Gl8G)RaAzD7#sroExSddYX0T-!tWC6WFjq zFftC)2JgTd^)zvCWyNX7=b>DoUZGS8(g=h;+8tSt4HaPe$eygzjp2;!L8Rdk*|33O zA5}kg=Y}lSQ7asI)Gc<8l4l@uJU!h_J@gDQla196tQa{Un-eRpRAScce~p!;`_s)D z={c7Jj7Mb(nTJZ1-daqZV%C5+43DdLGe_?8$twx3o{mkJH$1As$NSE~-uED3ju==$ z;Q*YU4k+t52BzGKH8xWZJx@$M^h5(I!x`BqR*YtixIPVf-FbRBjE6&TQpUM zTIFj9q=o3Mq>n=}1dhB0Y2^9oA`ZU$`lp7I{RqqNXew$0b@vlZUU! z?tY)i#+hQ4C?_jcVqQfUk0gXZnjP6ZKV2d3*4G=;^@8WzoN+)Nnsg(+IN{(=S1R;m zhhevD%32&9yDG%kcJ6Pb8+w5z-OL)ET4BJA0ACcsKr+~BZlft8L`PnrgKAe3g~w1FkF8t wABUyU$Tcb+Keu15FDA|y|M-iTn3$OOFL6mEr_&I>#sB~S07*qoM6N<$f+&toI{*Lx literal 0 HcmV?d00001