From 40d483bc383d8b6180aecd8de1a76537d08890b7 Mon Sep 17 00:00:00 2001 From: relikd Date: Mon, 25 Nov 2019 18:09:40 +0100 Subject: [PATCH] Makefile, AppCache and numerous other changes --- .gitignore | 6 + .gitmodules | 3 + Makefile | 38 ++++ README.md | 44 ++-- data/development/brownies-raw/contents+de.lr | 19 ++ data/development/brownies-raw/contents+en.lr | 19 ++ data/development/brownies-raw/contents.lr | 13 ++ data/development/brownies-raw/image.jpg | Bin 0 -> 83180 bytes .../recipes => data/development}/contents.lr | 0 .../gluten-free-flour/contents+de.lr | 133 ++++++++++++ .../gluten-free-flour/contents+en.lr | 134 ++++++++++++ .../development/gluten-free-flour/contents.lr | 9 + data/development/gluten-free-flour/image.jpg | Bin 0 -> 102479 bytes .../vanilla-cut-out-cookies/contents+de.lr | 6 +- .../vanilla-cut-out-cookies/contents+en.lr | 24 +++ .../vanilla-cut-out-cookies/contents.lr | 4 +- .../vanilla-cut-out-cookies/image.jpg | Bin .../vanilla-cut-out-cookies/image2.jpg | Bin .../vanilla-cut-out-cookies/image3.jpg | Bin data/distribution/contents.lr | 1 + data/export-yummy.py | 196 ++++++++++++++++++ data/generate-alternates.py | 59 ++++++ requirements.txt | 1 + src/assets/app.webmanifest | 14 ++ src/assets/favicon.ico | Bin 0 -> 5430 bytes src/assets/img/favicon.svg | 20 ++ src/assets/img/icon-180.png | Bin 0 -> 1598 bytes src/assets/img/icon-196.png | Bin 0 -> 1732 bytes src/assets/img/icon-32.png | Bin 0 -> 485 bytes src/assets/img/icon-glutenfree.svg | 36 ++++ src/assets/img/icon-glutenfree_old.svg | 42 ++++ src/assets/img/icon-raw.svg | 19 ++ src/assets/img/icon-vegan.svg | 15 ++ src/assets/img/icon-yield.svg | 8 + src/{root => assets}/index.html | 0 src/assets/static/col2.js | 10 - src/assets/static/lozad.min.js | 9 - src/assets/static/script.js | 39 ++++ src/assets/static/style.css | 109 ++++++---- src/configs/force-update.ini | 2 + src/content/app.appcache/contents.lr | 3 + src/content/groupby/time/contents.lr | 2 +- .../vanilla-cut-out-cookies/contents+en.lr | 26 --- src/content/settings/contents+de.lr | 2 +- src/content/settings/contents+en.lr | 2 +- src/content/settings/contents.lr | 2 - src/content/tags/bread/contents+de.lr | 2 +- src/content/tags/bread/contents.lr | 2 +- src/content/tags/cake/contents+de.lr | 2 +- src/content/tags/cake/contents.lr | 2 +- src/content/tags/cheese/contents+de.lr | 1 + src/content/tags/cheese/contents.lr | 1 + src/content/tags/chocolate/contents+de.lr | 1 - src/content/tags/chocolate/contents.lr | 1 - src/content/tags/cookies/contents+de.lr | 2 +- src/content/tags/cookies/contents.lr | 2 +- src/content/tags/crust/contents+de.lr | 1 + src/content/tags/crust/contents.lr | 1 + src/content/tags/dip/contents.lr | 2 +- src/content/tags/dressing/contents.lr | 1 - src/content/tags/drinks/contents.lr | 2 +- src/content/tags/glutenfree/contents+de.lr | 2 +- src/content/tags/glutenfree/contents.lr | 2 +- src/content/tags/ingredient/contents+de.lr | 2 +- src/content/tags/ingredient/contents.lr | 2 +- src/content/tags/main-dish/contents+de.lr | 2 +- src/content/tags/main-dish/contents.lr | 2 +- src/content/tags/muffins/contents.lr | 1 + src/content/tags/raw/contents.lr | 2 +- src/content/tags/salad/contents+de.lr | 2 +- src/content/tags/salad/contents.lr | 2 +- src/content/tags/sauce/contents+de.lr | 1 - src/content/tags/sauce/contents.lr | 1 - src/content/tags/savory/contents+de.lr | 1 + src/content/tags/savory/contents.lr | 1 + src/content/tags/spread/contents+de.lr | 2 +- src/content/tags/spread/contents.lr | 2 +- src/content/tags/sweet/contents+de.lr | 2 +- src/content/tags/sweet/contents.lr | 2 +- src/content/tags/xmas/contents+de.lr | 2 +- src/content/tags/xmas/contents.lr | 2 +- src/databags/i18n+de.ini | 9 +- src/databags/i18n+en.ini | 9 +- src/models/recipe.ini | 5 +- src/models/settings.ini | 10 +- src/packages/force-update | 1 + src/packages/helper/lektor_helper.py | 172 +++++++-------- src/packages/time-duration/.gitignore | 5 + src/packages/time-duration/README.md | 4 + .../time-duration/lektor_time_duration.py | 86 ++++++++ src/packages/time-duration/setup.py | 38 ++++ src/templates/cache.manifest | 54 +++++ src/templates/cluster.html | 8 +- src/templates/layout.html | 30 ++- src/templates/macros/recipes.html | 23 +- src/templates/recipe.html | 29 +-- src/templates/recipes.html | 4 +- src/templates/root.html | 2 +- 98 files changed, 1310 insertions(+), 306 deletions(-) create mode 100644 .gitmodules create mode 100644 Makefile create mode 100644 data/development/brownies-raw/contents+de.lr create mode 100644 data/development/brownies-raw/contents+en.lr create mode 100644 data/development/brownies-raw/contents.lr create mode 100644 data/development/brownies-raw/image.jpg rename {src/content/recipes => data/development}/contents.lr (100%) create mode 100644 data/development/gluten-free-flour/contents+de.lr create mode 100644 data/development/gluten-free-flour/contents+en.lr create mode 100644 data/development/gluten-free-flour/contents.lr create mode 100644 data/development/gluten-free-flour/image.jpg rename {src/content/recipes => data/development}/vanilla-cut-out-cookies/contents+de.lr (60%) create mode 100644 data/development/vanilla-cut-out-cookies/contents+en.lr rename {src/content/recipes => data/development}/vanilla-cut-out-cookies/contents.lr (50%) rename {src/content/recipes => data/development}/vanilla-cut-out-cookies/image.jpg (100%) rename {src/content/recipes => data/development}/vanilla-cut-out-cookies/image2.jpg (100%) rename {src/content/recipes => data/development}/vanilla-cut-out-cookies/image3.jpg (100%) create mode 100644 data/distribution/contents.lr create mode 100644 data/export-yummy.py create mode 100644 data/generate-alternates.py create mode 100644 requirements.txt create mode 100644 src/assets/app.webmanifest create mode 100644 src/assets/favicon.ico create mode 100644 src/assets/img/favicon.svg create mode 100644 src/assets/img/icon-180.png create mode 100644 src/assets/img/icon-196.png create mode 100644 src/assets/img/icon-32.png create mode 100644 src/assets/img/icon-glutenfree.svg create mode 100644 src/assets/img/icon-glutenfree_old.svg create mode 100644 src/assets/img/icon-raw.svg create mode 100644 src/assets/img/icon-vegan.svg create mode 100644 src/assets/img/icon-yield.svg rename src/{root => assets}/index.html (100%) delete mode 100644 src/assets/static/col2.js delete mode 100644 src/assets/static/lozad.min.js create mode 100644 src/assets/static/script.js create mode 100644 src/configs/force-update.ini create mode 100644 src/content/app.appcache/contents.lr delete mode 100644 src/content/recipes/vanilla-cut-out-cookies/contents+en.lr create mode 100644 src/content/tags/cheese/contents+de.lr create mode 100644 src/content/tags/cheese/contents.lr delete mode 100644 src/content/tags/chocolate/contents+de.lr delete mode 100644 src/content/tags/chocolate/contents.lr create mode 100644 src/content/tags/crust/contents+de.lr create mode 100644 src/content/tags/crust/contents.lr delete mode 100644 src/content/tags/dressing/contents.lr create mode 100644 src/content/tags/muffins/contents.lr delete mode 100644 src/content/tags/sauce/contents+de.lr delete mode 100644 src/content/tags/sauce/contents.lr create mode 100644 src/content/tags/savory/contents+de.lr create mode 100644 src/content/tags/savory/contents.lr create mode 160000 src/packages/force-update create mode 100644 src/packages/time-duration/.gitignore create mode 100644 src/packages/time-duration/README.md create mode 100644 src/packages/time-duration/lektor_time_duration.py create mode 100644 src/packages/time-duration/setup.py create mode 100644 src/templates/cache.manifest diff --git a/.gitignore b/.gitignore index 01de35e..3d967d2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +bin/* +build-state/* +data/distribution/* +!data/distribution/contents.lr + + # Created by https://www.gitignore.io/api/macos # Edit at https://www.gitignore.io/?templates=macos diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..2c52dad --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/packages/force-update"] + path = src/packages/force-update + url = https://github.com/relikd/lektor-force-update-plugin diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..86a6e87 --- /dev/null +++ b/Makefile @@ -0,0 +1,38 @@ +PROJDIR := 'src' + +help: + @echo + @echo 'make clean - Removes all temporary server-build files (not ./bin)' + @echo 'make server - Start lektor server with live change updates' + @echo 'make build - Build deployable website into ./bin' + @echo + @echo 'make find-links - Search for cross reference between recipes' + @echo + +# Project build & clean + +clean: + @cd '$(PROJDIR)' && \ + temp_path="$$(lektor project-info --output-path)" && \ + if [[ -d "$$temp_path" ]]; then \ + echo "rm -rf $$temp_path"; rm -rf "$$temp_path"; \ + fi + +server: + @cd '$(PROJDIR)' && \ + (rm content/recipes; ln -s ../../data/development/ content/recipes) && \ + lektor server + +build: + @cd '$(PROJDIR)' && \ + (rm content/recipes; ln -s ../../data/distribution/ content/recipes) && \ + lektor build --output-path ../bin --buildstate-path ../build-state -f ENABLE_APPCACHE + +# Helper methods on all recipes + +find-links: + @echo + @cd '$(PROJDIR)/content/recipes' && \ + find */*.lr -exec grep --color=auto -i ".\.\./[^ ]*" -o {} + \ + || echo 'nothing found.' + @echo diff --git a/README.md b/README.md index 740a049..8807073 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,47 @@ Lektor recipes ============== -Generating a static site for recipes. -Small, fast, multi-language, indexed. +Static site generator for recipes; built upon [Lektor](https://github.com/lektor/lektor/). ![screenshot](img1.jpg) -Styling is optimized for desktop, mobile, and print output. -At some point I may add search filters and offline archives for mobile devices. -This project is built upon [Lektor](https://github.com/lektor/lektor/). +Features +------- + +- Responsive design (desktop, mobile, print) +- Mobile application (AppCache & app manifest) +- Offline cache (local storage [150 recipes ~ 3mb]) +- Multi-language (DE & EN, more can be added) +- Blazing fast (due to cache and minimal data usage) +- Indexed (group by time, ingredients, or tags) +- ~~static search~~ (**not yet**, but coming soon…) Install ------- -1. [Download](https://www.getlektor.com/) Lektor and follow the instructions. +1. Download [Lektor](https://www.getlektor.com/) and follow the instructions. 2. Clone this repository and change to the `src` directory. -3. Run `lektor server` to run a local server and preview the page. **Note:** Open http://127.0.0.1:5000/en/ instead of the default `/` path.\** +3. Run `make server` to run a local server and preview the page. - -### Deploy - -You need to add a deployment setting to the project file. -Either apply something from the [official docs](https://www.getlektor.com/docs/deployment/), -or run a custom rsync command: - -``` -rsync -rclzv --delete --exclude=.* SRC DST -``` - -\** You don't have to worry about the redirect. -The `root/index.html` is copied to the destination. -Instead, you could also delete `root/` and change the project file. -Set `url_prefix` to `/` for one of the alternates. +4. For distribution run `make build` and add an [official deploy](https://www.getlektor.com/docs/deployment/). ### Modify Thanks to Lektor you have a simple content management system (see screenshot below). -Two things to note: +A few things to note: 1. Measurements have to be added manually to settings. Don't forget to __pluralize__ (c, cup, cups, etc.) -2. You can __group ingredients__ if the line ends with a colon (`:`) +2. You can add __ingredient groups__ if the line ends with a colon (`:`) + +3. The preferred __image size__ is `800x600`. Please scale all images down to save bandwidth. Try to keep an aspect ratio of 4:3 for the first image, or it will be cropped on the recipe overview page! All other images will be shown unmodified in whatever aspect ratio is provided (individual recipe page) + +4. __AppCache__ is disabled during development. However, you can pass `-f ENABLE_APPCACHE` to any `lektor` command to enable it. The makefile does this by default for the `build` target. Also, see [Lektor docs](https://www.getlektor.com/docs/) and [jinja2 template](https://jinja.palletsprojects.com/en/2.10.x/templates/) documentation. diff --git a/data/development/brownies-raw/contents+de.lr b/data/development/brownies-raw/contents+de.lr new file mode 100644 index 0000000..45a7a5f --- /dev/null +++ b/data/development/brownies-raw/contents+de.lr @@ -0,0 +1,19 @@ +yield: 20×20cm Backform +--- +ingredients: + +2 Tassen Walnüsse +1 Tasse Kakao +1/4 TL Salz +2 1/2 Tassen Datteln, weich, Medjool + +Optional: +1 Tasse Mandeln, grob gehackt +--- +directions: + +Walnüsse im Mixer fein hacken. Kakao und Salz hinzugeben und miteinander vermixen. + +Datteln nach und nach einzeln hinzugeben, während der Mixer weiter läuft. Die Mixtur sollte bröckelig sein aber beim Zusammendrücken leicht zusammenhalten (wenn es nicht zusammenhält, noch mehr Datteln hinzugeben) + +In einer Schüssel die Mandeln mit der Mixtur vermischen und in eine Kuchenform pressen. Bis zum Servieren im Kühlschrank, luftdicht verschlossen halten. diff --git a/data/development/brownies-raw/contents+en.lr b/data/development/brownies-raw/contents+en.lr new file mode 100644 index 0000000..4a483c0 --- /dev/null +++ b/data/development/brownies-raw/contents+en.lr @@ -0,0 +1,19 @@ +yield: 8×8 square pan +--- +ingredients: + +2 cups walnuts +1 cup cocoa powder +1/4 tsp salt +2 1/2 cups dates, soft, medjool + +Optional: +1 cup almonds, roughly chopped +--- +directions: + +Blend walnuts on high until finely ground. Add the cocoa and salt. Pulse to combine. + +Add the dates one at a time through the feed tube of the food processor while it is running. What you should end up with is a mix that appears rather like cake crumbs. But when pressed, will easily stick together (if the mixture does not hold together well, add more dates). + +In a large bowl, combine the walnut-cocoa mix with the chopped almonds. Press into a lined cake pan or mold. Place in the fridge until ready to serve. Store in an airtight container. diff --git a/data/development/brownies-raw/contents.lr b/data/development/brownies-raw/contents.lr new file mode 100644 index 0000000..8adbf36 --- /dev/null +++ b/data/development/brownies-raw/contents.lr @@ -0,0 +1,13 @@ +name: Brownies, Raw +--- +tags: cake, glutenfree, raw, sweet +--- +time: 15 +--- +difficulty: easy +--- +rating: 4 +--- +source: https://mynewroots.org/site/2011/04/the-raw-brownie-2/ +--- +date: 2013-09-01 diff --git a/data/development/brownies-raw/image.jpg b/data/development/brownies-raw/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c67302e6dcf1de0ebe00c8c7cf4ec01d8d6fa3e8 GIT binary patch literal 83180 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 rSgo@8j~(BR{iv=J-~Z~K+n>`r +

Pfeilwurzmehl
+
+Diese leicht verdauliche Stärke wird aus einer Kombination mehrerer Wurzeln gewonnen. Es kann als gesündere Alternative für Maisstärke, zur Verdickung von Soßen verwendet werden. +
+
Maisstärke
+
+Aus Mais gemahlen, ist diese Stärke ein hervorragendes Binde- und Verdickungsmittel. Maisstärke erzeugt bspw. bei Brot eine großartige Kruste. +
+
Kartoffelstärke
+
+Ausgezeichnete Stärke um Backwaren mit Feuchtigkeit zu versorgen. Bitte beachte, dass Kartoffelstärke und Kartoffelmehl zwei verschiedene Dinge sind – Etikett sorgfältig lesen. +
+
Tapiokastärke / Tapiokamehl
+
+Aus der Maniokwurzel extrahiert und gebleicht, wird Tapiokastärke typischerweise als Verdickungsmittel in Rezepten verwendet. Dies ist eine aromatisierte Stärke. Sie verleiht dem Backgut eine gewisse Leichtigkeit in der Textur. +
+ + + +#### Mittlere Mehle: +Obwohl diese Mehle an sich nahrhaft sind, sind sie bei der Verwendung in einer Rezeptur etwas leichter und stabiler. Sie können in Verbindung mit einer Stärke auch einzeln verwendet werden. + +
+
Favabohne / Ackerbohne
+
+Die Favabohne kommt typischerweise in einer Mischung aus Kichererbsenmehl vor. Sie lässt den Teig schön aufgehen, hat aber einen ausgeprägten Geschmack. +
+
Kichererbse
+
+Einer der besten glutenfreien Mehle, der einzige Haken ist ein sehr ausgeprägter Bohnengeschmack. Lässt die Backwaren außergewöhnlich gut aufgehen. Kann einzeln mit Stärke verwendet werden. +
+
Hirse
+
+Mit einem trockenen und leicht nussigen Geschmack ist Hirsemehl ein überwiegend stärkehaltiges Getreide. Der Proteingehalt gleicht dem von Vollkornmehl. +
+
Hafer
+
+Dieses Mehl, das direkt aus Hafer gemahlen wird, ist reich an Vitaminen und Ballaststoffen. Es ergibt einen schönen, gleichmäßigen Geschmack und lässt die Backwaren gut aufgehen. Kann einzeln oder in Kombination mit anderen Mehlen verwendet werden. +
+
Quinoa
+
+Trotz seines sehr ausgeprägten Geschmacks ist Quinoa ein weiteres großartiges Mehl. Es kann einzeln oder in Kombination mit anderen Mehlen verwendet werden. Es ist nahrhaft, enthält viele Mineralien und Vitamine, und produziert eine hervorragende Textur. +
+
Sorghum
+
+Sorghum neigt dazu, die Textur und Leichtigkeit von Weizenmehl nachzuahmen und verleiht den Backwaren eine gewisse Zartheit. Aus diesem Grund ist es eines meiner Lieblingsmehle. +
+
Weißer Reis
+
+Berühmt dafür, eine kiesige Textur zu erzeugen. Bei diesem Mehl ist es wichtig, einen sehr feinen Mahlgrad zu wählen. Es ist ein sehr verbreitetes Mehl, das aus gutem Grund in vielen Mischungen verwendet wird. Es ist leicht und liefert hervorragende Ergebnisse. Hinweis: Süßer Reis unterscheidet sich vom weißem Reis und sollte eher wie eine Stärke (und in kleineren Mengen) verwendet werden. +
+
+ + +#### Schwere Mehle: +Das sind dichtere und nahrhaftere Mehle. Sie werden selten einzeln verwendet, sondern in Kombination mit mittleren Mehlen. + +
+
Mandel
+
+Mit einem schönen Kick an Proteinen ist Mandelmehl eine gute Möglichkeit, deinen Backwaren einen butterigen Geschmack zu verleihen. Es ist ein gutes Bindemittel und verleiht Feuchtigkeit (besonders wenn du keine Eier verwendest). Für Paleo-Diät sind Nuss- und Kokosmehle eine Korn-freie Alternative. +
+
Amaranth
+
+Aus den Samen der Amaranthpflanze gewonnen, ist dieses gemahlene Mehl dichter und nährstoffreicher als die meisten Mehle. Es kann in Backwaren die wenig aufgehen einzeln verwendet werden, oder in Kombination mit einer Mischung aus mittleren Mehlen. +
+
Brauner Reis
+
+Braunes Reismehl ist sehr vergleichbar mit Vollkornmehl. Es hat viele Nährstoffe und verleiht deinem Rezept eine gute Struktur. Idealerweise sollte es superfein gemahlen sein – sonst entsteht eine kiesige Textur. Es kann mit einer Stärke einzeln verwendet werden oder in Kombination mit anderen mittleren Mehl(en). +
+
Buchweizen
+
+Lass dich sich nicht von dem Namen täuschen, Buchweizen wird nicht aus Weizen gewonnen, sondern aus einer Frucht. Dieses Mehl kann deinem Backgut einen schönen braunen Farbton verleihen, ist voll von Nährstoffen und Dichte. Es muss in Kombination mit einer Stärke und einem mittlerem Mehl verwendet werden, insbesondere für stark aufgehende Rezepte. +
+
Kokosnuss
+
+Kokosnuss absorbiert sehr viel Flüssigkeit im Rezept. Deshalb nur in kleineren Mengen (ca. 1/4 Tasse) und in Kombination mit anderen Mehlen verwenden. +
+
Mais
+
+Ein herzhaftes, dichtes Mehl. Maismehl kann der Mehlmischung eine schöne Textur verleihen, ähnlich wie bei einem Maisbrot. +
+
Teff
+
+Teff ist ein einzigartiges, aromatisiertes Vollkorn Mehl, das in äthiopischen Lebensmitteln verwendet wird. Es ist leicht, erzeugt aber gleichzeitig eine dichte Textur, so dass es am besten in kleineren Mengen (wie Kokosmehl) und in Kombination mit anderen Mehlen verwendet wird. +
+
diff --git a/data/development/gluten-free-flour/contents+en.lr b/data/development/gluten-free-flour/contents+en.lr new file mode 100644 index 0000000..72f705e --- /dev/null +++ b/data/development/gluten-free-flour/contents+en.lr @@ -0,0 +1,134 @@ +name: Gluten-Free Flour +--- +yield: 9 cups +--- +ingredients: + +6 cups flour +3 cups starch +--- +directions: + +1) You'll need 1–2 starches (light flour) and at least 1 medium flour. Based on the prefered flavor and texture, you can mix in another flour (medium or heavy). + +2) Spoon out flours with a spoon and level off with a knife. + +3) Place into an air-tight container and shake well. + +4) Keep stored in a dark, dry place or in the refrigerator. + + +### Existing blends + +#### [Cara's All-Purpose Blend](https://forkandbeans.com/2013/02/13/the-best-gluten-free-flour-blend/) +- 3 cups brown rice flour, superfine ground +- 3 cups sorghum flour, superfine ground +- 1.5 cups arrowroot powder +- 1.5 cups potato starch + + +For the [Light Blend](https://forkandbeans.com/2015/11/18/gluten-free-flour-blend-for-cakes/) (perfect for cakes, cupcakes, muffins, etc.) – replace sorghum with white rice flour. + + +#### [Sarah's All-Purpose Blend](https://sarahbakesgfree.com/2012/05/sarahs-gluten-free-flour-blend.html) +- 4 cups brown rice flour +- 2 cups white rice flour +- 2 cups potato starch +- 1/2 cup tapioca flour +- 1/2 cup corn starch +- 5 tsp xanthan gum + + +### Create your own blend + +#### Light based flours: +These are all of the starches — a must when creating a blend of gluten free flours. + +
+
Arrowroot Powder
+
+This easy-to-digest starch is extracted from a combination of several plant rootstocks. It can be used as a healthier sub for cornstarch in thickening up sauces and gravies. +
+
Corn Starch
+
+Ground from corn, this starch makes for a great binder and thickening agent. Check for a great non GMO brand because cornstarch can add a great outer crust for your breads. +
+
Potato Starch
+
+This is my go-to starch for it's ability to add moisture into baked goods. Please note that potato starch and potato flour are two different things – read the label carefully. +
+
Tapioca Starch / Tapioca Flour
+
+Extracted and bleached from the cassava root, tapioca starch is typically used as a thickening agent in recipes. This is a flavored starch to use in a blend for its ability to bring a certain lightness in texture to the baked good. +
+
+ + +#### Medium based flours: +Though nutritious in their own right, these flours are a bit lighter when used in a recipe and are more stable to be used alone paired with a starch. + +
+
Fava Bean
+
+Fava bean can typically be found with a mix of garbanzo bean flour. It yields a really nice rise but has a distinct flavor. +
+
Garbanzo Bean / Chickpea
+
+One of the best result-producing gluten-free flours, the only catch is its a very distinct bean flavor. The rise in your baked goods will be exceptional and can be used alone with a starch. +
+
Millet
+
+With a dry and slighty nutty flavor, millet flour is a predominantly starchy grain with a protein content that is similar to whole wheat flour. +
+
Oat
+
+Ground straight from oats, this flour is rich in vitamins and fiber. It yields a nice even flavor and a great rise to your baked goods. Can be used alone or in a combination of other flours. +
+
Quinoa
+
+Despite it's very distinct flavor, quinoa is another great medium-based flour that can work alone or in combination to other flours. It's nutritious, dense with minerals and vitamins, and produces a great texture. +
+
Sorghum
+
+Sorghum tends to mimic the texture and lightness of wheat flour and will give your baked goods a certain tenderness. For this reason, it's one of my go-to flours in my flour blend. +
+
White Rice
+
+Notorious for yielding a gritty texture, it's important to get the finest ground for this flour. It's a very common flour used in blends for good reason, it's light and gives great results. Note: Sweet Rice is different from White Rice and should be used more like a starch and in smaller amounts. +
+
+ + +#### Heavy based flours: +These are the more dense and nutritious flours that are rarely used alone and will need to be used in tandem with another medium-based flour. + +
+
Almond
+
+With a nice kick of protein, nut meal is a great way to give your baked goods a buttery flavor. It works best if you add a little into your mix (especially if you do not use eggs) to yield a nice binding result and overall moisture into your recipe. If you are Paleo, nut and coconut flours are you to-go grain-free flours. +
+
Amaranth
+
+Derived from the seeds of the amaranth plant, this stone ground flour is denser and more nutritious than most flours. It can be used alone in low rise baked goods or in combination with a mix of medium flours. +
+
Brown Rice
+
+Brown rice flour is very comparable to whole wheat flour, with its dense nutrition and great structure it lends to your recipe. It's best if you use it in superfine ground form – this way you will avoid that gritty texture. It can be used alone with a starch or in combination with another medium flour(s). +
+
Buckwheat
+
+Don't be fooled by its name, buckwheat is not derived by wheat but rather a fruit. This flour can give your baked good a nice brown hue, full of nutrition and density. It needs to be used in combination with a starch and medium flour, especially for higher rising recipes. +
+
Coconut
+
+Coconut has a great way of absorbing the liquid in a recipe, which is why it needs to be used in smaller amounts (think 1/4 cup) and in combo with other flours. +
+
Corn
+
+A hearty, dense flour, corn flour can add a nice texture to your flour blend, similar to a corn bread toothsome feel. +
+
Teff
+
+A unique flavored whole grain, Teff is a very common flour used in Ethiopian food. It's light but creates a dense texture at the same time so it's best if used in smaller amounts (like coconut flour) and in combination with other flours. +
+
diff --git a/data/development/gluten-free-flour/contents.lr b/data/development/gluten-free-flour/contents.lr new file mode 100644 index 0000000..c909951 --- /dev/null +++ b/data/development/gluten-free-flour/contents.lr @@ -0,0 +1,9 @@ +tags: bread, glutenfree, ingredient +--- +time: 5 +--- +difficulty: easy +--- +source: https://forkandbeans.com/2013/12/30/guide-gluten-free-flours/ +--- +date: 2013-08-09 diff --git a/data/development/gluten-free-flour/image.jpg b/data/development/gluten-free-flour/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0b39f9116a7c4b3e83871a5a2024cfe64a31b96 GIT binary patch literal 102479 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�i zX6@b_aiAb##`OOTM=qY48f+o^GS6t|d#6MN^{s3ZrsW-a_9&Cv{btG5{>)TnCFZ$@ zwypcmF!$BUiC%9Hs=iI1S|)bmkY`xk>}?M|Yn@oU)p7Zzv(F4fk2qVdV_5V$Tu4J* zR3KgNmB#5UlkcucnO~gexKnnzYQM1G_u_f;HIx+6?)0es`FP^uKG|tSmbXG&_5F&D zUs@E-Iz87cP1?{qdu#nEjkxR;#$7#WPB$KZDs;E}&%oAoSz&og=qZMF+ldRiY*))g zNtU~be^r`aRr6?)n~tMRV7U69+yjfnd=uM~BNjW<{ge2pY|pW#`uDXu28QRKQ~s_j z;uWeq8Yd>nllksRcxcDdFIQ$h$y9qZ$>Olsy6)}!S&gbcR4nr zE1u~2TnoIz`c-7oud{2HF$i6l*rxkd_KC^*4mMZ~x?X{M(xK|86(>{>){Qtq8^)47i4-3iLA5%fFN z7j3N6iY47a1STyX99mGk0NTSlqd; zh4m*U8SJj!y5;EilxLm!S>G0SO`X-4?0IYN>ae!RL?!{BZI9}jN>3Q`pGsS^(PTeg zcK>PHm9z6r`gbjWw~(Az2%p=cUf=g46>ROeJ_*Gsq4}sp_S8Wnl3eeE#TRDSu*#5S(a)+ zo%b_i_f0xb%Cr1VyhEO7+21Skm#uupcIbNG?o9`Z&gSyG+r3J|$=apCC@%Ii&n1oi zjOdx~;{P+uol|tI%s|aK_iB$ePuP;xTpeBSGP$&KIJ*ueHb&J{uetuc?~%FF;yu15 z-0{*+@3S$+L-|5zjX;8V)~vR-5q-JP|!OA`CE@Xr#-E;7PItO=hIV=Sk|1o z-*kD@jM$m`*6rgnJbG(-zxKUM6<0m+*(P~2%Ig-N-cr?d^-1fKJIk})2hREKU6FR< zRITSmwiDu}3ip_-dbbz4%kY#ZOo|r>Z6{W* zR+*7fTd+!4#o_8^M!sWmvw1(}mEGQ0vt{$Q*dreDN)uBb%+pYFU$r=B=E<`*d)|s@ zTgnT3{Lc_lKJl!!ee%uSA>TD6x#!pf<-PYRKI)&RDjogO>~U0*(T-C6$khjFW>b>%jI^ZrTbZ|UOIc# zy)`qY=p@gYyU+Qpb?1$bNp43~n`OSt>QPfs2s(ATm3hXmO~QZIXIx^~d->$KeRt;S z-8gw=g6!FRk>sN0ZP6afZXLJSd2b_2@44JJGaud5p1W;!(vC^ITcrPl^zP(HY^;Y2MTU*fj(!Y>P3-DR$Qp2sh)sqDG8AX9eR=bO)3ml;m>Tyd1^yU~^M${L$m6YtcC zzb5ALeC{})x-l?jrmg158~5)9nXzfhJU{TyFGT+1PR;queRpF|2kCuVvH0<ZvJf6dn(}D^4cxyj^Apl;dnGn zcgZX+`|l46#Y4H~-O8IbE$1C)x}3yw`w8`yzeDD(Dhu_|e0KMpRDr7WV!n-hKUTg^ zo#fY3A9PGQJ>bvr-X*{Mm}K`&z8|#tmC&-(JS(J9D^tp4mugtbFx0y!cJ=mXyWjXTthZZk6_E zF>mUc!XmvvGCYsnpK1B_NP)&M@5^`gb{SXC%8NcQOZ|a7Tln{<6aF)7yuIUqv_I3X z*w=<`J!c;0p4~X_?o|0+BjN0fiKly?7grZ3xyoF-abc%VO11FaB?$)@kJLX2(-uA7 zX2W@u?R=ZYB{O&1*Yc$+Eduwgsxhn*2&`VF~iGFz0Us`COtK}@_o8ytxWrsZBj>y?cL(1eNR+9@TzLDgiKfUG;#jp zr)JEIm#$R`X%4Vu-kG~D=_T{s$?WV~JFKoztCwfaV*Y)>ZQF{8 z0Uqf&I}Ug#){1C`>aCQW;E*xVYrVnlP!W?!9u3!Xr@dyXTK48r-c}dE)tR$4YZSRY zP&MR~IyU(~gXJDkRvON<4Q7uRl@qsB0EH)~g}&N+)#g;&o)STs)s&6L{6srdB8p*tGd%zYcKv0R&2 z61(qsA@^jv4~fxboik3HndFxoCgA(qdX31c zjnbxLb}8>B%Rb^vD4)e^{hy&mTMjv1k4*vB}adyW8h&ImgxAuYJ(GoB5*0BYiE|wE}bJ9+@1| z&>$HuvHL{4@3n(%@g^P%RoDaU4W(5sZ)1M1J9)`}hLd_1dm~cMJiAyjFJEcV7q$(P z7`@`!oT{#_m=dMiCC?h@;Hh96#c<91ZX17v-AiZb#Vb!p%$u@Y+&Nw)DBpQ)&v}ag zE>EUBgPA*4U!J2EuJZfI+>~i|5+q5$!~7Sj>pgccyZvDK+63! z99!mIkU4Ljrn^hnmFsq8t z2431*%_cBqdAeXzPt(qGdiJ~bu9s@h#QAa)5Tm@OCA0*SeW)sn$a3N z^X!23Zk=K}sU=Ym8goS6R5Kvq%f>U_VKyH5Q|4B~M$oOh*-jVZNygTJuHp@dzP z0Zqw*yc<+?TJ6-$qjmVj)_+{KE4`gVJ!FE*jv0z`UK^gbU{1DuWUP1Ldb4m~_zEpg zX@{e}t9S49RuPSxoV7(glRaeG*$A)12Rpn@m!w5MlkR-ZC>}IPw#L-wk|UdV+V`MW zDq&gT1xuf-Vv4-7NLpQFkK}=6g1TwD<}8sg`w=F=SED&6ZpWfGQF%WFzZ_l6Z921A zuXo9FD8iEtB+e z+83&}+zT<>)Y9a%Zd%EN$80Z6O_LH@c0HY#8aMl`M5vgz*y?EuUQ9U@^1?Iev9J?& zt-n~u+>WVlB(?N6Yi>~xSyF%GeyRn-A>XIg3=6vjRJlEOL|&Ptl^!DbOzFz~?^@X> zGc_H~_{DNCbZ-_F4lEO&adq9io=EL`YF|$3Hf_~-cj4Jf*8K*;D<&OUc=pPv*|*oY zpOt)mBvC^4XZgT^Ss739ZlzmRBa{JGw2hB|VuQk@axjFY|2iy9qWqCIw zlBT@cdOf*uMfI`(4-KX80&%a5AA6LSa6WT}7*)P%L4Lr*W?B%>MbQIO#@JL=5_15@7TjAxqd798yAiENtU_vOs9 zRaacucXO%Eattay_~6V;12spjqk89_nTcjd`R;RcG>HDz5UxAni0*2}@F&ZDZEd}I zYRWmCZ*p0Iwkm5hJDw$NJ`!L$D~;pGwAO!b*&LGRRX@~yFPy$==Cz-J4A$1RNhkaF zB$;i{;+wQcbt{*7z*Nc83}Pp*nQxq<+ci}|bDglMIv0mYX~VFqPu zeC{{uxD`aba+8pJq%iBpfeV-a8vnC4`n~D7sN_DDBp!B#2@bj)M(i$E{xe)H=n38> zV!Ce5s|%SOdCI4Zn%jEX*DPQPlGynuMd^a{)94qs4|c0`U-MKvvGmE-h|TvhJg#u@ z+cXD#O;otY;HmF@%2(Z8Fl%w))+U*I9z_8s*(NNRu(1D;PO8!;{fAthUU4tI-zzk) z4rH8i;0pf{=cWIezdCIVc*U*K{%hUIRUM*^2|rlvxCA2I&IC;C^Y_@jHSL_oO;#0? zWs^$|UjN>dX|(jAUmDASaM#tXuh-OzOZZ%PaF2hcs>_l<|EpZr{4{yhSS|M$?%#7! zYqPD+15HIxy>f;rav4vYrzdlSK*lE7HhrF@-0K`gLLYeMlrpw32sY@4^ZT^qENyf0 zySusDv+HxQ;~dVf*WD_=2D`~0cQfeuoirgNy5OL4OX6dX%q8VE3#7NTy_#K6*`f7! zsqF51fksocd`}d$%)h5<-gvMxjJ+pvx+a6l`<&>4mP^GCf>InG%;1_e<$I9#MdRa7 z43^wI`BBB#f~hcFRjqIR(svtJ=Pu|C%;3l6odH9+&#hYaogN<3TqN6Erdh^y zPKn*!wqjqWWpJLs29d_hRS$Y6Wa>T>ckMJj>3S(P=1^i#Ovmf&qd#UHV7OBkzSB4; zpmf42-&m1ZaTURvdZm}ho+$9)Y-yUw9KYvEVDNV(f}lnG=qsUS^ODHu(I~M^hzmVN&@9mi)}UJnAu`g2q2q zdKtMeRx)(S)9Oz$7+Wry0Yw0@36K>TB;ruF{!*+O`j|FO3RhMLA5yx z|1+dFPe_}amVQrx`%Q0<-Wwmi5}@$j2HC-vT(CTcx$8eCcO( z@YoT5B--;T_}YYs8aO;@2J&-DN*ZC0|H#`@Q7NyR0&poAra* zUfep?rsK9-_@qvXt9lhv>7|((dqt*-aWl<2`ska=sU6&xLRM}{=)bio7nOqK4i6rjYbeH*i2WLTsY`1rn zzlPMA2eMiJ&MaBdS8$m39nG(78YBv8%W7A}Ag_Q?&3O&r*qE=16ELL>e_#RW+)#Ar| zuL_QRoVF~Xf0|f6!{SxtC5b+(5Bf-CZA(0!qWx|4rm)Qu9rQ(|*J`j>zd7Z@X+C5A z66d+a{!6+}%$qV>VsqJ5#!F`$s!p`c-eZuwU+Kvy#~zKzW?j&b9r^88a$DT#Zwq^Um^YkM`VdN%txkwtrd zBzS*yTo?2+gkxs@CC0>*?{n`*o0|j_TI>>PF{8X=dNWO-`P%G4c>;mN3}dEd*lRX%(xTV%c2%xArbe!Z^EY@<7uq- zHmF^__hW`-+Z*E_{Hre1OCOBhUf42I+v&ZkMUTsO2Z8Y4aS?W(`B!i*SjlkH)?hE! zHI`jwsYXoQDT}YNI>#DMcX`#h|4c%sYLWMjmp&?{k9ZSStn_02FmKzc=2qSrOP5?- zr6DL9!!&cs1D^?`l%)oZ}W)nZ}2T{B3 z2cB#$eqTPdmuS5=xVrmiX+qFh$p=R!@MbR(PQJB zkUP~cxapxWU+Sjlu#{8989cKM=B8}+m~!spMDaKQe%A@iejhwlZ8$PK{=VK39ID%( z{GlUawRe$M<4R#(#%a3p(J%f46>@s7IlJtQd1sgG3Tvh}oiFp(JX2I?XKH2-yjAes zxzB)cD! zdUx7Q*O}Ri?FE^lw&wm(jgWNeySdJBhtr)XJEl%eU-qYh8AmjABJEqw#8&-hI3|~6 zy-H~IB9{~?PKBkfc;0EXo+^6XYI;@mM4@k~^ntT`IVJ`9zO+n=IeAQPAtz5zUelM^ zUZs+U4u-zA-psUph0lr5IIi~!I8bCa_)_2%oQ$g_E~ekF1uTpsc0td^UXta zY0`(JE1C-eX72bBkP&me)MdJ;Ms2`CkCOiUR4KGG;aBoDrmfVaJ6O9B;PBi z933656;(RLXkELkH_7!;8l!NA--SgU2l_;_H)LiA=}p&>yy^F(`Nsmu6`k4&Y-ctb z8uYmRG@MxTH7R`K`q20(N-pc7pYCFHl=W?tKEk!!UL)A@p)bqpf-`BcOFzEquYDiX zn<~A~oFiz}tt>Gfxk)aT{51QwUAn_~J@ zY*Asi!^2kwnx-=pn(ZHYt^avQWW&@IzH`285>R`2BJsc}L#5aq$J8{qyz>tUDjc74 zI7~+E@9_XPR!`qbLH0lmzR7d>Hu)K~s$SjsHMG)mv7m=%!qj&&JR-z9l2`X=l?U(Y zs{D4qxyfOt-NfByiAGgUI@h>#gJL$$kXV|qn<>F^&&r?%#*(G494c5OC$&p7cyjp` zrMhmp@_J?dpWcRvUR^D0p;s(D(@Iu~m1MqF(ft?R?Xc|TsHJL|FI#2zs_19J#8tghcBY(sWtTU_ zW7+#tYNehl**QG-PR(Amd;MIcGgmBgoKqJ3v~jY(o);sEA>`4`c}O^Ef#m7 zRdln*t@xXzvH?+>TU0b6w0`C4HeU7Jb*Foq153-YlT)j|cfDAtpsHLjL3mEJmizWw zld8nBcAY$PW~Ki{!PMW~uJXD@#~^_vW)luO61keYrXN&Fp}MX{+~rkB($jnNzQ~e#=eW zx~nDAw{U7+DZk=1gZ20Bb=@alx^KOC>-THvQ$cZOSXC2rR@|R${pMo`xBku8{qO#M zp8kE_^SHlfd+*N@o3bP#+jj2t{|qN;pI)7P)O?a*{)4V-nigALPGPvUY;jd)%L3_D zYQC>6jI;V8z8wt;dKCFl;-M_7OpHCd#6-UQwWiEdrP*G!axc4eow@nMl+%igRx9;= zUMutagWxyv1f~Pm#3#K*HyS)x!+4*=c)B-S(Z603?i!om3K`RektiXQS0ipu;+?% zKly(;c=cL(a?k_^9doB^?-=*EM#c&pO6-YRc`*BkRNA57mi{|C`5QtGviS8SFo|}k z7fgzI&S1Ncp(QUe}t&N(Q!-D#cA63da4D`liopiuC4OxuW)mqmF*qyAKk5J0zCgn5@pb)#l}b zfVz#{=?ktux-Ye=+WX(9PrmOug7i)}|7X}-^*HhO+4OU^a}RkPUYKFJX$w=1zlX1J zZuTnw&02qZ+c&qyY9G3EF>Kelz7E;B+5rL^=2uodidptTasBzovp2jZXY8-8(fY*u zKI*h-E zHM8tAX86x=WT`jzcm1pb%=LGdOqtqksu7oc{?kgsOWz$@KKMTJ%(733TC(iQ?fAVv z^_b>A6PUnIU)!?i*7d(mdslEpTeqs}sW7C~&rV*fUsXFt|6Ua1g}~S=3VN%9>?W>S z>agiM+qpYhFFefGN6xlQsM2-o&)8sh_N_u|j1#BV{$B^IrYz^O-x_w!e`Uh_(lqh+ z`qi7RcQv`*uhb1QPrmt{TQKvzzUcy{%lBB?%GustJ|;Fr?exvJ@27bFeKeCNVDIeh zG1^i88Ju(lbk;>M2?%kRcgF3y77?B{-~WR;-@-tSMZJ}i*IJm!b=XeuWMm7;oRh5~ ztNAUADR0?3i=Fwt;x3w}?(4MgE=WmqSm@+aFMH|9R?~KkM3V-eXKI;0+P@rJ==0|E zvq}6pUa#CA{tR;Ff7;R>6+KTV<=vFHlC0SWf9b6Gm&`C_WjPnmi>XU{r|vY(JWwfc zU~8n_IgXM$0*gX)x?-Lk6^~VsT(XQ~5wqbDE43|a5;>%`OSY_RG_qJ`pcU->VW#kP zmW_M8O0v#IEo0kkp|IC*nNZWj+HQ8?G9xa5jg^;eL-uXi^-$@hXH~AsJ(Xs)v_rb3 zb2rT}zjWY=$>&a16{d%G+9!Lr#HQVy$&%HOAt$Qj*)nyPB`V9Xxj*@+w)~8Ih z|7!fMadoA(QBazU=_Bg}O$+^3YN{0-ny}=4X;@IE$*ul~Eh~-OS?2J3ZkXUZ)#GRL zxu$|A3QJGyzEp5jQ-4+58%4V}D%_WaWEyy)7-wmu8U$`(sIgYmN(gd&dv1bs$b&;x zS~r!S?O_nL6;k>jR<_1D>7av##kDE&w>Wd_w9mX;a)y16&(pSzNe}1g8F<{Beu|MT zZFBR@$&Yt9+~n<-DUn_N;cv+d#<{wzC>q>-iRGV!(I%IJMdzl?SytF2>07GewZyRU z%e)PHQ<@wZW<6khmay!t%FHiOA3ZI%Ci1N|Pr7lp%=7I-E{4`ghicj1Tx)pq?BkhZ6dnFe;LfvO(LN!}Qu6RAfeE#DA298gu(w|*HhB;0EBP5c zS;Scr9xxjay&AmdbYZ#le}o*DTVQG(oi_ID3ki_-ZX-WBpS} zZ7(y!zFw@n-O$9KchoWDI#1gk$6f1Bi*N=i?DlQETJv@Lp|Y^eb_v<)g@PvY%T7+- zv%GNoyUy-)1-7D0N2b{c96fclI{TUPvP!W(7Y=A$^u0E*@1sRT$z5ynt&=m37<)WY zXEAzn@=)3*F_o0EM48L#(|Fu?t2R8CD!l5Al}f|gDY8vQIR``Tv7LC|D#>gv8q8^# z-_K{^w5s~?)sidDf7?%G9-oq?Y~S2*QSTw|@|r^V1Hbg=&q+uO)>1t4edd-D#sfV& zomQ|`w6#pOnrATAb-AS9hukX_dNORDk5>m?V&MooG~p$q&uO;SjeLszyCZmlwk3(M z{yq`#;KQSjXP?bJcQ?>5J3VUp9#`*oJzVO>YKrsKjxkh!3Dk)XP4v5&b*MEiUHXaI zrX>*zw9b0*hI_K7G#;6uGNET);*?E!?Y9K{PG;}_xTeoW;nk|QoVWPq?p|3oY3e@i z9p2kmtyXCk3m%pR8c&E$Y;%TbA@!u4h7O*{dA~7JUs;598I`X0YTQx7CT@ z&?}cKcVsx_tEzUzb85Zpox-wPh(SHP@xE>1vY;WX39j(qCocLRbJ?&G=Lf57nkaaaF>k6nD9AAX4a+}<|Xt+?&@ zw9dWP?@q~Acm7iEaqq*APZt|{T9vQ8c=K1$r?$B5;@w}zwCr{(Uwg>B`1L+R`2z)p zQ-vxT*W8~ad_kgEN4keg(dX?9#UtOH&5b9X6Ezjj{lwe$BkYz+T&Q=2bJuH5-ZNH* zdlFv9DAl$euwIx{6ro%c=bb6R9O>4Q|J3p@TXgs2)O7amtAp(vkE}Z*7TF{dH$y-2 z?8)xH(sBc9odE7e8^v{2%-WiJquv~RanR@5v~(k{bzk=^cyo_Ef^FK;3lBc?dvI}W z-jWzQYt`ayf<`TpG96r*?*x|o-YT@@)OXMBQi)9|zmM#itM^VWYR#4DZhX30=OyJ= z@$J+U&RVJT_VIy(NxTd8c+~}oaV@#Z{;I;0m66jj)>x?QVEo6{?&~f0D^xho6|@F? zO*XXHS9@!h&dQ}7H%~{-IJ9I<PG6LOi^<@63Czm;V_A!^(J64n5D;>U0 zk^jtdZ>i9G!SW-SyB{T0sf+Jn;ZT1ty`Zi6UyVY#%%8{Cei(hVDEz~%5vnt1d#rv@ zw-Zwc&q2$}7H7_{eViHTE!OIxJZFCURR&-F3cu~C&K?nao>ltxoLLg-aL6v{rSeN@ z^^TB|oNtp1j^!T==@L^-+3vG#JA2dX&00)u@y4$vHcgNdxmMNmYTxRGGo>#joqId$ z>>bVRJs&b=F>+cRc-TGXOt!I^=&p3H16J3)#ZRWlrmS*3s^l7X&b$4Vf()OlF3&+1 z9yQjd7KLV>#!Y1xS9PBIlp?YJ)Qa8OCU(~n-U=R*G-rKQdp6*UVVUO^TgTO#&#?yZ z$Mm~Dt-j#4raSNGQr6Z5wFN2q?GqUuTx@@3%=%!``~5RpE?;bHxbObqH&@l`u6}v` zhSS$I<`-Vn`zT)HHtlogi#c&01YDRu)J?b`eTuK}fIG(n<>HEZ7SF3{n~t|wYgXp( z{&i^8;`nE4G&W7T-X~PJg-_tg&a0|Qjh^P-ToOWe4c<+c_5X8W{@o=r8|+!HYX-Km zTkh3(tKf4>Btq!O%21YRGc5P0>~g(i>gV|Prs%|;oZA_`mx3l$Fqa9NC@dGBl_Ec} zDcvA-p1AiD1>S_t*|&{%R;=E+&^@vD595MF^9((!%ejS-^(|5JFr9Ehm0@I|gGWMKn z3c5WP{pmc`RI{2b=-|hPY%G6y)vq(2e{i@*ZSfvAWsl`^{CB+gQloJCx-Ap0Z2>4; zK3#0*5S6ns5LlbH-=CNLLd$$-uiXpnAOBFeX}!uhOmx-F!cz=S4_CXK>MYrKu;s&< zx(t!}TNXJ_4ogfqv-C%>!ZNi5HYx8{#!j`FlgMu{<-FqBHI^pKrMhJw?&-%)II1t~ z$zrwc+Be3g#{-tzozg>W**$Vc>O+OlP8*28O-ZB9x0j%9&y)YYGe1Pd?9(gEx~2> zDvN$w*^f7$Bwq{c3}0^eYX8B|HKDII%$lHmRerao!mIgHTQ5zVX|-V{%k)WpwgSrz z&SPoxn7sL9>J?_r-gyS)cZFx}@@DW&6)O>1@8UT_!XRS~{ZH!JRO>h^4&Wpda~^56vZJqK z3F~7t9WTvfTeZ?GedX_cNiz4GBgqEthuuFIt>{YvY z?Jn0f)jRi0Cwmn4PiJ5KQDCC_+;VsKFKaBy=Sy$yk8t%q!DqqYaaBWnO5CE4nw+!K zrZoqv-&OzEGlk>r&9^Y3Xf zkoe6@$p4i6n`*m{(`5cLc!V?w8&_Ppd&}+n@pal6+pqh5SP1nJ~(KtmaRLkdiNoOMG+?N*iCO3A=+>(3y%*)wWHeH47=f>9Dt|skO0e5Bz z|6c9jz13~idQ0K;HR?IWT#wEjm+QTu!w_;_DXXy6b3ez-@+r)}Eq}P_K4-UQU;M5= zW?`|Hdt#WAfgf|j$Mpxh3~V;vQ)i2No0B)EboM>@GplOEb}erA`0D*RBQoFkgk?*c z%+habc|YVE?ta@VJnd^`vfL6@hRd@JUh62U%N6cFY~QSC_u}Vty|e319C%>C^L_qa zE`4@U<)zLG@9MkHcWeBd;i>ldYvJog&E(_LUbvmC4a;nk;Qg~OJ#*Ve#_+z4CmI=8 zHnqoIv<+s?5o|9}nSCZ!>+CW1T?{i!fKl&e@wg~mS zkTKEts-)z+1n*x9x)1cMG(7FhT2Z!dvcKEJ)D;$A`eSxxSZ%AnQ)73%MrJRE-KNIr zKQ7KV-uB|u{zvTb>k2R0vA@-5+;e%=hLw{S>rMQ`ZY*!=|5@_o=2_<-ou06+^@3c- zsaoa!kOKMIpqM4wzZx)p?!92^Wq*fl_YOBM*TkevZ`l^S6EsyRi=AiOxP?C;=~ztS z*O=!zQd=@azxHfDw50OD;+N9O#tp4ii4&yw7x_83`(3y`&GW)s7umydSt>77RElQ4 zm&)j0ae37)v53k~Yg7z=t9ZI3tx5lpDIfT`Jtgk$R%0873m0zLJms9!|3tu6&b9DChLFZH|EN;l@^@#!*kgWqc0b6Qi`UQ)I6yyFCciEGMduHJHZ?yUMbUn0X_**PC~J3Ifo_TiuV zPP|&&`DtCN*w+Jo0@7#ZJ~{8~>}<3DMAI?V$IIT&G5Bq&V4l~qgzboc8sGPB+qJL$ zGhFdrC-YtWO-s8P--#0mHV;m4cvQRQzts4(gjrSh`3d9FL!l*GHMr0B-w#P^HWN9_ ze2mTDQ^LI+hsxZ`IfN4>S!bR`ri1fX;Son2E=gYw9>x2#L&Yem~;d)%5nenP|L$_p5L^2`XMrl&sP7{bX{)UXO*0XocRJKJ$~%AY2RZ1r~ZGoKBsurdFQYGXISz6htcnATJJ7RHZWxKsR%RpvAO+A zqGsW-&ew+X8duCS4NuOfG>fqND}6%t;}7@F#M?4^9y%UTu%GbAXQAtPi@^NrQxic! zb|b%kMTL__#*=IAJSI9<=Q+21N(^RqOS6#IIMx2s=ikdorMq2rCw~-sBR-GUsm8PT z>e6cce!jh;@xsPeeYJ1iu}l8DA?3lk>k=rt>M#vNkYy8K(;%Kr>{y|eA#*&h72R&2^0!|=&J-1XI3+Ep9$8z!e@ zFSO2DbLNK466NVrtQ9ufl}rv2$Wthon5S0HJ&Eze`Mqak45Y6^J$Hr;Wi&-96aL6*7d`&#XGHuQ#8~z)2?ANCsPBpt%=6F}B z(scs!%xmgfIM_bz;QTgC%0=Tuih)d9gU`uCqu=KYC#l{xEjxat=ArPGQn5P{JM~1cxsF8z46Cui2&t^CmvuyyODsH#dd%Gu~WS=JDjo_x^5+KT5HwyOk}= z>o%-xW><1gn8LW~*JZ0kyU)$`E&jWA@^h|RUh}q;^EZ1gtPEhB{H$c93g7yc6THuO zu9g4f;&9K}Xv6OAa4U}a%)2K0itHl^(he~@8`(UhKR+;RHY$;dtiN%6LMs!8eCzVt zjLG}oth#4VcP3W;l8K_qe}??;8GG&q$xfW`@q|;*L#EUZEEjxN{HncGy)f$Z12cDH z`_l`hRy@k8Q5yt7qp7oZIW=>D^$+m@t;9`=KLe`U;S|}KV@>yoN>z1cJYhb_C4wQyfC$& zZ{ib~0~6$hrs_$QIrXjZ3#n}GKE&>qzjMhX&%0cDhnmYZT-N+}w9YA}!gblIa=uAB z`Tla*Klvow@@>w!&pam|rPzFl5?arA=Rv{IUAe3*jx+?Q=~QN7neVEBy_>gN%uu< zf0t8Lzy!S&8+kSNR-EJiy@P*=)UP#CGqx;#FyAzMwd=a;m;WX;|D3%^xc{Kj(-^A4R znGZRp&wQ3HR@MA_|EeevNv*@xPg@eENFU$iJcoA*-{+ZKYo6GA5V$U2aVkdWSHJ{G z*Pf;Qui5{eVZX%d_nB>(t_C0He}-Fonx)HhZO^-yZYm?)%P~#BZ~Y~+ zYVG}wS2zEATD&|)KU7ZZ&*JS)rPB{2o;mH<>NES)2g9%0|1LuCIh_eY>}#)=@UFA? zH!D|d{gU7{-!lRe%x7|V%$M;u{;>Qq?=xODX9lH9S$8K@ChyZtu_)LMU_O~Ww{pH>Lz7p(W_{rWt)j=%W-UAOcyILf4A-bRz5M#SZf5hz zDn4GQdVKB2OMVKEc(^7d)Q5fEkzjJmQ{JzBM&F6e9{%6u{)%LSq|VnD{YQ?OA*)m;X~+*@-w`wkn;=dTO!P7j-_$ zyc*w_rGLty;`o`)%Dxk_s{WfAKJ^Hh^)tS3KV|r<&qh=3;wrnAxAJG!#-Cctwemz# zC5K1iDV?qEa?^A6>$R@j$$w?Wi{-|zHcSsZsjOhYvZ+p#W!~w%FB`e|EYCaD8r(|^ zk>p`lTy#GD)nE2+e>?&?{DdZdG??@)^UR<79wz5q=PjxXU+ceM*~dS(?&-2*Ek5$Z zM3nuh*>mYXM*UNt{%6R4)%fz{@y`DFi%&m$*WCHlmpia7i20aZiuai^hecEEPBK)w zaf;fo_bNY?`0Fkw()wz7!^&sX``)Z-ylBU1k?JeiS?-pyzxt*8)g5&*XE^r$vo=v` zeQNZs{G5Tqq^f0q&QvLHc9?jkXG$UOuS3j}AJ_|C=;8Y*cbI+2_g&3w&p!NT*s{g+ z9;0dCn`1(ggir2{+>&M+T*Af1JZI(?#^1KDq|V;BKa15xDC}_v0tauoOCAsA~btuOkY;rcqswb7-b2bYwTOl^>y&&Ygv#@1Qoa+7M@dRBx! zG5_kYKtQc|f8ApV8GdHxB_}wTY6@-6luXJf-^aes{D+iWlwFqk&y}Z)Ui8K4)t?rx zwu<$v<$L|h?c&!SPR50)7b?C~^vYZ9-x3;op=?@Kz3<^iMoQY{ODs#;zq+}_{xWC( z&mj1zbM=X`v2TB{28xSyHzFXc+ng$$O|ORo-p zuGdK_wDIekU}Alr`M&fYUVdG9Q})ln$BbU||1SO)zgLFm_v4p>(+~IF41&67Yg~y_$%ID5>hvDU+l*jzl}qA*k@jl-~Tx5#7Bdy z#1iS%e?x!&_M|==ASoGZCrNn8zg?eYjiq&^i zzO>f-+9Kg{yN*JBJ_Uc&NO;rsi1eXPbS0_O4(4^+Mc>W8+=9g`6rS{oZ9C1(2ky6*IaCp@? z#aK>Y?Rj=Cz7?T14@>T{#joL#$duo&V%b{7JVjzv-+zWnO)O`mcyI8^>RJ4o=<@Ne z_QHsFM?N*aUUR6dWA(Mg9QWeX@04(=x4(`s>00yt_^KvWwsc0WnFd+qNeOHMYKg9Y z3tD~HGZX!Gym;m>^|4jl(4}HNuY|gVZL{JIcUQ~z_U-%R52-$0E*N*S_M+l_j*-CK<}`b5^fFnKDJ%=xap z=1ZLNsyHdhU(X*ej9T@$@zu1R2W->&rpqMOHrrWdm_F>`IFQa||A6ly*R1pH8nG4i zZx^T9sj&z>cb>h+{`4W|gEQOZi+=jVO}IbN@KS}y-0}^L;R~L#c_|sR%v=$Cp;5!A zf3{uWlro1YlCKl&Iq%Dgz3mFt@F+W9BJ|RYA-r$SzWe%{6aLg6&Qz)?eA}{QzAl$S z=_wYuv(M{Z7^}Npyt~jiT*k8T{sMNT{6jszSbnX%&7Nwvp*7s?#Ctmdt=eQ+!3l>q zS#jEbvXf#=`5^RmUH5{oughnco+!M(+u;S*#2Me5qwPWrlpsji0z&oMrW4;j{S z28&m?R=#`8b9|Tag}R5+Z>m_fieLJ3oX67H@~P3|wwCEKi$7dne~P!p^DYmE?cena zh2}++IllbKlW?fae9nIc{d$h{S9;ZKjn3>6p>C1(vTQl^Zhc+s4J&)tPyc7wen>_1 z(t|I}Th?q=<2(7j%J)mk(_LGht^aj>on7(+gWr?3^{5L*BrPgzTc>_Xc*!}D^y=sh zKOFQJrk9tPt!z+d-e!EDbPHdtKdWBI-Jm9)*Y+Bc?C+XC=a#bnTOnT+cb)NBiCWD0 zsR>REDqQXJzPFhle|SXBpe*$H#EV^LEz>1d3p1zuDCj%qE^B(Prtusri-fh-2kS2- zLiJC|pR!;6df>~)yGI_ft@;L<){LrOGE;#h#f<+mSx zZ1|xukNMm#t#uYZIn?y}-m){xZ7}*_WVqw!o;uBM!J8kRVO)|f$=}`Z`&{8JK6!~- zQbrdF8Rz%pH`_mBKTBJIOv3?Em-hVX!^XC zvrcCneUH7={ci9+ZR(O$p(Rb9j=wphw)^qb60>GM!CeLyw3+2OPCH&Ov30FZ+W!4X zHiysmJx?yoEPU=Ee13)7Wo?`CgNusJIoYMAH*?g~C?u$I{=LQWx~or(=h&Qm@4UaB z-={ZwPwImYyWYvA%@Q@OEV{5;WPYO7+}mrG#;|qmn;pb)P3pc$a3A8 zV12ZG>aBZK#(tuzza2MfZP4&EpB6JWWJ11tc~#)Qb(inny}9e;?$V{DD=s9x?aEoB z6KJZjKqK;IarrFy$C*MzOxH}7gU;p19; zaC7U1&9So>y-v+&xw&Gc`I(z-hHn`!rwHk{iBGN73fNuxb-6}FeRax&C0&fQuAZD) zwJ{H-?aZ0o_2^uwAM3-+0N=G8e{be)T_ccl`Nx8rOSEsT)%nkm=HWbbcF-b^NU2rI zk&iBw)tyb6{jDV_?*d!#8s|;x-W;5zQ@c>^t(WAo1s6`0@kN$gFvh{xm zcVBhDSi)(A$*+pj4l8;dE?nq({>8^eyIBVMYVUeD=ch$4TA3els4#q0$L7Be)Yktf z_Ly;bu%#(3w_?Uhb=1s3okzBoO2jJn_ZtXuV7S z8MbM9MO{f*G`~o==$zw(4I#X5OB2)I_3m1;UZkXXiErA@Fp=F($IEvIOuVOjXU%8E z<2etLj*2b+P(NXY2ctq@OLLLnzfG532X2j=&32*NT6?*=lkBdAc2^oikJY|p6KY*` zMymQ)AbZEICi5-arjnQXe)uF#sn)$6l3uE^q)5!|`_pdugs4gDkLJuT=~H{HrTdmC zH~5F`+{+n1b~BVzFD-X^^G4_BHRB)$wp62YLR%K<2d1w%Xy4MZ@Q0e}f-;4LX()^Y0zQ^}=;QL0e7t;d0W-UD_ z8?ZNK*kWR*OYUaY@sro_p(1o2n>Q|&5?8XcG2 zI%^hpVE2+GlMZGSNa%eG&6w(+#r3|MIi=fs{T89E7wt86>mP}kpTQw_GtD7tZJxN+ z_a#lOw?ea$D_vbfcgvlNzd7+;(CR*hu#ExxzE>p$1Q*{De|Ko_1Ep76W2$!_t7_xm z+$_#I_rNSe&%i*|j-VdZ0~>ct%q&XP_|Fh(?dcKc;kRy;?Y*_PLswn?tFeibVO7ue zpqUH|LXw7!A9F8em;ZJ6&MAIr8l!$ii-+-2eX%UBH*fY{2-ekKU-!v#-N~!n%9V20 z8g#CRMxW#?m?KkPEU{`$VA^c$vkprao^;E6uF9eDz1)>4>NOveShuyw?CpBX&crfs zpI$Rh_`PrM)MGo}djwwJvphlXjk@b9FA;Ms_m;&sr&b-mxlYyEemD14&pjI^YVn_D zh%sBq=owTO?QLohooN4TSNAsi9pb_1X>;Ga*j_gLgQzV$9xc{0;)z0;fOhi~OyG`Zd2k-GXmrmi{oX9Fw8-zM+K zo#DH0?TS3HC%8(-zKC@~puF+APhOW6Ux;3oC95oVPSWmHOUpi;-HNN0`20Kj(L$7C zgJPIjxo}Fu`k5ZitrNAk{5koXM~XbyfY!B)STrAc`(fknWq;@IsqX)=?zK6`x9rr2`K49w*81&K zIeXi2li7*Tso%4&2Z@A5K3#M2`A73Ne_!9JKUy3)TjN`GYQ*CFyIFVlgqrG$8k-4q ztFAhBQ(?!xwxY>h9tu6%(!Z%conON9d%?dClULnjIQMb>&*o46X7Naz;<@9hepA}- zN60s)=1B=xW_~};vBFN~p{YdwXUX@+y{j@JuQ60DNt`Zu?5)L%qYtiKdD>n0W7BV+ zI=vO5^-jiemNi+d=93~FpH`}~ay4^o7Q1(9ws%m_mbtFgM`mg)b-A0po1g9c{ptYM zm5j0?Y9|;@s@zrk{Py^UhVE={qiffu&HvA!Exk}x?W5@N@3W?DYdUxD{4L(E%fA2a z*pd)ocGQ06#kX-^!=`CPnk7z(P-SfJKHK}k^-9df9s9w(%UMLJ3^1#+?CI=JT%(va@OnBPJ-`i*WI-)_i3Fw@rA}c zzpd%ji-LA5*lym` zh-*{rL*G^JBUd)Bsa_;uQN6x$(M^u;Wfk!e%UD{@{8MXQleeOJ!XEoyZ%aLV8oe9# zAFgt`ckk`3>e~xve$ZY#Ln~h#6#*o&i$n3@|;TDh(#B$yu ztLnV7@psqY!~0lEr0Qp^?t6Zp$yLp$S)%HY+&lr5i!UFfG9^CR+<4W)|9AZ(QNsm) zkL!2*5xIZ$!*A2&ySH0Zua3XD(*1>6d`NZf%I}fCSKE49U20!x`1VK?e};z^M?|^n z0uPlqEpz`%cdeT)n$5fVR#jEQEBN2-HB7l2dS^fV)1G%OY<8)N?S&0OQzu5R^ZuGE z$f+5-b?sGE&Dp9_2lckjZ2Yve(tXSJo#G*KPZ#B1Rh;$mR_=wlP7%Ec%)JGCRvqVpf7DCxmIMNby?wUpy)gTYy|?y0{c_S{ z`EH&gyQb+a&wI8(?Ax}disrMDo_<-|kg&^=yIWOSKO=#8t;CA9J$WmQ?FBCO@JgJ^ zmvrOwtDJjBVcOp~J~oC0({pSNEi?^y*J%EJVvqYvS+x@{D&IFU8Ft1hd_T0}`Idvm z>W8F!Jwz-rj{DA>A=KI)eSRC8eaTnLL#2BYZ!_&@kUD+8?b*TA%k`TsYI)@fD@}4{ zWp4DG(fr#w{-4XO`z5|7HvfJ5Rn2exe};1_H+guuJ=A24Qp z)wmUPOKVlswyC=s%>QiLr<0KQL7Qhm&Ypz&BQl242V4Fum;Jq1c`;vUv)rckry>e3 ztPCv*S_7Oi;x9DL?>{tC;y&Mzz6FnaBquIr{E*78zwPd0PVXg;=a|>?ODx$Uadfe~ zhNj)lOSX?SR%UT&hH_hH<-PjHKd<-0#NZwi;Wam$cn&U)6maSLv+&-`hunAlstgUd zJ3QyV6kl~-|L87JXNfH`1wG2bJ+dj=UT$ok(W7k3wsBsQx~PG5^3&$_!|~e$)@1)v zw%Ii+w!lqz8vB%_%$vs_Ih{AsR`&eQ!1iL!W42q55Anu(O!)ASE#=^h@Oc56OCIkt zG*~Hqx1;B=;KFzR8D=mgRLwq?{-xsRe+G}wr!_*JKjc$5{AQ;7HRFaTw-Edkluj5X|b0!BtyXViD_O&E_40l*J_k#8}EuMci3CZ*CZm6-~RhP(3J6{ui zj!$5fJb$yufv*-W_X|(E>2uDJocq>L!$f+qc$4hHNXMIQ&V2>h5`q#RyY33rUT&OM zabRKdl7OSmnN=AA2ES`Bn03s&uP31O_l9_noecZzM7E9IZ_Q4=US62@{sB{g!i8h* zZrZZz+3W&6Wc|Bm9CrI5z+BjR;<>J@V0%cy1@0YRWEYBRERlsIx4+W9;K0FS zye8?AhtDqBIH92|;m}I)WqyU1E;}e)<`(dX}#a9(gYZBZ941120 z2vt8grtWal`+8;1=ZACrUK&mK+{iYIRhiYBt)_^L^m%0GSPD-RwiE#fHIpAx6)f93X4uGupViMB+}>^t4E6@$?)+nt;KQ01d|#5+5rzCCER0ao+dkhr1Gv7qo1Pdse^J5Was- z)WIe}YSrYEM-{fd{ML3M&F+!*(oATwe}5@@#o_?%PMFeGg{UxG3UXtg2j6BOJpS+4m{^u>v-crS$^{F z9^UyMnbzKCYU4A!B>ga!|_Bk0g7g^M2^el&odOvPv~V104Lfz)J`SIi>%~5#gtX8x1v=AzHt>s1$lW**SivRbJ@}GD{iJ<9Phc_zL*tr z!q0V@*yJ)%l|v<6C1oN@M4AOeSvOs6sALX_W!jRW_t1GpgsVc!Wu;jgF01-8_7un1 zb7!`2nWnB$?EZCn6W^2uR)vjH91cfS<(z9ur?F%x*qt!QTI?py9An_O>7#RW@EtCT zeMwVtw6pGfl-+9fEYxmM)zrenzZ$cCpQ)HO9EhlUowA`ZStkc7tHN}>*+m`RJm@0SI zZ6o7R%cY_(xite8$#!VkOquX>m!i|Pd@FAWGxMViFT_tNESa`O@+?s^lWeBy+F%ojd)~vB52tL*P<`^%=26l2IQO8(v-HoqErKt@W^m ztIDxk!B?4xLSo;Q&cKCF z7iTrEb~tiDgE2=t>V%-yW#tGSjhYmxnsdm=i7~QeS>I>XT}N4brm6Fa3GgX+d=l>#5>z!W3N>arySVi`1TZ*z)zU>Erv|)93u)Iaf1dru}5S zP(0nz;21d!3iHGO_BaNy}xlw zPiwWezzS!X>37WJ>z*pk+0?Z!DX_5hj>;A9S%((5olC2p^R7r@(u`BbcP`4*ww%Iy z%H+VA?RTszLh3anR|KvM41(uyv_l@`L>X?!I|*?1QrcYqi2Z4}+CaGWI+^UA;;THw$Lu=mflI6Jpq%EilPz zr?o@0*uhmSn>O_HJZNHY5EHAqD9?LMMr)EvWll8D)rB%VQ&qdTwtLQc{b=P+fk)z6 zi>GrRo_P1?&TlF6-FP?*nCBj3TKjAhdu9WJw!`7ux@&9{dP{d{uVCla-kc)u^_^3c z_u;8EqAcDM9XTB@oeElXq*>%H15e-vzYCT-7#UfP$GJw%@nGv|?vjlw?4OX3_*T0i z_8yBOU-eENnS)ECbecjJ@^i9SBuMZ(NT+4_Fa)|R4c`=XGBlOjd-b0)yj)T{-vslT za&G2dBtAR;s!x7k+j5VIQ&+mIIW^~qa_a%DFr@^oYL~`G(?Xos@9=%+`6!W9RJq3Y z@KFPK(fJae?>LFdcu%(vSiyd0g^&084}cLkl(R*VeX#BpV>@CgG4<}`z*tGsO4)mysfa562+dl_~><+SDt z7MrD6l@oNBT^Mf0dHhZREszR62^u_^862cSa1pt401q zu%@-9un0aq^LAa+cCM>QUXMlEJ$YXxoLW=#*>~=iPKLYF4H#$ec?L;#uQKUvR(H|U z@M>g|SL}ZItoO!;G}blgd4;c{rbOwOK3iMRpmWduw~$D<+k#~4iaVu`_8Z#;g`WBt zA7CKrIe%y5x#dgNL^Cnp?>g(Srb69t&UeeN3>`5mKd#tc+|RN~A?C}eSIKkE?>r|j z+8MOazO#<^e80+pm`K}G!J=GuH~l@*>X6y`?TVh5+@!4&^NLOwF+1)!&SrFFcg9v$ zoojmpZa1e&9QJs*LXv}tD{8~91#@p)V=_1)q2W+*{f&y)Ws$W@n*tpsx0ocgmYxe- zne)uV@@m`Ug&Ic|vDm&a+NmIO!8T3ANHDQjhbvL>=-YCKDZ5T&tUsm^5fOT^U2Ix| zab#Cwpyg&YnQDd}1Iv_Wyu1;2V^_Dig=x5JY2Dz+4BBm^s;)ZOCOtBDbznv=z{rRl>%m?vcDAkMoR4L(;i6UTv+E2NJP%O%FXB zl348m4p@Qs?A3g<|XjSN~_= zYVn?W=GgKx?5~d-YuEVN8FHtFd_S^+y=%tD_?eX}&Wd?YzjEfPH%HxqADfD`kIV7P z{3vidvh~{C3-LRGU+j41w$6h6XYigSiIWsu9@eC{sdg<6-QLx}BeK*xTg+eux7jSjLvo`mYY$FT?OE1XsKbA$WQ&uYv!~!BM95LS?KKMCvg1c5s!2TmlfeRQ8v0YX>v}%rswUq;RdC~KuCtqBSQu?@p z$M{Y_S-|vbW?MGTkzAzf8=%jhRQ`-1bB6|#d-F+y^&V_zGM-J{d8YAQ;_{GNY`1kj z&gP!|bcVp&6=FxutWB87k=U)1w9V+<4kMQiT{d46MWM!beIm<6r+cqcOiezK%*`cf zcgB-*3+Jk-!Dm%Hlz&+(n%rwl6y@+&3=#;wC}6rUB1dW6n&|KYCUf9T-rYviq zapI~~h{S5aExt*9Qra$zI~iDK9XiAoIq}vsvzuD6oP0eZCrrY9AN+ntr;j)Jl!t@NhU87V;GLJW-RM-F*wKbf&w5!`ocOg;!>CK@a>AXxy7BXw=PVUC)Y!DR zN%WCpkiv6kE+PM1ZmyPtBFA~swk~GTi{bX+J?yR!Ev=+bTNZUBN=_m3?3A{IhIDne z{RbRY^15e+ZRfqp_a#v&l&S=|h1%(y9Y$# zWNV;z^ueRP0XL`aEHl=Y_E-A7#4$%g+wY^s_LD0jZycFfV%oNGhv}nBjk#M-{V4L9 zxidJ9du8B}-Ba!7YtDFYv@l@T$DlpwuWEb@cJO-Ld1n39xGXE)xcFJxv$WLnkLraU zYsqmOIKDDYuCBA>pCa3fdzNj}>_oOmG@P?NsL#X3xWOWi(Mx7phae-1X;1Cx9>L_q zv_(FFRVLd6v>gsjiF(*nG|g$@^2u{1Fa@n)mL&Cs9-l!@aJnZTE?Lp`7P&cL`A?pPk?31p! zEn%)%d5kaY!_k#{*%dB&NCj= z)?Cf`eU~8%$)}yyjI)pXdnm zY*c^k=Gyvjf!d59)(Wwo&Otx*HY~|tXyJ7@?9Jii%N?Pi>2YL^6<6d@39c<$wdQMe zNN@UfYQrl2rryxnwgnEC=P2{KXcF#-tz7Rb9@e5f4fBGg27xtR@XIR0z0LyCz)|hyZB`BnV#8YW)dqp zz0)rUI^7BpReYnI*jIN`R_W4>Q2pdXj4ZL|js{!o*)U_tQ;pZA*(LHVD$dNs`w!3b z3JP^-HVK>5pTbxlbVfUF`DYf>Lw(R-9Gx54TSL6%t ztem&FPODHW_(#wAuAP0UzE01~+3oy`{s?_EtMOjURWvJsuSjvd;ulZd7kOLjtC*Ce zRi}p?$$asqGLg$+S-kI}pG&t!hU8j1X1?6!+@cjK{6ppHoFE@>=Eo^9;!i{)_b|5| zEMPyN>(rQeuwmCkuO&%A3OdTmZo2SISF~`vIk@KcRaLVE(_T7aPp%(#hk#C0q2T8+NJt<)p^Hn zU@>xIW?tB|zGAQQx+RU3Xlaxu zIW_wemdd;(OpBT%z++O>#BY*z-cm6%&mK^Y0;LNeq!{@RM>jmc9 zcum#*s{hrH)7|*ygC8FQKKNd|QnKpHU00RJMa2_hE>E~=G(krzz~)xL9o<%^72NYC z9lIEM`uR)^r#tzJp5JKtQ@W(t$Mn{m@&NCWqzQ5dA1nx-<(+gmp)g`qiu3e;8`su} zD4jQ2+_#e@`unFlif&59zL81CW?WQwB;ob=8HcZ`k*?QGQ*DDqqQ7(4f=X9UF*FxE zCAU21=nO{gn}%zqZ)a(p6nXX1xkO`4v5QQN8`g*&S$kn|_qv`BX+_a?TSLNJ(pPgO zsAVxNVh-9=E_R49(xvB#a-=t_mUQyMukqU^T5XeT47cv zi{58!w_Fh~X&#uS@JNUI<*mieb4uA1Bn48}q(xU9&C{zrRByY`wV4n`$<*#?pG*Zq^cWK(y%J@DOYvXM#t@sL`D5NIX){TOB?IHS)Bv@-45o*7wr7|RgZV`%9nl5wi;_6{SkR? zndgz?chnT4=bnC*`oZz@yBMh%@jD|Nch=lk(8bOblEU}twZM)qIgHsWI5l^w6nQoa zwid-(IXwP!$-djSzN$UKP)au}Ipkc!+zlp;D?=2+1brCIS&u5Pisa~K*G##Yw8A>_ zlwpc^d4hF^hm3uY=%<&*TRT;|mMxfC5a)F$XO2U$8H?fOpp#*5Tg){Jy*Uz;p2#(E zJBn;!pPc0^pOw2kHznZElW5uWx|!dny1w;U*dv)3S+epSXZQ4_w*$B?9Es?CG2@qL z^TugLLA(YGySg3AaZHQumc@42;&yPO3jDy^N=N|J9epO3#PU2=&pM_f(yY7$FE z?*_NbJ4(@ErX9Xkk-OSvNiVy9X1*iW$7GG=ixeell9{#~V4Lb@a>mKJ=>}Vi zgYPYcvo0NZZ(MzJ#2mVrWOjbo+`?_!ILP=tzXu>SbQ#+1!e9cb` zpSw|wRr+|3C^IuhV@kv79d0t`xbDmeYHna!)ihhcQ!0+3b=L%?sVQcPao*yJv(88+ z@G@n3@_yQ-)EiSURXcj~Em4aW4-tL6m_@$3)>gOhCQY)q#w=bbZQUi=r`okxZW`x_ zn+)@&xoEA;t603F>5|N9sr?WB96lkO9BQinPucXV<@v61!GImNu3SIfHS2SesN_34 z-|M}neofc!jQkjLs`Ifp|CQ~f(tV{CQ)hnWpU>X#x$xsFrv4qTE{g~J?D??lV(m7k zx8fNuNiOw@Bz_k!EnN_L|{vJ-TYfB+o?CtCs5~h8<=LoHUcY zLRdb7weQTIIgheD7Ccj6U}C%YJ4`f3d)a&uc@nk&%bUwvrEtPVBN%$4f|O? zfAvaQc~(39krpHSj`c;M5&Tz#{ZHv7c)b&S)akZBIQ3Wzv$!zZmq*MqvO`h|?gswj z@!Hg~o9BL-6_?i8_cs0){xb+I{#j$k`SsE4&(7!D_X<7z)weXf`Rl{f<6jLW4t^~7 z{#;;cq|D`+MLbjH2TVbvXEH9tC6S_k+RPL+RB=r}K zw?!hKoKxMj)9+|j#}f918=0N@l+LYw#8V&^Bdh4NU9reWfPG8Qj3%=N-VDcOjWRrK zCLY~OSSELLX?ys@tXahw&ANSYv$3vqlbpxAaRYg~8>(|1)r#)-1cvm)N$);#pOHtC~md zW{s@v(e_$wze{8G-Wm9N{`dGhr_U*t z8(Yk5$$x!d(|?BF7R~0;(*%wjs&8CxZyfP?erL`ZJsp?R%Y^3^^R%?CI=@8GBy!RG zNdgKNXDK=v`m(2Xy}Gz{3G*YTv;5vO1clCC44JuT#~DWBfO)GKHb$I#wnZd*MR-mQ z!!k|==d|jH%O1^eV-*jx;9TJ~JK);FZ`T$a$_ZS^>aeRt#oO(ummEjf+pMC9F6B6> zyPED>W_|DVja%+g!G8VVR+X}iol6Uth0>IdmDp$Ew zpINb`$e8Q&&)&;!)xE4oLtB_uZ7_2`E^PQZgfYMT-3OuY{3CzEKTGWko|f`vf2gRX z*`&IMCwy6U?$2kB{?DMWBf{kgWB-m1Yl^nLi+`K5Zk4uoY()GsMMZ<4N4xzyw|L8( z*0QWN<=Ax9TJ-22hofshNfw+BkZ-8>{3ZV=Z9BK4Tb!<_>fI#?zZ1elEyV7h(Kwo| z9pAD1%8VzH->o_ySA0I}Z2YWlvGGTZ4_E%#M$r>VK6HqOhhTnBPFziKgP#Z~3a?pk!7{pN{9w) z-^2eF|LhDq>ag|e!~XluGiUx<5&iyOocyDIljCp6mJ6HR|G2Zqy(KPBN_oMCB~^3Q zSINh?{;)q{_DOVoT1QCqxw@DQKdv$9lzE>~x1BGrY}dJ;cNo{+xqfAvHs|Y|k<$+L zsHGR1Kig;+r&Z(lU83U1kt3PYj9xg4HwlR~Zc|x0`>J?j`SlwvCck zl{a3^X*xOKx`(7=)8d9pHNBIrZCE*N>#IM_U4CwkX{)psJ8>CD-eA*K>S)sv3CKv8 z^TBf?+$!^ zu>ZF6cXRtt{=5I;?4y7A-*>*8y1q$Xj{Rx(!Ikgg`|O>yY@5F`@#HM_nR?XkKf_V} zf5n_!T^n9%NnbL5*!0o%%=uuUb2cGsey(md`0=bz<9_#ySu;MlMN3~fey8{|Z%MLLJ*9B%S!83NcG>ReRT1AH9(%#CD^*j5ot| z-pr=E8xQF0-*cIPams~`>9@^`o;Ug^i|yVJAjZ{lw_yXTd~)j|$p($x=k{#cRJ?Fi z$+{4iSu@Qcu z*V|)W++Vo3=+_LJ7@_Gtg+(8Bt$MfOnbo$LCqq(isW2Q+oAADg^+@31m)A8c1z1k+ z*XVx29k$nPVTI??Ei+>BCfsJ6>Lt9RfoEM;@KmjX3PDJNoGo~N8{c@vPvRpTw>xMcvITj-aOcH(Syx#i_7A-krt~A z4xI>?ux46XwDj$F)-96YN_84!1dfUhz+<#7MMj()15Z3+3}ab$QjsUn;Mx7mPW! zY<2wE6@dxYje`s?g+Gbwuq%|h*%Ej*Vg0f8+uNTpE;pz)TR45|Pq~>#(%P0-JURAy z^{X3;i|6=M+&OzFzF_UCv*&$0yjFNmud920WsT1~EsIb4!cJ)JP*{8H)r#Grd&F~C zPOLQM6M3w*p{a{on{8(Zf7bMA4>sDo;@ptKc(8Es-I=#OIUY`CC^{%M{mAopUPfOd zrMiQ>jd~21$_^C^yDZS`dfSr9o|)a9GxyuEiMqi7_d_p=nq*9j`7Icr`9(o;i-6AFXSWoqp6t=ntPeoVD4>B<(tahwV*5#FYSn089iK9tmw9f|7Z98QQ4hmf5~XuD>O^W$pBuUybhn zWbKyT+@Q1O(d(6M*Bu!4A3bowly|G`f-R+N4ha$;4!BA()C;VQ*LXGe_mmy!x=&_x z+3Y;VP_Ja@CH6M@EAvukv$xgVM|S+a@=xvbj4Nl3&r|zn*_K+a75t#yuDoAfuu$Zp z_^Ig}XTEpjw1xF@tXQ(@ph#%I3g_vusuN8+0v;X;ytB=8^$dr@9j?uKKAbiUeV)m4 zv_ob#Xt)NcwMpDsb(pQ$q1h`~+3o12o&_Rq>v$H)ZGXvq@Oab?CfBW7XR$flR4Ba` z?ar^9%GB+Y^ zf;!9Iblux1bo6~ey@19wIf=-B&$q|v6+Y_Uxk#v=^R=6v zU*P0N%@x%>{t|1wo`089+^_#g-G8?I9RCLw|DEUh&+zJSV0>eJpxTZvlNxvbt7=Ss za9Vdl`x1uVHx_QRxcZZ;hTp&EvxJ(CP+( zHo@NZdApf!bA~2ntoO-zR1(x2)%s9m%3DD;{T7EsoRZvLr+EXXWi^Ifn9aHC8P@^v zjaPKIb)~kvlwjC$PH00w#08N()4wTi$xPBKi!e3)v~a6WNSAC#)MtV3lkOEBX=$pN zqFig38Z9$L`p()J8iqZS*^=4{_+njE<1_>o+czv&wyyYY{2{%dv##@=J^fbk{LYu- zSDqUz-LPTl@hei>#0-`t94WPXP_Z-aVVtOhp7>txvu^SISIR%??&>?XWnI|%ESB{y zCyw6CyrWqEV-^>~stc0&UCPF*V*4`No@phS8glI8FJ>t?_23~%K4Oy zO_!2aR;`|;D-d?ua@KK{lOj`CHCS9{I8NeG>y-^S!Lc^w%C-rsW@{|B>u9!4Welx) zD86e4538dAgU7OW)=E7o6T|O*n;4b0wfM!p%%+D-%&DOUEnX{34W=E~87P>T@x3YX z;J0uAv7!{O_$7gC=RBuqH%-&n+4QjM!ld%Z_^B8FZ2kLl+j67-3`cua-ssu}-w$8#iMcf>Vv0$4^Q|9GDi~Hy?ybX3o~pJSQo7&62Qb z3J#240=1t>ecK(rWx^R3nZMdwZml|!Jvl6)>(qjrwG*1FR(oCQZA~#+vb*Vw14E;0 z*{l~qE(*=-bu(hkFS==}R&NvAYkFyM_I=NMN9C!VZk4?rtf6naB64|6{#>10@s+P9 zoVz>py?#%ikCt8Q>6x;}8D{95K6&DLz35GS5I2oa`vGe_sbB^X-KeE2~O3i_ZyTk0*coJP_hQDK4qO*1X6~hE2 zwNKUkKc+q5wVu8ue0HgK?J>idCIR0ASaW@L@35F3XFAX3Kf~4Mg)8IT#fudlUs<1Z zF3nlbm%U3;@IboqPmli$&$|M=WS)f9I5+C{y}hb%=mvlKFEs|{M+wu5yJpN6`p6+i82fxgr{;lyGZ~&D#3xz8zUnI{S{D(ichbX2{#T?O@gv_o&@U~7I*@i(cW=)vlC0g>G*o3+_K9LU`C zhs8yH$(gLeykxfLUcVbdHMgGHyV>61OZgYazivO8i;Zput(Dq50{DOj@;!W!DbAS*vQMTg<7rlBQf& zyrXGt>(zB~EC)2U&s@c!BzFBvLtMd@Rr5AG#heuJ?7gHlscUEGwwrr7m{;6ss{L^* zy6D%(`73AqaD1d6(ev!_uKCCNA4PIcH@4KW>JD|;e`Z@^$7-c%2f1#hW^x%cHF(WX zd6k+R@Z6K*f;3-7B*R44Smu8VKjm`N8;0BoGimLY7nsr0p2)Q*lg(D_9A{yUt4ZLJ zvj$5=9r~Y}9cs*QU=V-eY+AoAd6MoLsWWdKz0;ebl^k;m*w3tZqx!2acA>-j8Ar9g z?U`f0z2){6=BynYYGurRN#c!xSub?Uxu*ro+bHOFcc+#+G4!uo)p}gz#lQSQYhr5$^*g*-H~|>|Xk#_jR1W)dTj0 z^_%{>Z9l`8e^l6LPr{L%uhO3-zVWJ9yi}fnv2pIxE!jQ-KPy+S6l2Mc`1efqeb`-N z-PDF#YZ-+zbaqHZsc=?vG|yg^#lU@Qg^l&pcss4d4=tx0jX3g!`>)dvQ_(qI-(}CK z?!V4;(&TjPREr%St$z0WOZ(5TBTF>YxS2QH&EcRp=ZojRrVB+{GCU}r)zF%9aly7* zM!g=Y66$9pd>C%G{b=ywSh!_d>?0BGj*!WTJffZzsT-%neh%6^_tbj>;b0E&@C|Q=RJqtn{Sid`+{Ofe^kX4b!>%Ipjj8%ry(zgCo?-Wke+P3Oy z`_YD~y=yq8@Rt_-(1>zedgaK*mxp}ZTcV?-MRLM|26R=w>#N)Ih*rD8GK<3yXPw30wZFE&03)f<8uv{#*RGOUa~ek365jo>w3g?pL7l2O$>)mllHGiSY3G)T2>v=9^hSjf4- zQ6QSXAXRFKW~fmbtLEwcodr9mu^s03{bMV0;9Xy*wubwQ5RaKpxUzQqY>NH&V7=&- z<*sMlYLj;sm|Q-Q{H-GVbj*x6udf`Jyw|DOXoaju*~*r+YG=&)Lh;M`4}1hP7&4ee zA9coA%S1k6k@J{hw~-+!bZcR)ldRKjgBx!@$DEOp<$t9yRW$UP!)}e>17Do4@Qcp4 z^RwrA)2gSl)C~llZT!K>_wz~o3enU{i`qXpyXnY2;7)t-)XK&n=;i9eu@%d?jCtYqbl8W5eV4}Q^U2*LaZv`be;Ym!f+jO6IzA+Yj^ig=*&lT6CcBoEm z{8{52aCBSge}*gNnobYGI2O1Xty%s4K%2JtEl($5MhoqmJ4CN7P|vD2P3Yt;tA~Fbv5mXJc8a|?W}p8f;rYRL&QvIGW&GW!Cnw-8 zH(B<=ZT3kOT!#}_w2tMnRxCAI^LyUOcYO-AF{fAzlPBEJz53y=(2ixv{}~c2KQ1=b z&3kl0)`dIDI`#9;cQL#B9$#-;E&OliI}NUk)QGFq-7HCae|o4|O%IE`wC5p<*V%y8 zxevUioWDAGDacux}=`qNf#}5)_D2+XAqjbdg_@gkMpK@jd>r{4r<1Yq1ck)(pMSZw2xz{xclnV%T~i zPw_3Ya!z3Zr-!$gdxy@g{|v4LatuOK6I=Y!=85J`w(DtIXY0c{Yt8DW=+>_xPPcD! zmh|Oj-Fb4ST5Q=G@t}yMGMuAE^$l((Ayqt%LIn{*j2 z9`2eG$dv9q+bO)ogE91i^t6waeLNLM#J;j>9%2j47Y+W@ny$C!O!q<$S0x8g`D;JA z<)#+Y9iL$pc5DAS(e0ws!wRl)osrrgR#4HJEceTbpMfPXDN#t!ZEJ3`&V#=WuRqG4 z`6~BZqW|f`?`J%=Meg2nM>xA7+tzLA$0fU_?H4Evc5h+b-+PuaNdV*}!~1#Z^tHmvMIL zhS-e^2Xl5*c)?t%~4FE9u5$!s^jWmH)_EwrN{w87{$%YnFn-f$7uYYJf@%a2%cELh*B zCePm*ot*folJ9j>@CS3bC5*Q;C%=8nbN0uztV}83jlSA$HZ$B_eZ|}D&-3P1sX7|7JztC8?Omy|L35<`^xC-R5 znZ?y#>MWZ-@2`GW=e@{t+S7Kco?It)@L|L=)8txX2B!5p)UM5(8Wn%|NEJg$%02VX z{QMo&lN4ON!?Ql?J-V&O^SO{w!N7#k!F&C8xqC;XmVZ+J&rqipARQRmQz3O@ewkuI zO?><0rwRvSN;wrmGnlS+>&}+pwfiIftnB(*mPJonGh0_|d$n~Q2X}SU7x@K#99yr2 zXTS4H{q-?ZL}cCdzDH(Jj3??_pKNS6% zaN5ck`e?zNi>eK38iPbD?p2z&;NcN{Mar?LO=`{Km zrq(I=r9R7J@wj$Rt5~EhO;AtevT)I9&Sf)muf%oFYgga+QJb0L>R8>@d}>dtk4& zc4fs5#;}8D!#_Ukozb=7z{1-(qUmosU9M`ShG&Z|C@H&DtuV)jJ8kiVeM}pA-`QUY z4oaKzc|**@*(Fat?(z6ozRfDhw4&+27x@PP4-fe2vRz#g{bBF%ihV6fwreBn>L3n*1(Kg>q5J-r!9Tcy8Th+{I3fCjn8AO&B0R*ajhG#XhAnW1qAwvnkUK=~$sjZBsAn^fBh;u|8(_;BcGUmyP+U{V6Bc55mHH0j#X- zf-D}|%-uh_b9cDzXYxTf4R7whm&6Z@L4$5yE8*7Z%j-Ef7qr^`uQ zC&O$beu?MB#g#mJ|1+o%UjE2e zK^sNwqZR8}Rfl(j1FdcU6oKc-k@OMRvjJ5@JHjx^CWx7}|$@yIvm>V>@H$K|S|*3Fz+r2IvrKabB`W`66N55K(n z&8=qpGm6QX6a-G-m27@jymQCNjQI@?&)#x=N;3>gw`5iSYCmY}QP@O@d+v zrZ*k>_}p< z_~u$yb!Jne-jpESX$!;|H>tFn#0uYu`SPxT|7P2?`w=I?*h*z&CurK51}>P$wZuoM zywGif&gGL|k446?s6P|3`S7o7Y5BIERj+e615RYIm9RPlu(PZ@R=2pvPklwpe};|P z0#S47TfOEzjeOAgU`7~=j(eM7(3~B{h8dNI*5B_vKV`D~G#TTFUGoi=Gc1u1S@5G{ z=FwTZ8O0VlePm$FX2?z6!>v23qN%xV!NbcRl$_dPIx^3E-x|Ap2S-|T%lRiC+A>qh zKP;aZyfA>}Z2DKnfXKrqXQ^4puB|O*U|h_izh-W0#;o)+Z_^w$&5RKF;`XC(jlmDb z#dB?BZ#6BJRjt_V)91}3_wZ3OYa*ZU50%$Tm>DEEUIlU;{Oa{bd~NJhPNsiHqkGEc zi54CBc!ZxlbfWC(sS+~N!zMNP9gXkjd#`Y1-z)9ouO`1YzLs}vTlK_`hR@}!TPHs+ z)@#@0+Wc@MpWuS07O82c-v9Y=>bBQ6n^@Lq1x?Lw8Um@6VtASud!^ z8WJ`AE0gi7IP-aFcX$%kH;NoGvii4bK^udNsoWXqRWGMr@d}kbYOHW^!@GtX0=^gZ zbN)QMQxp{O@yK@OiR=#(isM-0cZ5G<)LnW%yFjDBm0Q^3sO&4T{TJVre4N>Qt8Mc8 z?Vp?!yh~P@GQ0m!oOYgz=U-Z?)}D%u4Auf3+^jkMFB%v`WWp3zT<+@HteKJj(bhFU z`HsYQ4kngwt`=*W9)IZXUoUU`{^&93S-)GV7}(#;Tl?bv8Hok_aUA~{T2EbBbJ(y& zR3l9Nl=8$~@(+zPtg%3RpZbo@&}F7NGhW6X z$c?n?U=F={rpNrq;;!~rAT^m{#2~+o^r>&xbxmBX8{g&cmJkk>7QlJ2Y3AFezG)sw}GhshBA#U zn!o1nIQ9B~eZa?+^JTpEcq#M9Y3%+O)FCl%X^60k#5vXIynwi;mp%$at==`IN%WCY zoL2Oe?Yrw#XD*7J^~WHO$5^97=2W?HNJU7}^U#>w~AJ)Eu04uf5@^ z!;=N6r?xHF^p9Wg+r-`V4R^o;R$;~muv zD|}LV-{n5wN zvOUiBSW>a&higwKtv;}!M(p6`O?tN!z8vPMH~P0KhW*-u57Nfv|DJ0+-L+$@na=e1 zGrRhlIgV|u46{8Xa&ZUioOOHML;pSPIdpV_`+V*cogdRa#vANl+4%3NXpxth=< zm5`s)b+^{Y?LES@N^8r;t9cQH`;x=D*Zy(HIS?gfZDRD;`WeH*-woc9#ftg@Olujl zUUj6_yI6lrsFLBF+r-;yxR<45$LvK6g?VM73+DZ2Se|WPq9L|LGW?3)rGpQ@1V2Cc zBsKS62eaY_;Rg$}e>P{CaRkpxxZ1fY;?Kd{#`LU^m(uGw$_}h))^7MBsFKCtwV{|X zRlJ&U^0wOfua6}aJ&AeFru0^Lclb-M1(SX`T^GzQo*(?}hWER8v#k9GFN*RCeh7QN zM0DkuJ1bYZoZ*_@K+W4iv8BdU%z4sZJo2|LcreCWMwRd3eMwvZ5+*t^x!xxRKS z{o}yr{FgH%|5C!=V}_0i8xjMA8TQ{6+>~gM|NBgo>a?SgZ;tHP)WSP$M`Pj@jTPTo zy2~ay)Cn+b_Sqf((0p>hgL%e9OC^*oOAV4g3KsapY5Y03^!2d~r|OcjpDZ`&Y8kUPP4gN=^<#yerjp_k02s=r>+{G~!zzvW)~ zex5Z+whup+osZK#ck=yFN29i9)@o*{tGTBO-Voc6E-&!>ibz4kmfl3a*n@LLx0-dj zERfZ<3Dn*Ys3+g*U~xdg_>fbn8@qCWz(RAG>7r&YW1nyJ&fBp$W!;1$$92k=tPOT4~;Xh?N zGy9Uo2gJ?<^P4mOTA@?+18=W=}2KEdJ`e@4l96yW79BoLHGD zboq&c!(-=qHPNrDKU_Mn``|Xqu19}Mna>?y&U!KD&=ku6O}(S#20?GMo~E%(zZrj_ zeW`>ktJ|YqcL%YvU2Dz57YRv4du1QoAr#m>t(oB+&(eh!+v456*F1mnPRqL_I_PZ_ zpM{DV1fEMyK`stsVKVlxbbrKbKP0=f=RJUCNI=Le1USsAH@WXWjfo_%1)efyyjvV zedeZYVu{+r_IKRPzq)1?_S^H%!7I$Z zuHh}ya!%FXIUcUHKyqD@zR|{q6GSu&f*E(L-F*FK-_noq*F)AVo*fkYa}STQ`v>_M zA1&87zyBD-=Cd^6(w{vx>ptEOf6VsoLd_%b)jPgba2M>cH<`w7)gH&OLq|l;+G_## zqx~K$UVmXcvNz!mgTm4?PwKzSyFPgl!{G(&i!@e;UQ6#ulN6KSVPE1R9W!(F3<<7P zrY?#*0`|Wzee~etqmwS4Gg79{j9+1=70I5QwpH_X(3Ar@{#Q7?r2aG9tSe@?uPrr$ zi@~}3ij@UR(3_X96nDPc!uqL!VNp}@e}*HQoYp!7J$YwYyR-HFLt}x7USB1cS*`~N zvN3baKEC`;)!S)O*;hR4{CXm6jd~`8n62B{%jcL~=3CG`xlL;2k^9~U9UilYZIkjA ze<~7uKP7`l#_{OR%oj&GxnGI(;h$J9S(|1*Rf<6ZHF`%~}%QK7RkHp*H$OIStsg%^mhu4A}e+~^RVZ@=YXs+Z-Z zhYy8gx1D3Vw5EaCL1M*?XRGIy`0dLu+rc7Z`m(5Ym$2N&iZJsfk2 zgU{`J_mt9A2X={>&OP#WdVG!h?HyYW6qssw=*L{qSjf`7@=2FxUdOXXPt2s7E7BOH zIe0IzX$w6($9^ipYPJ14W9HzB{LX`o^Lpxi4hT=;{d2JIf&GDZ=_~U)I95H=Qgle$ zHJdYY#o5}3-0jOml7;#<^Y-1p!ryMd=BCQKqnF3zpkMYYHMPh2*O%Kla-MwnvL~>L z{cMGu0PD8}eF_X;+_j{mRbnnwJ!ZhP*nSg3S1 zWQCk5?`dD}iuJrsyF0AD3Z}hZnR?;rN~fb$yY9%f)~W{73N&=fuh@3{?r90D>8#sI zWn_M->dmlyWKwhX=&Tv@nx36?vf8IE$1(S9?CeQ%-}ovt{1E;*RXJd8)TXD8xEk8BkE!|^X%`MPW{ok zlxt`HY#aR(Ia#qen;zNgRak77$Ybnzy3QjnBFXJ&w&*AFX zT&*wKv%1w}uSFV@nQ)%siWm8Ry_C+rd8XSGw@#9CU+SZ%GyfTy^-^wfowbNlKc*lV z*~%>_we43!?@3 z3wGKZEH~4hULP- zl^^!8A3eA;T#H5eKtgXqUbu8+>nbgE7S@|g0_*HcqBTy5(aEL;i*LAv?U^A^Hb*p+)l$Y-lGCG8;!S;P z{E@{S?srO83rMdnn4WkiYkR%G!fjd$({;2WE`FDLDLXAZvoBh;$Fic?X>ICbLBG8J z417uqE4X9W&9(Ek{XW3*Quyr-#wkp7LX8{F7cMlIu+etnh37$$oeo?FtfoHt=6AsV z&My8q{cEmLzrvpiHmnh3{@{{dz{)7wm-y%{%lyQrN7o6?KciK;fcb-WTg}DKH^p{Z z+rMgV;$?Js_G3EFJI#_=0j;bIa(j|OcKFZ8Dz;Pg*=TS*-XLpp%$d@ip6imfZ+zTQ z+WktgqRg?EO)eyGbIPh5> z3KIz_w&ybs{5ZsxDX>;H`mM&KLz8uPw@auo8ty;iQ8__azS8ky(b|&zN4%vT?THeV z)!J#y-758K#-6Ylr4?OG%@drjo~-O(jGL#}r1{~;ha@|RGZs^B%KMypF4?NL=#Jpz z*fU=2vo7XIrJ8_|HDkNPYhvjyL*$1m7&Mb2`s-KhfUhnfe`X^;MnR&rgdB z&li6c`EUkj+OqAO1%J<_{+cOs%wXC+vm}-KE6*JNAzCzZZ+K3I1b1B01Zj=9zU2XX z_AM33*c|y?OCvmHfoOu(vwg~60(RBDV%XX)_izE@#O#l7;`PCxTWh{EvP(Dnd^&o@`_HND+#{?_iK=cl&#b=}c`dx} zhW$&sC7C8k>#aHJzlVm{R{WecY4QA(b(SANNLuQytC$25`*tC`Os7E{xu3S z&SC$k^Yl-u{WjfZqx-H>vwU7@oaXth*}mKf{fOOD`mQYBMa@csuBD()`wm zu^$+V{`PLSPl@zMbX zsXZZ&1p@Z3C_V6@WpByO&akyAxj*erY_HJ$@Tj|oEwZAZxuY}H_ybF5Y=^`(E*G2Y zS@A^*-g>L$&KEts-E-hUmSl)gTi2>7b8r0q<6ianaEj41ABQb1C&f;E)V#1h=WP0+ zgHJzC3X*Ku%wIX}*{*2|5}#k$wu)Q-hbaS7SKZ6{TZTQ>GPjv>40-xufAHw-%ZYzE z{r;81s&5nyq5X zr{%VY_uPm!;XYt6XdyyeT_xgf#s3Ge4Kc0Xn^`$&8C zl(kBz2qhh}X{)trT4;Z2>Jx>7W;auew#S@Op8u3vrqTLS&%)0I{0&#Kx3LszCS`hU zKiDE*FSNNMSYG;bQz6d=(NaATzZW|;Gxoi*-;%;zbn4$zF0Rv@T?Zn+@(U*LM^;Xs zvFNhZmDJTbRx7Ug&0NvAW4G@kzU6zp?;Cy=+#L4q!JKVorz^$w`XsnM@z#Fh9Kzig zza#2xWmU_mPfVrq}iHRh-<#+tkT4%FxYW!!g^^y>kEpp9|kT@B&VKU>v=oy)14Bigx zo9?%$-8uO{=9jW@6dO~A!Gi-Yy)G|e5!B>J)8)!~ej)PM51Fn7=Jyy=4|?++-*D_# zb=d)FvzdDr?s%>{@kfF5fy%G!fBq~u&97m%b%WE|H6n4w?S1REdiYjPUl4Uk^1G13 zGTFLLmOnk2ov!^;SyCp2iS6>99;0_}`RZWfrr@^eA+>xDqM!IDb>GRcIJ(7MvxCcV z@#;(F9%r_&28f${alZeo#!x)bch9^=@oX?asag-?C#E_84|(~FtO8HXef8wahKw(8d(rFspa*1{$6IZwaD2mfss za7>f9;$|gty3{)7wAnTn0j}jd>w4>!8*S~L?X*7F<}|ZaTYLMv#4EL?cTOaoQ{L6x zm0>JcV)u00S*PV^6kjdAaXRhb(M5txQfdLK>k3TR7F^VN#?gE_GT|1}Cp+P#VfQN( z_Bd`?5u4_6>;0)& z$S(EVeX(@n(ut>5XHASM^kOd#QNDIU6h!EeXbdL!=mMq-J6wb%A_WQDK>(m~3hZ}mFl{cL7f>w9%e`o&Bpun_r zc|nZ-vjA@{Zrd0`S+2tHBWxQ~y)tK=U+Iy`n6aTTPqpEnfcU{}&keg7dnPWFl*&*G zzrxYnug>ecPGqi(%ao#{3L=uymDWeStHQh=yyBiHyrbLMop<7)ZL2o+7kiY4>t=~G z={6pHB(*;B1g~q1fqcLt$3K?d-49vza9%7>(B863t|f;1f?2m=d&a7xm0O>E`j=jR zewwwzvNCVA2-!tNt=9u|EjW%EmNyA)%kNDSpZj>-g49TsZ>raQ`Gt0^JjHr3c=o)@ zagu#D$**{~2J`9Y2UxA&ZmykFE9iAJM)ZcTiUFQ;Gecay5 z7yoSUw)tq$>J;GGbMleFioeNM4oKVxRAhUU<1IIP+5#=1qgPS_#Pl4jl%C}%O?|7d z>Uz}#cY4Xb(fpCnbigRmc(Hui(kU;0y6Ad3+~$=`U!)p*D5CAn z30d_*mrKVN&7Wagvgx7mEd`;T1^*dld}b(nmDpQunWlSp)|>Lr+FMMD6pw6X?%(qI z;I_HT;_kZkrOxwN#I$jmw}rxYztTHmD*_4w-FpKcJnX%r@J+^nG5dVL=Edc+8)9~L zIrdIXK6^&@)SWb=54NYL|M-wqv-m)?D7W0AOYZ|uWi)c_n0hjOW$)r0Jx1R}XGZ0* zUdvv2Y5t5UN1eDD*6cZFr^J_jBzV3!%f(OL&!XdGe^m8`7c(|bFIr3h`Hai$3pRE zAM*!qUgoSgHJJY4FqJ|*(xlnC}mx{?XCtF<}~v@_oBTWVrzxKv?& zglCITk3uIOuTv$?+iv3j|05<8(A(rxy5v5 zA}>=*J_pB~We0mSiq1q>QlM3{>G&{ECelrN!weW0K2n%nC%}2f` zksF#GvaL;=zhkmV>?L#mk1Q6v>w1J&oAAdAoY^5}FMD*$&FNL_uY@+T+9>7kP<{36 z*6Ke#Eld)RHA}8Z^+a1XZLdjd{?4x?oLN3|hw_bt^$nNAmWcW<>wI%ZOsS_}A9JZY^WPq#Y! zVKj<)%%Z82cYRYr%vPf>rE9%)?n?ATHt$gKOMbZP z*i&BFW9F+}jbsi!*pz%(O!Br>cGMK5#>zY9dv+a5+{yW}=|R9>UuUcE-&3^ha~?`4 z+OBz7Aa5wuG?m-yb3w|^^9`-d%qz@#Y8&)8ED>S{fb_~n$$ zzQruJUkVimS^09m-5PsSSc)_L-6E}r_J6ZcC{8(cBq8;S z*A^qSQ{I7`i$Z&Dv+J9=UEa?9^{Rn+^_l%VMj9*bzL{3~_F2q2rPF~~j#@jieJ51) zOwr~uYfq3kn0EHiW3~4Y)8@~(VVz`{v+82$%4W9HmF*I|x92>QS|!Mleb-ynK%wjn zgM!1lDI&icLspo)nQy>$U}R+HZot0ccx9vNgt3LO* zEIKh@rPyjurp19bzkT}{e(JR3B39kN0Jl;u|xhTX*C>Sd%?N zT*muhV|jERt2NudrCTjHIG-HxJHODUUXa_vlws~O{Zp5|cm(b>57BxXn5y!$aOD&R zoBE*rOLsNSmGSw(YZQKG+iI5$`g;$b^EkSzYL=9ydE7!>!;E9k;?=m!CMzxv+xlJV zj>fytQ%gl-!)GWxXzJ^KoMBcPT4X1*<|sUVGxm1Um=#d=&`z0elf(B*eDyW{Bv zyJuf!clYp4d-X7Qy0&>+%&fLPh6#lpo5gv>r)3&t{ca7eKXB$Am%>(kp&Rkd;*!0u z(qAPU_Aj@yCxX_4F>OTQdAp7tf> zn}bYbgzr?A3afP+!^1zcMR2OC=1$lmS}h>QwoGQyJVT+7zg{29ZM|#?wPsJr?Yxq! zR`RUIwY>C-YTDVulON|FIeXu3Y4xo3WpHPqM~P`csIZ_1mX%9OSKmEfa<%`=!J zxwc$z032qK4@^h z-oKw&?!jsPZRXXrr}lR+Z9AhRw)ON!k;H6fX7Ph!2GRc6R~5~3lODOd8#?G`ratG0 zx^_7**V2E5RZ*hHA1AlhOYXFF}Uv*?TCv{!#!y+oHLsTo*^weJu9 z&%lv=M*Lfhsr2R$oxL`~W5eaLn8>F*_mWsHUqN+vVA3K`e9Y&7PUD%=rJ!CD^>xp1B8 z%fk5ee49BdR~X$m`$%(LVupBCtwYlGoJkMN*#h`7rY{v%xf~Y5F>STaxzZ)!&Howr zQUkR04Yj4>!;5zP5tteM$ok^DjB}yq!mb-LaU7e~vGmCf54PQ1xtGtJliKyl2zt}Dz~|&3ITsk+k|dBU9Lzxos+Q@8YtW_YN; zjH5}GOo~e@Lr)> zoXZ{B?AFY(yTP7uuk8hgCD*))L=Q}3IuJYe(6)eQKO5pCwhBGI;U(SsbeZOVhR&%X z+6@l_rU`B17y1=lI;D&exS&_wgjRXcpZpWaZJhrgSgL zI`MP*j)o0sw|;s}-Li1fLqq4;8-Gm=RFS^)q)8&NY}L|FnW8VgPMq##rkvgLd(|4z zE6bb=d=`C*jMJ0Qs^P0_d^YXb&6qt@U1SfrlBd=`<~mP0Pi3rXMf#KDQ_K ztY1-##Wd+A3z>tvPYSI2C)ts+vRr6=z9F~MyhU?QO_eGua@w-XhH-y}SYV^Ci0Bow zqUyc_Spr;vz6ZAIhQ}&)2&~!m^c`~wQ|UXg3HNylp6u~Dvg{RWg;6~3)aSv0 zD@x`)73)2|yM+@I+@992zurROd{EFL|v-pdy z8ZYl)?whuwv`l`L866QaC4vnyOB=__e{@;wR4$^Tw*B#uu6|e9;y7 z!MDJnytwKs4{x8AINPmr(NlNa&{)BGV3Si+xaQ_VS7UjvEQ^~hdU=M>Pv@zrE0#IE zI(GZaF3so|-e-)jY}j%Q%U|AD-e#!rN$;0ppqQq3e?a5WuA^}Z>loDze3A2sTb8)n z~C)+*u%F_v~cwf*#-1Hw$Gf-*LT*x+JC` zv*!TE%^YdV!%XGcGS`nztkeq${p*-;)jO2o&E9iX({y$pFbv@lcznHB=f`=Gq#Y4T zaSzg-p4lh4v*_vlru9F155}&z827YCEic->xaX7}L$*q< zxv5{Ku;@+ab=NRw*?PvyzLOZYH@~?tKr1^4x{_6Ggy8fm&EO^?@qTff^=4kwA?9B9aZ|!Rh=KB$4xYfV- z!5O8an;tH(eAJfQE81$fFx=2JDZ2hlo$A%wc8Z?t)-xl5RGxLG2W+mN(YC&T{j2@o z)``o@-|6-*D=e4ex_RXAtRr#zj_sPc(d=!zhe~ zl>a0@>&C3Tk|vNK;rK$s*gwbW=j@4P!734(ADnSK z;r1hZhtc#^NB^qM+V z%=lLUIa;UA8cf`FS^Re3`U8#avd35KJF{Vj=K?AIC7g}Izhq7q= z*ClylMPXZj!IjhhHZ`4-`eo=XdiqH&*Ut33M5_zE53=m6rkuWW+4wu#oS|(O_t7SZk{?9OR<*`x;t*76=7Q{}7{#bb? zb`N8^lE8lk@qoIWf~W2tOY-6oulvrS)WDMaJ3wH~>!TZ2tzKX(p3r!0(_g#K2Gd-5 z81-2smbRKlC>>;6@OJgifYq$crCb$TSrcjnrhUmh`B}ERVb8lTE7y&i4RylS-RJS% z;uc_Dvfg8*e~5_JB(>FhJ{{S>(&=8f(|9+>qgzr1+jy@&FV{I(t$p(BvDmd6oqo5L z&(=|KcjdcQl)&9BkwR-+!Rq!U zO&>U$HdP62j*2Ppy6MZD@{K>(vh~R;qvm&7#zvY;rtLTSthd}ph@tR1%Vmw;ncJ@% zXWAch*3!vrw!UnyK#Lr&0eimhnUWyQ$-MtA1RXdnbGo{TBQC__1W)l1$Ai7u5zf3( z${Tvqq#ld;N}1&=KkP$GgfxZT$5LLCEeC*@A-g(7QK6x zaGTE$SWu#FI7e`gj^feO`092=$%Q?eGdEx6(4DIP?va#?rPs%$uDx%ssBCqf#*=Nd z=!Wj0w5a|SCNqycmun23xa8jHMIVm~7#xqV>elHw_fMg+V|j*#uOJ5}KgTAv$#+=J zF~wPT70oh}d+|tV=jV=)_uI}&?@;MEqkZD~OYW{OGRLi%aqaXL0F^(V)*Y20eT zceba9&HMLgn~#junRSb^r4A$)PD}LR-@al^*s|3hWL$bxU4{NLNK8*GP*=FnUlx+F zmu2>0t-H0yukofn+PBcN?9KYW-FFgqJj<7H5f3cYUvW_N;OmcC7Zsi@5Zbcg?-8?m zX3lQw^_~VAC1!k2udwy=YMz^A`n-6~_O~*tRQK{FKJt=Gm07WKQ-Oh&>jhTvefK%; z3NvUrn|*Ur&OIi=`>Q3`c?a+9bU~dnR}8PL%=(tG^^Z4`;3NZKldI-4wyY1Eb6>2f zYu>x)l+u;+HfnbUEp>5Y7u9cF@&0fo`)6s+;ve%KrXSfaG5vYp!hO>_QX;O38~l;J zTy-cQ$WVEA{Hj)MEyq_o+uMsjb4@PuK*F3ye($t90%k32oLLhQsX#>j<*0^1JF;7FZYswE>Cy3_f026TAn~*W0ogx8lD_;O6+QG`lPG$VqK`9`5^@rCG(|w9x)vD zS{iB>v4kf$aJ5m1z1CE*WoPqe?Df^Y^(=30>1q2VTTiXBQ@AtZ=d=(*9Wnk#Vda)P zgl{ETGriiI()clLM#O_Z3l50vS+jkkV1|fBqFtbE7(>yXQ=6twE&n9+Ja6*?=haEq zW_D`sFWi+_QGZc4cXif#bEXoBdH4Ae6}019PJGuo8o#*kVvgn(_DH`sytB^c+5bPn zU?9lA#Kg$L$im3X!o&=^DTtAYL6Dh6KuFP$Ran8mQOVdr#KOVt-&zb)WUtSz(Hrkkf+3+J<$1k?$&&=%=5^n9gb#MO- zA(pc%7)t*}2?u^|ydcr}b}P^72l8{hZv4qF2k@1F+b7JXm4O1?Eeobq41yKLiCZ+C!e)e&WJr6czUiw*Ooo)IhX#i#q4g#Dchkq_0!%K>wgN({}~*N zgTAQ69N^m^bnGNUXJ_!H*h{PG{fX{{9ZzTk|7cI>V+P1TL{@lOHiT{2$n}+{*;vcxF`-Sq34Syze9$LCTAeQzcFyu3NLu)vc5GpXdgrU;xi4M z6STT{VjH{K`|DnH&5UR+Eb3}`TQI-X`^M?%T8tbmxkXF=us#2A{olG*DMeL1(sSjC zMGe%lHm-;ZmJ5BPqw!8y|6$S7x5Z~x9t&ANwT6ZHSy_7MzxS^Vj+|Kgcg@3^)l53I zJg;n;I5x7qo#;Nll7;O*!=)`(4B5=|lFo0r3=n68Zw)*G+xSb4Lq~zZ9>$KaQk`gS@*uJyU^Or9c47K8jcs3Y zZps_-+D6~|Yj@4(SBuHLX>V>g=7)Z-;LrV>75w|Jw6dL2RJLh%qt3RRU(;SxsTC>p z`b}K(dJ|8dOve61v#eqgL49o!(-*nY%A#UAOuqf8JPQqrA`ZO?|KK zIH$-zDO%q#Bc%W8-qZKC3!I+5;YaT}M(r10r|tQCNxYAd@9gSByuvFl&pY*M1HZ)Q z$0sstgTL{7vA<{i>-qc6m+~9TzTSTq`J#T)?W$?T(+$`AUFL~sysc*NxI1g(oJz^G z?r%crr{69%bj|shm3U;w6|E~@b2VyW+LxwVd}jRDZhPhAq-8=J#+pG{JW6YRFYz;4 z>eb-YB)f`{|3H3$gQ_#zk($4;**0IM?Gf5`{>9Jv$_8g&N*1n6UVh+abl0!)Wlt_Y z(Yd$!H?J-K_r8BSe?O{nf5W@C{P(mf`8Qk6WJ;WIo)#z)u(su^|9xZU-<-Cws~Kn2 zylrh>|L0lee+J8WsbA-uTk1FET8Kf#e+Gv`N6s(Zc-G7f@s}It{;m2`Ao;R>-|njAZzNyT?z1@FL z+wy;lN*C)<6FzQqG+UhS-U`Qamt8@&=QGZmBDgvDKZAQ)y?dLi9^-R4TVwf)|61FF z1H2BbpM3hU@;QM8`9%+>et68#o;7u=SA(Ac|K|8*-#3cR*ks4E-Q?GnGYdK=D=pae zRW|Y5pYTijYjR(CL^FpkOO@Enl>gZ%HH39`_>`wb&o6D#IK=pDLCn|fJg4KjC%Oso zwh6~JJUr#{#YH5~mZE9NQ@;Ok~zEUgoC!zkwRD{(Eh$XC0Lx@hd{ zZk?@||3y7#hBM!(f}T6)B}|@YPv7|C-dF7;GbaB1(J#AaZ}{cw#M&xL?XLuv~gAtHxKaT`!$~cI<)^KlvG7{+bvppy>LmeHqXF zl}=d(asi+R{5Fk& zy}x1Jr32azQgZ{=b}0+-Pgcn5-?Cr3-H2a3xUW7Ggk;*)ctbI$)zkMGY-xA)uN=czk5Sq>en6D>Q5%m_`2hkChvn9ekc1CN?)R{ zO#j&VQzL)7-Fi9YqZ^;_ZL@Ft8Ol0m-_rjKA8yU*daUlY~td`;%{#GL%~XAf%Uc*Hgx714g9!#+Pcp{VOZ zYG9+Iq{tVuTt8Kl;K1Jf+uvTz7MEB!**L{4LHt4HCwch`PgYJAR-YN%*epD=-*w`$ z`7S$t+aKTIpv1eXa4N^GZA{_ELsv*lUtV5uxW}H+w}X&n|oa^WEy|^A^6+dHeR!(U+1%e38b# z;$oDi+53D|OZ)bzwrb5`DPh^u(#HM^^lv9$P7Y+dw{VW(Bei}Hrcd>m3a)?Zb-aE| zWKrVp%ULXS^YoP6MaFVw#m;Oq3pqT5Bd5=E4!$hB==Q6k-x)q?&s1~{x|wh-;9vA? zbJ(4iwcqE>J9o-E2Z_Bp@_BL7f<5%u{ zBA&}PdE%3Eue#IuRvOI`HJvp-w@U4|m8`wllf)Yib}k3%o61(+kr&i{l(ya8>=93Z z=fb6zd9v^N=H*G8Xk$!aY?fzXt`9hSa!2RO8}?`ZTCKTvOPF(Wx{!DRn@*yL#=PCX zSKHcu6UzGQEywog-hzA2W>5H{CU!U}eeL`|hqgHXXW*)>TVnr-DQ)J31&`NXDYglB zt$VSoV8P@SXNoKhLpH8#WmB11>(TtnWahb$&0o^1Ua5sWWjp>ubmyI#uQUH{nZAAb z%l`~#u2)yJsi(12>zh;=@vGgo^W*SIdy@0W>5WLTLzhU+5##vTv#;HozkKPlvaeVF zW~DDTun^muzvob!Tvb53C?P!OBE+96wqME z4Pe}G`$}=-1NG$z{~3%w?tPcFsi)#(%l&lkmL~-YA{x2tFZR3)bX(2-GS+_i(=!i0 zH9BSg)k*v78Ffaz!(wYxv+u$$Uk~W~o%z=`;@0|QPxgIyv2o#!HzLBuDSAhH!juor zo7+6O$eNjZh3y}YIc4j6|1(G}n0dQNtmS@nRhhn?+uNz^)2}B-{%25{E_j$*auZ8X z^3F7s$4+M$jx~xfeokjT|5f6^th*j3GJN?;j#<0&=(wL)`TWZ?3S&8bN_FYau!wr5Iy^|52u zoirxt4P{DZp^m@$HcJ?qa@^%#;k>t2ZtieiTy!Pn#Ia}VBSLqq|5~Zmt-Nc}tvzRM@;$1~ zHSs##|21oCvc$s4+V*KojvE(Vo%UDP-eA_dtgSll9P}=W?O7Cfaz(jW;j1FW*S;$x z!~QjzniX!X_>p12UTwE<^5hGb9zCCscdYfyPs^RwiPw56e)P<`(`)-@vRje$@q$I? zmPehxbniwff6tjpHdh|C^ns|=&G1a^pAZ@u06OQpA^x_0 zzg3OP+#fCNbJsa?CL^*zVq;6dh6${5-SP`hHpB;ex8HV9tJxzm<4we*f=7A>oisw3 zQZ6WOG&W*QT9i?8KwnMbTGr;@nUdYo3PKr~U*xA>e;A_B!_w1Le*M{_DQ2O%52y4S zUk+%9eiEUv>DQlZ`zO;L?I=wAQgP$X+2zN3Iqy4n_gT+c%X#9?bkC*V8uxDE4pJ1U zzU!FRHlO3jp?zoamBxuRnu~}+~2nSmF0hi1O9%8(`U~5^C!Gx z7O%bX$z}WPm5=zc@oAqq>lUBO*>ZDdv-pmONnN7bHd~(fw5;9tx>5RyRGu#;9nnf} zj!y>ql@H><=(Eq%e2 zCj@zRF7UHhmu>vJUn`^Jn&r$_lFqigN<}ABYo9+|8+D@W%O>4zxmJdoc3iEgY6}qW zJ7wMZE5PR`_fA9CS+i?~7HP^2B)yXLo%R6xbYa`GLf= zWxInq;pGo~CAH;tjuRXHEmnb`E6=nW%Pzm1tvRD)MH9z6QBTX5-D1X<3;r|A z{PB7-tDmud$CCu5hSkB*D=eiuj}1jiTzC4kqI8CllKrcbtB);uwm7J0=JG>D z7Q!Kq<+P*|t|ULu4qPw0N;oZ}3x9$TH`rpPPEFR?!KT z>(3tccg&KB`4o5S&z_)`FK=W&>l}1c51fA|`?hm?Q_L&t!l1Npog+trjxhFGtPo_8 zOJDVT;oF8D_kfs78EZZ#Ww@T}@y#;&TvYbukNmUJ%Dr1!?p#XzF1Nffc!FHCXK(NP z7aPw*P=NA`0M@f+dK_&37SHZ@pro(FaIn9L^~aMFD|DWoD%v|&ZvO3Pt2cjyTE4uo zov!k=SUXynp{KRxjD@t~(#sEGoZ44zSg@Nl$!dk#WS9EAyM*OZlbrrDaL8`GQMtre zdP>4!zS2@QGuL>ly^$w>h3ESpJW^!0;QOR)U%o8a@lGW2YWnvmMw1i560`1x8y`&L zsky_!$|W^7>amEtakc%bsv_n|kG_?ico?$f{FEm}$1h)yDb|}TeWuDL)9973#QVUt zIdd7j)NUAxCu|JSV94I|x$5@i!iJ^GYF_u|yuAB4b@SHT^`etB7x5gsw&3k_1;=!= z;EA2amp>Hcxj$ZY?%WYyu}S|KqJ7iiD$Opb%OquO)$R#VJ9Bx3rHK2XHP-(b`j3~3 zin2%kb

{{ this.name }}

@@ -22,9 +22,9 @@ {%- elif not attrib -%} {{ this.null_fallback }} {%- elif this.group_key == 'time' -%} - {{ attrib | duration(this.xdata) }} + {{ attrib | durationCluster(this.xdata, this.alt) }} {%- elif this.group_key == 'difficulty' -%} - {{ localize('difficulty', attrib) }} + {{ localize(this.alt, 'difficulty', attrib) }} {%- else -%} {{ attrib }} {%- endif -%} diff --git a/src/templates/layout.html b/src/templates/layout.html index 233aff8..8b74a4b 100644 --- a/src/templates/layout.html +++ b/src/templates/layout.html @@ -1,31 +1,39 @@ - - - - - -{% block title %}Welcome{% endblock %} · recipe lekture - +{%- if ENABLE_APPCACHE %} + +{% endif -%} + + + + + + + + + + {% block title %}Welcome{% endblock %} · recipe lekture + + {#- ontouchstart="" #}
+ {%- if ENABLE_APPCACHE %} + + {%- endif %}
- {%- set allowEmptyTags = site.get('settings', alt=this.alt)['show_empty_tags'] -%} {%- for tag in site.query('/tags', this.alt) %} - {%- if allowEmptyTags or tag._id in availableTags -%} {{ tag.name }} - {%- endif -%} {%- endfor %}
diff --git a/src/templates/macros/recipes.html b/src/templates/macros/recipes.html index 95d4be3..46bb165 100644 --- a/src/templates/macros/recipes.html +++ b/src/templates/macros/recipes.html @@ -5,13 +5,24 @@ {%- set img = recipe.attachments.images|sort(attribute='record_label')|first -%} {#--#}
-
- {%- if img -%} - - {%- else -%} - No Image - {%- endif -%} + + {#- overlay on hover and always-visible icons #} +
+
{{ recipe.time|duration(recipe.alt) }}
+
+ {%- if 'raw' in recipe.tags -%}{%- endif -%} + {%- if 'glutenfree' in recipe.tags -%}{%- endif -%} +
+ + {#- show image or placeholder text #} + {% if img -%} + + {%- else -%} +
No Image
+ {%- endif -%} + + {#- recipe title #}

{{ recipe.name }}

{#--#}
diff --git a/src/templates/recipe.html b/src/templates/recipe.html index da24632..0aecc1f 100644 --- a/src/templates/recipe.html +++ b/src/templates/recipe.html @@ -2,37 +2,42 @@ {% block title %}{{ this.name }}{% endblock %} {% block body %}
+ {% if this.source -%}
- ⤳ {{ this.source.host }} + {%- if this.source.host -%} + ⤳ {{ this.source.host }} + {%- else -%} + ⤳ {{ this.source }} + {%- endif -%}
{% endif %}

{{ this.name }}

- +
{{ this.rating|rating }}
{%- if this.difficulty %} - {{ localize('difficulty', this.difficulty) }} + {{ localize(this.alt, 'difficulty', this.difficulty) }} {%- else %} - {{ localize('difficulty._unset') }} + {{ localize(this.alt, 'difficulty._unset') }} {%- endif %}
-
{{ localize('duration.label') }}: {{ this.time|duration if this.time else '—' }}
-
{{ localize('yield.label') }}: {{ this.yield if this.yield else '—' }}
+
{{ localize(this.alt, 'duration.label') }}: {{ this.time|duration(this.alt) if this.time else '—' }}
+
{{ localize(this.alt, 'yield.label') }}: {{ this.yield or '—' }}
-

{{ localize('title.ingredients') }}:

+

{{ localize(this.alt, 'title.ingredients') }}:

    - {%- for ing in this|enumIngredients %} + {%- for ing in this|enumIngredients(this.alt) %} {%- if ing['group'] %}
  • {{ ing['group'] }}
  • {%- else %} @@ -41,7 +46,7 @@ {%- if ing['measure'] %}{{ ing['measure'] }} {% endif -%} {{ ing['name'] }} {%- if ing['note'] -%} - {{ ', ' ~ ing['note'] }} + {{ ', ' ~ ing['note'] | replaceAtRefURLs(label=localize(this.alt, 'ingredients.recipeLink')) }} {%- endif -%} {%- endif %} @@ -50,9 +55,9 @@
-

{{ localize('title.directions') }}:

+

{{ localize(this.alt, 'title.directions') }}:

{% if site.get('settings', alt=this.alt)['replace_temp'] -%} - {{ this.directions|string|replace('°C', '℃')|replace('°F', '℉')|markdown }} + {{ this.directions.html|replace('°C', '℃')|replace('°F', '℉') }} {% else -%} {{ this.directions }} {% endif -%} diff --git a/src/templates/recipes.html b/src/templates/recipes.html index 0e4bbd7..5184f4f 100644 --- a/src/templates/recipes.html +++ b/src/templates/recipes.html @@ -1,9 +1,9 @@ {% extends "layout.html" %} {% from "macros/recipes.html" import render_recipe_list %} {% from "macros/pagination.html" import render_pagination_all %} -{% block title %}{{ localize('title.recipes') }}{% endblock %} +{% block title %}{{ localize(this.alt, 'title.recipes') }}{% endblock %} {% block body %} -

{{ localize('title.recipes') }}

+

{{ localize(this.alt, 'title.recipes') }}

{{ render_recipe_list(this.pagination.items) }} {{ render_pagination_all(this.pagination) }} {% endblock %} \ No newline at end of file diff --git a/src/templates/root.html b/src/templates/root.html index 9d9cca5..04150b1 100644 --- a/src/templates/root.html +++ b/src/templates/root.html @@ -1,7 +1,7 @@ {% extends "layout.html" %} {% from "macros/recipes.html" import render_recipe_list %} {% block body %} -

{{ localize('title.latest') }}

+

{{ localize(this.alt, 'title.latest') }}

{{ render_recipe_list(site.query('recipes', this.alt) | sort(attribute='date', reverse=True), limit=6) }}

C7je`0@`UQzr!k0HLO!tqfe>9!tr#|Ut*V7uA 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 literal 0 HcmV?d00001 diff --git a/src/content/recipes/vanilla-cut-out-cookies/contents+de.lr b/data/development/vanilla-cut-out-cookies/contents+de.lr similarity index 60% rename from src/content/recipes/vanilla-cut-out-cookies/contents+de.lr rename to data/development/vanilla-cut-out-cookies/contents+de.lr index 89536ef..f07fc67 100644 --- a/src/content/recipes/vanilla-cut-out-cookies/contents+de.lr +++ b/data/development/vanilla-cut-out-cookies/contents+de.lr @@ -1,7 +1,5 @@ name: Vanille Ausstech-Kekse --- -yield: 26-28 Kekse ---- ingredients: 1/2 Tasse Margarine, oder Kokos Öl @@ -9,8 +7,8 @@ ingredients: 1/2 TL Vanille Extrakt 1/4 TL Vanilleshote 1 Prise Salz -2 1/4 Tassen Mehl, glutenfrei +2 1/4 Tassen Mehl, glutenfrei, @../gluten-free-flour/ --- directions: -No translation yet. Click the flag (🇱🇷) at the bottom. \ No newline at end of file +No translation yet. Click the flag (🇱🇷) at the bottom. diff --git a/data/development/vanilla-cut-out-cookies/contents+en.lr b/data/development/vanilla-cut-out-cookies/contents+en.lr new file mode 100644 index 0000000..6350aa7 --- /dev/null +++ b/data/development/vanilla-cut-out-cookies/contents+en.lr @@ -0,0 +1,24 @@ +name: Vanilla cut-out cookies +--- +ingredients: + +1/2 cup non-dairy butter, or coconut oil +1/2 cup maple syrup +1/2 tsp vanilla extract +1/4 tsp vanilla bean +1 dash salt +2 1/4 cups flour, gluten-free, @../gluten-free-flour/ +--- +directions: + +1. Preheat oven to 350°F. Line 2 cookie sheets with parchment paper. Prepare a rolling area with two additional sheets of parchment paper for that, and have your cookie cutter(s) handy. + +2. Place butter in a large mixing bowl and whip it with a mixer until it's creamy. Add sweetener, vanilla extract and bean, and salt and mix once again to combine. Add in flour and use a wooden spoon to mix. Then get in there with your hands and mix everything together by working the dough until you can shape it into a ball {note: as depending on the flour mix you use there may be a slight variance, know that the consistency of the dough should not be sticky but should press together when pinched — be sure to knead it really well first for some time — if it's a little sticky, add a little more flour (try 1-2 Tbsp); if it's a little dry add a little more sweetener (try 1 Tbsp)}. Shape the dough into 2 balls and then flatten each into a disk. + +3. Roll out one of the dough balls between two sheets of parchment paper to ¼" thickness {or thinner or thicker depending on how you want your cookies to turn out}. Use a cookie cutter to cut out the cookies. Carefully transfer to a prepared cookie sheets, spacing them ½" apart {they won't spread as they bake}. Gather up any dough scraps and repeat until all dough is used up. Repeat the process with the second dough ball. + +4. Bake in a pre-heated oven for approximately 11-13 minutes, until the edges just begin to become golden. Remove from oven and place on a cooling rack. {Note: cookies will harden a little within minutes of cooling, so don't overbake}. Allow the cookies to cool for 10 minutes and enjoy! + +__Note:__ +You can make your own glutenfree flour blend by combining: +1 cup brown rice flour, ¾ cup tapioca starch, ½ cup sweet rice flour, ½ tsp guar gum diff --git a/src/content/recipes/vanilla-cut-out-cookies/contents.lr b/data/development/vanilla-cut-out-cookies/contents.lr similarity index 50% rename from src/content/recipes/vanilla-cut-out-cookies/contents.lr rename to data/development/vanilla-cut-out-cookies/contents.lr index 88f63d2..f0b312c 100644 --- a/src/content/recipes/vanilla-cut-out-cookies/contents.lr +++ b/data/development/vanilla-cut-out-cookies/contents.lr @@ -6,6 +6,8 @@ rating: 4 --- difficulty: easy --- -source: https://www.unconventionalbaker.com/recipes/gluten-free-vegan-vanilla-cut-out-cookies/ +yield: 26-28 +--- +source: https://unconventionalbaker.com/recipes/gluten-free-vegan-vanilla-cut-out-cookies/ --- date: 2019-05-15 diff --git a/src/content/recipes/vanilla-cut-out-cookies/image.jpg b/data/development/vanilla-cut-out-cookies/image.jpg similarity index 100% rename from src/content/recipes/vanilla-cut-out-cookies/image.jpg rename to data/development/vanilla-cut-out-cookies/image.jpg diff --git a/src/content/recipes/vanilla-cut-out-cookies/image2.jpg b/data/development/vanilla-cut-out-cookies/image2.jpg similarity index 100% rename from src/content/recipes/vanilla-cut-out-cookies/image2.jpg rename to data/development/vanilla-cut-out-cookies/image2.jpg diff --git a/src/content/recipes/vanilla-cut-out-cookies/image3.jpg b/data/development/vanilla-cut-out-cookies/image3.jpg similarity index 100% rename from src/content/recipes/vanilla-cut-out-cookies/image3.jpg rename to data/development/vanilla-cut-out-cookies/image3.jpg diff --git a/data/distribution/contents.lr b/data/distribution/contents.lr new file mode 100644 index 0000000..dfb26d8 --- /dev/null +++ b/data/distribution/contents.lr @@ -0,0 +1 @@ +_model: recipes \ No newline at end of file diff --git a/data/export-yummy.py b/data/export-yummy.py new file mode 100644 index 0000000..9062f90 --- /dev/null +++ b/data/export-yummy.py @@ -0,0 +1,196 @@ +#!/usr/bin/env python3 +import sqlite3 +import os +import sys +from datetime import datetime + +''' +Usage: python3 generate-alternates.py '…/YummySoup.library/Database.SQL' + +You may have to adjust `mapTag`, `clearUTF()`, and `slugify()` below. +Output is generated in the current folder under `yummysoup-exported`. +''' + +# check if input param is SQL database file +try: + inputPath = os.path.abspath(sys.argv[1]) + if not os.path.isfile(inputPath) or not inputPath.upper().endswith('SQL'): + raise Exception() + base = os.path.dirname(inputPath) + print('connecting...') + db = sqlite3.connect(inputPath) +except Exception: + print() + print(f'usage: {os.path.basename(sys.argv[0])} "path/to/db.SQL"') + print('(e.g., "…/YummySoup! Librarys.library/Library Database.SQL")') + print() + exit() + +# create output export dir if necessary +_out = os.path.abspath('./yummysoup-exported/') +if not os.path.exists(_out): + os.mkdir(_out) + +# map old tags to new one. Should be all available tags in YummySoup! +# right hand side must be lower case string or None +mapTag = { + '': None, + 'Weihnachten': 'xmas', + 'Wurst': None, + 'Dressing': 'dressing', + 'Soße': 'sauce', + 'Hauptspeise': 'main-dish', + 'Süßes': 'sweet', + 'Zutat': 'ingredient', + 'Raw': 'raw', + 'Aufstrich': 'spread', + 'Brot': 'bread', + 'Kuchen': 'cake', + 'Kekse': 'cookies', + 'trocken': None, + 'Salat': 'salad', + 'Drink': 'drinks', + 'Riegel': None, + 'Schokolade': 'chocolate', + 'Dip': 'dip', + 'fruchtig': None, + 'Glutenfrei': 'glutenfree' +} + + +def ttoint(txt): + i, n = txt.split(' ') if txt else (0, 'M') + return int(i) * [1, 60, 1440]['MST'.index(n[0])] + + +# def matchTime(time): +# if time in [0, 25, 135, 165, 300]: +# return [None, 30, 150, 150, 360][[0, 25, 135, 165, 300].index(time)] +# prev = 99999 +# val = time +# for x in [5, 10, 15, 20, 30, 45, 60, 75, 90, 105, +# 120, 150, 180, 240, 360, 480, 720, 1440]: +# diff = abs(time - x) +# if diff < prev: +# prev = diff +# val = x +# elif diff == prev: +# print(time) +# return val + + +def clearUTF(txt): + return txt.replace('\\U00df', 'ß').replace('\\U00f1', 'ñ')\ + .replace('\\U00c4', 'Ä').replace('\\U00e4', 'ä')\ + .replace('\\U00d6', 'Ö').replace('\\U00f6', 'ö')\ + .replace('\\U00dc', 'Ü').replace('\\U00fc', 'ü') + + +def slugify(txt): + return txt.lower().replace(' ', '-').replace(':', '').replace('ß', 'ss')\ + .replace('(', '').replace(')', '').replace(',', '').replace('ê', 'e')\ + .replace('ä', 'ae').replace('ü', 'ue').replace('ö', 'oe').strip('-') + + +def formatIngredient(info): + try: + if info['isG'] in ['YES', '1']: + return '\n' + info['nam'] + except KeyError: + pass + txt = info['nam'].replace(',', ' ') + if info['mea']: + txt = '{} {}'.format(info['mea'], txt) + if info['qua']: + txt = '{} {}'.format(info['qua'], txt) + if info['met']: + txt = '{}, {}'.format(txt, info['met']) + return txt + + +def ingredientToStr(txt): + res = '' + for ing in clearUTF(txt).split('},'): + ing = ing.strip('{()} \n') + info = {'qua': '', 'mea': '', 'nam': '', 'met': ''} + for prop in ing.split(';'): + if not prop: + continue + k, v = [x.strip('\n "') for x in prop.split('=')] + info[k[:3]] = v + res += '\n' + formatIngredient(info) + return res + + +def directionsToStr(txt): + return txt.replace('', '').replace(' ', '')\ + .replace('', '').replace('
', '').replace('', '__').\ + replace('', '__').replace('', '_').replace('', '_')\ + .replace('℃', '°C').replace(' °C', '°C')\ + .replace('½', '1/2').replace('¼', '1/4').replace('⅛', '1/8')\ + .replace('⅓', '1/3').replace('⅔', '2/3').replace('¾', '3/4') + + +def prnt(key, val, inline=True): + return '' if not val else '{}:{}{}\n---\n'.format( + key, ' ' if inline else '\n\n', str(val).strip()) + + +def export(slug, content, img): + output = os.path.join(_out, slug) + for i in range(10): + folder = output + if i > 0: + folder += '-%d' % i + if not os.path.isdir(folder): + output = folder + break + os.mkdir(output) + with open(os.path.join(output, 'contents.lr'), 'w') as f: + f.write(txt.strip().rstrip('-')) + + for i in range(1, 10): + src = img % i + dest = os.path.join(output, f'image{"" if i == 1 else i}.jpg') + if not os.path.isfile(src): + break + with open(src, 'rb') as a, open(dest, 'wb') as b: + b.write(a.read()) + + +print('exporting...') +for row in db.cursor().execute('''SELECT * FROM ZRECIPES'''): + difficulty, rating, date, img = row[4], row[7], row[9], row[10] + duration, tags, name, yields = row[12:15], row[15], row[17], row[21] + notes, directions, source, ingredients = row[23], row[25], row[26], row[27] + + # preprocess + date = datetime.fromtimestamp(date + 978307200).strftime('%Y-%m-%d') + img = os.path.join(base, 'Images', img + '-Image%d.jpg') + duration = sum([ttoint(x) for x in duration]) # matchTime() + tags = ', '.join(sorted([mapTag[x] for x in tags.split(',') if mapTag[x]])) + slug = slugify(name) + if yields: + y = yields.split(' ') + if len(y) == 3 and y[1].endswith('form'): + yields = '{} {}'.format(y[2], y[1]) + + txt = '' + txt += prnt('name', name) + txt += prnt('tags', tags) + txt += prnt('time', duration) + txt += prnt('difficulty', [None, 'easy', 'medium', 'hard'][difficulty]) + txt += prnt('rating', rating) + txt += prnt('yield', yields) + txt += prnt('ingredients', ingredientToStr(ingredients), False) + desc = directionsToStr(directions) + if notes: + desc = '{}\n\n__Notes:__ {}'.format(desc.strip(), notes) + txt += prnt('directions', desc, False) + txt += prnt('source', source) + txt += prnt('date', date) + + export(slug, txt, img) + +db.close() +print('done.') diff --git a/data/generate-alternates.py b/data/generate-alternates.py new file mode 100644 index 0000000..46f5e5c --- /dev/null +++ b/data/generate-alternates.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +import os +import sys + +''' +Usage: python3 generate-alternates.py development/* + +Input is a recipe folder. +Will take the `contents.lr` and extract `contents+de.lr` and `contents+en.lr`. +The content will be identical but its easier to edit this way. +No necessary redundant data fields. +''' + + +def prnt(key, val, inline=True): + return '' if not val else '{}:{}{}\n---\n'.format( + key, ' ' if inline else '\n\n', str(val).strip()) + + +def splitContent(path): + mode = 1 + idx = 0 + with open(os.path.join(path, 'contents.lr'), 'r') as fin: + tmp = ['', ''] + for line in fin: + if mode == 1: + tag = line.split(':')[0] + if tag in ['name', 'yield', 'ingredients', 'directions']: + idx = 1 + else: + idx = 0 + tmp[idx] += line + mode = 2 + else: + tmp[idx] += line + if line == '---\n': + mode = 1 + tmp[1] = tmp[1][:-4] + return tmp + + +def writeSplit(path): + de_file = os.path.join(path, 'contents+de.lr') + if not os.path.isdir(path) or os.path.exists(de_file): + return + print(path) + content = splitContent(path) + if not content[1]: + return + with open(de_file, 'w') as f: + f.write(content[1]) + with open(os.path.join(path, 'contents+en.lr'), 'w') as f: + f.write(content[1]) + with open(os.path.join(path, 'contents.lr'), 'w') as f: + f.write(content[0]) + + +for x in sys.argv[1:]: + writeSplit(x) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..58717e8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +lektor diff --git a/src/assets/app.webmanifest b/src/assets/app.webmanifest new file mode 100644 index 0000000..a221dd4 --- /dev/null +++ b/src/assets/app.webmanifest @@ -0,0 +1,14 @@ +{ + "name": "42 recipes", + "display": "standalone", + "background_color" : "#EAE9E7", + "theme_color": "#DC3A59", + "scope": ".", + "icons": [{ + "src": "img/icon-180.png", + "sizes": "180x180" + },{ + "src": "img/icon-196.png", + "sizes": "196x196" + }] +} \ No newline at end of file diff --git a/src/assets/favicon.ico b/src/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6d60f35dbad54220ec0b062252fd05df70296ac1 GIT binary patch literal 5430 zcmZQzU}Ruo5D);-3Je)63=C=v3=9ei5dI1Q28KQs1_liV1_l9;I0HnS0R&h;1YXPq z)h5Kiz!1W~z%UVtgBchYKw=;xL2A$q5ocgvC}m`1+{MJibb^6_;e@259Ajc)I?lkru#16#p@e~fK@4h$90LQxW<5Q*#BR@ zet|KF4H7dkG5O!n(C}YJN9P{{1H(oJ1_oIM28L;-rl$XH-MaPv!Gj0?H8eE-FI%?k zKRQ^tbm@OBEv^5L9zFVhU1VGo~>yF}<2Ob0%2%*|TTC_TRjD6U;{@Kw`$m z#{bWqI|mk?K7IOsMn=Y0TwGlLcJJN|7W?+?+yBd#FaQ7f^Cy^(Oo04y>C&bDAT=QI zojZ5_=j7!4$H>U|V#<^$AR&_QgDJRh;Q}a(|AO=~Ffd3mFfgoCQ&ZQ8W|fByUdyWid2{XfVKklWnc z+`wYLfBy!Hsj8}i^sa*H1w|t$T}(1JH~;_X)2IJGe*F0F;L=r@BgNzrvE#3?D!7~ zXAm1C1~MCD2Ll5GUj3kO0;vau83=>eATdJvL1`G2K5pN>{U3xuX%d7%Y!C*?fz;rz zKbn=5^{0e{#4jl+sh`*|NDicifq@|!=4m8a2`V1Lz`%eHgY<&bg0((iXJBYx1T%3G zAo&B#3=G&XsGLz?U|?`SE@wcg0jFssNw6|7Fvu`4Fc>f}Fz7QdFi0~nFo48JGK2`l zOi*)~p=$XV7#PAC7#LPCFfd$WU|@I-#a9^^7?v|IFoZHNFz`Xug7kpg1Tq6EL=?rr zz`$U|z`#(+z`(GWfq`KQ0|UcaXnDJxfq~%%0|NsnuYmG77{mBbIgt8Z1_p-J3=9lg z85kIrLd~*ZU|;~5jn5IF@La~g!0;Z)Ot4)rJ~K1(e|>%Z|0N|Q|7Xvh4aOigNDL$g zQ-_6q$H2g_1R7u1+~C8&z;GL+kCBn_zoew(e-{^*|Df`Qjg1ZL1|A-s|1~u=|DQd3 z2Fi9Q7$jC*UHu=V24n_E52$CD)g#MS6mHoeR zg?+kOen*l0=3kwVX3kV2+ z&0=6+xCf16kTZlC7#Mbf>=qLf`@dqv3UFBqGWPA;xBtz|%)okFU0wfw`0xQFj2FLu z|Ng(TvolzawY4=|56In%7cc%VA|e8ogW3tQJC%Wf;X5eqdV70O%sz4A#D9K%ez5vk zvu2^l;p2enO^|;;VF{``VQN8TCMY~Xc7g0jLU|`q-QVXizU%Yq$QwpZntXcD) ziHYeyFE1~+-Uka3L4eu?pmYF=hm9LIqUZpn6Hr{=k0|Ucbs5}0H>R5DzU%!6+ zzkK=f|J%23ho=d2HQ4x|x*DVh)VBHZkWE-Zj85tQc`$2Yt%Egja~X&Y5`*z^(V%nzDkDL5f$U^pU;x?83#}`_d41~Cso*jTml-Ed zp8Ovi91Je^LH2_1ym|Bf2L%QFKYsi;E^S~lCrz64pO23Z=Jz!W3=ANPT~_7|vc1+IT1A|n2S!WY?0kR2d%Kz4%c24N5zBnFa0 zRtriKfq{WAKZDE!wXc=owqa+mGcYi00GS7hQ&5^gHWOqANDgEt$Zik@u|Z-WIb^kH z_Jhm>nT_36gea)p1nNWl2e}<&2C|tTJ3w}U>;%~j!XP$C3?zrF7Ni$s21t&9fdOPD z$ZUj7*jXSoAhlTSFD@OZJ23=;#N zNKo7L>eZ|NLG58uFh~zbFUSmX?FY5tLG4vaFvtvY?T6|E=PfF*L1hZ4Y{6dYAVfj^ z#dv6cuaAL&ff^W8r+~}^nT@b%5U~FLkpKTrfu;Tf0|Wm91_t&63=GT-prJ`3-3C$% O(gV^9GJ_NhDn|hQ!tXx- literal 0 HcmV?d00001 diff --git a/src/assets/img/favicon.svg b/src/assets/img/favicon.svg new file mode 100644 index 0000000..1e60ee0 --- /dev/null +++ b/src/assets/img/favicon.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/src/assets/img/icon-180.png b/src/assets/img/icon-180.png new file mode 100644 index 0000000000000000000000000000000000000000..c329a81e1ac9af735761a83a281a877a86b0c07a GIT binary patch literal 1598 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 OF+5%UT-G@yGywpsw*=V$ literal 0 HcmV?d00001 diff --git a/src/assets/img/icon-32.png b/src/assets/img/icon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..82c2acd77d755e0b961450f7febbf449058c5bd1 GIT binary patch literal 485 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGG6Q@t<7&j17Z`uh9# z@3*(N|NsAgeSQ7=_wV!b^I?(<{{H^+=g;To=U=~mJp%(ne0==*^XC~D81CP{FE20O z-`@{c$-uy%sHi9+A|fRv#mUJjBqYSZ!0>Et;3EbG2IZ0%ss3 z7ykeMUmy_Ru;ap!7i${yA1+H}U|{6%ba4!+VBB)CJFCS&z~N$K{v(xj%OXqXzx!XG ze(_+~5eM$KPgNgUNQTs1TWR%T3!^A|=zivN?~AMhUa$K#-=Slb;S|T_;8GLUfM%^L z_59~V-5Xx%c;~V&vGs7cuJ@k#o%36R)oF*T3J=&UZg*Te!|ke}>sGcGu2CLQ8jjlG zJEk7sT^A&m5Y63U#3B7)Z=Td&u4~$QPtIz6Ja=?kN}SQGyFDL1%(%PfiLjJ));`DN znug_jcDcImIKE!mC^A(3!d@3Oh2G6_S2m@`GhhC+nPC%i&=!8a9XuCKUD} + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/icon-glutenfree_old.svg b/src/assets/img/icon-glutenfree_old.svg new file mode 100644 index 0000000..95cba9a --- /dev/null +++ b/src/assets/img/icon-glutenfree_old.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/icon-raw.svg b/src/assets/img/icon-raw.svg new file mode 100644 index 0000000..b007071 --- /dev/null +++ b/src/assets/img/icon-raw.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/src/assets/img/icon-vegan.svg b/src/assets/img/icon-vegan.svg new file mode 100644 index 0000000..655a32a --- /dev/null +++ b/src/assets/img/icon-vegan.svg @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/src/assets/img/icon-yield.svg b/src/assets/img/icon-yield.svg new file mode 100644 index 0000000..c07a0ec --- /dev/null +++ b/src/assets/img/icon-yield.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/root/index.html b/src/assets/index.html similarity index 100% rename from src/root/index.html rename to src/assets/index.html diff --git a/src/assets/static/col2.js b/src/assets/static/col2.js deleted file mode 100644 index fdb1b84..0000000 --- a/src/assets/static/col2.js +++ /dev/null @@ -1,10 +0,0 @@ -(function(){// show at least 2 columns on mobile devices - var viewport = document.head.querySelector("meta[name=viewport]"); - if (viewport && screen.width < 485) { - document.head.removeChild(viewport); - var x = document.createElement("meta"); - x.setAttribute("name", "viewport"); - x.setAttribute("content", "width=485"); - document.head.appendChild(x); - } -})(); \ No newline at end of file diff --git a/src/assets/static/lozad.min.js b/src/assets/static/lozad.min.js deleted file mode 100644 index 625e656..0000000 --- a/src/assets/static/lozad.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! lozad.js - v1.9.0 - 2019-02-09 -* https://github.com/ApoorvSaxena/lozad.js -* Copyright (c) 2019 Apoorv Saxena; Licensed MIT */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.lozad=e()}(this,function(){"use strict";var g=Object.assign||function(t){for(var e=1;e{ready()};} + function update(){ready(); cache.swapCache(); window.location.reload()} + function busy(){document.getElementById('cache-status').style='background:darkorange'} + function ready(){document.getElementById('cache-status').style='background:forestgreen'} + function failed(){document.getElementById('cache-status').style='background:red'} + } +} +/*! lozad.js - v1.9.0 - 2019-02-09 +* https://github.com/ApoorvSaxena/lozad.js +* Copyright (c) 2019 Apoorv Saxena; Licensed MIT */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.lozad=e()}(this,function(){"use strict";var g=Object.assign||function(t){for(var e=1;e * { - background-color: #FFF; + background: #FFF; border: 1px solid var(--cRed1); border-radius: 0.3em; padding: 0.3em 0.5em; margin: 0.2em; } -.tags a:hover, .tags .active, a:hover .recipe-tile { - background-color: var(--cRed1); - color: #FFF; +.tags a:hover, .tags .active, a:hover .recipe-tile, .recipe-tile .hover .time { + background: var(--cRed1); color: #FFF; } header .tags { max-width: 600px; margin: 0 auto } .cluster dt { margin-top: 0.7em; font-size: 1.6em } .cluster dd { margin-top: 0.4em } .cluster dd a { white-space: nowrap } -@media(max-width: 500px) { +@media(max-width: 32em) { .cluster dd { margin-left: 0 } .cluster dd a { white-space: unset } } @@ -77,25 +91,31 @@ header .tags { max-width: 600px; margin: 0 auto } /* * Grid overview */ -.pagination { text-align: center; margin-top: 1em; } +.pagination { text-align: center; margin-top: 1em } .recipe-tile { - background-color: var(--cBg2); - color: var(--cTxt); + background: var(--cBg2); color: var(--cTxt); display: inline-block; vertical-align: top; margin: 6px; width: 200px; text-align: center; } -.recipe-tile .img-placeholder { - background-color: #777; - color: var(--cBg2); - width: 200px; - height: 150px; +.recipe-tile .placeholder { font: bold 25px/150px 'Courier New', monospace; + background: #777; color: var(--cBg2); } -a:hover .recipe-tile img { mix-blend-mode: overlay } -.recipe-tile p { height: 2.6em; margin: 0.3em 10px; overflow-y: auto } +.recipe-tile p { height: 2.5em; margin: 0.3em 10px; overflow-y: auto } +.recipe-tile img, .recipe-tile .overlay { display: block; width: 200px; height: 150px } +.recipe-tile .overlay { position: absolute } +.recipe-tile .icon-bar { position: absolute; bottom: 3px; right: 3px } +.recipe-tile .icon-bar i.icon { margin-left: 2px; font-size: 28px } +a:hover .recipe-tile .hover { display: block; background: #0006 } +.recipe-tile .hover { display: none; height: 100% } +.recipe-tile .hover .time { + position: relative; top: -1.25em; + font: bold 1.1em/1.3em monospace; +} +/* snap to column grid */ .tile-grid { width: fit-content; max-width: 1060px; margin: 0 auto } .latest .tile-grid { max-width: 636px } /* max-width = prev + 2*30; width = x * (200 + 2*6); */ @@ -107,9 +127,9 @@ a:hover .recipe-tile img { mix-blend-mode: overlay } @media print and (orientation: portrait) { .tile-grid { width: 636px } } @media print and (orientation: landscape) { .tile-grid { width: 1060px } } @media print { - a:hover .recipe-tile img { mix-blend-mode: unset !important } - .recipe-tile, .recipe-tile .img-placeholder, a:hover .recipe-tile { - background-color: #FFF; color: #000 } + .recipe-tile .overlay { display: none } + .recipe-tile, a:hover .recipe-tile, .recipe-tile .placeholder { + background: #FFF; color: #000 } } /* @@ -120,16 +140,19 @@ a:hover .recipe-tile img { mix-blend-mode: overlay } .recipe #source { margin-left: -1em; margin-bottom: -1.5em } .recipe #metrics { float: right; margin: 0 0 15px 25px; max-width: 180px } .recipe #metrics > * { text-indent: -20px; margin-left: 20px; padding-top: 0.3em } -.recipe #ingredients { float: left; margin: 0 25px 15px 0; max-width: 300px } +.recipe #ingredients { float: left; margin: 0 30px 15px 0; max-width: 300px } +.recipe #ingredients a { line-height: 1em } .recipe #directions ul { list-style-type: circle } +.recipe #directions dl dt { color: var(--cRed2); font-weight: bold } +.recipe #directions dl dd { margin-bottom: 1em } /* Colored, 3-part, difficulty bar */ -.difficulty.easy > div:nth-child(1) { background-color: #3C3 } +.difficulty.easy > div:nth-child(1) { background: #3C3 } .difficulty.medium > div:nth-child(1), -.difficulty.medium > div:nth-child(2) { background-color: #FC3 } +.difficulty.medium > div:nth-child(2) { background: #FC3 } .difficulty.hard > div:nth-child(1), .difficulty.hard > div:nth-child(2), -.difficulty.hard > div:nth-child(3) { background-color: #F30 } -.difficulty > * { vertical-align: middle; } +.difficulty.hard > div:nth-child(3) { background: #F30 } +.difficulty > * { vertical-align: middle } .difficulty > div:nth-child(1) { border-radius: 50% 0 0 50% } .difficulty > div:nth-child(3) { border-radius: 0 50% 50% 0 } .difficulty > div { @@ -138,16 +161,26 @@ a:hover .recipe-tile img { mix-blend-mode: overlay } border: 1px solid #555; } -@media screen and (max-width: 800px) { - .recipe #img-carousel img { height: auto; width: 100%; padding: 0 } - .recipe #metrics { float: unset; max-width: fit-content; margin: 20px auto } +@media screen and (max-width: 50em) { + .recipe h1 { margin-bottom: 0 } + .recipe #img-carousel { height: calc(75vw - 2*50px) } + .recipe #img-carousel img { height: 100%; max-width: 100%; padding: 0 } + .recipe #metrics { float: unset; max-width: max-content; margin: .5em auto 2em } + .recipe #metrics > *:not(:first-child) { margin-right: -100vw; max-width: 50vw } +} +@media screen and (max-width: 40em), print and (orientation: portrait) { + .recipe #ingredients { float: unset; max-width: 100% } +} +@media screen and (max-width: 32em) { + .recipe #img-carousel { padding: 0 10px; height: calc(75vw - 2*10px) } } -@media(max-width: 600px) { .recipe #ingredients { float: unset; max-width: 100% } } -@media(max-width: 500px) { .recipe #img-carousel { padding: 0 10px } } -@media print { #source, #rating, .difficulty { display: none } } -@media print and (orientation: landscape) { #img-carousel img { display: none } } +@media print { + h1 { margin-top:0 } + #source, #rating, .difficulty, #img-carousel { display: none } +} +/*@media print and (orientation: landscape) { #img-carousel img { display: none } } @media print and (orientation: portrait) { #img-carousel img:not(:first-child) { display: none } .recipe #metrics { float: unset; padding-bottom: 1em } -} +}*/ diff --git a/src/configs/force-update.ini b/src/configs/force-update.ini new file mode 100644 index 0000000..4f70c63 --- /dev/null +++ b/src/configs/force-update.ini @@ -0,0 +1,2 @@ +enabled = yes +endswith = .appcache \ No newline at end of file diff --git a/src/content/app.appcache/contents.lr b/src/content/app.appcache/contents.lr new file mode 100644 index 0000000..443cbcb --- /dev/null +++ b/src/content/app.appcache/contents.lr @@ -0,0 +1,3 @@ +_template: cache.manifest +--- +_model: none \ No newline at end of file diff --git a/src/content/groupby/time/contents.lr b/src/content/groupby/time/contents.lr index 400ed5e..af7fc61 100644 --- a/src/content/groupby/time/contents.lr +++ b/src/content/groupby/time/contents.lr @@ -10,4 +10,4 @@ xdata: 120 180 360 -9999 +1440 diff --git a/src/content/recipes/vanilla-cut-out-cookies/contents+en.lr b/src/content/recipes/vanilla-cut-out-cookies/contents+en.lr deleted file mode 100644 index 13ffb5c..0000000 --- a/src/content/recipes/vanilla-cut-out-cookies/contents+en.lr +++ /dev/null @@ -1,26 +0,0 @@ -name: Vanilla cut-out cookies ---- -yield: 26-28 cookies ---- -ingredients: - -1/2 cup non-dairy butter, or coconut oil -1/2 cup maple syrup -1/2 tsp vanilla extract -1/4 tsp vanilla bean -dash salt -2 1/4 cups gluten-free flour blend ---- -directions: - -1) Preheat oven to 350°F. Line 2 cookie sheets with parchment paper. Prepare a rolling area with two additional sheets of parchment paper for that, and have your cookie cutter(s) handy. - -2) Place butter in a large mixing bowl and whip it with a mixer until it’s creamy. Add sweetener, vanilla extract and bean, and salt and mix once again to combine. Add in flour and use a wooden spoon to mix. Then get in there with your hands and mix everything together by working the dough until you can shape it into a ball {note: as depending on the flour mix you use there may be a slight variance, know that the consistency of the dough should not be sticky but should press together when pinched — be sure to knead it really well first for some time — if it’s a little sticky, add a little more flour (try 1-2 tbsp); if it’s a little dry add a little more sweetener (try 1 tbsp)}. Shape the dough into 2 balls and then flatten each into a disk. - -3) Roll out one of the dough balls between two sheets of parchment paper to ¼” thickness {or thinner or thicker depending on how you want your cookies to turn out}. Use a cookie cutter to cut out the cookies. Carefully transfer to a prepared cookie sheets, spacing them ½” apart {they won’t spread as they bake}. Gather up any dough scraps and repeat until all dough is used up. Repeat the process with the second dough ball. - -4) Bake in a pre-heated oven for approximately 11-13 minutes, until the edges just begin to become golden. Remove from oven and place on a cooling rack. {Note: cookies will harden a little within minutes of cooling, so don’t overbake}. Allow the cookies to cool for 10 minutes and enjoy! - -__Note:__ -You can make your own glutenfree flour blend by combining: -1 cup brown rice flour, ¾ cup tapioca starch, ½ cup sweet rice flour, ½ tsp guar gum diff --git a/src/content/settings/contents+de.lr b/src/content/settings/contents+de.lr index 0b1faad..9884bf6 100644 --- a/src/content/settings/contents+de.lr +++ b/src/content/settings/contents+de.lr @@ -1 +1 @@ -measures: EL, TL, kg, g, L, dl, cl, ml, cm, Msp, Prise, Tasse, Tassen, Dose, Dosen, kleine, Bund, Packung, Packungen, Scheibe, Scheiben, Schuss, Stängel, Tropfen, Tube \ No newline at end of file +measures: EL TL kg g L dl cl ml cm Msp Prise Tasse Tassen Dose Dosen kleine große Bund Packung Packungen Scheibe Scheiben Schuss Stängel Tropfen Tube \ No newline at end of file diff --git a/src/content/settings/contents+en.lr b/src/content/settings/contents+en.lr index effd13d..561b317 100644 --- a/src/content/settings/contents+en.lr +++ b/src/content/settings/contents+en.lr @@ -1 +1 @@ -measures: kg, g, L, dl, cl, ml, oz, lb, pt, qt, cm, tsp, tbsp, c, cup, cups, pkg, pck, drop, drops, tube, dash, dashes, ounce, ounces, small, medium, large, box, can, pinch, tin, clove, cloves \ No newline at end of file +measures: kg g L dl cl ml oz lb pt qt cm inch tsp tbsp c cup cups pkg pkgs drop drops tube dash dashes ounce ounces small medium large box can tin pinch pinches clove cloves stick sticks bunch handful splash splashes stem stems slice slices \ No newline at end of file diff --git a/src/content/settings/contents.lr b/src/content/settings/contents.lr index 524aabb..41b7486 100644 --- a/src/content/settings/contents.lr +++ b/src/content/settings/contents.lr @@ -5,5 +5,3 @@ _hidden: yes replace_frac: yes --- replace_temp: yes ---- -show_empty_tags: no diff --git a/src/content/tags/bread/contents+de.lr b/src/content/tags/bread/contents+de.lr index b52cbce..8e279cc 100644 --- a/src/content/tags/bread/contents+de.lr +++ b/src/content/tags/bread/contents+de.lr @@ -1 +1 @@ -name: Brot +name: Brot \ No newline at end of file diff --git a/src/content/tags/bread/contents.lr b/src/content/tags/bread/contents.lr index 8a1905a..30e079e 100644 --- a/src/content/tags/bread/contents.lr +++ b/src/content/tags/bread/contents.lr @@ -1 +1 @@ -name: Bread +name: Bread \ No newline at end of file diff --git a/src/content/tags/cake/contents+de.lr b/src/content/tags/cake/contents+de.lr index 1fdb80c..7f48c06 100644 --- a/src/content/tags/cake/contents+de.lr +++ b/src/content/tags/cake/contents+de.lr @@ -1 +1 @@ -name: Kuchen +name: Kuchen \ No newline at end of file diff --git a/src/content/tags/cake/contents.lr b/src/content/tags/cake/contents.lr index 2283244..dee45d9 100644 --- a/src/content/tags/cake/contents.lr +++ b/src/content/tags/cake/contents.lr @@ -1 +1 @@ -name: Cake +name: Cake \ No newline at end of file diff --git a/src/content/tags/cheese/contents+de.lr b/src/content/tags/cheese/contents+de.lr new file mode 100644 index 0000000..b94f5c0 --- /dev/null +++ b/src/content/tags/cheese/contents+de.lr @@ -0,0 +1 @@ +name: Käse \ No newline at end of file diff --git a/src/content/tags/cheese/contents.lr b/src/content/tags/cheese/contents.lr new file mode 100644 index 0000000..eb81fe7 --- /dev/null +++ b/src/content/tags/cheese/contents.lr @@ -0,0 +1 @@ +name: Cheese \ No newline at end of file diff --git a/src/content/tags/chocolate/contents+de.lr b/src/content/tags/chocolate/contents+de.lr deleted file mode 100644 index 94cdb88..0000000 --- a/src/content/tags/chocolate/contents+de.lr +++ /dev/null @@ -1 +0,0 @@ -name: Schokolade diff --git a/src/content/tags/chocolate/contents.lr b/src/content/tags/chocolate/contents.lr deleted file mode 100644 index f7aa370..0000000 --- a/src/content/tags/chocolate/contents.lr +++ /dev/null @@ -1 +0,0 @@ -name: Chocolate diff --git a/src/content/tags/cookies/contents+de.lr b/src/content/tags/cookies/contents+de.lr index 3079952..28d4fb7 100644 --- a/src/content/tags/cookies/contents+de.lr +++ b/src/content/tags/cookies/contents+de.lr @@ -1 +1 @@ -name: Kekse +name: Keks \ No newline at end of file diff --git a/src/content/tags/cookies/contents.lr b/src/content/tags/cookies/contents.lr index 0613a7e..fbe56c2 100644 --- a/src/content/tags/cookies/contents.lr +++ b/src/content/tags/cookies/contents.lr @@ -1 +1 @@ -name: Cookies +name: Cookie \ No newline at end of file diff --git a/src/content/tags/crust/contents+de.lr b/src/content/tags/crust/contents+de.lr new file mode 100644 index 0000000..9ff66ad --- /dev/null +++ b/src/content/tags/crust/contents+de.lr @@ -0,0 +1 @@ +name: Kuchenboden \ No newline at end of file diff --git a/src/content/tags/crust/contents.lr b/src/content/tags/crust/contents.lr new file mode 100644 index 0000000..a0c0603 --- /dev/null +++ b/src/content/tags/crust/contents.lr @@ -0,0 +1 @@ +name: Crust \ No newline at end of file diff --git a/src/content/tags/dip/contents.lr b/src/content/tags/dip/contents.lr index 0145d3f..1a151c1 100644 --- a/src/content/tags/dip/contents.lr +++ b/src/content/tags/dip/contents.lr @@ -1 +1 @@ -name: Dip +name: Dip \ No newline at end of file diff --git a/src/content/tags/dressing/contents.lr b/src/content/tags/dressing/contents.lr deleted file mode 100644 index d662d31..0000000 --- a/src/content/tags/dressing/contents.lr +++ /dev/null @@ -1 +0,0 @@ -name: Dressing diff --git a/src/content/tags/drinks/contents.lr b/src/content/tags/drinks/contents.lr index bd24de0..e82d3eb 100644 --- a/src/content/tags/drinks/contents.lr +++ b/src/content/tags/drinks/contents.lr @@ -1 +1 @@ -name: Drinks +name: Drink \ No newline at end of file diff --git a/src/content/tags/glutenfree/contents+de.lr b/src/content/tags/glutenfree/contents+de.lr index 986bd67..d257448 100644 --- a/src/content/tags/glutenfree/contents+de.lr +++ b/src/content/tags/glutenfree/contents+de.lr @@ -1 +1 @@ -name: Glutenfrei +name: Glutenfrei \ No newline at end of file diff --git a/src/content/tags/glutenfree/contents.lr b/src/content/tags/glutenfree/contents.lr index af204d2..2124649 100644 --- a/src/content/tags/glutenfree/contents.lr +++ b/src/content/tags/glutenfree/contents.lr @@ -1 +1 @@ -name: Glutenfree +name: Gluten-free \ No newline at end of file diff --git a/src/content/tags/ingredient/contents+de.lr b/src/content/tags/ingredient/contents+de.lr index b1cb8a3..e8ccb11 100644 --- a/src/content/tags/ingredient/contents+de.lr +++ b/src/content/tags/ingredient/contents+de.lr @@ -1 +1 @@ -name: Zutat +name: Zutat \ No newline at end of file diff --git a/src/content/tags/ingredient/contents.lr b/src/content/tags/ingredient/contents.lr index edc91cf..f87d25b 100644 --- a/src/content/tags/ingredient/contents.lr +++ b/src/content/tags/ingredient/contents.lr @@ -1 +1 @@ -name: Ingredient +name: Ingredient \ No newline at end of file diff --git a/src/content/tags/main-dish/contents+de.lr b/src/content/tags/main-dish/contents+de.lr index b83fc3d..4463ce5 100644 --- a/src/content/tags/main-dish/contents+de.lr +++ b/src/content/tags/main-dish/contents+de.lr @@ -1 +1 @@ -name: Hauptspeise +name: Hauptspeise \ No newline at end of file diff --git a/src/content/tags/main-dish/contents.lr b/src/content/tags/main-dish/contents.lr index b83ec71..1eae988 100644 --- a/src/content/tags/main-dish/contents.lr +++ b/src/content/tags/main-dish/contents.lr @@ -1 +1 @@ -name: Main dish +name: Main dish \ No newline at end of file diff --git a/src/content/tags/muffins/contents.lr b/src/content/tags/muffins/contents.lr new file mode 100644 index 0000000..bcd6755 --- /dev/null +++ b/src/content/tags/muffins/contents.lr @@ -0,0 +1 @@ +name: Muffin \ No newline at end of file diff --git a/src/content/tags/raw/contents.lr b/src/content/tags/raw/contents.lr index 434f901..7f2aba1 100644 --- a/src/content/tags/raw/contents.lr +++ b/src/content/tags/raw/contents.lr @@ -1 +1 @@ -name: Raw +name: Raw \ No newline at end of file diff --git a/src/content/tags/salad/contents+de.lr b/src/content/tags/salad/contents+de.lr index a6b710c..38e3537 100644 --- a/src/content/tags/salad/contents+de.lr +++ b/src/content/tags/salad/contents+de.lr @@ -1 +1 @@ -name: Salat +name: Salat \ No newline at end of file diff --git a/src/content/tags/salad/contents.lr b/src/content/tags/salad/contents.lr index f0a1475..0c260de 100644 --- a/src/content/tags/salad/contents.lr +++ b/src/content/tags/salad/contents.lr @@ -1 +1 @@ -name: Salad +name: Salad \ No newline at end of file diff --git a/src/content/tags/sauce/contents+de.lr b/src/content/tags/sauce/contents+de.lr deleted file mode 100644 index fdacb8b..0000000 --- a/src/content/tags/sauce/contents+de.lr +++ /dev/null @@ -1 +0,0 @@ -name: Soße diff --git a/src/content/tags/sauce/contents.lr b/src/content/tags/sauce/contents.lr deleted file mode 100644 index 728d057..0000000 --- a/src/content/tags/sauce/contents.lr +++ /dev/null @@ -1 +0,0 @@ -name: Sauce diff --git a/src/content/tags/savory/contents+de.lr b/src/content/tags/savory/contents+de.lr new file mode 100644 index 0000000..5bbdb84 --- /dev/null +++ b/src/content/tags/savory/contents+de.lr @@ -0,0 +1 @@ +name: Herzhaft \ No newline at end of file diff --git a/src/content/tags/savory/contents.lr b/src/content/tags/savory/contents.lr new file mode 100644 index 0000000..1ba3d21 --- /dev/null +++ b/src/content/tags/savory/contents.lr @@ -0,0 +1 @@ +name: Savory \ No newline at end of file diff --git a/src/content/tags/spread/contents+de.lr b/src/content/tags/spread/contents+de.lr index ca6fce9..92ef13f 100644 --- a/src/content/tags/spread/contents+de.lr +++ b/src/content/tags/spread/contents+de.lr @@ -1 +1 @@ -name: Aufstrich +name: Aufstrich \ No newline at end of file diff --git a/src/content/tags/spread/contents.lr b/src/content/tags/spread/contents.lr index 79b76e6..ce45cad 100644 --- a/src/content/tags/spread/contents.lr +++ b/src/content/tags/spread/contents.lr @@ -1 +1 @@ -name: Spread +name: Spread \ No newline at end of file diff --git a/src/content/tags/sweet/contents+de.lr b/src/content/tags/sweet/contents+de.lr index 7394311..429097b 100644 --- a/src/content/tags/sweet/contents+de.lr +++ b/src/content/tags/sweet/contents+de.lr @@ -1 +1 @@ -name: Süßes +name: Süß \ No newline at end of file diff --git a/src/content/tags/sweet/contents.lr b/src/content/tags/sweet/contents.lr index 48bbf33..c8b4e6f 100644 --- a/src/content/tags/sweet/contents.lr +++ b/src/content/tags/sweet/contents.lr @@ -1 +1 @@ -name: Sweet +name: Sweet \ No newline at end of file diff --git a/src/content/tags/xmas/contents+de.lr b/src/content/tags/xmas/contents+de.lr index 28bcedd..c8d7691 100644 --- a/src/content/tags/xmas/contents+de.lr +++ b/src/content/tags/xmas/contents+de.lr @@ -1 +1 @@ -name: Weihnachten +name: Weihnachten \ No newline at end of file diff --git a/src/content/tags/xmas/contents.lr b/src/content/tags/xmas/contents.lr index 2c0c422..23f0fdf 100644 --- a/src/content/tags/xmas/contents.lr +++ b/src/content/tags/xmas/contents.lr @@ -1 +1 @@ -name: Xmas +name: Xmas \ No newline at end of file diff --git a/src/databags/i18n+de.ini b/src/databags/i18n+de.ini index d98cd63..6edb6c6 100644 --- a/src/databags/i18n+de.ini +++ b/src/databags/i18n+de.ini @@ -1,11 +1,5 @@ [duration] label = Zeit -day = Tag -days = Tage -hour = Std -hours = Std -min = Min -mins = Min [yield] label = Menge @@ -17,6 +11,9 @@ easy = Einfach medium = Mittel hard = Schwer +[ingredients] +recipeLink = ⤳Rezept + [title] latest = Zuletzt hinzugefügt all_recipes = Alle Rezepte diff --git a/src/databags/i18n+en.ini b/src/databags/i18n+en.ini index fad9e5e..c7ce99b 100644 --- a/src/databags/i18n+en.ini +++ b/src/databags/i18n+en.ini @@ -1,11 +1,5 @@ [duration] label = Time -day = day -days = days -hour = hour -hours = hours -min = minutes -mins = min [yield] label = Yield @@ -17,6 +11,9 @@ easy = Easy medium = Medium hard = Hard +[ingredients] +recipeLink = ⤳recipe + [title] latest = Latest recipes all_recipes = All recipes diff --git a/src/models/recipe.ini b/src/models/recipe.ini index 6bf8e21..0663e0a 100644 --- a/src/models/recipe.ini +++ b/src/models/recipe.ini @@ -21,9 +21,8 @@ size = large [fields.time] label = Time / Zeit width = 1/8 -type = select -choices = 5, 10, 15, 20, 30, 45, 60, 75, 90, 105, 120, 150, 180, 240, 360, 480, 720, 1440 -choice_labels = 5m, 10m, 15m, 20m, 30m, 45m, 1h, 1h 15m, 1h 30m, 1h 45m, 2h, 2h 30m, 3h, 4h, 6h, 8h, 12h, 24h +type = integer +addon_label = min [fields.difficulty] label = Difficulty diff --git a/src/models/settings.ini b/src/models/settings.ini index 00d9ca8..0c663ec 100644 --- a/src/models/settings.ini +++ b/src/models/settings.ini @@ -12,10 +12,10 @@ enabled = no [fields.measures] label = Measures -description = Comma separated list +description = Space separated list width = 3/5 type = text -default = kg, g, L, dl, cl, ml, oz, lb, pt, qt, cm, tsp, tbsp, c, cup, cups, pkg, pck +default = kg g L dl cl ml oz lb pt qt cm tsp tbsp c cup cups pkg pck [fields.replace_frac] label = Replace 1/2 with ½, ⅔, et.c @@ -26,9 +26,3 @@ type = boolean label = Replace °C/°F with ℃/℉ width = 1/5 type = boolean - -[fields.show_empty_tags] -label = Show empty tags -description = Even if no recipes exist in that category -width = 1/4 -type = boolean diff --git a/src/packages/force-update b/src/packages/force-update new file mode 160000 index 0000000..2a1c729 --- /dev/null +++ b/src/packages/force-update @@ -0,0 +1 @@ +Subproject commit 2a1c729fce7052f54f75285f34252ca007145a07 diff --git a/src/packages/helper/lektor_helper.py b/src/packages/helper/lektor_helper.py index 85b5562..6c2d0db 100644 --- a/src/packages/helper/lektor_helper.py +++ b/src/packages/helper/lektor_helper.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -from lektor.pluginsystem import Plugin +from lektor.pluginsystem import Plugin, get_plugin from lektor.databags import Databags +from markupsafe import Markup +from datetime import datetime import unicodedata -import os -import shutil # ------- # Sorting @@ -39,20 +39,17 @@ def noUmlaut(text): return str(text) -def pluralize(n, single, multi): - if n == 0: - return '' - return u'{} {}'.format(n, single if n == 1 else multi) - - def replaceFractions(txt): res = '' for x in txt.split(): try: - i = ['1/2', '1/3', '2/3', '1/4', '3/4', '1/8', '-'].index(x) - res += [u'½', u'⅓', u'⅔', u'¼', u'¾', u'⅛', u' - '][i] + i = ['1/2', '1/3', '2/3', '1/4', '3/4', '1/8'].index(x) + res += [u'½', u'⅓', u'⅔', u'¼', u'¾', u'⅛'][i] except ValueError: - res += ' ' + x + if x in u'-–—': + res += u' - ' + else: + res += ' ' + x return res.lstrip() @@ -77,24 +74,6 @@ def updateSet_if(dic, parent, parentkey, value): dic[key] = set() dic[key].add(value) - -def updateSet_addMultiple(dic, key, others): - try: - dic[key] - except KeyError: - dic[key] = set() - dic[key].update(others) - - -def findCluster(key, clusterList=[30, 60, 120]): - key = int(key) if key else 0 - if key > 0: - for cluster in clusterList: - if key < cluster: - key = cluster - break - return key - # -------------------- # Ingredient splitting @@ -105,13 +84,14 @@ def splitIngredientLine(line): indices = [0, len(line)] for i, char in enumerate(line): if char.isspace(): - capture = False - indices[state] = i - state += 1 + if capture: + capture = False + indices[state] = i + state += 1 continue elif capture: continue - elif state == 1 and char in '0123456789-.,': + elif state == 1 and char in u'0123456789-–—.,': state -= 1 elif state > 1: break @@ -127,6 +107,9 @@ def parseIngredientLine(line, measureList=[], rep_frac=False): measure = line[idx[0]:idx[1]].lstrip() if measure.lower() in measureList: name = line[idx[1]:].lstrip() + # if name.startswith('of '): + # measure += ' of' + # name = name[3:] else: measure = '' name = line[idx[0]:].lstrip() @@ -136,19 +119,18 @@ def parseIngredientLine(line, measureList=[], rep_frac=False): name, note = [x.strip() for x in name_note] return {'value': val, 'measure': measure, 'name': name, 'note': note} -# -------------------- -# Other Helper methods - -def groupByMergeCluster(dic, arr=[30, 60, 120], reverse=False): - arr = sorted([int(x) for x in arr]) - groups = dict() - for key, recipes in dic: - key = findCluster(key, arr) - if key == 0 and not reverse: - key = '' - updateSet_addMultiple(groups, key, recipes) - return sorted(groups.items(), reverse=bool(reverse)) +def replace_atref_urls(text, label=None): + if '@' not in text: + return text + result = list() + for x in text.split(): + if x[0] == '@': + x = x[1:] + result.append(u'
{}'.format(x, label or x)) + else: + result.append(x) + return Markup(' '.join(result)) # ---------------- # Main entry point @@ -157,68 +139,56 @@ def groupByMergeCluster(dic, arr=[30, 60, 120], reverse=False): class HelperPlugin(Plugin): name = u'Helper' description = u'Some helper methods, filters, and templates.' - alt = None - availableTags = set() + buildTime = None + settings = dict() + translations = dict() # ----------- # Event hooks # ----------- - def on_before_build_all(self, builder, **extra): - # display only tags that contain at least one recipe + def processCLI(self, extra_flags): + useCache = bool(extra_flags.get('ENABLE_APPCACHE')) + plugin = get_plugin('force-update', self.env) + if plugin.enabled and not useCache: + plugin.enabled = False + print('AppCache: ' + ('ENABLED' if useCache else 'DISABLED')) + self.env.jinja_env.globals['ENABLE_APPCACHE'] = useCache + + def processSettings(self): + bag = Databags(self.env) pad = self.env.new_pad() - for r in pad.query('recipes'): - self.availableTags.update(r['tags']) + for alt in self.env.load_config().iter_alternatives(): + set = pad.get('settings', alt=alt) + self.translations[alt] = bag.lookup('i18n+' + alt) + self.settings[alt] = { + 'measures': set['measures'].lower().split(), + 'replFrac': set['replace_frac'] + } - def on_after_prune(self, builder, **extra): - # redirect to /en/ - for file in ['index.html']: - src_f = os.path.join(self.env.root_path, 'root', file) - if os.path.exists(src_f): - dst_f = os.path.join(builder.destination_path, file) - with open(dst_f, 'wb') as df: - with open(src_f, 'rb') as sf: - shutil.copyfileobj(sf, df) + def on_before_build_all(self, builder, **extra): + build_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + print('Build time: ' + build_time) + self.env.jinja_env.globals['DATE_NOW'] = build_time + # update project settings once per build + self.processCLI(getattr(builder, 'extra_flags')) + self.processSettings() - def on_process_template_context(self, context, **extra): - self.alt = context['alt'] + # def on_process_template_context(self, context, **extra): + # pass def on_setup_env(self, **extra): - # self.env.load_config().iter_alternatives() - # pad = self.env.new_pad() - # pad.query('groupby', alt=alt) + def localizeDic(alt, partA, partB=None): + if alt not in self.translations: + raise RuntimeError( + 'localize() expects first parameter to be an alternate') + if partB is None: + partA, partB = partA.split('.', 1) + return self.translations[alt][partA][partB] - def localizeDic(key, subkey=None): - bag = Databags(self.env).lookup('i18n+{}.{}'.format(self.alt, key)) - return bag[subkey] if subkey else bag - - def to_duration(time, cluster=None): - time = int(time) if time else 0 - if (time <= 0): - return '' - # Calls itself without cluster argument - if cluster: - cluster = [int(x) for x in cluster] - idx = cluster.index(time) - if idx == 0: - return '<' + to_duration(time) - timeA = to_duration(cluster[idx - 1]) - if idx + 1 >= len(cluster): - return '>' + timeA - else: - return u'{} – {}'.format(timeA, to_duration(time)) - days = time // (60 * 24) - time -= days * (60 * 24) - L = localizeDic('duration') - return ' '.join([ - pluralize(days, L['day'], L['days']), - pluralize(time // 60, L['hour'], L['hours']), - pluralize(time % 60, L['min'], L['mins'])]).strip() - - def ingredientsForRecipe(recipe): - set = self.env.new_pad().get('settings', alt=self.alt) - meaList = [x.strip() for x in set['measures'].lower().split(',')] - repFrac = set['replace_frac'] + def ingredientsForRecipe(recipe, alt='en'): + meaList = self.settings[alt]['measures'] + repFrac = self.settings[alt]['replFrac'] for line in recipe['ingredients']: line = line.strip() @@ -229,23 +199,21 @@ class HelperPlugin(Plugin): else: yield parseIngredientLine(line, meaList, repFrac) - def groupByAttribute(recipeList, attribute): + def groupByAttribute(recipeList, attribute, alt='en'): groups = dict() for recipe in recipeList: if attribute == 'ingredients': - for ing in ingredientsForRecipe(recipe): + for ing in ingredientsForRecipe(recipe, alt): updateSet_if(groups, ing, 'name', recipe) else: updateSet_if(groups, recipe, attribute, recipe) # groups[undefinedKey].update(groups.pop('_undefined')) return groups.items() - self.env.jinja_env.filters['duration'] = to_duration self.env.jinja_env.filters['rating'] = numFillWithText self.env.jinja_env.filters['replaceFractions'] = replaceFractions self.env.jinja_env.filters['enumIngredients'] = ingredientsForRecipe + self.env.jinja_env.filters['replaceAtRefURLs'] = replace_atref_urls self.env.jinja_env.filters['groupByAttribute'] = groupByAttribute self.env.jinja_env.filters['groupSort'] = groupByDictSort - self.env.jinja_env.filters['groupMergeCluster'] = groupByMergeCluster self.env.jinja_env.globals['localize'] = localizeDic - self.env.jinja_env.globals['availableTags'] = self.availableTags diff --git a/src/packages/time-duration/.gitignore b/src/packages/time-duration/.gitignore new file mode 100644 index 0000000..463960b --- /dev/null +++ b/src/packages/time-duration/.gitignore @@ -0,0 +1,5 @@ +dist +build +*.pyc +*.pyo +*.egg-info diff --git a/src/packages/time-duration/README.md b/src/packages/time-duration/README.md new file mode 100644 index 0000000..2a3deb4 --- /dev/null +++ b/src/packages/time-duration/README.md @@ -0,0 +1,4 @@ +# Time Duration + +This plugin converts integer numbers to a human readable duration. +E.g. 90 -> 1 hour 30 minutes \ No newline at end of file diff --git a/src/packages/time-duration/lektor_time_duration.py b/src/packages/time-duration/lektor_time_duration.py new file mode 100644 index 0000000..e77197c --- /dev/null +++ b/src/packages/time-duration/lektor_time_duration.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +from lektor.pluginsystem import Plugin + +durationLocale = { + 'de': {'day': 'Tag', 'hour': 'Std', 'min': 'Min', + 'days': 'Tage', 'hours': 'Std', 'mins': 'Min'}, + 'en': {'day': 'day', 'hour': 'hour', 'min': 'min', + 'days': 'days', 'hours': 'hours', 'mins': 'min'} +} + +# ----------- +# Single Time + + +def pluralize(n, single, multi): + if n == 0: + return '' + return u'{} {}'.format(n, single if n == 1 else multi) + + +def to_duration(time, alt='en'): + time = int(time) if time else 0 + if (time <= 0): + return '' + days = time // (60 * 24) + time -= days * (60 * 24) + L = durationLocale[alt] + return ' '.join([ + pluralize(days, L['day'], L['days']), + pluralize(time // 60, L['hour'], L['hours']), + pluralize(time % 60, L['min'], L['mins'])]).strip() + +# ------------ +# Time Cluster + + +def to_time_in_cluster(time, cluster, alt='en'): + for idx, x in enumerate(cluster): + x = int(x) + if x == time: + if idx == 0: + timeB = to_duration(time, alt) + return '<' + timeB + else: + timeA = to_duration(cluster[idx - 1], alt) + timeB = to_duration(time - 1, alt) + return u'{} – {}'.format(timeA, timeB) + else: + return '>' + to_duration(cluster[-1], alt) + + +def find_in_cluster(key, clusterList=[30, 60, 120]): + key = int(key) if key else 0 + if key > 0: + for cluster in clusterList: + if key < cluster: + key = cluster + break + else: + key = clusterList[-1] + 1 + return key + + +def group_by_time_cluster(dic, arr=[30, 60, 120], reverse=False): + arr = sorted([int(x) for x in arr]) + groups = dict() + for key, recipes in dic: + key = find_in_cluster(key, arr) + if key == 0 and not reverse: + key = '' + try: + groups[key] + except KeyError: + groups[key] = set() + groups[key].update(recipes) + return sorted(groups.items(), reverse=bool(reverse)) + + +class TimeDurationPlugin(Plugin): + name = u'Time Duration' + description = u'Convert int to duration. E.g., 90 -> "1hr 30min".' + + def on_setup_env(self, **extra): + self.env.jinja_env.filters['duration'] = to_duration + self.env.jinja_env.filters['durationCluster'] = to_time_in_cluster + self.env.jinja_env.filters['groupTimeCluster'] = group_by_time_cluster diff --git a/src/packages/time-duration/setup.py b/src/packages/time-duration/setup.py new file mode 100644 index 0000000..ab52a49 --- /dev/null +++ b/src/packages/time-duration/setup.py @@ -0,0 +1,38 @@ +import ast +import io +import re + +from setuptools import setup, find_packages + +with io.open('README.md', 'rt', encoding="utf8") as f: + readme = f.read() + +_description_re = re.compile(r'description\s+=\s+(?P.*)') + +with open('lektor_time_duration.py', 'rb') as f: + description = str(ast.literal_eval(_description_re.search( + f.read().decode('utf-8')).group(1))) + +setup( + author=u'relikd', + author_email='oleg@relikd.de', + description=description, + keywords='Lektor plugin', + license='MIT', + long_description=readme, + long_description_content_type='text/markdown', + name='lektor-time-duration', + packages=find_packages(), + py_modules=['lektor_time_duration'], + # url='[link to your repository]', + version='0.1', + classifiers=[ + 'Framework :: Lektor', + 'Environment :: Plugins', + ], + entry_points={ + 'lektor.plugins': [ + 'time-duration = lektor_time_duration:TimeDurationPlugin', + ] + } +) diff --git a/src/templates/cache.manifest b/src/templates/cache.manifest new file mode 100644 index 0000000..05dc3a5 --- /dev/null +++ b/src/templates/cache.manifest @@ -0,0 +1,54 @@ +CACHE MANIFEST +# Date build: {{ DATE_NOW }} + +{%- macro _print_(items) -%} +{%- for item in items -%} + {{ item|replace('../', '', 1) }} +{% endfor -%} +{%- endmacro -%} + +{%- macro _add_(list, item) -%} +{{- list.append(item|url) or pass -}} +{%- endmacro -%} + +{%- set root = site.get('/', this.alt) -%} + +{%- set assetList = [] -%} +{%- for asset in root.pad.asset_root.children recursive -%} + {%- if asset.__class__.__name__ != 'Directory' -%} + {{- _add_(assetList, asset) -}} + {%- endif -%} + {{- loop(asset.children) -}} +{%- endfor -%} + +{%- set cacheList = [] -%} +{{- _add_(cacheList, root) -}} +{%- for x in root.children if x != this recursive -%} + {{- _add_(cacheList, x) -}} + + {%- set pg = x.datamodel.pagination_config -%} + {%- if pg.enabled -%} + {%- for page in range(2, pg.count_pages(x) + 1) -%} + {{- _add_(cacheList, pg.get_record_for_page(x, page)) -}} + {%- endfor -%} + {%- endif -%} + + {% set img = x.attachments.images|sort(attribute='record_label')|first -%} + {%- if img -%} + {{- _add_(cacheList, img.thumbnail(200, 150, 'crop')) -}} + {%- endif -%} + + {%- if x.datamodel.has_own_children -%} + {{- loop(x.children) -}} + {%- endif -%} +{%- endfor -%} + +{#- Generate cache file index #} +# static +{{ _print_(assetList) -}} +# index +{{ _print_(cacheList) -}} + +{#- All other requests are forwarded #} +NETWORK: +* \ No newline at end of file diff --git a/src/templates/cluster.html b/src/templates/cluster.html index 96dd315..2d365d8 100644 --- a/src/templates/cluster.html +++ b/src/templates/cluster.html @@ -8,10 +8,10 @@ {%- set sortType = this.xdata + [''] -%} {%- endif -%} - {%- set all = site.query('/recipes', this.alt) | groupByAttribute(this.group_key) | groupSort(sortType, this.reverse_order) -%} + {%- set all = site.query('/recipes', this.alt) | groupByAttribute(this.group_key, this.alt) | groupSort(sortType, this.reverse_order) -%} {%- if this.group_key == 'time' -%} - {%- set all = all | groupMergeCluster(this.xdata, this.reverse_order) -%} + {%- set all = all | groupTimeCluster(this.xdata, this.reverse_order) -%} {%- endif -%}