From ccf681b030919380a350139caf8cf3c5473e61dc Mon Sep 17 00:00:00 2001 From: thomasrosen Date: Wed, 23 Jun 2021 16:17:42 +0000 Subject: [PATCH] thomasrosen published a site update --- asset-manifest.json | 165 +++++++++--------- index.html | 2 +- ...3b923655.chunk.js => 10.938c6be7.chunk.js} | 4 +- ....chunk.js.map => 10.938c6be7.chunk.js.map} | 2 +- ...1e591ba4.chunk.js => 11.7de5af08.chunk.js} | 4 +- ....chunk.js.map => 11.7de5af08.chunk.js.map} | 2 +- ...0291dfd0.chunk.js => 12.8ba38c3f.chunk.js} | 4 +- ....chunk.js.map => 12.8ba38c3f.chunk.js.map} | 2 +- static/js/19.ba4e9a85.chunk.js | 2 + static/js/19.ba4e9a85.chunk.js.map | 1 + ...4262472a.chunk.js => 20.9e6054cf.chunk.js} | 4 +- ....chunk.js.map => 20.9e6054cf.chunk.js.map} | 2 +- ...a5a1f958.chunk.js => 21.fb8f4242.chunk.js} | 4 +- ....chunk.js.map => 21.fb8f4242.chunk.js.map} | 2 +- ...e0709b0a.chunk.js => 22.a63a060a.chunk.js} | 4 +- ....chunk.js.map => 22.a63a060a.chunk.js.map} | 2 +- ...b6073b71.chunk.js => 23.e8ed4da3.chunk.js} | 4 +- ....chunk.js.map => 23.e8ed4da3.chunk.js.map} | 2 +- ...850e93dd.chunk.js => 24.5c4dac45.chunk.js} | 4 +- ....chunk.js.map => 24.5c4dac45.chunk.js.map} | 2 +- ...db8d7eb8.chunk.js => 25.4d671375.chunk.js} | 4 +- ....chunk.js.map => 25.4d671375.chunk.js.map} | 2 +- ...b0a8f41d.chunk.js => 26.55868c50.chunk.js} | 4 +- ....chunk.js.map => 26.55868c50.chunk.js.map} | 2 +- ...748d7217.chunk.js => 27.dfeb673e.chunk.js} | 4 +- ....chunk.js.map => 27.dfeb673e.chunk.js.map} | 2 +- ...30d58df6.chunk.js => 28.8ea07334.chunk.js} | 4 +- ....chunk.js.map => 28.8ea07334.chunk.js.map} | 2 +- ...52b55cf0.chunk.js => 29.6a085a6d.chunk.js} | 4 +- ....chunk.js.map => 29.6a085a6d.chunk.js.map} | 2 +- static/js/3.d76d7113.chunk.js | 2 - static/js/3.e0147d51.chunk.js | 2 + ...3.chunk.js.map => 3.e0147d51.chunk.js.map} | 2 +- ...d8d4e2c8.chunk.js => 30.e3ad4efb.chunk.js} | 4 +- ....chunk.js.map => 30.e3ad4efb.chunk.js.map} | 2 +- ...ee063d36.chunk.js => 31.c072b9ba.chunk.js} | 4 +- ....chunk.js.map => 31.c072b9ba.chunk.js.map} | 2 +- ...47d94deb.chunk.js => 32.89dbe878.chunk.js} | 4 +- ....chunk.js.map => 32.89dbe878.chunk.js.map} | 2 +- ...2746717c.chunk.js => 33.8090fffe.chunk.js} | 4 +- ....chunk.js.map => 33.8090fffe.chunk.js.map} | 2 +- ...711414ba.chunk.js => 34.751b6468.chunk.js} | 4 +- ....chunk.js.map => 34.751b6468.chunk.js.map} | 2 +- ...abfcfdbc.chunk.js => 35.e4028b81.chunk.js} | 4 +- ....chunk.js.map => 35.e4028b81.chunk.js.map} | 2 +- ...f1f3ca82.chunk.js => 36.0919ae37.chunk.js} | 4 +- ....chunk.js.map => 36.0919ae37.chunk.js.map} | 2 +- ...b33494e7.chunk.js => 37.e8103ba3.chunk.js} | 4 +- ....chunk.js.map => 37.e8103ba3.chunk.js.map} | 2 +- ...71a11bf7.chunk.js => 38.7814a304.chunk.js} | 4 +- ....chunk.js.map => 38.7814a304.chunk.js.map} | 2 +- ...dad57a4e.chunk.js => 39.a2f2ad85.chunk.js} | 4 +- ....chunk.js.map => 39.a2f2ad85.chunk.js.map} | 2 +- static/js/4.6b1ca4f7.chunk.js | 2 + ...f.chunk.js.map => 4.6b1ca4f7.chunk.js.map} | 2 +- static/js/4.f3e4222f.chunk.js | 2 - ...0d01bd55.chunk.js => 40.4deafbb1.chunk.js} | 4 +- ....chunk.js.map => 40.4deafbb1.chunk.js.map} | 2 +- ...35e558c2.chunk.js => 41.854274f2.chunk.js} | 4 +- ....chunk.js.map => 41.854274f2.chunk.js.map} | 2 +- ...f4f2dbe0.chunk.js => 42.0d02ebd8.chunk.js} | 4 +- ....chunk.js.map => 42.0d02ebd8.chunk.js.map} | 2 +- ...0067270b.chunk.js => 43.da2d42d5.chunk.js} | 4 +- ....chunk.js.map => 43.da2d42d5.chunk.js.map} | 2 +- ...ebc06fd3.chunk.js => 44.5e52d393.chunk.js} | 4 +- ....chunk.js.map => 44.5e52d393.chunk.js.map} | 2 +- ...1f01b6b1.chunk.js => 45.319925d7.chunk.js} | 4 +- ....chunk.js.map => 45.319925d7.chunk.js.map} | 2 +- ....7c9c083f.chunk.js => 5.a37800cd.chunk.js} | 4 +- ...f.chunk.js.map => 5.a37800cd.chunk.js.map} | 2 +- ....6e87495f.chunk.js => 6.93891775.chunk.js} | 4 +- ...f.chunk.js.map => 6.93891775.chunk.js.map} | 2 +- ....b09d8e68.chunk.js => 7.5a7651a9.chunk.js} | 4 +- ...8.chunk.js.map => 7.5a7651a9.chunk.js.map} | 2 +- static/js/8.11e3bc48.chunk.js | 2 + ...2.chunk.js.map => 8.11e3bc48.chunk.js.map} | 2 +- static/js/8.680d2f02.chunk.js | 2 - ....2a34d89b.chunk.js => 9.ce24fece.chunk.js} | 4 +- ...b.chunk.js.map => 9.ce24fece.chunk.js.map} | 2 +- static/js/main.4b84528e.chunk.js | 2 + static/js/main.4b84528e.chunk.js.map | 1 + static/js/main.a2639ae9.chunk.js | 2 - static/js/main.a2639ae9.chunk.js.map | 1 - static/js/runtime-main.95a48bcc.js | 2 - static/js/runtime-main.95a48bcc.js.map | 1 - static/js/runtime-main.f59ade58.js | 2 + static/js/runtime-main.f59ade58.js.map | 1 + static/media/5xSOM-Pride.1e144c15.png | Bin 0 -> 46371 bytes .../{de.0cc15a80.ftl => de.d920ecc3.ftl} | 3 +- .../{en.904bfbc6.ftl => en.5fda2649.ftl} | 3 +- .../{nl.e98de54d.ftl => nl.33eaf7aa.ftl} | 3 +- 91 files changed, 208 insertions(+), 199 deletions(-) rename static/js/{10.3b923655.chunk.js => 10.938c6be7.chunk.js} (55%) rename static/js/{10.3b923655.chunk.js.map => 10.938c6be7.chunk.js.map} (72%) rename static/js/{11.1e591ba4.chunk.js => 11.7de5af08.chunk.js} (55%) rename static/js/{11.1e591ba4.chunk.js.map => 11.7de5af08.chunk.js.map} (72%) rename static/js/{12.0291dfd0.chunk.js => 12.8ba38c3f.chunk.js} (96%) rename static/js/{12.0291dfd0.chunk.js.map => 12.8ba38c3f.chunk.js.map} (99%) create mode 100644 static/js/19.ba4e9a85.chunk.js create mode 100644 static/js/19.ba4e9a85.chunk.js.map rename static/js/{19.4262472a.chunk.js => 20.9e6054cf.chunk.js} (56%) rename static/js/{19.4262472a.chunk.js.map => 20.9e6054cf.chunk.js.map} (74%) rename static/js/{20.a5a1f958.chunk.js => 21.fb8f4242.chunk.js} (56%) rename static/js/{20.a5a1f958.chunk.js.map => 21.fb8f4242.chunk.js.map} (74%) rename static/js/{21.e0709b0a.chunk.js => 22.a63a060a.chunk.js} (57%) rename static/js/{21.e0709b0a.chunk.js.map => 22.a63a060a.chunk.js.map} (74%) rename static/js/{22.b6073b71.chunk.js => 23.e8ed4da3.chunk.js} (97%) rename static/js/{22.b6073b71.chunk.js.map => 23.e8ed4da3.chunk.js.map} (98%) rename static/js/{23.850e93dd.chunk.js => 24.5c4dac45.chunk.js} (97%) rename static/js/{23.850e93dd.chunk.js.map => 24.5c4dac45.chunk.js.map} (98%) rename static/js/{24.db8d7eb8.chunk.js => 25.4d671375.chunk.js} (97%) rename static/js/{24.db8d7eb8.chunk.js.map => 25.4d671375.chunk.js.map} (98%) rename static/js/{25.b0a8f41d.chunk.js => 26.55868c50.chunk.js} (97%) rename static/js/{25.b0a8f41d.chunk.js.map => 26.55868c50.chunk.js.map} (98%) rename static/js/{26.748d7217.chunk.js => 27.dfeb673e.chunk.js} (97%) rename static/js/{26.748d7217.chunk.js.map => 27.dfeb673e.chunk.js.map} (98%) rename static/js/{27.30d58df6.chunk.js => 28.8ea07334.chunk.js} (98%) rename static/js/{27.30d58df6.chunk.js.map => 28.8ea07334.chunk.js.map} (98%) rename static/js/{28.52b55cf0.chunk.js => 29.6a085a6d.chunk.js} (97%) rename static/js/{28.52b55cf0.chunk.js.map => 29.6a085a6d.chunk.js.map} (98%) delete mode 100644 static/js/3.d76d7113.chunk.js create mode 100644 static/js/3.e0147d51.chunk.js rename static/js/{3.d76d7113.chunk.js.map => 3.e0147d51.chunk.js.map} (54%) rename static/js/{29.d8d4e2c8.chunk.js => 30.e3ad4efb.chunk.js} (98%) rename static/js/{29.d8d4e2c8.chunk.js.map => 30.e3ad4efb.chunk.js.map} (98%) rename static/js/{30.ee063d36.chunk.js => 31.c072b9ba.chunk.js} (98%) rename static/js/{30.ee063d36.chunk.js.map => 31.c072b9ba.chunk.js.map} (98%) rename static/js/{31.47d94deb.chunk.js => 32.89dbe878.chunk.js} (97%) rename static/js/{31.47d94deb.chunk.js.map => 32.89dbe878.chunk.js.map} (98%) rename static/js/{32.2746717c.chunk.js => 33.8090fffe.chunk.js} (98%) rename static/js/{32.2746717c.chunk.js.map => 33.8090fffe.chunk.js.map} (99%) rename static/js/{33.711414ba.chunk.js => 34.751b6468.chunk.js} (97%) rename static/js/{33.711414ba.chunk.js.map => 34.751b6468.chunk.js.map} (98%) rename static/js/{34.abfcfdbc.chunk.js => 35.e4028b81.chunk.js} (97%) rename static/js/{34.abfcfdbc.chunk.js.map => 35.e4028b81.chunk.js.map} (98%) rename static/js/{35.f1f3ca82.chunk.js => 36.0919ae37.chunk.js} (97%) rename static/js/{35.f1f3ca82.chunk.js.map => 36.0919ae37.chunk.js.map} (98%) rename static/js/{36.b33494e7.chunk.js => 37.e8103ba3.chunk.js} (98%) rename static/js/{36.b33494e7.chunk.js.map => 37.e8103ba3.chunk.js.map} (98%) rename static/js/{37.71a11bf7.chunk.js => 38.7814a304.chunk.js} (97%) rename static/js/{37.71a11bf7.chunk.js.map => 38.7814a304.chunk.js.map} (98%) rename static/js/{38.dad57a4e.chunk.js => 39.a2f2ad85.chunk.js} (97%) rename static/js/{38.dad57a4e.chunk.js.map => 39.a2f2ad85.chunk.js.map} (98%) create mode 100644 static/js/4.6b1ca4f7.chunk.js rename static/js/{4.f3e4222f.chunk.js.map => 4.6b1ca4f7.chunk.js.map} (54%) delete mode 100644 static/js/4.f3e4222f.chunk.js rename static/js/{39.0d01bd55.chunk.js => 40.4deafbb1.chunk.js} (98%) rename static/js/{39.0d01bd55.chunk.js.map => 40.4deafbb1.chunk.js.map} (99%) rename static/js/{40.35e558c2.chunk.js => 41.854274f2.chunk.js} (97%) rename static/js/{40.35e558c2.chunk.js.map => 41.854274f2.chunk.js.map} (98%) rename static/js/{41.f4f2dbe0.chunk.js => 42.0d02ebd8.chunk.js} (98%) rename static/js/{41.f4f2dbe0.chunk.js.map => 42.0d02ebd8.chunk.js.map} (98%) rename static/js/{42.0067270b.chunk.js => 43.da2d42d5.chunk.js} (98%) rename static/js/{42.0067270b.chunk.js.map => 43.da2d42d5.chunk.js.map} (98%) rename static/js/{43.ebc06fd3.chunk.js => 44.5e52d393.chunk.js} (97%) rename static/js/{43.ebc06fd3.chunk.js.map => 44.5e52d393.chunk.js.map} (98%) rename static/js/{44.1f01b6b1.chunk.js => 45.319925d7.chunk.js} (97%) rename static/js/{44.1f01b6b1.chunk.js.map => 45.319925d7.chunk.js.map} (98%) rename static/js/{5.7c9c083f.chunk.js => 5.a37800cd.chunk.js} (55%) rename static/js/{5.7c9c083f.chunk.js.map => 5.a37800cd.chunk.js.map} (72%) rename static/js/{6.6e87495f.chunk.js => 6.93891775.chunk.js} (55%) rename static/js/{6.6e87495f.chunk.js.map => 6.93891775.chunk.js.map} (72%) rename static/js/{7.b09d8e68.chunk.js => 7.5a7651a9.chunk.js} (55%) rename static/js/{7.b09d8e68.chunk.js.map => 7.5a7651a9.chunk.js.map} (72%) create mode 100644 static/js/8.11e3bc48.chunk.js rename static/js/{8.680d2f02.chunk.js.map => 8.11e3bc48.chunk.js.map} (54%) delete mode 100644 static/js/8.680d2f02.chunk.js rename static/js/{9.2a34d89b.chunk.js => 9.ce24fece.chunk.js} (55%) rename static/js/{9.2a34d89b.chunk.js.map => 9.ce24fece.chunk.js.map} (72%) create mode 100644 static/js/main.4b84528e.chunk.js create mode 100644 static/js/main.4b84528e.chunk.js.map delete mode 100644 static/js/main.a2639ae9.chunk.js delete mode 100644 static/js/main.a2639ae9.chunk.js.map delete mode 100644 static/js/runtime-main.95a48bcc.js delete mode 100644 static/js/runtime-main.95a48bcc.js.map create mode 100644 static/js/runtime-main.f59ade58.js create mode 100644 static/js/runtime-main.f59ade58.js.map create mode 100644 static/media/5xSOM-Pride.1e144c15.png rename static/media/{de.0cc15a80.ftl => de.d920ecc3.ftl} (99%) rename static/media/{en.904bfbc6.ftl => en.5fda2649.ftl} (99%) rename static/media/{nl.e98de54d.ftl => nl.33eaf7aa.ftl} (95%) diff --git a/asset-manifest.json b/asset-manifest.json index 6d7e2f4..c4d9b3b 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,32 +1,32 @@ { "files": { "main.css": "/static/css/main.1cdcd93e.chunk.css", - "main.js": "/static/js/main.a2639ae9.chunk.js", - "main.js.map": "/static/js/main.a2639ae9.chunk.js.map", - "runtime-main.js": "/static/js/runtime-main.95a48bcc.js", - "runtime-main.js.map": "/static/js/runtime-main.95a48bcc.js.map", + "main.js": "/static/js/main.4b84528e.chunk.js", + "main.js.map": "/static/js/main.4b84528e.chunk.js.map", + "runtime-main.js": "/static/js/runtime-main.f59ade58.js", + "runtime-main.js.map": "/static/js/runtime-main.f59ade58.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.d76d7113.chunk.js": "/static/js/3.d76d7113.chunk.js", - "static/js/3.d76d7113.chunk.js.map": "/static/js/3.d76d7113.chunk.js.map", - "static/js/4.f3e4222f.chunk.js": "/static/js/4.f3e4222f.chunk.js", - "static/js/4.f3e4222f.chunk.js.map": "/static/js/4.f3e4222f.chunk.js.map", - "static/js/5.7c9c083f.chunk.js": "/static/js/5.7c9c083f.chunk.js", - "static/js/5.7c9c083f.chunk.js.map": "/static/js/5.7c9c083f.chunk.js.map", - "static/js/6.6e87495f.chunk.js": "/static/js/6.6e87495f.chunk.js", - "static/js/6.6e87495f.chunk.js.map": "/static/js/6.6e87495f.chunk.js.map", - "static/js/7.b09d8e68.chunk.js": "/static/js/7.b09d8e68.chunk.js", - "static/js/7.b09d8e68.chunk.js.map": "/static/js/7.b09d8e68.chunk.js.map", - "static/js/8.680d2f02.chunk.js": "/static/js/8.680d2f02.chunk.js", - "static/js/8.680d2f02.chunk.js.map": "/static/js/8.680d2f02.chunk.js.map", - "static/js/9.2a34d89b.chunk.js": "/static/js/9.2a34d89b.chunk.js", - "static/js/9.2a34d89b.chunk.js.map": "/static/js/9.2a34d89b.chunk.js.map", - "static/js/10.3b923655.chunk.js": "/static/js/10.3b923655.chunk.js", - "static/js/10.3b923655.chunk.js.map": "/static/js/10.3b923655.chunk.js.map", - "static/js/11.1e591ba4.chunk.js": "/static/js/11.1e591ba4.chunk.js", - "static/js/11.1e591ba4.chunk.js.map": "/static/js/11.1e591ba4.chunk.js.map", - "static/js/12.0291dfd0.chunk.js": "/static/js/12.0291dfd0.chunk.js", - "static/js/12.0291dfd0.chunk.js.map": "/static/js/12.0291dfd0.chunk.js.map", + "static/js/3.e0147d51.chunk.js": "/static/js/3.e0147d51.chunk.js", + "static/js/3.e0147d51.chunk.js.map": "/static/js/3.e0147d51.chunk.js.map", + "static/js/4.6b1ca4f7.chunk.js": "/static/js/4.6b1ca4f7.chunk.js", + "static/js/4.6b1ca4f7.chunk.js.map": "/static/js/4.6b1ca4f7.chunk.js.map", + "static/js/5.a37800cd.chunk.js": "/static/js/5.a37800cd.chunk.js", + "static/js/5.a37800cd.chunk.js.map": "/static/js/5.a37800cd.chunk.js.map", + "static/js/6.93891775.chunk.js": "/static/js/6.93891775.chunk.js", + "static/js/6.93891775.chunk.js.map": "/static/js/6.93891775.chunk.js.map", + "static/js/7.5a7651a9.chunk.js": "/static/js/7.5a7651a9.chunk.js", + "static/js/7.5a7651a9.chunk.js.map": "/static/js/7.5a7651a9.chunk.js.map", + "static/js/8.11e3bc48.chunk.js": "/static/js/8.11e3bc48.chunk.js", + "static/js/8.11e3bc48.chunk.js.map": "/static/js/8.11e3bc48.chunk.js.map", + "static/js/9.ce24fece.chunk.js": "/static/js/9.ce24fece.chunk.js", + "static/js/9.ce24fece.chunk.js.map": "/static/js/9.ce24fece.chunk.js.map", + "static/js/10.938c6be7.chunk.js": "/static/js/10.938c6be7.chunk.js", + "static/js/10.938c6be7.chunk.js.map": "/static/js/10.938c6be7.chunk.js.map", + "static/js/11.7de5af08.chunk.js": "/static/js/11.7de5af08.chunk.js", + "static/js/11.7de5af08.chunk.js.map": "/static/js/11.7de5af08.chunk.js.map", + "static/js/12.8ba38c3f.chunk.js": "/static/js/12.8ba38c3f.chunk.js", + "static/js/12.8ba38c3f.chunk.js.map": "/static/js/12.8ba38c3f.chunk.js.map", "static/js/13.961442dd.chunk.js": "/static/js/13.961442dd.chunk.js", "static/js/13.961442dd.chunk.js.map": "/static/js/13.961442dd.chunk.js.map", "static/js/14.0ceafa62.chunk.js": "/static/js/14.0ceafa62.chunk.js", @@ -39,58 +39,60 @@ "static/js/17.f6e8a8fd.chunk.js.map": "/static/js/17.f6e8a8fd.chunk.js.map", "static/js/18.8daffc3f.chunk.js": "/static/js/18.8daffc3f.chunk.js", "static/js/18.8daffc3f.chunk.js.map": "/static/js/18.8daffc3f.chunk.js.map", - "static/js/19.4262472a.chunk.js": "/static/js/19.4262472a.chunk.js", - "static/js/19.4262472a.chunk.js.map": "/static/js/19.4262472a.chunk.js.map", - "static/js/20.a5a1f958.chunk.js": "/static/js/20.a5a1f958.chunk.js", - "static/js/20.a5a1f958.chunk.js.map": "/static/js/20.a5a1f958.chunk.js.map", - "static/js/21.e0709b0a.chunk.js": "/static/js/21.e0709b0a.chunk.js", - "static/js/21.e0709b0a.chunk.js.map": "/static/js/21.e0709b0a.chunk.js.map", - "static/js/22.b6073b71.chunk.js": "/static/js/22.b6073b71.chunk.js", - "static/js/22.b6073b71.chunk.js.map": "/static/js/22.b6073b71.chunk.js.map", - "static/js/23.850e93dd.chunk.js": "/static/js/23.850e93dd.chunk.js", - "static/js/23.850e93dd.chunk.js.map": "/static/js/23.850e93dd.chunk.js.map", - "static/js/24.db8d7eb8.chunk.js": "/static/js/24.db8d7eb8.chunk.js", - "static/js/24.db8d7eb8.chunk.js.map": "/static/js/24.db8d7eb8.chunk.js.map", - "static/js/25.b0a8f41d.chunk.js": "/static/js/25.b0a8f41d.chunk.js", - "static/js/25.b0a8f41d.chunk.js.map": "/static/js/25.b0a8f41d.chunk.js.map", - "static/js/26.748d7217.chunk.js": "/static/js/26.748d7217.chunk.js", - "static/js/26.748d7217.chunk.js.map": "/static/js/26.748d7217.chunk.js.map", - "static/js/27.30d58df6.chunk.js": "/static/js/27.30d58df6.chunk.js", - "static/js/27.30d58df6.chunk.js.map": "/static/js/27.30d58df6.chunk.js.map", - "static/js/28.52b55cf0.chunk.js": "/static/js/28.52b55cf0.chunk.js", - "static/js/28.52b55cf0.chunk.js.map": "/static/js/28.52b55cf0.chunk.js.map", - "static/js/29.d8d4e2c8.chunk.js": "/static/js/29.d8d4e2c8.chunk.js", - "static/js/29.d8d4e2c8.chunk.js.map": "/static/js/29.d8d4e2c8.chunk.js.map", - "static/js/30.ee063d36.chunk.js": "/static/js/30.ee063d36.chunk.js", - "static/js/30.ee063d36.chunk.js.map": "/static/js/30.ee063d36.chunk.js.map", - "static/js/31.47d94deb.chunk.js": "/static/js/31.47d94deb.chunk.js", - "static/js/31.47d94deb.chunk.js.map": "/static/js/31.47d94deb.chunk.js.map", - "static/js/32.2746717c.chunk.js": "/static/js/32.2746717c.chunk.js", - "static/js/32.2746717c.chunk.js.map": "/static/js/32.2746717c.chunk.js.map", - "static/js/33.711414ba.chunk.js": "/static/js/33.711414ba.chunk.js", - "static/js/33.711414ba.chunk.js.map": "/static/js/33.711414ba.chunk.js.map", - "static/js/34.abfcfdbc.chunk.js": "/static/js/34.abfcfdbc.chunk.js", - "static/js/34.abfcfdbc.chunk.js.map": "/static/js/34.abfcfdbc.chunk.js.map", - "static/js/35.f1f3ca82.chunk.js": "/static/js/35.f1f3ca82.chunk.js", - "static/js/35.f1f3ca82.chunk.js.map": "/static/js/35.f1f3ca82.chunk.js.map", - "static/js/36.b33494e7.chunk.js": "/static/js/36.b33494e7.chunk.js", - "static/js/36.b33494e7.chunk.js.map": "/static/js/36.b33494e7.chunk.js.map", - "static/js/37.71a11bf7.chunk.js": "/static/js/37.71a11bf7.chunk.js", - "static/js/37.71a11bf7.chunk.js.map": "/static/js/37.71a11bf7.chunk.js.map", - "static/js/38.dad57a4e.chunk.js": "/static/js/38.dad57a4e.chunk.js", - "static/js/38.dad57a4e.chunk.js.map": "/static/js/38.dad57a4e.chunk.js.map", - "static/js/39.0d01bd55.chunk.js": "/static/js/39.0d01bd55.chunk.js", - "static/js/39.0d01bd55.chunk.js.map": "/static/js/39.0d01bd55.chunk.js.map", - "static/js/40.35e558c2.chunk.js": "/static/js/40.35e558c2.chunk.js", - "static/js/40.35e558c2.chunk.js.map": "/static/js/40.35e558c2.chunk.js.map", - "static/js/41.f4f2dbe0.chunk.js": "/static/js/41.f4f2dbe0.chunk.js", - "static/js/41.f4f2dbe0.chunk.js.map": "/static/js/41.f4f2dbe0.chunk.js.map", - "static/js/42.0067270b.chunk.js": "/static/js/42.0067270b.chunk.js", - "static/js/42.0067270b.chunk.js.map": "/static/js/42.0067270b.chunk.js.map", - "static/js/43.ebc06fd3.chunk.js": "/static/js/43.ebc06fd3.chunk.js", - "static/js/43.ebc06fd3.chunk.js.map": "/static/js/43.ebc06fd3.chunk.js.map", - "static/js/44.1f01b6b1.chunk.js": "/static/js/44.1f01b6b1.chunk.js", - "static/js/44.1f01b6b1.chunk.js.map": "/static/js/44.1f01b6b1.chunk.js.map", + "static/js/19.ba4e9a85.chunk.js": "/static/js/19.ba4e9a85.chunk.js", + "static/js/19.ba4e9a85.chunk.js.map": "/static/js/19.ba4e9a85.chunk.js.map", + "static/js/20.9e6054cf.chunk.js": "/static/js/20.9e6054cf.chunk.js", + "static/js/20.9e6054cf.chunk.js.map": "/static/js/20.9e6054cf.chunk.js.map", + "static/js/21.fb8f4242.chunk.js": "/static/js/21.fb8f4242.chunk.js", + "static/js/21.fb8f4242.chunk.js.map": "/static/js/21.fb8f4242.chunk.js.map", + "static/js/22.a63a060a.chunk.js": "/static/js/22.a63a060a.chunk.js", + "static/js/22.a63a060a.chunk.js.map": "/static/js/22.a63a060a.chunk.js.map", + "static/js/23.e8ed4da3.chunk.js": "/static/js/23.e8ed4da3.chunk.js", + "static/js/23.e8ed4da3.chunk.js.map": "/static/js/23.e8ed4da3.chunk.js.map", + "static/js/24.5c4dac45.chunk.js": "/static/js/24.5c4dac45.chunk.js", + "static/js/24.5c4dac45.chunk.js.map": "/static/js/24.5c4dac45.chunk.js.map", + "static/js/25.4d671375.chunk.js": "/static/js/25.4d671375.chunk.js", + "static/js/25.4d671375.chunk.js.map": "/static/js/25.4d671375.chunk.js.map", + "static/js/26.55868c50.chunk.js": "/static/js/26.55868c50.chunk.js", + "static/js/26.55868c50.chunk.js.map": "/static/js/26.55868c50.chunk.js.map", + "static/js/27.dfeb673e.chunk.js": "/static/js/27.dfeb673e.chunk.js", + "static/js/27.dfeb673e.chunk.js.map": "/static/js/27.dfeb673e.chunk.js.map", + "static/js/28.8ea07334.chunk.js": "/static/js/28.8ea07334.chunk.js", + "static/js/28.8ea07334.chunk.js.map": "/static/js/28.8ea07334.chunk.js.map", + "static/js/29.6a085a6d.chunk.js": "/static/js/29.6a085a6d.chunk.js", + "static/js/29.6a085a6d.chunk.js.map": "/static/js/29.6a085a6d.chunk.js.map", + "static/js/30.e3ad4efb.chunk.js": "/static/js/30.e3ad4efb.chunk.js", + "static/js/30.e3ad4efb.chunk.js.map": "/static/js/30.e3ad4efb.chunk.js.map", + "static/js/31.c072b9ba.chunk.js": "/static/js/31.c072b9ba.chunk.js", + "static/js/31.c072b9ba.chunk.js.map": "/static/js/31.c072b9ba.chunk.js.map", + "static/js/32.89dbe878.chunk.js": "/static/js/32.89dbe878.chunk.js", + "static/js/32.89dbe878.chunk.js.map": "/static/js/32.89dbe878.chunk.js.map", + "static/js/33.8090fffe.chunk.js": "/static/js/33.8090fffe.chunk.js", + "static/js/33.8090fffe.chunk.js.map": "/static/js/33.8090fffe.chunk.js.map", + "static/js/34.751b6468.chunk.js": "/static/js/34.751b6468.chunk.js", + "static/js/34.751b6468.chunk.js.map": "/static/js/34.751b6468.chunk.js.map", + "static/js/35.e4028b81.chunk.js": "/static/js/35.e4028b81.chunk.js", + "static/js/35.e4028b81.chunk.js.map": "/static/js/35.e4028b81.chunk.js.map", + "static/js/36.0919ae37.chunk.js": "/static/js/36.0919ae37.chunk.js", + "static/js/36.0919ae37.chunk.js.map": "/static/js/36.0919ae37.chunk.js.map", + "static/js/37.e8103ba3.chunk.js": "/static/js/37.e8103ba3.chunk.js", + "static/js/37.e8103ba3.chunk.js.map": "/static/js/37.e8103ba3.chunk.js.map", + "static/js/38.7814a304.chunk.js": "/static/js/38.7814a304.chunk.js", + "static/js/38.7814a304.chunk.js.map": "/static/js/38.7814a304.chunk.js.map", + "static/js/39.a2f2ad85.chunk.js": "/static/js/39.a2f2ad85.chunk.js", + "static/js/39.a2f2ad85.chunk.js.map": "/static/js/39.a2f2ad85.chunk.js.map", + "static/js/40.4deafbb1.chunk.js": "/static/js/40.4deafbb1.chunk.js", + "static/js/40.4deafbb1.chunk.js.map": "/static/js/40.4deafbb1.chunk.js.map", + "static/js/41.854274f2.chunk.js": "/static/js/41.854274f2.chunk.js", + "static/js/41.854274f2.chunk.js.map": "/static/js/41.854274f2.chunk.js.map", + "static/js/42.0d02ebd8.chunk.js": "/static/js/42.0d02ebd8.chunk.js", + "static/js/42.0d02ebd8.chunk.js.map": "/static/js/42.0d02ebd8.chunk.js.map", + "static/js/43.da2d42d5.chunk.js": "/static/js/43.da2d42d5.chunk.js", + "static/js/43.da2d42d5.chunk.js.map": "/static/js/43.da2d42d5.chunk.js.map", + "static/js/44.5e52d393.chunk.js": "/static/js/44.5e52d393.chunk.js", + "static/js/44.5e52d393.chunk.js.map": "/static/js/44.5e52d393.chunk.js.map", + "static/js/45.319925d7.chunk.js": "/static/js/45.319925d7.chunk.js", + "static/js/45.319925d7.chunk.js.map": "/static/js/45.319925d7.chunk.js.map", "index.html": "/index.html", "static/css/main.1cdcd93e.chunk.css.map": "/static/css/main.1cdcd93e.chunk.css.map", "static/js/2.02aed69b.chunk.js.LICENSE.txt": "/static/js/2.02aed69b.chunk.js.LICENSE.txt", @@ -99,24 +101,25 @@ "static/media/4xSOM-Blue-Red-Yellow-Green.png": "/static/media/4xSOM-Blue-Red-Yellow-Green.31ac1e1b.png", "static/media/5xSOM-Blue.png": "/static/media/5xSOM-Blue.8bc2844d.png", "static/media/5xSOM-Green.png": "/static/media/5xSOM-Green.1a6bbdad.png", + "static/media/5xSOM-Pride.png": "/static/media/5xSOM-Pride.1e144c15.png", "static/media/5xSOM-Red.png": "/static/media/5xSOM-Red.f8a8f62f.png", "static/media/5xSOM-White.png": "/static/media/5xSOM-White.83d9432c.png", "static/media/5xSOM-Yellow.png": "/static/media/5xSOM-Yellow.0f47ac42.png", "static/media/VoltLogoPurple.125355f6.svg": "/static/media/VoltLogoPurple.125355f6.svg", - "static/media/de.ftl": "/static/media/de.0cc15a80.ftl", - "static/media/en.ftl": "/static/media/en.904bfbc6.ftl", + "static/media/de.ftl": "/static/media/de.d920ecc3.ftl", + "static/media/en.ftl": "/static/media/en.5fda2649.ftl", "static/media/es.ftl": "/static/media/es.126119ba.ftl", "static/media/fr.ftl": "/static/media/fr.3b8fe850.ftl", "static/media/it.ftl": "/static/media/it.b3345292.ftl", - "static/media/nl.ftl": "/static/media/nl.e98de54d.ftl", + "static/media/nl.ftl": "/static/media/nl.33eaf7aa.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" }, "entrypoints": [ - "static/js/runtime-main.95a48bcc.js", + "static/js/runtime-main.f59ade58.js", "static/js/2.02aed69b.chunk.js", "static/css/main.1cdcd93e.chunk.css", - "static/js/main.a2639ae9.chunk.js" + "static/js/main.4b84528e.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index ea85a89..4359668 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.3b923655.chunk.js b/static/js/10.938c6be7.chunk.js similarity index 55% rename from static/js/10.3b923655.chunk.js rename to static/js/10.938c6be7.chunk.js index 2e26f64..0cbc717 100644 --- a/static/js/10.3b923655.chunk.js +++ b/static/js/10.938c6be7.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[10],{89:function(t,e,p){"use strict";p.r(e),e.default=p.p+"static/media/pt.1d8c1bab.ftl"}}]); -//# sourceMappingURL=10.3b923655.chunk.js.map \ No newline at end of file +(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[10],{90:function(t,e,p){"use strict";p.r(e),e.default=p.p+"static/media/pt.1d8c1bab.ftl"}}]); +//# sourceMappingURL=10.938c6be7.chunk.js.map \ No newline at end of file diff --git a/static/js/10.3b923655.chunk.js.map b/static/js/10.938c6be7.chunk.js.map similarity index 72% rename from static/js/10.3b923655.chunk.js.map rename to static/js/10.938c6be7.chunk.js.map index 6ac0477..631eb69 100644 --- a/static/js/10.3b923655.chunk.js.map +++ b/static/js/10.938c6be7.chunk.js.map @@ -1 +1 @@ -{"version":3,"sources":["locales/pt.ftl"],"names":[],"mappings":"8IAAA,OAAe,cAA0B","file":"static/js/10.3b923655.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":"8IAAA,OAAe,cAA0B","file":"static/js/10.938c6be7.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.1e591ba4.chunk.js b/static/js/11.7de5af08.chunk.js similarity index 55% rename from static/js/11.1e591ba4.chunk.js rename to static/js/11.7de5af08.chunk.js index 98023ab..2546a27 100644 --- a/static/js/11.1e591ba4.chunk.js +++ b/static/js/11.7de5af08.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[11],{90:function(e,t,r){"use strict";r.r(t),t.default=r.p+"static/media/ru.9be0d24d.ftl"}}]); -//# sourceMappingURL=11.1e591ba4.chunk.js.map \ No newline at end of file +(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[11],{91:function(e,t,r){"use strict";r.r(t),t.default=r.p+"static/media/ru.9be0d24d.ftl"}}]); +//# sourceMappingURL=11.7de5af08.chunk.js.map \ No newline at end of file diff --git a/static/js/11.1e591ba4.chunk.js.map b/static/js/11.7de5af08.chunk.js.map similarity index 72% rename from static/js/11.1e591ba4.chunk.js.map rename to static/js/11.7de5af08.chunk.js.map index 8476548..c8c4c71 100644 --- a/static/js/11.1e591ba4.chunk.js.map +++ b/static/js/11.7de5af08.chunk.js.map @@ -1 +1 @@ -{"version":3,"sources":["locales/ru.ftl"],"names":[],"mappings":"8IAAA,OAAe,cAA0B","file":"static/js/11.1e591ba4.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":"8IAAA,OAAe,cAA0B","file":"static/js/11.7de5af08.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.0291dfd0.chunk.js b/static/js/12.8ba38c3f.chunk.js similarity index 96% rename from static/js/12.0291dfd0.chunk.js rename to static/js/12.8ba38c3f.chunk.js index 9099dd0..f2400c2 100644 --- a/static/js/12.0291dfd0.chunk.js +++ b/static/js/12.8ba38c3f.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonpprofile-picture-generator"]=this["webpackJsonpprofile-picture-generator"]||[]).push([[12],{91: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(p.a)(f.a.mark((function e(t){var a;return f.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){h(e),b(e[0])}));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}!function(){e.apply(this,arguments)}()}),[w]);var x=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 x(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),h=Object(o.useState)(!1),l=Object(c.a)(h,2),d=l[0],j=l[1],b=Object(o.useState)(null),f=Object(c.a)(b,2),p=f[0],g=f[1],w=Object(o.useState)(null),x=Object(c.a)(w,2),v=x[0],m=x[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),F=k[0],E=k[1],S=Object(o.useState)(0),y=Object(c.a)(S,2),K=y[0],M=y[1],_=Object(o.useState)(0),R=Object(c.a)(_,2),B=R[0],L=R[1],I=Object(o.useState)(1),P=Object(c.a)(I,2),V=P[0],Y=P[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],he=ue[1],le=Object(o.useState)(0),de=Object(c.a)(le,2),je=de[0],be=de[1],fe=Object(o.useState)(0),pe=Object(c.a)(fe,2),ge=pe[0],we=pe[1],xe=Object(o.useState)(0),ve=Object(c.a)(xe,2),me=ve[0],Ae=ve[1];Object(o.useEffect)((function(){t&&t({x:Q,y:F,scale:V})}),[t,Q,F,V]),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,V,ne,oe),t=e.rangeMinX,n=e.rangeMinY,a=e.rangeMaxX,c=e.rangeMaxY;he(t),be(n),we(a),Ae(c)}),[J,Z,ne,oe,V]),Object(o.useEffect)((function(){U(0),E(0),M(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,me);e.isFinal?(U(a||0),E(c||0),M(0),L(0)):(M(a-t||0),L(c-n||0))}),[Oe,je,ge,me]),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,me)||0)}),[Oe,je,ge,me]);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"})),m(H()(e)),j(!0)}}),[u,d]),Object(o.useEffect)((function(){if(p&&v&&d&&u&&u.current)return p.on("pan",Ce),v.wheel(De),function(){p.off("pan",Ce),v.unwheel()}}),[u,Ce,De,d,p,v]),Object(r.jsxs)("div",{className:"Editor",ref:u,"data-x":Q,"data-y":F,"data-scale":V,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+K,"px), calc(-50% + ").concat(F+B,"px), 0) scale(").concat(V,",").concat(V,")")}}),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=",F="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAALSURBVHgBY2BgAAAAAwABjPg5OgAAAABJRU5ErkJggg==",E=1080;function S(e){var t=e.href,n=e.name,a=e.target,c=e.children,s=Object(l.a)(e,["href","name","target","children"]),i=Object(o.useCallback)((function(e){return 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(h.a)(Object(h.a)({},s),{},{href:t,onClick:i,children:c}))}var y=m((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),l=u[0],b=u[1],f=Object(o.useState)(null),p=Object(c.a)(f,2),w=p[0],x=p[1],m=Object(o.useState)(null),C=Object(c.a)(m,2),D=C[0],Q=C[1],H=Object(o.useState)(1),T=Object(c.a)(H,2),y=T[0],K=T[1],M=Object(o.useState)(null),_=Object(c.a)(M,2),R=_[0],B=_[1],L=l?l.src:null,I=w?w.src:null,P=Object(o.useState)(0),V=Object(c.a)(P,2),Y=V[0],G=V[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){x(e)}),[x]),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]:"")}),[h]);return Object(r.jsx)(G,{userLocales:n,onLocaleChange:d,children:Object(r.jsx)(y,{locales:B,currentLocale:O,onLanguageChange:l})},"AppLocalizationProvider")}u.a.render(Object(r.jsx)(s.a.StrictMode,{children:Object(r.jsx)(z,{})}),document.getElementById("root")),K()}},[[49,1,2]]]); +//# sourceMappingURL=main.4b84528e.chunk.js.map \ No newline at end of file diff --git a/static/js/main.4b84528e.chunk.js.map b/static/js/main.4b84528e.chunk.js.map new file mode 100644 index 0000000..bbc3056 --- /dev/null +++ b/static/js/main.4b84528e.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","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.4b84528e.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};\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\t60,\n\t\t23\n\t],\n\t\"./#EUReform.png\": [\n\t\t61,\n\t\t24\n\t],\n\t\"./#Europa.png\": [\n\t\t62,\n\t\t25\n\t],\n\t\"./#EuropeCares.png\": [\n\t\t63,\n\t\t26\n\t],\n\t\"./#European.png\": [\n\t\t64,\n\t\t27\n\t],\n\t\"./#FutureMadeInEurope.png\": [\n\t\t65,\n\t\t28\n\t],\n\t\"./#IkStemVolt.png\": [\n\t\t66,\n\t\t29\n\t],\n\t\"./#JetztBistDuDran.png\": [\n\t\t67,\n\t\t30\n\t],\n\t\"./#JoinTheChange.png\": [\n\t\t68,\n\t\t31\n\t],\n\t\"./#RejoinEU.png\": [\n\t\t69,\n\t\t32\n\t],\n\t\"./#ValuesOverPower.png\": [\n\t\t70,\n\t\t33\n\t],\n\t\"./#Volt.png\": [\n\t\t71,\n\t\t34\n\t],\n\t\"./#Volt21.png\": [\n\t\t72,\n\t\t35\n\t],\n\t\"./#VoltEuropa.png\": [\n\t\t73,\n\t\t36\n\t],\n\t\"./#VoltForLGBTIAQ.png\": [\n\t\t74,\n\t\t37\n\t],\n\t\"./#VoltRLP.png\": [\n\t\t75,\n\t\t38\n\t],\n\t\"./#VoteVolt.png\": [\n\t\t76,\n\t\t39\n\t],\n\t\"./#ZukunftMadeInEurope.png\": [\n\t\t77,\n\t\t40\n\t],\n\t\"./#democracy.png\": [\n\t\t78,\n\t\t41\n\t],\n\t\"./#paneuropäisch.png\": [\n\t\t79,\n\t\t42\n\t],\n\t\"./#pragmatisch.png\": [\n\t\t80,\n\t\t43\n\t],\n\t\"./#progressiv.png\": [\n\t\t81,\n\t\t44\n\t],\n\t\"./stemvolt.nl.png\": [\n\t\t82,\n\t\t45\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\t83,\n\t\t3\n\t],\n\t\"./en.ftl\": [\n\t\t84,\n\t\t4\n\t],\n\t\"./es.ftl\": [\n\t\t85,\n\t\t5\n\t],\n\t\"./fr.ftl\": [\n\t\t86,\n\t\t6\n\t],\n\t\"./it.ftl\": [\n\t\t87,\n\t\t7\n\t],\n\t\"./nl.ftl\": [\n\t\t88,\n\t\t8\n\t],\n\t\"./pl.ftl\": [\n\t\t89,\n\t\t9\n\t],\n\t\"./pt.ftl\": [\n\t\t90,\n\t\t10\n\t],\n\t\"./ru.ftl\": [\n\t\t91,\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 '0xSOM', // SOM = Stripes of Movement\n '5xSOM-Pride',\n '4xSOM-Blue-Red-Yellow-Green',\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 (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 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 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 \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 (!!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.a2639ae9.chunk.js b/static/js/main.a2639ae9.chunk.js deleted file mode 100644 index 1177159..0000000 --- a/static/js/main.a2639ae9.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(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-Red.png":[56,19],"./5xSOM-White.png":[57,20],"./5xSOM-Yellow.png":[58,21]};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":[59,22],"./#EUReform.png":[60,23],"./#Europa.png":[61,24],"./#EuropeCares.png":[62,25],"./#European.png":[63,26],"./#FutureMadeInEurope.png":[64,27],"./#IkStemVolt.png":[65,28],"./#JetztBistDuDran.png":[66,29],"./#JoinTheChange.png":[67,30],"./#RejoinEU.png":[68,31],"./#ValuesOverPower.png":[69,32],"./#Volt.png":[70,33],"./#Volt21.png":[71,34],"./#VoltEuropa.png":[72,35],"./#VoltForLGBTIAQ.png":[73,36],"./#VoltRLP.png":[74,37],"./#VoteVolt.png":[75,38],"./#ZukunftMadeInEurope.png":[76,39],"./#democracy.png":[77,40],"./#paneurop\xe4isch.png":[78,41],"./#pragmatisch.png":[79,42],"./#progressiv.png":[80,43],"./stemvolt.nl.png":[81,44]};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":[82,3],"./en.ftl":[83,4],"./es.ftl":[84,5],"./fr.ftl":[85,6],"./it.ftl":[86,7],"./nl.ftl":[87,8],"./pl.ftl":[88,9],"./pt.ftl":[89,10],"./ru.ftl":[90,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),h=n(6),l=n(32),d=(n(38),n(30)),j=n(27),b=n(4),f=n.n(b),p=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),h=Object(c.a)(O,2),l=h[0],d=h[1],j=l?l.src:null;Object(o.useEffect)((function(){function e(){return(e=Object(p.a)(f.a.mark((function e(){return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:Promise.all(["0xSOM","4xSOM-Blue-Red-Yellow-Green","5xSOM-Blue","5xSOM-Green","5xSOM-Red","5xSOM-Yellow"].map(function(){var e=Object(p.a)(f.a.mark((function e(t){return f.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(l)}),[t,l]),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),v=n(10),x=function(e){return Object(r.jsx)(w.b,Object(h.a)(Object(h.a)({},e),{},{elems:Object(h.a)({br:Object(r.jsx)("br",{})},e.elems),children:Object(r.jsx)(s.a.Fragment,{children:e.children})}),e.id)};function m(e){return function(t){var n=s.a.useContext(v.a);return s.a.createElement(e,Object(h.a)({getString:function(e,t,a){return n.getString(e,t,a||" ")}},t))}}var A=m((function(e){var t=e.onChange,a=e.getString,s=Object(o.useState)([]),i=Object(c.a)(s,2),u=i[0],h=i[1],l=Object(o.useState)(null),d=Object(c.a)(l,2),j=d[0],b=d[1],g=j?j.src:null,w=a("hashtags");Object(o.useEffect)((function(){function e(){return(e=Object(p.a)(f.a.mark((function e(){return f.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(p.a)(f.a.mark((function e(t){var a;return f.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){h(e),b(e[0])}));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}!function(){e.apply(this,arguments)}()}),[w]);var v=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 v(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),h=Object(o.useState)(!1),l=Object(c.a)(h,2),d=l[0],j=l[1],b=Object(o.useState)(null),f=Object(c.a)(b,2),p=f[0],g=f[1],w=Object(o.useState)(null),v=Object(c.a)(w,2),x=v[0],m=v[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),F=k[0],E=k[1],S=Object(o.useState)(0),y=Object(c.a)(S,2),K=y[0],M=y[1],_=Object(o.useState)(0),R=Object(c.a)(_,2),B=R[0],L=R[1],I=Object(o.useState)(1),P=Object(c.a)(I,2),V=P[0],Y=P[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],he=ue[1],le=Object(o.useState)(0),de=Object(c.a)(le,2),je=de[0],be=de[1],fe=Object(o.useState)(0),pe=Object(c.a)(fe,2),ge=pe[0],we=pe[1],ve=Object(o.useState)(0),xe=Object(c.a)(ve,2),me=xe[0],Ae=xe[1];Object(o.useEffect)((function(){t&&t({x:Q,y:F,scale:V})}),[t,Q,F,V]),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,V,ne,oe),t=e.rangeMinX,n=e.rangeMinY,a=e.rangeMaxX,c=e.rangeMaxY;he(t),be(n),we(a),Ae(c)}),[J,Z,ne,oe,V]),Object(o.useEffect)((function(){U(0),E(0),M(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,me);e.isFinal?(U(a||0),E(c||0),M(0),L(0)):(M(a-t||0),L(c-n||0))}),[Oe,je,ge,me]),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,me)||0)}),[Oe,je,ge,me]);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"})),m(H()(e)),j(!0)}}),[u,d]),Object(o.useEffect)((function(){if(p&&x&&d&&u&&u.current)return p.on("pan",Ce),x.wheel(De),function(){p.off("pan",Ce),x.unwheel()}}),[u,Ce,De,d,p,x]),Object(r.jsxs)("div",{className:"Editor",ref:u,"data-x":Q,"data-y":F,"data-scale":V,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+K,"px), calc(-50% + ").concat(F+B,"px), 0) scale(").concat(V,",").concat(V,")")}}),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=",F="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAALSURBVHgBY2BgAAAAAwABjPg5OgAAAABJRU5ErkJggg==",E=1080;function S(e){var t=e.href,n=e.name,a=e.target,c=e.children,s=Object(l.a)(e,["href","name","target","children"]),i=Object(o.useCallback)((function(e){return 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(h.a)(Object(h.a)({},s),{},{href:t,onClick:i,children:c}))}var y=m((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),l=u[0],b=u[1],f=Object(o.useState)(null),p=Object(c.a)(f,2),w=p[0],v=p[1],m=Object(o.useState)(null),C=Object(c.a)(m,2),D=C[0],Q=C[1],H=Object(o.useState)(1),T=Object(c.a)(H,2),y=T[0],K=T[1],M=Object(o.useState)(null),_=Object(c.a)(M,2),R=_[0],B=_[1],L=l?l.src:null,I=w?w.src:null,P=Object(o.useState)(0),V=Object(c.a)(P,2),Y=V[0],G=V[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){v(e)}),[v]),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]:"")}),[h]);return Object(r.jsx)(G,{userLocales:n,onLocaleChange:d,children:Object(r.jsx)(y,{locales:B,currentLocale:O,onLanguageChange:l})},"AppLocalizationProvider")}u.a.render(Object(r.jsx)(s.a.StrictMode,{children:Object(r.jsx)(z,{})}),document.getElementById("root")),K()}},[[49,1,2]]]); -//# sourceMappingURL=main.a2639ae9.chunk.js.map \ No newline at end of file diff --git a/static/js/main.a2639ae9.chunk.js.map b/static/js/main.a2639ae9.chunk.js.map deleted file mode 100644 index e8961c4..0000000 --- a/static/js/main.a2639ae9.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","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.a2639ae9.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-Red.png\": [\n\t\t56,\n\t\t19\n\t],\n\t\"./5xSOM-White.png\": [\n\t\t57,\n\t\t20\n\t],\n\t\"./5xSOM-Yellow.png\": [\n\t\t58,\n\t\t21\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\t59,\n\t\t22\n\t],\n\t\"./#EUReform.png\": [\n\t\t60,\n\t\t23\n\t],\n\t\"./#Europa.png\": [\n\t\t61,\n\t\t24\n\t],\n\t\"./#EuropeCares.png\": [\n\t\t62,\n\t\t25\n\t],\n\t\"./#European.png\": [\n\t\t63,\n\t\t26\n\t],\n\t\"./#FutureMadeInEurope.png\": [\n\t\t64,\n\t\t27\n\t],\n\t\"./#IkStemVolt.png\": [\n\t\t65,\n\t\t28\n\t],\n\t\"./#JetztBistDuDran.png\": [\n\t\t66,\n\t\t29\n\t],\n\t\"./#JoinTheChange.png\": [\n\t\t67,\n\t\t30\n\t],\n\t\"./#RejoinEU.png\": [\n\t\t68,\n\t\t31\n\t],\n\t\"./#ValuesOverPower.png\": [\n\t\t69,\n\t\t32\n\t],\n\t\"./#Volt.png\": [\n\t\t70,\n\t\t33\n\t],\n\t\"./#Volt21.png\": [\n\t\t71,\n\t\t34\n\t],\n\t\"./#VoltEuropa.png\": [\n\t\t72,\n\t\t35\n\t],\n\t\"./#VoltForLGBTIAQ.png\": [\n\t\t73,\n\t\t36\n\t],\n\t\"./#VoltRLP.png\": [\n\t\t74,\n\t\t37\n\t],\n\t\"./#VoteVolt.png\": [\n\t\t75,\n\t\t38\n\t],\n\t\"./#ZukunftMadeInEurope.png\": [\n\t\t76,\n\t\t39\n\t],\n\t\"./#democracy.png\": [\n\t\t77,\n\t\t40\n\t],\n\t\"./#paneuropäisch.png\": [\n\t\t78,\n\t\t41\n\t],\n\t\"./#pragmatisch.png\": [\n\t\t79,\n\t\t42\n\t],\n\t\"./#progressiv.png\": [\n\t\t80,\n\t\t43\n\t],\n\t\"./stemvolt.nl.png\": [\n\t\t81,\n\t\t44\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\t82,\n\t\t3\n\t],\n\t\"./en.ftl\": [\n\t\t83,\n\t\t4\n\t],\n\t\"./es.ftl\": [\n\t\t84,\n\t\t5\n\t],\n\t\"./fr.ftl\": [\n\t\t85,\n\t\t6\n\t],\n\t\"./it.ftl\": [\n\t\t86,\n\t\t7\n\t],\n\t\"./nl.ftl\": [\n\t\t87,\n\t\t8\n\t],\n\t\"./pl.ftl\": [\n\t\t88,\n\t\t9\n\t],\n\t\"./pt.ftl\": [\n\t\t89,\n\t\t10\n\t],\n\t\"./ru.ftl\": [\n\t\t90,\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 '0xSOM', // SOM = Stripes of Movement\n '4xSOM-Blue-Red-Yellow-Green',\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 (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 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 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 \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 (!!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.95a48bcc.js b/static/js/runtime-main.95a48bcc.js deleted file mode 100644 index 2375f16..0000000 --- a/static/js/runtime-main.95a48bcc.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){function r(r){for(var n,f,c=r[0],u=r[1],i=r[2],l=0,p=[];l`@qSQ*i-^Jhi ze_zho!-1VUbLY;D&)j?Gqq?d*&QtQIAP@*g;f>5&5C}y8_y}U40smoA?qLCbVYH%za*MA%?H^$RSgg^wK|1f@%*7`JGrKYNU8TUXi?h|xijt~VNwuS2P z;!;TU&m!%#9Cs#;%MAtWkbc4_GI(IsZ0%H<5!AEHKW^f3!rO#JM6|{_E(94M?EPAI zn3S4lZXvx)=Ey3(>!en$+y&2}@xsd6TC1FMxppu#@vfcOH_Gy;u>N%I=x^Tc{%kAS5a^^vJvzGy!h1USMZD5 zbl$>;FDR4<+94(a2b6vKUE_p>REDOm+X(IC*Og=EPeD@1$2PELdO@RM|FpyJ6P|Xk zYRpQ0*hP6P-5SO}d65>6k&Pxs{}KFyE2`uBW_47xjKxb>#42{58FV_}wl}o;x?nv8VY{x@&gIw4Ul+MIvY(Gr zdlwH4{9DLJKsdn2;#1mF19dMj<#hY!#%TXL`iwjDyk3vhw^UHQd=8;S=sUIQw_ZQ( z+c5w$0D(l_jxmse>xF+1CzrCs+Zz9B#}fM77p2pW1Ip*@anaGyZ1kwJug3MLnTFik z74KLsytM7df7Am~4`+gCuw|9Jz2ftgA5w8dgP25F_hatuEl9)?W>|Z6O~qCRGLtiP z`rC#kaRI_bX5-k(Tj@UkBpOwhX);%1T@qM)ygU4Q9qK{T=4{FgrjY2vV&T)jCO&AK z7#CVfAtM#Sv%@DYO!@+ zZduurip%^9CUN+CXc)dgkY|cIZ`h62_;fR{uXRaW=cZ%f&}P!j=&;tyAYr z7O0hS-|LQl@U)ZGYiv%*or?ZU?ENA!pw|`j6igb{u3osFn@_*a>RD!=lId^XZ-+ym z{FAHg0UY*d1tUywu-P2pI<`)S6YGPV+E=HiAlSEL?<<(9y@`r|&h{HP3xw%AdhRpa zj}oo;v|EUiJ{|L@H4rYLn!h|v($@`m833Q33PLjdkY{=9R3SyPzFxx7u>iGmYp=S9 znp{YH0p5`9MK~Cl`NXLgPH*+!y2(ze-sr2PQh6pM{WwcC%Lgf6f0xDcxLh{RJ~SwM z2KzPjCugP3&*H#UL+&4`R^6zlai@yGcQrfr<(K0e?Tj1(Mq~}mpIne7MiZdsZq2w} z)wB6EMC~b=`N|JjU5RW*dXoVQYdTTsBVIn%8h=jT?4|6u)|;tEiw7 zddI?1%!FrqW)-d+R%tGCo*3^xO6wx&IP;{Lg3qigdalYHthlUJnn)q}VYS3v&05xe zBu6nF6rOedDOF0sr`5;rUjI{~^3TgI&%cy?jjhcrpjgojl2c2~p8EB7++_hRg&YKP zlyoK8^s_sxoYq;d^epm^tbyx%V5jhn$nm9cacL>l^y^u{U!;)P^tLPeYC_#+!tGbY(Nc;d8xM>j@PQ5w>4hLH1kQjOpv?- zJ0Fl4T1aniT1;=sjzi!EL=q6uf#1V32_sJ0iYR`gz{c8DmQ6Ga zslL_yOA126Mj^Qis_#BFC`f=g&DYlm6%#52({X9p{*N$`Eu+O$)cfsoZ0vRYdzGaq zZvG(YoZG$%To9^bo<9Ad>bFVw_-yEer_fs0TmGb!L+kMT{8SF&!hb6JF4Xf%_R~JJ zJet7IYK4w1-b7>UzxOS9F5O6koq6U1EnI;f-dSR>wJO%TdG>=3#ksHHHKap4X#eDE zgB?N0ct?8>XQJg{B>X+$;9GQ3CTyK7AV&h3Sy$TH4(07>@_|8_nh<|vBd^~bUFmiN znV#gM%E$H*)Z>bRT@BR$s|Et`CJqkld;`j69eU8?38yEMV zao{AR7) z-xA?27XS0!$WbW7u1PZ`4UK;JZasD}9Ieh@0Ns6p3^lrO_=xLSGu_=`;MwgQ|8_x1 zTr!XA@SpBtTLiGNw^KLgp%776mSnjTf(9ZD)I|bk8@13ow4vW8Ac`yLSRzY7-1CnF z>a7lbc&47eYWUK!XRuPxd4;{CLBDDF-|}48?#l&Ew;A&%&0_MnVLxu?X#y6XVrNh_ zv*Wxb5mQt1&KH)h34ezDu>}wwMmM8J>8MA6cR3J@X3IBZk1myF)VNLP_YtPAE>Y$1 zB5<;aV%f_=xx*jNaOWmS{`a5X9j~EGQFmX{sZIsH;OF}6aO}j}D&Ou159``rxUFx_ ziyiH^nN%q%YU4blm%km2qT%6kj=FHX=ylI2WyqK`68_BvKhewTwx<4LpP%;*DW)}T zrl6p5MgKmo82~*Q_3`J#$)VC1e4y4Iuj|_vkju%%v}~wnlXct5+u115gf$u9h$T>P zP>5hCVrH@ZH{H$#I~jb%hU)lOVNX|ca9>bU@+qSx!PHc3o)=4}^wd&etFE2U6|Z=x z7aS=|yxqmEblYzR!JxRM4eRim@BKIu|b>Dmft;kBgtvJon|68 zn08`9^EIRpi{dJvla#FU2z{w3`@J$?7tLA62@~uQ)#;BeBULKn79mssx1G4G2TmF} zr0i!f9CChLcuV)$zlt{_8XI~lR!GDki8bo#_)@got=4)Z6iIz6?2^DDoC95M*kAjo zaUxD=x>07mSs)OUFSmm@1Ww!#V%5;F^OsCI{Quvo#dOJl9L?|)aPBr z!3LIhr~2?sNk<{jA870!KFbv|J}e6ho>^1wXG&dS)$ES*mkk8^U@z5K<;AXT5FwxN z@4^1{4HebdmO!O`ySTmXtD|$JS#*3S8P&g^SI##flE)iOpT!U^RSw!m7bU8UiUuPI z7$|oCfwwr2@txEE^4Ihy_~)!}K2mxTKfIvWFz{HQbw}MnMNZBoWFa|cw#vuf@2kVL zEeK;EF36xro5U($rA<%1BNd4GhCwBwk*4%vXvX~ZU_zyG*hjD98vBK)t29ev9Nhg&IqUiKC42O#9A49)!k_P>Sz=Z#d=ai~+gB|x2#L3doV$D%8Uh(gWBy+RC!o=azIYt64goDqe#ETGX4OWDAT{292hAs{*lNzC^Fqt`dF`@9`D zH)SIdVi=j+#x?$pip?Hprj;?vgx}~&%^Evtn&BvLtFJH{iz~f5+g+xLXz!w)xZMsN zP=@=8i}mN5c2{~{&Ea3vT?BRZ1lu1k?*@@1nE-B^VodoBy|ntRX5jgQTs?qcU7%CT8{7j}Ao2J28Q zWo=_vI&1RgGaZ>hXl=FV-nUN?ZVmzIR&yecv_IVlne}^LU%BD)@)5X{s&E|7SF|mj zkIh)I1^z5yiS9Uwq)w1RMF-K+tW}QDj)AC;>GI{fN}{Pcjnv&VC)I?@a4buC2Rf)~ z0#HNzxmVRy;q!;H9TXmGkrXX=ZgfAnO^(7xV`b-CF61lKYy-z-$C(ew9PRPhSU@2M zWTf|GS~e(-jBy`nXoy3&l-^T!U3_l&mUP7AULqfPI30EBzG57tY_Bv?fR@N7`CZ7&cr!$<)mH8aBqhP`&V6)%&F#6f)%YGMav_6&{`5E+x1;*{AJY~iIKf$ zfpx~Uqwp(zKI8nr$gVl%(CvJV*o_4yy7n-`nyF21m`yi`=xGM0^b3NoFE zBqE1#(0Km|{?4gRD~^pNQgviK?6mms=UlCFAuR_Cu961fkqYtA`&c~KJviJ23+K$Y zbj28sXmGW@3BMwr{=6JU)NPZIB@1r3_*vl$Y1`{8N%Jbj;^m&FB)I56zd~k+Veid^$ z6@(2oLyn7m!RXz?4_G_xP1sTFx%yO|cP<$@XeM+xW%GTbuyORaNb01fV$|L_Qs!P# zf#qL+lsp=|GsK{4c}b$4iu%sFF;8EZ+xR8=u1A}9^UWDf$1`9$8oNx3s@g>x>mt-h zJHq|-t(IM`c~=|?If!~NlCr%)2@)L%rn)e0A1%}doyt#@o5t0YTG<9Kk^{&rM(FKq z|HA|3>w;H20xRqO1r3^NY_{{T;_*zKWqdJf#%9#r`W`{X7T{j~b(F8Ir}t7JNYmnH zsR~jE{wVgCTI=_YzDO@(+G{j7tW6{DBCCU}4TkGZ_wb2JHmw={@GNc&{sQZft%Jkj zJK*pdycT)wuYOUme1yNR92_u}wi-1tVF9kk^s*^vA(-C5p7P4qN;hSmO`wvsUh>7W zJFJWQVeA2MSg%t0meJ>b1y8kAufdnS z+$c#p{TXzu>t;OpO1P3?zGWw4Zp%!N+)x8hVp7I+Kl8AKByYVRPifPpMv;`ew$@rE zITjYzD?Re;tK*+hkw(A43M>CyP^3NCRa2UlGh31w6FvMk8ZRmq2?UEIk9)i5-;@LT z5SCy4it7;Ek4yVKsz%})Hg?yXxcvL}#iL4CN;{>NecdK+=C7$V{&l(6Ee)CmB*s&k zO3(Gx=WAN`S;K5Jo`fLH!=&N{BFI4nb~darSi&1r7{VfzJ=hh(D5e4Zs;GsRfbFzP zY@6k*2r^QpZl!jM&B0Q(1M+9P2Ehv6#i@vfSEAmg-$N&>|7 z4R4qGNHDO=L?#Sg(AE!XfyM#NF6(n?c>Ori(>F6io@^Hp-Mf3;!f!;-~(;HoN9j!0- z+e)LgVDv4BbK({F^x@dPCya^vU1eihBU*nCzxYq+eu zPZ`F1KuQ2i#s5T2T;WX!bt*tb1u>=u4n|U?_2-5AQhkW0+lM%QBfFkKCC~MCoJzUR zh#=D-8IyC}#6aV4^L6E33u_2esI;?Q*BbjP^#M3ww+t-a=dhD{coD1xlNV%qst3y0&c>>Er;rhEF>;tU=|+E*8+!-DDR8H@1yRuKWo~FMZ3Ch zexv0A>Lo1HM+UuMbcd0mOq+p+FCOOhk`zK_~~6o;dy zhi(gC#wUl`;aCjV#jPu48P!c!9i0l3`)JI*|J@#s0&vHPTDAZRxs?K=GtSJ<5v**s zO&Bd4={NY*afP~X*pT_{IXVakc=+k%=IGB;nwAi`?W2Rj_lh$dXe zld}?ed)_(5quu%A{r075;A$hMA)Gvikibr6ruRGXSCT<4lbDLti(vrPtQKhd8Xt8R za%v;?^wqv)sC$5s5XAh-!L-kY!BLsy^I21meRjMj$Kw1w9hKUb8#zrY(kj;BQ?qtibv~1U&X13K_Kb1%A*hEq4`CTY`VLd|1txI5{q^h*MsmJ zo+_WXlCcp&Y6h@Owp-7h&x5 z!+eCG-Utez(t&JwQMDVzh*p9%;~p&&uj)6Z+C2@@{^^U@js%_EuP!3yANB%`1@fyvcE;LBDyA}=m=J2b zutnOOzr(Gs1=#8@Kh{X5h zyy!G>jki(H*5``vLIb5fzVzXUO@#oW#v|&Jm|^YF2^_O~mZj6cVZ*_dVM*54<~TDn zH=|RC3}nh%?ITw-XZzu2_+}Z6Tj~4u8?ma620oI)_LH`%yGFi4Jtq>z&<_ZF7={Cq z(858Xf^jr1E_HsEJ!D6{_-iS&1kuj*tkG%261WZRBmZ(DXS^0kTDi9|MN@k(SGjKt zlrX9=%~_4tFzB~H>a9R_19WA+v_}*cUyn86X!OCg(>oH^qk3l1h?R$pSxP1{Mc@Zj zq<5;=bO{ql3jnLeGqu+!oa7`oOkaR0crMD;7wLJOQ4%~jM(v7 zS-e(TKhMvtoirEvnXrPa(a&OzMlKovX0Mh7^OIJ58V1rxgxH9EbkiUB#Ey0RMTVcW z({8VB=m#!CjII5Mk80ScMB-J*rY+E&V`ARwbM4Cs7+5rRXr*{s=KQxdVhx1aQ|dl6 zP~H@the(9*pJVS*2>>Mk5%ADvk=ygHC0t)q03KIo8d&Rpw>Q~ZeH=6Sp4Aw@a}jLJ zomG+HA;=ONF91y;6bg&ShVM^hv&{CvAa?B?;I!-9#M&FQC^uqCwhX(tEz6kUfa=^} z*-3VBs1pY(tQaPoNYbJXBrZmT0gVM=^W%B6ez#BaCRUyLVW75o&W5vZM+wz0p(ZM2 zYH;hO2ppeeLYm;p51K0>p9| z8bBH#3kwrh$zj>9JyjZb>)BU**^#@G+06@9kBSym6OZcImi3r9ix@$89E-3^O3)Lf zpD*Xf+l!4LnAMeSRYwgqF3nN%y#YAJHW9!P$z-VL7V=XNIP(IP)>yrwu=r4SJ#XUK z(iaG)gKT8)QRScEbh9f(jnV$WFhqlAyBUjDA7VM}JD%+&pR(H>c z7NEx3z{nygU&=OXMq(GR3{eI0pDzPfDE_0l?+T^=P*RXy%j;fa3*;9Z^<6X={)ipD z=6nkr^a}HZ)l(7_jT@~&3O{U>|RMWqrS5HN> z+sy+2G3_*sfuUx{ZctL3&r%Rna8u+Fu@yZ-w2 zZx`FkO+nI6c%9~wreOW#na>$5O+c1L1&iHA&b9^3M9o+y_SqBkkS|}Y2tgpXfv!A@ z1T3MTTDXWwPkLfA5qvMu{lT1feZ9ijkN7>^dmNnzw;2jSWNAF*z0e!$iF4Isul%7) zhU!cLZF_9W5opXWpjet{A0|lQ{F-sYPYnd3wNCH)F^+yoG;e8-XPao`akXoPH9G9w zau9IhaJ4a|X*_V{Oj!J#myloEe$QmFQEAe4HtdWgx)??IKj5MnzaVIE^-gE^5OWH z(i<$buMTHRBGZ~W`0`WSYuob%df=2CFB!1_dA;P}wBF`_oaS@X#D42v;V#X0=k{=t zfaBh?Zed7QR%VH2pwjub^>M}Xah(K{WZzU3=1;Hxn`4eEZF0E85rq`VW*N0==*^_~ z4t;n_sf-G!uO^+1{PJqL57hAqC}iaO*#2LZ^hwvd0^_r|W%p)hS4U2rZ6EJ!*k8*G zD#=xT<@v9+2qf@w5JI0tqt1mB$?(a(k~o|B&8rWoSs$6f^_c{_4fT7` zIVM4JO4jQxlEb~d>MXp8tGWbOru|d#NFWf>f_|4F91b~E3C9vMCUTSa;j_^)UaMqi zT)Ftw;I1zYk7iM9M~@mo(&)?71ue@918#)$sKb$UFR((eWF*kp8GW9dqe`T79kT!0 zf5ix{e}z;4-039v>Vb`cMCK$`6$1mMjlczP9E%I-uy}<%u;#z(FkRzf$UjB|6SzLLDpPW+{au-6cFe)X;ZZ_lCTSaUfzNED^)t|44N8YUs$4V zPaES5rxC`QCn0lDi^HXnK=GXh1}cM2tr#qo4S7MkFNLMkQwi?xQvOz|$!Mp}mS zYRUA_FbN>cYG6iv=$=jYsRSBTKze+f5l#8s`7oD)+EBar_jQuxQJBsaIp=dfwH=KD zBq{8|Li4}*zt5msl%UHCL+<_XPP?aj0#5_T;*+6O3U-=wyw3ucMR_H?gZaZI)(*YF zJwIb}jJ&jq|J?UYAu}5SXx#^>k0SvvjQ?HnuhetJWmAmu3avNX&a%&9C(B+P&jZGH zzVq`;|Ib(66yl3#)Jm;S0C{ZvC|dzIY%?8kh&O4~O!wPu42_N()6-X2TdWY&xj1jI zs?PBTr!a^fGKGVg-;wvKBi5p=0IWb_g7oe9A1PxU_ocqo=+8mN6^_%FgKYXRr1&4< zQkeW9==s22IJF#s9uvbM|V%i&p;v=>#`Z)AU z8vi`yAyv&`Xg&|@=$Uq4rIFHe7S<#8jNx9p#ZdKd7i3aQAS0v>0S@EE%eV8C$ks*~ zVX+kr)IcySSci=3i`_&;n}6H#Z{R#76(Q|q1~y74@W}Ez94+_PbNrny0@I78RhP^< zZJUO^8a>)$ZHH2E5kP9Dz?MODAT>8Ve^&NMEIARS#1A0{l_SeXVll*iyM@Qg=e5X% zxChXH>fHIx$yCiyz1^E0_?to9?%>43d?#8 zS2}J#Ef>c?z3TQxyAvs$7EnlLJjwZ}&YY;BudBy^O^>+u^-iQgFSS|cZ`>`$Do433 zRIHfGz@EMd3*$Wn*#J;T4^;W1t9YIVN{S~Y$^$iZ^aO7@I9z?}0LYo~%;sepSN_kC zl8u?{?Rd4}j*@?3=QDj5&(8tBz<=UaqQ8BAQ3GNm00cvAaR+#!-l-==8@1~LkM}dDcuebrtf>n0zgBb@f18M${DeW^vnJ?IL%hCJjI#3A0Xj*u`LyMSRA;b>#i`#E?hY{ z@5mC*gi8Ay$d#SSbntqeINK-yn&eZZ{9Uo2yZZ;ELgoZtZO}l) z`}P(*CtzT#iu(AU;fDmEZouGGdD7i78lVL#cu!13o7tb5JVdMy^umFLSR3CJkMqs- zENo;6{1iLodGdi$Un^uJp8@cyrUfW$tjED7I{R-E;OhhWPd+>azGMFPojEESE7+MK zQ>8wtsS5M~3Hati-B7oJ65#84zfvqT%p|>OefA4K?>UQ=ORNX^=A3O$6kbm?AnoAUhdI!9D#bia^j}$jD6Azwh+rqR&e9Tk zi3V4ld$u;<^(5U*vT1r*ry^m3tyC6ugsra==K=Lm4sIls??TIW?@6>wSZWA#_MkDT z4A)1uNEbIiypX7QGr4*Y)W-FP?*stOpq;urOCXIs&c5TLF?5r0qY7hqk`9s-jZ$DD zhdl^yk{fmLNYmsPRZLFIA9<;{`Wl2kVm@f z=D$Wg%~SI;qxD_#7^C~jXjI?c`?-)wsz1sMDf zFxcg#(uIR{uvE+63FK&W(-V%PKcY3sI&9AAHH5a!i&d_|j%+V77Q zT=BNbh&Re9jR!hP5+l_u4mf~r4CPkS^s)z}Ga%N0o<19p*Ki3l%m2YhST0Vs_})70 zuu&#k-+5ep6pqH9|BinRBiItq`;VSWkrW({8b`<&l~9m~k}t;%E+WtgCr%a$40P?j z4kSRMrb}uY4Qj=Iu?1rMa1-;ZYiOax80a_!JtZHI{}hZ?!8yaK8sPnKl&yH|Ts?oH zT0OPC@w1QNB>|z82*wk1&L@Vg^^1`dIDqd2ag&Ng-vW&Qr0X#D*>Zb#K$Mn3{_d%M zH=@O?uhIGwz5$&u?=rABOq?BjfeIEt0_Va}aif!$_IEBA5WUU_c|-ao>qke2b zv}XD7Ie%qJgY>@L4hnEPUG6IZ?jWF8Tws(vEN&b_-k$V=(c=306p6|~uL^meB%+be zjnqIZNMHLC9K{oXt`sqfJO-DE;D90kvKix z=0K*&Gj#7Wg)bKzAzgbUFyXN@6y>nGHv?7`d~4YqqPy2e{ZhxyMpd(m))gEnAF*EG zIbZ__cYTW(JA!mbX(VfOihq&#cK^KtHEX zLN_sBQ=lFfBLB1>=OJ?Fs~Q195gGOT;;J0I=!Rn=D18!}VW)MdyR(fDJI6{l$>GH3 zakteAKD0=n;s0l{Gzqpu?yephit=gg0%gYdcFBW>cDx2Q+fRu z`W^wKIY1+*@JPxYFPfECI}jID8&Yi)B}1dK9~4I2qSEpl^9PMG)$GmVq=tL?|D*M8 zb18%ZoIRowkeiIqj=KBs#tMm}v+g&^kx#YUs|Mkq!mdiGVRnuw61EtR%WHxom7$qX zwEQ7&AVnkHs&y;syYBoLJ!wfInY#F<7wTKsF$9BtPAPD=8jZ68j0J7MEXVSWb>kv7Vk9ZNF?fYgXO1*^)JQUS`G)Zq)fn?uljKS ziXAMe__du0!Tw|ZKEK7l(zL^=tH}0cFpyYDRg9~m-;$7gv4#*#H{DLUT?Sh6n2LJ! zAItCNfdNkC>`jw@C(K5G<{CoEf3vYl#g|(c*-fXtdaGmrxxd@dr|L>3BlQ#SkHeJi z4GoieRM`Oe5w5*-|L_PP~3B|y{SQ=}h=`2G}!PTp&&?&?1tgMoG9R-?=RMmSd?hq$v_owX}2Uc=>JXmVrK-&-lNez^RlG`J<8awRyp{KI-)6!wiX|O zLGq^X-C}bfZ-ZHC-1)5@am9;zUD0o(`Ev1qNH!it0-C`Pq@Ij&WR@dYwLUmY)u-xK zFJx_D-Mx|Ci+)jx??TJ*I2mXF-%TV!iQ_HI?RUTVv2d5Nb&YubeLmDkv_Gy4!4=TJ z5ByNaCR!wV=F2IqDhGZln+KGAegiD@_rH&F{{eH=K5959LA#Dlz7BPebp7zQO=)70WH{r)(u(b+zwm2- ziVKtM4P_R7Rhu=6P*u~;`=h+LfhCOyG#BkeSOkSY=f@A+dGcc7b7IToMY z0CDnGIA0+1Q@khW1xIzfMjSv+%!ve`4{^n;psZ49^88gDIDMH3PqCmI?iHA#?LIi< z(D#O=ZI zXM$DNny!I?wxMEwy&}8Ygbcc=xS7xI4G2Y$aAhza7vr2}6yA9=InPOMBLf8aiS+=f z8-uiin6JM>^CQT72!VmJ!v97J_9t3Q=Ij9>znh67iV~bj%gAH8t*VwGW@}uMFu8Cz zb396ijzNllcKSIu&kR#=GP2bGU`z}Ven3e>k(6$9!^Ci$E4sL>@j09H(Dz4Y7DDcU zHMmW$X7aJHJUUtg0yZ`%Sf9ow-XuhYAOjOn)ONURKVp=0kIS^$vb(AKMawac*G}3B zBzA@lwZMA@+z$2a(_=-wQ|#C@ECCx0N!7*$nB)HoZPK6b-Sm8REPL3$+>lA}KX25y z+u>~c-7iLHFG|%}_Xb^`7>K@CfUoE73Blm!bTcDORrt#NP1jbhCuhSonv8P9$gFkx zT00!E3FViwQ-l$e;?5@uV~Je;a@S`8Bz8?r<1j9cX)r9;}K4Hxpy_TCE*0*?Mmw}n4A$#SYo2?p=o^0uKUV;GMxrDxZi3+ouB<7 z5q6n+G%|>K-Quhbed}-8$|Q?yor6L_8b|jr@=ulB9t2v>)H9!ZH~nNhbD8Vc8zkHv zO87<1pG7wDAUy=1Zt;$~_ACA!;o~e9aIrn4_s+_0KCaLE$Q})4c*GSN8;bv&)ZgDDqOKv<7Rz9NQud3VFa_Qf!a{@0l z&vJ%q9fb3IA6O<|6#m}N5+BOI+?f@xQ6KJY&R(qx`T02~c&{vH%}pQ70~5I{C2*mA zzZAiHj}`Z^Wfg$$AX=u3I-=sX`?m^qV*HxVYXp@Xj3md*)4(vk z{_>@w-OVM>%Eb=46ZGc(4PmO@BYNRhuGffrKG`aknmhgk946uvrE@W{6N+bM0j!np0%Sl(OfK64h31M0+1U2dD?;it z_T*FsNZ@zdyXhGDCO^v;Um#p{d_D!io>8&pPa`NajfoKqcAnN+-%nl^uSAiEuI@|W zYO?OMD7VRUG8aekI<7#rDG+Xp6&_L6f>C zfpp^UDtOIvn(TH_?>K^iH)A!zr87Uf6)LBED6L#fXX>~RTEk3vae-5zc;0PWb(Mi9 zD!p&jdc%9R3i01p5N*7PARh0@!|Pa}n5iYGvKW#^ z6jMydi$aNjnr<^*4+=WKW?H(EFE|LmROqTA|?z~C=w z>b%GSRsr>1&DVC>3t0U66}AgM$S+{Ppkq@0RKl%9Uy_W$+WGx!17 z;zCSX{(a0~m0g7W$&2Uob>)?AFUr93bZ$rrVE~bVv(y|#H2t_b;2=k=`I>K$m zPK_Vnh9jLOu90bnl zp79WoXKjQvm@gBF!pAg79KL8-$}**p7Y<OdWZ{B%A6KquwYbEj?<`;ep<{Rp) z2zWO;NY3b953{rKEcJ4D(0uc(-`Qr9edfd~{}woI zCTn5QClb#hYqZ2;wnJ8#iQ00`6zuXwxH)&GDuYVO3lNG{RlPqM3&LE1l%lje6iSg< z`MgU!`d$RL^7OQ**;%mqdOyMLB3he>=%OQ7-VBK|9GTv#`a#tKs%X!P+bI$^w8JDRPi9R(lNNrqAE)x&Gp9KH(_j zOrW=s%-|`Nrr>Wnn0$EGLyU$jT|Sqtg+fV+zlQ+npmb$H@dSF!dJVy99q7WB#k0wP zYR^goEsbe5WgH}2kyPGGmH&-&XcI~pAg#PQ6FN7!-%0cm^OOS5I=?qVN2Sn=A*1y9 z5B_l6(c^UY2a0eXAum7Y41fA-P2$s8QJyGhpTk!@j7q+FlwmXsaRSG5rgQ9ITe)m$ zIP}AByZ#X*XAJ)-sSlh~TM~({+x?2h@GHES6lNv@gMM?gJ|CM%T4}yYj*dx^a(c1V zD_y+rG?j@UG_^xL6S(YbFFhXdzeFF(g!4WLYbLN)*;`E7o3LGsKQ6sMzjzPkc@R2g z!UqaQ)Fb*GE%g`wZhI2(Wwp-gK=o`KGh_J2L~Lb6dz0f?8_)(nc#6fscFeH!0avLv z^u(pjQq$tQ0mq{;x{a~gQz$ny!UN$!fn7u6qmc}m{5{eS(1%NJ{jSq6E9H}?m4bMJ zV_Us<4pKwbWy}bHd^!K0Il;p6~5Nt z|F0YZKpWS?`Fb{SZ{Oi(J!d&I8c49hhG|OCVrB#vhZqehBctAgA$`yr@tG~ zZ2;W3Lr$vVakM+zO)b9t%(~_X4v+xs05DsfYg1MhzNa8I7E=a9Ugx)gaKfN6x*+caX6IOEW z=unZ8e6hu>e9V3SPelV7*d4%Ep*G-`Z%`;vN67Ub{lgB8KKLoc6Zuds?Grwr7XXpc z0wul&Mi~O51{ni5Ac$l%C~@*1VPtO!$3jKu0>Y<*uHv;*`ek}Q?VF!M@_&7~?>s&8 z29Oe>p#X^4Ab>)|l`eScTm?^iB6f43~$!k+*v$%HB%eLdcVXb2WxS|cV8%+P=gL>XCF7Knc z68QSMADxLFi$K9hBsoz%wWDk3P!jNXv7uEjr{1i}3>H)Apji7D-ky?Gv!I5C(6dzG zbZGFU^4t3lYE-j|R&rlp`-;t0b0<$5|C1%55FkrrHkP)LC4mUOJgaI#7`Xnq+ zJ|*Xx!w{(o5O$*~-_^%^KBoa~q8&1%_;RcF;yy2e> zWX2zMUnylwyEW2`{`yuq!PC~$w=#!CykeJujfFSxnXre*bH3t7X9*J7;L|&i?y`-$ zpAoHi{vsiSel<)iDUW$TmyH={R+^2s@gL+G=k%uWu_5N=)P2-VImW7=eD^ ziA^>hWu7!Q)WEZ%{U>fAEvT~9-+_^f?^N@jE`>}RFlF7!1XHvK{U<~IWY{L+CPI0S zrjqF=m0!ax1@H*B994FaP?N>|3u7Fw-}`??Lz*?#J3SE8vf=6-%q&CvWSH59eW5JY z+b-}>ki>y<@$~aToge)ePf5u%lUdR~gAA!xdPcc!-{n&H6j`1=I%HcC(UGx70y!KU zy<5@sQsn6r4xdy#Mj`m$J_I7cl-iE>^4A8F2P9HJI!Hu@leB3Dy3lOPbgn$8Q}NNn z`(b*uykhPzd*x7D?vd!DP7bkQ3&tNBt(H76qQ%QSeIPdh*p`32`sSP(1ulm{Q?cnsk(aMCt;@UsJE~J&H zgDvM;gBqgXAZ0N7&IgGyF2ZnG1goZD5nxK1vhi%{`w^e(3_LPKdI~RY_PYL*D2g0h z&+b?&P_xdylupxAQdUF;R~WmKdGxj*WoG}eY=!2-KrWZpEDpvxE`(V{cHe7`mTl1? zkY5qzW-ItcL5lxkALpNiZzW<23Fau2pFW8{kuRa8C&g{gJBR`vx-O)iCS{WJuybV2 zlMl28hkO46X(8V}kqNBqcpr*-KY;1>cU5}vwd_TBk0ZR2g8{4i&hm7j!^$nrbVx3l z9v6P&4A)#iR0Kf1I||Pz182$aib(}B&k9IfuoYOsE^14FhzISXDwRLb6cL> zzWnr6|1k!n2S}sEcUy=YJK=#s;eX^yDd@{;L3aALc+#Hh({p8h-@HX;ZLR}>cuaCMjO=l}- zTMv2iT|`HdKL_++wwbDt?96`3X7V z^TYFV3!Ja<$=KIyjK|&V7%nAsncBy34|ETI|9KoKT0Tca{qh7<)$4`cgO^JCjgzyK z%~I;3qXT}O#*;r3ZSx6ewDy~8R+C^%pPkLb^6S+iKPHyZF~v0O9t7cIDu+6m-Co=& zc`?K}99H?ojMaMJ4c*wHw#pj`entgA$0^7A=p*w#ca00GtAsQ2dTAx`ikP}C>*wB= z_)_+jYb8)3l;<3&N}Ghs6S3ycPRx3pMj{u9+{uo(C39cGCJOjWpy8xdcTTzGAedu_ z^1}EHKG_~VGf%rld_9m|j;o{Vt}!X6IhP%zoZ}4(*CJ4VNl&OsbQ?`WnnhE!dxuYU zx};8TUrK;)h%OcxX3wundpu@FNs07*(a6|&ePBwk zh`|cy%!D6@!poCBA8;eZB>__%-;=_@(_U^+HQH498Kf*{7FauehLPz3bk4r!9&2*`l<`C~J@2 zS#N4T&g+9fk+(Rc+G_^y^Uo>YzovxsrZOp9P2y|k=9_I5xjnxj@NM@uhbYjL4xnU5 zt5g`4$mrJPtR`s?G+3pezYs+t!KI7OzN1AXW7Ocl9TU*Hm>F7Q5Tn{ zE2;<7tVJo=sq@NyYNSI7HX5z^>FE3eTy*J|oPHiRKV?978e3b8%jx+Q(ah5iDeb-$O`=czNR6LIXN1s^-U&cQ;i_k)5w48vj)3pYhBdcu z^~>1`MOk6?VwO0moFLOr%59*wIFDq+4Bp>+xYC=(kAHF9E^l1vRPGg}(w;aC-0xSs zLhgThw^@gVPc)p&4kMHd4fQNXnWy|)JJczCn^pR}SLSEGeR)T^r6`Zwzn%r(S~RgN zbtfcd`ZB`J?W60Gy4y}P4}Xnj9n;7D=xUB~kBecKn+TbXfL82Zcwv;9ve4tbQDnxE zzr6b+KU!Efhtu+BafdKLI>LK=a$GI2l1J>9{94d|4(P5LO+)i5rR+VVg$^A1BTX|f z69RX8IguB~!|}~tInJItp~>GA;@(q3laSOLU{i^#45~SCeWwT35MsTMTDG#c(8w)D z=~u0MDWqKzPG}io$BaoH)pgtLkKei+Oyr9GbTm`}}Tyl+rF@CA*^8 zehkDInIhclM{=p~z=e}sDJfg47w7AAqvPv(q4PIsLW>Kmpa=t-5IrCXgE{hpPfzT;wwH-JmO@KRurltVH*#>xU znu>dL()B*|_@KbXt)XVlSK!Dj>LJM)4Kzul%TXDG{wS+Xwr5s%vZ@DcJBjb#13vwB z4jOWch13$9Dl?iMJzqY{AC}oH>}R;su-6_42!M0b2N-a9_kkFO0TdmjcA z*5rlIBqBJ`5!!qFpxMEV_DwD7L-m0*K8c3Mrvy98ehvB=Z`yU3e_ApnA3ul=wRkwR zrqsp$k_0@Ebb4s-?2xa$j;?-AMC5&ys&n1`x(1U>CqF$sdq0HuoY?+dA#|W!Tr;MA zin|EZU;;g4zy>$zTU(Ko-im~$qyEuAiMAlz24tQzLdZkXpz1-fwv=QW>aFg*bY zMqyM6aD^bPwLL~LH_z6$l{{-3R*wv(SgZAY+sK&gAez(#f5rXBV3Y)bg0^%OlIi{< zZ@KxhLTK-AOPcw`@sZm_!|g)x5uxSa+1sZ*`NHFEip4=v$WjD%Vo4O58AfwnWdNvt zEI*~K%W^c1*rFtx6>vv$VXc^iGc z_x12_L)-hdhuOR1^;`R8mg&mHim7J;fG3*Zso?;cIL|KLk99AXIOTCEP|b>{bY@@7WVbh7-g)-Jz>J(dMY3 z)O#Qt3V{y^lcnSs5*C`YEh!8xhnW?hbx}KJv@6K@S zI{{U$`a18_5`x+HtByvqjq?tC$;c-;IcB-}FEV~1gL27s?|)Hr&TrnvxkMa%IxHC8 zpgKd4`?%v`RyN*&k|T=T|ErP&cK3k5mQ{Lr&^F&TUG4jGp@-41yg5_9Q2|(-90Pi;Q}f)pxnhwd?NL$D?U~G-*`I`H5O` z)NfeV{llvEk$FW!t7U{=p{VJk=5_o;nYwh{p2GHgir+~* z7KLc%0k%N~5fq$xfcWTk^;6qv`mL@u>+OBaRE9~%tH&kv8w~n$$x|DV*W1bVl#RFv z1o02=DDlzd#`b(UY2s!`Y;VtEBPUR=XOWJnwA@~y=%h(VUqAVgrJWf^^urrDMhHdc z#ho&A9*YXD`Mn~(><~GU6JYwPaD`A;fBEA?Z^4C|la0!tiO=#&EGgvv`+pgxt6*7@ zfFo;j#{@E1q$9W*i#25|yRWv7DNl-hntk;W4muS9j`3Z{Fuv0PRD{H5Yw?F6r)C9q z&e7ZWv}cUmK?psC9+FCBF;l_2*UjyGMP{LW!2xSRd(r3maGQ}+J{D6Z^UE+oy^Xr> zI(@o+X!bkdWR~REBVj>Z8q$nZg7_6HMG$tqdci@}iM{9J6m?^2>9L!WlnV3MX^EYa z^`EW&=oz8|RvF}e?3wKb@IeynN%@f-bcv^baikIM#hsXzwy~eE01AD*WArctYcJou>#18JoeV)tP1S&1!MrbwgCQq10mb! zRqD`+w4G{`W?2j-n?0-i_7CALmz9u;rNhCJ8Bc7)s7Lc)EDs@uXWZDajnc>JjY#p_U`JaB-)*wN!ad4ONO&;z)9nLG!{bcRd)mK-?aQ@=4^`n>J zGM#PD;c*%&(IB4qj+7I{-P!VIem20>rMAVIMg!qxb1QSv7nkep^5cT+BeO3k5VErr zc(FhPYRel#z3SPen*G5jPG}`iVu;Y__-jJB-K*k_EulK*gZMD1oP)On_;(27#Fz2J z8@c})ag*lm_*PJ|SKlH2Lca_~vBr`{pYWW^B*ydii-v z%ZTH@>FhcMqdg+Ik=vWkJFu@e80uy-C^&cXTgivCS`s={sL^?57qm%MP|k9wh*?d*Wk5b+Nj>w|KUlIPK|9cdHop@Qt#aesLZCZ2FSri`Ri9T04|`1ecJMP!RU5ZT?KNsh>jY^ zebo#6*{XE>c@N9f_FetC<6G-&5i@X>Tc@c|A$bS7 zz3Al>i*_h~{p%}~O{If!Hu&cJqSz-M)2(b~#4N9rcz2Za{{rklZ64omP=z>$1?RJ3 zHHfpvgMOe$5_H@8_BpvzR$o^+ck`UE?qH>knCbjao6^^hL3*7RAAWLe`PIO&sgD0~ z;SnUFJ0aGkO;)e4N+-k3Ua2B7*vEI52naCDaMl)pJq~A^cuJCw{7RB&p-Hwts=Bm8 zZPUE4?xoL6u$Wi{on>ypI}1b%{wO2UKeO9rouJjD@^3qo-Rj{@SudDZ7qMehrEo-A zk*r`IA57n{Zm!`5N|{oP6X}%2#5?xzaNoU50z&VMg;bE4Z{<6@L2gwijM%Z1jzIAU zm9Q;Q!$?fmikTIls7LbWm~{7)V5+sOQa>=pgmAd%=JDY75C0g;ZFMR-L1<%IO1>gL z?~c(dqyBbA*;Hrew?QavD(E(ew3jT?>|X9je*ZhBMn(4&igJj?zpn7j*}1tvA;Y6= z637dldM*2&Qh>oWoBbgAJ!o)&f=lyi3b*p2gtpy+#p?HxJ_hu_Uc7030$!B;^!9b~ zXaiX80ajA2lIZ~Jpf?!F5_z)qEBnFNOt(Tai676Gmnrfw}K_wQ=#O!U;g{ybY4qKO$p27H5;to95S);%^ zp>UX$c;Q}Zk5`}Xy#M6k8eD5DeGsy8wEV+s-{hk{WawTQM1!k$T=MECP(@W_mXCbb zpd7QqgzX;t*`j1Xolp-LB}E9{X>R$d5!>P??e*KBb9^Iln+eFY_4EiIJsV4KaBk@i9mw%PkW87A$vbIE<(H#jj?1yC} z0S!rv(Z57slOg&%-3~5qC5A(v4>g|56O7Olm5PjYd;Yk zr8vh~)QzH63`kN3xW}E?jPJZSED!;qMlPFGg|=+7av zuPMm0y{BOfM?B<&{`n*iQVpSJTGwOrbB64TLw2Z@gWS~`ob3Wuz8ZLNKZ96~w!9$o zB6QT!hHFOz3JZ77G>@O7=bBwH{rtWl{zMHsdtbkgb-4VzLWjKRfO~|{uI?9PNMuc{ zOF+I0NDZuMD2o$tW0WemkmSj~{~!C%%M&} zFUZ^tx)+C2UnF?p{@)rTt${W0{+u{h?J_WjU(! zn&gBZ`*O9trMKzr2j8QnHIX{L3k-3(&1K?|3HvnP{HOZH>O`8k+#bDzcj6&&ujz#h zh^>)p(90aopSvzUXNA?iY`7vzJ>RrZc588Gm9`QCDzhc~NmQxC~rX0M1wQGF>)o6Z;3bx|R;W+@tw9VB5|)T}umpW(QpT2)G! z(VUf|y?zBsY6=j;)*~LtaMI*YsI@wqa7j@g-x4y}$9GHW4m~9YSLx*)|>x+ z5I~F?uhQ7)y`HcBQ+#8z!3&f;@+LAvnkKm)*tcdH`BH-2mkOi<8_$oMZ`;?tQj#7# z={|HkP)B3Qxv@3-HK3wPiNkvr?s`^hb#<*W9HK^wACzXrip+3fFm=^C3_8F@wm>F5k&^{5SgO%t5TBlZWTUVyChrO?uassg17Wu&zrO6)p z{5vUiBf+E_y=^H}aE}}zLi0?%=(#}uQt5{wg-#sT>;X;rleEg~^(}MMk>?$;H-C{d z8ntX*!~K1u*3Dy?hVZDy*uRL6Ahykuxw-U3C)}DR-C>+M+?Uk?4wYf1**`o=mEp(u z&c6#qRn@c6;$DyXlMtgCf0ooY>$fEG*uZxDdB=`u`rxgqV+RJ1A`ELp6+8WT$w!aH zq!h(Ra_&btmWNbS;`Ll}w&f}U6(I`j!gcB#C3PE#Y3;(ODGYbvlvz6(V$JjQ_tkPY zNi0*ymAV~`#K;NfcB$A(Hvd^$wV6E>e%ZZS(dDArDw>~$!3a)e_VQc&!AmjGW*of7 zY79Z`q>haX-7YJ=zlRhA^=HX6Y~@&YU6uQcl4ABGlUMu5Y*689Z6M*8F8&>LvotLQ z9SP53kc!3vtdPQ16aLRyi#=L=FV%&hLzF#_#V6o2AIWi+b01@g0!0YPz1_8IW@hzN z+_WvVx?*Mw< zFF|i0;5RBy(U(gaT{$R2_Wyv9)vzEr!9d8Zbu?N&yhDZmx7mW?hbz6jMN zIlPdqr2>>Nt4>&{A6UcfCIJF_vdVgfa4TXqTQ6M8vI5C|CGFrFYStMeQ!EAoQVmD7 zwe2@vkwQrT`iXR0v3xB({!=crF)%%a2x1T0*{#(%bNQud3;V>ld;g z)fRXr@_I%PFYZ%?>8d@3b2RQ+yrInH%|+$!FA@(X?Y(ublw$~d4RQ}lmOh@wMzG^W zi?curZ(dWwnT(BnqQnGu0wZ$l<5c&9X_9p7_Ar|RONrtO9-cjsH9uu^$iIPYR^+!t zJuwYRs;VW^9k`A@7tBY8*Fh&6TifM6vEN%0%*J=rN(JvI5t6jpY8Iv=-$~*-0?Iw2 zrKokaXj4fKU5Hg>BUtNi)ik0F4@gTq!@d#;N3L7Cxanbg1w`R4%;zgH0e%z}Ug_tvZPX z2jPh1b7*AF;Bv9u zY-TAEP5eZ0VC5oU?GHHy21b`WY`}n=#D7F5!M#$I374r????mk0AbDO6VaJzNVmz` zSD&M$X#cmU;-SBC+K5rlt9kBtvS^gPbp5Um!Z>%?-vo3>wz4aBOhAw99U+RhtIvV5 z?n+4F)X+a=%hcfbY{)?BEch=R4OOr2K-BNMDTXfGJ|x-pTUNL|+Xxfalz565wVE^! z*Jt?wc|kO~D$)`rnQ-NGZnitWrVK6uW9f5#)8V)9Jw8|A)t{D=+I7%&U|Cn=Ao&5t&8e`JvXncd)6A6h?S{YNrF zQ-+2$I8ZkrcY}$n_kubf0b9cTkNv2oqgKv8q#!~*cGyqX*Z+Q?TBc9omRG!*-32o6 zVJ(1+Q0|_S=8XQs+b=^hT)zD>>Vh2x@uWMsjsMo~oN*!$&yv0y6p3H#=l52|+Ctg@ z+p{seu8Gp|%kw*}F30?XB0)j!FRRP4>6t9SSaR0TE|XfFPvnpWYaC(p;+e~YaOfS| z|4{*iySL^Q zHugDxt3{*e;=3E8E}vpPeZo@EC*;~f5Gdex3!yzxd__{lw(wjoaf=3%fqGV`NGF^t ztA~ktOPIKhdgW8jpXqk1S9J9Uwf0z>{KLA6^pjT71hu?w%d483RR;OxYPB#gEPk#X zpn4Ikbq<)#D|DyI=@^Fz#51Rt5s#H&=_&=OSDZa0jeYX-e$;jb-JP~p?Iy~ZwI+Q` zzAfwDnJ=uNrlgB=mZV|!L41K@Y%2;vk#ty@?FTwb`Q!}hwHf$H#Xi6ZNFG0T8~JGvtP*>G_3 z0WZw%gZ=++pjI+;$nQ4NWnMl%^FZ)71d3QE61P%+mfmd-e5xknA;hRmRDE+}WT_8EaDa&JTqLrW5+SIY){Q?(JS={70@O19NdN5GP;VBBlWXOCC9ir!HycivK64&@bHiMgWI!5+rir~>B{Am)9W=75t5Gcx~ zRW85W#54(ma6VIm<*z@zB);i|Zf8u3{c;yxV#V-1pc@-tf^d8fu1IQc;?V?foYeeD zSjbOAWF0~lyYUGFH+l?i(mQDcxS%MSEsTpnkFQ+XeG`D3-CV^{7Ii5_X}bN&v#8JX zJmw{E)s+8*&*KH7>JCGLARC|-7egkd4NHMS5L+Gv8au~z+SPQp7D<7U_&V?tf9F(q z!P~IFm`us*qQ=ps&t-4R(1CP8U43&g=STl2>a$8W8RT40AxD{}pFftG_)DeV_594? zWpc4?&zugpm;eSR(G`?%+99WdoJ0a^AT8KKJ9o*B<4vbA^`G}}gO;zcr|CFwrwG_2EE3-F)(tt~+(`uj1vA<`sWNc< z&bUT=EC=iOwL&QPe}ovq(15kP`CDapFp;gOv`)oGv5Y$4pI#NgSgE57-Jl#tfqeS9 z0(LU8#&$G|4DGjs&klV;jpH~MR|eh`0X0H)7HDZzOHe*YhKE(f(7%VTG~=@)Ax(`q z4tD&LoPUZT3+U&GBOMM7I`HfWYp5|*M?&N&BBr4b=bgu6mMBYWYNb4wQg~$y`lta# zI5EUz|8vf&lWAAv0d#>fW3UDdwAV)|&#C&(#c{7+w$1_D8T`zaZ2h*x%2i#Q7V0Q- zN0y|gGde|W1sXUwSphxIpdg&lC$4w1gE|u8W{8+MCOk#(&eAj2L%pOp$sIT!viC;DxZ^>dpD*Tsk0}uO>FPzyIz?1CYc!YnbIHqvtysmADYK~&v}d-g9>?bey8o( zq*)SW`os(7sQAPrBOBlWA|sWr&r!>XIrwmZ=j5?;(^n~C#tV(J^N!RZkntD9%}p<7m{w_EDjeP0?*(C475mi#T#31{pYFR*@jZ* z%43YRCeo5mpK>)SS_@&B0~kO7OpBAS-ZN5Ha819hpqb*w!%tfUN7%lsM4Al>;0AVc@%tycXYx~l$!vchPa2W%BP70 z=AXwu{SSjRSlV(ul@FaVo~ZbEf?WCG(*xv!y+Iv@eEQ^t02)qBAUlM+gmtHBvA=ew zXstMDhMCj#rjI7q1Wm>a6YkiWErRNXw5YBmr8J-?g>5Q{yF?Ypge($1@426H`K4?n zun$GnaG{_G9`8)TeunosTgv9G3{}g$_ZSa?Q;y~T%;~Ggomua0qZ`-t^-uwUdCUGsBa>}Z#EIk(gd#H(7hObu*>ba?v|&Z1I=jT!Tj0vO39Xm|sFq^8g@1jXLE)MuS!1EG zNHI$gXKQqa{&$a6{6T)Q@P!BQogViw39X0-?c);9cDB-<)w%RD*lGD_EQu7x+~<_k z!iP%`(uZGRb0T_TVeDaHZ|vrizJ-tZmdTTj7S`q}z6kw?$l}+>TNV>Dl6Js8Q9OE- z#=TRXzIYO8a1kD@Zm>jto#mcvoVWDGj5Xm6OABHY3?6+UTIm|@Hokci7rO9RD3L?bEx z4_`GWD-EfmC;OcTK9F!8&(WUURLA93aCy(hBq!(}l}9!vjF$2U(@YR;rehn6b@wUN z```EHkUCaM!v*wt^B&8zyNklUI#5sG_5{=I%|RKT(2J~c)kHH@KX1~~Tjh`V;<%}I zA+Qd|w?mrb(=$x%d1N?Wp1TiRw>;Bv+r2$6YHn}KoJvc-#A+C~Q%23@EqV&tA%wot zF8zqmjVbyMRIXbcUQ!Ky9$I$${$)2MyD#tci=oR=lm8Ey19aX(HTlH{@mbR(ML!m| z|E|WNb4L~Kq@q{1llwu%#QC5`v1lM2wApm~=-PgA4VGRSFJK98loV{F%nJ$R^Jk=~ z7%G*qW7|eJK7CcIt2UPlS_F}Lwbv7kf4UPdDr&b*S8A*;$7r@+x0BT8EpQHL7sOyf z{s9uGHOju<<|ck)n6_*%HR3N=_`~oGQ%3>oVg|>z0**dfmhp0^P&Le@iV`G{W+$wFSh9qNeb4He*O`M9qxkBbO%ekUj* zN>Q)yU~3S7&COu>#nv<1sSr2tkZe!!^#TJfh!QezX9Nhn=@#jM{)ch5Yzf}m-H&^} zg=sn({O1HB16y#(?ca5Lz8%lK;=>(!s@|Uo_m(7|6}HY@s!P?KggFQvLNKC*FIbi) zMwb2aegM0%pI7f#-{;wo84(-lhb)z;^^!qe6r9iK3khEB$1fE8KPFtdB&u69$qmyd zBKuf@`Vq#}KyF&=A#n1JErugU6i*fXXG2h!D}%`D2*uvcp~L&J=JaWo^5XTj9>h|t zJ#B(&%^2vxMyH2=Sr1OoIY91FFx9s}%0?1GGE=;N$n5sURdhGwv(kPqY4tVFvtlj^ zT45cvh(7LJP!9))a@B}8C#%h6ub$CP`(Avq_jMHCrKCvQmCnZ+8V90PUhHOEMxTm# zSPS8YJZRO#eaRoiEvySo__dj?Z(Q|!XZa=+C7(_aQ7eW-JP7M?tLlL3c+b+1kO$=F z9R)n8x$+J#QN>y38v9k#|HQ(RN)U|1zX~N<9G{Q97ZW=YSwbS~E7X9~Nj%CB{XxY1 z&m6rvb~WIKJ!CI~yI&ZagKTQFy{P>WF^h)$MDXFqpXeIPF^akpRutaixMzn9P$kBE zZ;(|3r1+dn()dH`>xO8&@PRywR)#V-4`-`o*l=>tRY(f1t9Pz=-T4Mkr}<{qmNz~2 zDinhy0X;IQyARJNg+a;g6d!m*RHh00PV+HhG9P5?&Ys+d5vNm3W9#~zE9ZA^hrri% zU&-@Y3U`quWU{`0n&*A8uY6z4=8KKwR&=eojpiLyrqW~5UN{nL78`cwDH6d z??upQT&wQ4nCN@&-zc)eLn)73R=@Bu#Annn9dSVam<*NZw}XT+6FX_*F^w1*9>??| zcGMca<5WQ8#z}2|Qb9j_)cGe>13D!~gR*sd_GO1k?GMOgdJ9+KwCz0WxMlLFwmo#d zk)(3Ck7;`3Vg*+|rZMRqSsiNWL(2g@!^?!ACm%4*M>)Fu=g^%&Y6%zxxPEMDgX0n* zAr0~GnaF-DQIuo=zw#W|IVTMSEZqEGi9~G5qrVn2R^n^1wXhOji{L$)H zB&tA=gsl4lxhSikBOZXrUEz>ldgzZTwe*loA^tkRju8eN&<$gmG(`i{(NLTCpJ-2j z)0*QHXd43%YaBA1X6p@*Gl5!9GrizOqmBQz;pp4$C`P~&?_9C1r!15K=fwLMRt}w? zDnY=L=~Rx7;Cv6BVU-|3=cK#aMVf*1aRFlKV?3Zlh^#bT-4?MQwgnM?R{{zWxWL`{ z;Pp3B6%p)XB_eooohwuGScm@1aI(zk#6M-7ZuUXuEYJFg7-gjY{0{lnv+Mm^85yq= zMk-`{$8T_6q(=dkKgJYsQh6VZ5sJM7H_OOWT39yfTKbQI2^=d~;1Abk(d-0&2Z*9W zvu$Y<|6njVJMX^i{hJ3@2u z843u(gp^Lp*22GMmuE9ssVcXjX}ttkMV+I31l)S6Y*1JFDX-=8^xLcS zy@ZcnBoGbRh$gEeS^pw_Y53w~!Y-8hJDslpu_pYigI&n~sVaXmQ9-@+>TiXo9NY)_ z`9l_?UuP6l_}%}S+9 z!-ZG#GHcM&kDYocRBh)s?ZUuDP?@O^j=k!`hN$h8o_&8Ld`1STRr|5zBl5#zpK)d+Dbd4m}+vVY0Ec0 zZ0lKH{^~@1!yeBAr#kh`LEI6U;voCpOw9L?Lk@^mneW3j@5@E}`Ni=pmJYJ}_m^- z$kPvDJ0!cpbA`;hlry8z`zrqaCmRlIfrU=UQE(OzeY?hxh&qOYzr*^dE-H%Lu<#6^ z4R1rKn&J&XT5*oEaEEN5 zMVq2O+45ZG)dAjm{NE2l>h`=_yA{(39+We>c1*5^$B0e!*aeDor3UsR-uvgUn#w?> z7m=~@%e>#GQzUCBYjHe|e>b|(iHhXZC>vNO-}CQJMx_mN#f3$+`#o5byb(@b7LmO} zZW2Haa;j)?L$hhb^c@G^Ke{jG3w52H&nwC|o*kbSxtr!Gr=V5PuBkUUAoBh(P=KFNnGyi!yklcs?YYemMP#VUY?r*Mg z{O*f6W&6T~ZI}DszA4#0e@+~1`7msa%S-VGXxBv$-uxWTAYDtba1S@oe~I|sA8+G0 zS$F!vFyk9QH)TV^=eJ=oc3DrZdU^X=p@KFz;3W5y76sS+D=%st)nkRSKk*x{3Obc3 zTh8k3ekYtwC}VP6|0RlnDIw;9WKIo%D`=FU%}on8TM8Y!(xZAu?pT5B)!y*-8xr5c zEtR^qvw+h*{oFKMFQ_;cMdQ|7b_+zG+B6yhfM4<~dX+Zxz%d9OS%W^0waA zSIfapy9hnatr%O{=7LlgH}w;!voeviSoogICPV)ea6hoFU0d_18_Ae~REj5;#zsrT zt43^Z%#;#p_JP1M>)$Q?8O+n@UUa)fJizpq>DedH-ud-yh5vYlA8Y4&_iW?L`Vl8S z1a0m5a|bOVXdg1wPAS>?s{B=?Cm*QB@BkE2dY#On~6>1I!sse~l)1>_EBWzO6iLU#y z{m-y&4Q`O$(|PFHO0fTj^qhswJ_EOz$FEmH$aXBLIvj|4ruyopE1IrZQ{b-JBkhJg zj5H#?mL(r{mIZ8nt!D$`pDjQ!VN;b%3^$=hA;YyunfbzdXSk@362tQ^AFkc>XLrBD zhS2qteWwDqIn36ziJmT^lO45Z82%`eo-rX@fg;erR-7X>1?#XXHI!NV$dSfzXKRc-BN*9+C2~U%WKEa11{hYMk%9L!_@vw^pvIw z_XAByO2H`0jpNJ07NAKVG8WQEj0@`j(tFhF?w{TGX2cuZ@wK+$#!DEWb<;8 z^fMAY6{6HV;^DgycTBx=AOIT1{RVQg+G*!9`F@ufHgCak8bd5IuJhvDQr-oHp~Z5t zSP#5vYiQv+Fw+UGDB$`ffw{k9@GSu&wbolz1?-?_ys}rbnVSRDn2>-r;s{$2MTTJP zyb{AG7cz`F>6VlsT+?o<8g7?pi@QlUds72;BC=d;=5;mkx%6J6XTie@T;p@LGkt37 z*`Y#6F|hqtmBF`NASdhlDc|zM-+na|@RS-b%+{tXfE2|PDQ8Ph$@{?G$?YOEB1$+} zY6 zoNXGOO~Q5Fn@cRBwK?JBfroKPtwWEh)H5{eax8s(VmvaKK ze={;NvOOm-XSU9TDxsVlX!_Kis3Z`1Vyl0W@A{RFzO25v=_DrU8hbCuo8JNrNlZ(P z&m?hP6yv%7M)o)U^}V0t0_sosE!BUqMDTVelVu@IoyXekT(EL7A!8MsMD4jv*~Il* zr+vfksqeCjKBHoqPB(npUXNu+dn1qo_$cUN6>n0cn^*X_tv z4x7ZA%1jz`T3-8#5LQ(iw{51^wCxEhv*ZR-^n+hz@|8<&pFDxhBO-B7z&pd!K4n$v zB2G`IYk*7EAhO~(Pah{W*d_+mL>^6vJa6=l5(;p;gU67>e}tq z=+e3^?ru-vGNft8DEqfz{KAPtm6jQo%m>dAnQs7IdHnJ-w6YopsB5U5<|mNDS;Dbx z5Jzr9u~Ke$a<>>SKyHeI3QjIIHZFhoJ>*lm9heh(!Yx)o`Zbd2<#IEti*uVnPH zx=A|HWtdY&^Rk8eU6FR#wEr?Fn<9m5Z8$`@Nzj3lNB%a2gXAxzmo~P)n!ZlcN!D0K z4>Ll69j zPIiM6H%2)MF!pQxR{j#TGD;qLV$QJ(-eP!A1KSGSBZK=H`SmN5N4U2K;iq52B0@GV zEETozbezk5mB+4@Q$ah8^3>m(rmgMTYwg1tLzi*dm)Qw}1)>*Wq6_pd`nha|L*PLi z#D4D#6@FnWHeh?AV*MrOP(FG$C1Zf1j5OMp9~oA-iM-$2h)o}bEf8g36b7EbgL-vJ zPQMuCoRw;$kReL3c{$MxQxd@x2Fgdcp6Thgz9#`idEW9;_og8p94_v&aGTTK>Ud*> zmjcRDM5)Xd6`+w<&pPB;=Y_)4yN=%hkOQA(lJj(9LI3xwJ3 z5UfBNy+$7Jh#wYVW84$kiNkm5MgaSZH3%XHj?A_Y9EfQDmko=5K$&?(5(ONV+RsTu zk)qg~j}g(OV0tIB@~Ss`H?&J~pSVFQ1Ur!C^R_kwBttOwo{rW#;7h9(`~&hTD}kWL z-kdkE99BfB!YVjAXo0=iD*(#eJ>6i)G>MKNJmDdt)ZE?g`4PR@8*e*t{GOA6RADfw zvO1@7jC<(6@{0sieRMF0;7(>uY{*d9VkYx4{H;ASHURiE3)fX^twn>D^hw5Nl^h9J-#cPbW0QDLHu_)4DkR7*}r-Nnj#j4PbQ)xSKc8ugfVQR z5VoNK)&1jfL*mdvdO8;KRIrzM1kfwAQ`zbF1AF+$<-o{Iz{sIFjIc3=Fr`!(Ndt2@ z0D(GchJDG507k6_keMZEJFz4M5j79UVW4tUD&^enSM^`BHSLkiQ<_Y%+={7jv5pM8z_-!GxGEJkEG%*%D68-M&7 za$e{BI2Et6vQ%sE#fu%JC*)`G;j}Td6}&kFb%}_`UmxC6Iu%kqrqhS3G6|i^r?z_y z-?4}q$il3~qZpZ&aMaZsn#OtMbYk_VQ|{74luUp{)Gfo7<~}=jJHF~$Ldexj7HNH?^6t!Wg}uD33@FVqzsB}&#x~6^e&aaVpp}nSzs-3b zA^-Ysw%B=aR)as$^vLD)>&Pn>ZT|E4Y9{iAzGa!KY;eQH+ph=4z7`$z8yfFFD1VO{ zRc*}m^Yi#(N67@UPfoGm&j`Ki?KbOG8d6PD{g(QZFT-UpB@{qhZ@)+?mC@xKL`FUPd0;8xVwbgrp>f1Q8Zv|Yu zqk2e6(9YTi8Tuy420w!Fi8A)ZX8vNUjKPM8m?Wo-qpcENopH6Qmwbng6N*o)A9Lkmin4;qktRPk;x_Enu$iN!tM zKAiZ>lI=0pNBW0;@dRWa=w~bsXLBNS8Tn%2SY^)5wFCluj@19RmsmwVF~{e&NeA7d zS8cKE%{P<>r=YV`N7grLvOfXOeZEmU6u0j_Z$J zyyWxdz=w~_W_R933Ubl#rAb@BAdMs5$iU5`v4t8O=0%d}Pguoji?1b5KWql`JN|t< zbLIQw4MI)cz+ zVP3QC=NM?h=(hNyuNELbE!(zzKjRUyVaPe+DLtiGyn3y6P|vtHj}yabHpFb97h8AQ zJF~{>03Lwluw^BbMaYzs3HBAU4unQt>{ty(B@y`HO@CI6iqL(czJ|t=s=w%cSOD{+ z5CTZ8?CmxBH;)-j>ts8RaUgVKn=E2QTkftqH-&q1I(Zi~qkn2cMht^hl6`v;EBnI9 zp2PnB8iFJFd0sXvHwj=LPVF<TLK%6`hvS#NwCR<*m*9{rS@X zG~9YCKccU`e&+MP!cPdx{+0x744L~lKJq@h`RGi&`L%<1AO0jsZ07`MMm0@}=)(%T zqYEQ$lYI`l2W3v4(KOp>s)Y+j6rBdq#NyJJIA2!VS=#P!HL0` zbRtw1>fg~-#eK6bsVCy3Hup)HRp)EFQLU?P9l?G?(O#{K*8mYE*9X$z>Io+s!;^Gj zFbfO+=l2a#`P_<4ZrKHqnD_&v{#Q+vVHl9+t(p&e=MK{;9m1dd@o`BwhqUUhw*M-E z0Tq#6qau0>rE?19g9_&~|L561gu}LG^p&U6xtAV(4=Gd@{V#jd`}i%)rM|LrEHl7Y zdSgxiY0Z$H&K%cwP=9?8RcMhx*1m-QGNzWUt(p6PcNfMKO7(}b68_(;Y`-kGD6?k% z9inoaTR3>Q_y$t^V>x;=A*7Ebl62C@gvP2-8^#OtrVB|yk5P@Gm44%FO_j?2blJ4~ zUdC%Zj3dn=gD5!m8ZbpOgw30u`A*b5JdBXrL<|T#7Ve!lB#{V(5157YJn*HFyBkal z7)%B2FOt;Fdjk0v){s4`gNMq@^XhrpX?+=jD|B%m*DPQc3z=^mP0?hY4@jw%n!JtL zn}0m{sZ70?e{G#0S?Z$FehF4Ebk%(v>~?=a|0Q`LSTMF|K%#@v@$HH)-=fp?HC zDHrZ8i7!nWzadypWd7d}X;uxWhnL%CAe)+qGS7$tdosQzWqhzY7)?rOrBqcv4BL7X z!abxvk@A}nzQFF_9U~m7JTx+%vyAj<2iM`H!h|>2lUHNZVVFuBj6}2jFycPxcB@25 zB1R$8e2y52L9*xy$?oMhX|5B@E~a>Io<-#K$TKF#A0H0f)dv7)QXAs(v!tn=5i?)< z*4h6cR$nBhSxc!Ze7R6)YZ@KvS-LV~$dok=8y#Eg#;sCe`MLj3fDJ|P{DMpuxFnx4 zGjD&`j6JBesK4cWJ~ra(L`BdP|8x4LK(Y4cFM@UZ$pV}BO#)qtYb~GFEbG$YcZ4T z*~&7u7{bhR$M^ev{(|Sn$1mf>eC~4YIq&m6=brnyD>~uM(y!FWad7{~5mT@=P99{l zzum{F`6|l0Y&myIE2>bZ+mU;gwE|?z>L`*)m5I+zs9l*=W-#H)J8a*T7 z(`j4*zp{2qer4t`_u#v6!|@ie;(u+NT8y2hY_vLHD1$t&Epta~8Z5UA#w!|_h=@FQ zJRFNbZvC<;D;_@s<_3xDjH%;p$$7G(;w5G5&npX=?vH1j5K4gI^}2A%ZAsiNW@(E= z>%4yjG4O@t#^Yrb!|^oy*%MFx**R>-smz)1%)UD* zU&=H~L~F z&E(n)F1x4b?vI?^Nvr&5wP1_E`s!Tv6k1g?u6wfRz|+WPPSnW0CNbWwK znPX`c@-VqjEAeyGQ82hP8z6s8dU(1eqRxv;iwc##+@zrTrT@VS@>jJ?LoPoT8OnKR zd!^!`<~+WbTtX_Dei>uh=$1_4JNM^tURdDs$6u&;ar~Kx628O6O|}M~J!WxE^orZx zmlTH@eeK;MjUN%w1ZN9MFd<|9iht4~w#CW^>zl4$D#~)5#V#K{Ox`jSY8@(SVvK? zLUlS;b)G#*f=dihNo+l8UAgqy-(Do!v&_407i+^q4>X1+uz3hVjY{p59JO?$l1X>Y2eQ&N%y zF(+29KXIlx1)_%IgGGzk4K`ag%?4HG&yl$v_O&2lIq+(EDgQ!AQ2 z=r3|z5ACJQOJ3L!G3&yVkz2FUxKC5*ovhqvwp1}%otNt#8nFsPuEZHq5g9XA+)VPn zWLg^Y6@a-ZPy|a9_9FA+dddv*H^e$^h{RQLiD~sA z_Szl?-|wNy-&+NP&`5Z<={h{{_t_%l_o?CY&Eg^|p?Gw&)mtG4yi!Hc$YDPHE=Z}= ztB^_q%Jv!}HXL3~F{ex)=fPmUjdiAD$S-*^4+e~0-k6Q|u$=a4Te!OypD0XsD3_dX zoJxoz%tDb0P2xl7kW2Oo$idKFWbh4^mP(__pemhv#{OTgvBXj*5}^w)B_Gh!=lm-I zmAjh?3xkbA@Bi5iPgLEI$jrv`#R_~*6cnS1JI4q#dy`p6L)QIH5#`;?)e7qt3#Eh3 zvkD>Yuj7VHG4|ye=eQ1qD9PqUmllmPwC_Oc+wrvvIG42i(db1vKPh&{o(q_hIvVqz zzBR_w#ZP_6DH|L+OEf(&CL#N}ReX$vmWN>{58LY&2JOWm?OlGZxhG~e zo^YKoPe)F0lZspiL-{*7ozd`uxlSq9LvjEUyKw8m&;RoCv?oaW_-^!=&uLU;bg}!J zC5FThI0>@{%&k)YbCST!1fzV1#pp&ZnuhZdm?J{^sbG;WJ=(sjw>@L*Wa7`g6BzPj znbCnc(bUnum*?i=Iz!1rs7Ph`#i%|7uD=Sxz-o+Uf>IJBA+uB z)X<=!lKKx$r3jG6iQK7g#l*Q19RiSKrIx%AcBNn&IdXN-cAQM^-$NB;miomg8;z6W znZbX^EXuu;SX)F!vI7nLYSQc(?mo%b`s7e-?@zfy>0qlU5^FBzZ`nMr+HgLA)d~MA z%dvPTpH<~hVy(ZZ_Pcz^8<^oo4amDrVw-XQ4l9NC%Vg!WrqJ;D##>Br?{SC zE^Of37qb0Kcf$e|HRu8INLwj`Ykn%f1k>=@9T6hP?@Jjs2evF?$q@o??z}C|T1Xs~ zh`We)T^`uHP$F=+rAUhl&c-W-V?TKz_v+Ii)=Rpw)uEJCOjoFv^X ztf$fbfONXk^>CoN7kHI^$tdz!?$wam(`Y@#X*&aNpD)f-;dLdZkX$EHNb+SgHulQi zhsBer5!K|`4!y*V%i&{BS#ZN9{!?ot*PRr8(|7@e)vu)c6UOXC&VS14vkW7=4uuLk z0)%SEBcQzho-@A4f0wIwuRAQ0q9Zli6E|n0^uhFaolr6zn6!Lc9gV&&1H&;j*TC$O z7ZZ8Wg(5>ug)d5ir}sk#API>FrAu1q|M_`@7H#YaxQG;G-0u!-N_Dz|Ad z7~J)tr{_3a9PW$K?mGlr2ZL?HBVOeVB)l{M9yg(IHh?~V`cI5W^K8MOB_aaS6Uee2 z{or~#3ydeCRJ65KcJT}Wnz|lV8%)!Zp(zh#XSF?}3WdJ;)K51MGaHfd&US;?8 z{|D6xZSeQ%gQ?q@77j6u(Y$cy@vyAUiz3`wb;Hg)A6=M*PQ@%Br#6KhtSNWh;Y7}C>;Doked6EG$$6McC0EXyZ1^> zbgC>dskN4v-%SF&_xx%FT3W39zOFtqw!8ol zY(I9@T^GEg3KB^ORSSuusY7SzI@eat;`e^{WOvD$at@CNG|r=D^om2K(EA@5S*}OM z+RFeRtp3vWB@E%60$3#x;c_o=5nE%WbP&^N(tMxBkS^o0jCUQ<(yaIJUb1WFYW4q$ z#F%A0-OQx+(d|du`Gt_V|Fy5Q$ho3PzSh#AFRrmkrb_lW?D#g-jYXwkJsdnvSAVJw zHidNmFh;iVnO=BR$Uq^>^^#h(9sLubSvGTu`2RkA~xzSA$6sn!)SrvIqU{U9|6H`Y+pE1mc zEDoq$CdN_0M_#(tLyT;c>xJ|O4$0PsUi9~`@Yx;1P8_uk0GB|mhd7W)MAc7NxTOE6 zrJ)B2ROXmqhZUKoFN0JnVz|#7!JWn@c7r6;s*Qx7MQ0uvqa`ObCJ3x(KtYGjH z1o?{0ryz0noHmL}$0TBH<_l08-0?)=n{pLFA}8TT)GfR;8DMnvVp4(uK3}Q-blj=U zD{Y>ML2l|8Jrx9QRyl%WlhS_5uSPE$TL}-JGN6!ok;I)-I#k1R$8~4_{DD}Vd~Po^ zBf~v+<0yhr`5kQ(q9#CneDs*)E}3SFcxgWU7{z1pN^TS!R13vsOV9%x`Rb{66j5^? zNP}kP;GADoIV1X&;l}uZZq15uLE&T)KjHab^2WrE;QhHX{UB<#2PeGq&(55}2x9(87J zj}2|P8Aoy-3Z{YSfah=QJ5N(0Ki(;6xvJw^?$^kudZ}y~HxTux1AeCTX2ru>`?ngw zvy%EgK2?{=UiYhGl`Dd55?IvhPkTc73S0`>d1?m5o7fezjpoM!m%pb?mKhdNUYLHZ zKvNv4_#*kaR%G{Oy(f7`3jc$R7C~edQpeO^Jy;B;NS=tK%aFT= zyYX62vfd9%+Kq_5ZS_Tl^+I1>2U}$Xu(H&YN(|d(Ch5)X6v#w?mI>je_}XyNrOx0GcfNUd|6o(2}*w7Ab0U&qke2I!lY~t4V3xIK#vvwwZu7(7#lx zUhhnl!DqQy%M-A)d@w1fY3{)pa z%QPj!Bz)P=u&ZouxcPuP|F&PZ^H|)gZyB(|-sN_t^t3l-vLIGW5B@>J?KlyE-D_$R&%IA%f|T^)xLb zbPt#ShV_mwE-4rE4Iz5wNV@g~cE=s|4{jd}7AQ-% z0V)~)yH;D8zBf`5iL_G#{NhvV8#ahWXG)!OC#h)KbGqPS!{7B&el7Jn&B8iP-}z}$ zG=2k9_}H=SHUzhHP-2E20X=Qq#x%5rKRNRD@7hYa1ZhxGmf?t+@Bebs zJx`@hJZ%x(b^}-4(J~dd%NO@w?)Kf=3iJNPBB+ndnX=G43gK9(WfS?e zwQ3$h&8J%#BRoYtZG-ohtU^daru{W^i|fC%x4)^Y1_C13u0V)vGihBxL?cg+rG*0(xG~HntZ!aH~jdI|88*@cl5%bZYYwDdtsX$6VmCj z7`~b#9TsZQT_+H>CR-WFWzPwa+W7hp2m!Xg>l%{B1;~E3k9E`t?WjGA@l_F%ngE14 zf)lJ^M#i+1%}fXU0@z!oQQzTIUehAm1itLkTO0|x(N)Hzu-0|6{^hb0074CIFy5)3 z_|GVH&@h@==*#4oYxCKWmQ!2ATSdsP_t=E4V0;6zBV@&V!HaU0h}{I<(m_Tq`J)jV z*QX*4upWG5wmd@(qf+Mz>g+XpZ19Tn9Eac=dHj$A0@|y!yQCNtbqrG96?KE4$lUY0s899jjKhtT zy5|o=h8q`(J~Ur<@W6d$^yI(B1c{cG*AcfYPrE@yR`h7^DNTV)N#H4Z)5`J?<`$tFo(XJ@{Ibq7S4vUyWby^U0m`o```ANGX%6LJBVE$ z)DKKME7iW)e*mHy=4XTNIpumMCM^KfND%dmG9)UUUvZW7GUJ_aHSf0!NfXxPmXCN; z^-yui{S26&ZsL0yNJ(>wxoPZp#~LiUTKDy;SwFfTz%7;${U+^}6Z~?y#uOAMZddl; z!BsK=t|8cCf6-wwZGN?_=+`T`ASp7FxB=YSm)KIK<`FncZLRgcQ@A3zOR zl-@zOR1Rg@wtw7wfa#zf{I;rXm>_<+z$Sbp+-_$@a}3gzu`B&)apNciJJZSt>9a(N z!8T&_OFsaa9(>ZEDlpmLcA|CCwIPW1TT6 zHKt%ZsIur@EfyK1V_7uUg712nKb2Npv~He}fb)$&t)FV{EbTwK3WObN?*)TE^<}Q( zKG1+*DxyEPBt2OB5j2vZ_Z4bQqJ9bai|;6O9F*v4@8k+}%>UE^`~#qpFFAd+#DgMN zk4b=13&+-Zwt+|$-0!x@Asu^sz*?)n#h`3)(e9BpMt?8Yk zkV)}AyrPl7*9ica+CFDwZXhsLRX@}Y<}wOvNr&3Gf-*j8M_1%H)ZC3s&7X z0W9|Z+D_0&sT7m}y?9Qm{!|VeWQ)|8%8*3C+P28M)d3#Yc*C2m!}biig>@5~xgd#H z%rS_Wy#Nl0f@0j1hl#5JkaqYO79`{bGwEP4`)bAX=Ooue2vi$*dS2( z)H%G<+)B}^{PXc&b4K!5gF(9gNwYZczx*Wk!Y4 z#hWYsejX|rYL71NFD7q+`JSk^v?%@F-Es`7YY80+ti1O!Q(|T(ML?4cg3+acx{2)4 zQMJ5TJRn^aB1l;;>45W3z^t62!h|7D9ieUpJ6Jsry$0L%X* zwlGwme?49Ga%oTd1lU8UFV`4@5H0&*!VfMX8K-V^`b)-yg#JvsW8-i z)Q}F6ythNwdE>)c#g@R0&^Pe{)*h>d5+i3JT-2;XOf~kw)phR@NR%EFHWs*)ITkVk z-DVSV;C&1GK3<_Gj2dXivky~Zs&)yxJ$2wMsrn}0W-H!2tiHYd8q{Z}aX|E+e}j8z z7U3Q1g$g~ooNx#Vnr0CS|KR!k4)A){#w|%DA)Tk38ulL~9&KDX0XauK+$0yT*~jb& z+A~EMtrhwb6kCp`FNJ;u8Y2Z>ZBF1=#!XLp*>^mN9~zPNYpK?`x+*d>g<;t(_>{v4 z^`!bcj0ac|YChD`smocn7+jy+m>7v?fg+YzcIacwmk;{KRaA{hcsfAO-j79^ko~AD zCXW69!7|o$3|>9mRM=AhXu?s7le?H;XI=71%w=e+Pt~t^{H@#Sz;8i|wqT&Rq6I3D ze)pHu=$Sx`wjUDcHvo^$-H2?H9F@;`lcf3`urf@f*un<4kg7c+6xFrntCKhE9CP`u z!2t-$Oq$jk6@+B&{|Fth)un?FFmYy~nF5)8myx$0{~det<(BJT;-vz8^9m4CiBBI; z!m^frPQvU*FZI!yM9Z91>ALmcGXtdVmFoPcja~5iLc{QGqxE7qg`4d)vBv-@i=lzi zL{YEWGZnQMf8M2@?cfOB%~^lPtKgcMfSUcRY!G784AOHw3BMT8W2$V4epKeK*GS1J zS5ooC92Aw3=EjgC)MgTU`O(Pe}TbSoA@GyQj5wzU0EosBQ^4t24b#jWjq#Odm{`GJ>=Ju z)<45cM)c^G@xZ}kqN3W>@ZXZv@U5v#veq_N-0jT*S8=+pcw*w{=?@=%t{2M>MI7}xz$IG>EFL($`~yPd z&Y09Oe?-_G`X;{;R)2_Uq|D7@x7qL1wsl|X{>b#G4<)jkG&5OI`{%yZZO42P@rSOz zGpIO8!^wHKo>9p#ntTKLUjC|;==;F{f=oDCnRFMspH0tJI9o3^SJXVmutHGFR2+DR z?>BH1e1BZpuX@FBF@dD|YUv_aXHz-w~uU z4R>+V$MON+Hx{p5AppMbC=U`f5nUgStlBVerMI&qQ}n}4YNXD}Ilc-4ndFm#Tlx+l z5Rk?17gGM(xb<)Mr>+PKH6BD|AwUX1LCtfAFd|XPt18VddR~RCYRtR8BmI}I%hINb z+^e98RUZeka%^n;O)zTbM{rQo@2N}p3_`7In`hPcncvNN(%GPV{!S@ znJ+#3ubZBsLO;hJ*IpkCoX!Z^bvRS=<_KtjHWEhzsqf69TX)`yJxJif`!(t~Jf&=f zvvx5g-+12jtm&)0mZZ`H!&RpE{m;eR0sDyLq!V6q1s9mXv70E?NII}y(+r$hDiSlO zPuX0_U0PiA