From 1fe72d15c7161ccc3c05bb70b940f02f8ce1e8a7 Mon Sep 17 00:00:00 2001 From: Niko Reunanen Date: Wed, 9 Apr 2025 11:12:51 +0300 Subject: [PATCH] Initial commit --- .gitignore | 3 + archetypes/default.md | 6 + config.yaml | 80 + content/_index.md | 11 + ...augmenting-humans-with-machine-learning.md | 7 + content/post/cell-division-as-objective.md | 6 + .../combine-django-vue-vuetify-typescript.md | 373 +++++ content/post/data-science-tips-life-hacks.md | 65 + .../post/distance-metrics-refresher-pdf.md | 10 + .../logistic-regression-is-worth-learning.md | 307 ++++ content/post/refresher-customer-experience.md | 6 + ...r-value-decomposition-is-worth-learning.md | 6 + content/post/teach-context.md | 15 + static/css/basic_highlight.css | 145 ++ static/js/basic_highlight.js | 10 + static/pdf/distance_metrics_refresher.pdf | Bin 0 -> 116179 bytes .../.github/ISSUE_TEMPLATE/bug_report.md | 38 + .../.github/ISSUE_TEMPLATE/feature_request.md | 20 + themes/cupper-hugo-theme/.gitignore | 2 + themes/cupper-hugo-theme/LICENSE | 22 + themes/cupper-hugo-theme/README.md | 109 ++ .../cupper-hugo-theme/archetypes/default.md | 6 + .../cupper-hugo-theme/assets/css/search.css | 8 + .../assets/css/template-styles.css | 1036 ++++++++++++ themes/cupper-hugo-theme/assets/js/search.js | 21 + .../assets/js/template-dom-scripts.js | 150 ++ themes/cupper-hugo-theme/data/principles.json | 149 ++ themes/cupper-hugo-theme/data/wcag.json | 1427 +++++++++++++++++ themes/cupper-hugo-theme/i18n/en.yaml | 28 + .../cupper-hugo-theme/images/screenshot.png | Bin 0 -> 137593 bytes themes/cupper-hugo-theme/images/tn.png | Bin 0 -> 66619 bytes themes/cupper-hugo-theme/layouts/404.html | 0 .../layouts/_default/baseof.html | 22 + .../layouts/_default/list.html | 32 + .../layouts/_default/single.html | 6 + .../layouts/_default/terms.html | 19 + themes/cupper-hugo-theme/layouts/index.html | 6 + .../layouts/partials/disqus-js-common.js | 6 + .../layouts/partials/disqus-js-main.js | 10 + .../layouts/partials/disqus.html | 27 + .../layouts/partials/footer.html | 14 + .../partials/google-analytics-async.html | 10 + .../layouts/partials/head.html | 58 + .../layouts/partials/header.html | 20 + .../layouts/partials/katex.html | 5 + .../layouts/partials/nav.html | 26 + .../layouts/partials/noscript.html | 8 + .../layouts/partials/script.html | 16 + .../layouts/partials/svg.html | 88 + .../layouts/partials/toc.html | 19 + .../layouts/post/single.html | 46 + .../layouts/shortcodes/blockquote.html | 11 + .../layouts/shortcodes/cmd.html | 7 + .../layouts/shortcodes/code.html | 5 + .../layouts/shortcodes/codePen.html | 10 + .../layouts/shortcodes/colors.html | 11 + .../layouts/shortcodes/expandable.html | 25 + .../layouts/shortcodes/figureCupper.html | 28 + .../layouts/shortcodes/fileTree.html | 3 + .../layouts/shortcodes/gallery.html | 29 + .../layouts/shortcodes/note.html | 8 + .../layouts/shortcodes/principles.html | 24 + .../layouts/shortcodes/tested.html | 28 + .../layouts/shortcodes/ticks.html | 3 + .../layouts/shortcodes/warning.html | 8 + .../layouts/shortcodes/wcag.html | 30 + themes/cupper-hugo-theme/local_git_config.sh | 6 + themes/cupper-hugo-theme/netlify.toml | 13 + .../static/android-chrome-192x192.png | Bin 0 -> 4733 bytes .../static/android-chrome-512x512.png | Bin 0 -> 13062 bytes .../static/apple-touch-icon.png | Bin 0 -> 3080 bytes .../static/browserconfig.xml | 9 + .../static/css/fonts/miriamlibre-bold.woff | Bin 0 -> 29040 bytes .../static/css/fonts/miriamlibre-bold.woff2 | Bin 0 -> 22820 bytes .../static/css/images/arrow_effect.svg | 6 + .../static/css/images/icon-tick.svg | 6 + .../static/css/images/stripe.svg | 5 + themes/cupper-hugo-theme/static/css/prism.css | 183 +++ .../static/favicon-16x16.png | Bin 0 -> 588 bytes .../static/favicon-32x32.png | Bin 0 -> 893 bytes .../static/favicon-96x96.png | Bin 0 -> 2656 bytes themes/cupper-hugo-theme/static/favicon.ico | Bin 0 -> 15086 bytes .../static/images/browser-chrome-android.svg | 13 + .../static/images/browser-chrome.svg | 8 + .../static/images/browser-edge.svg | 9 + .../static/images/browser-firefox-android.svg | 11 + .../static/images/browser-firefox.svg | 5 + .../static/images/browser-ie.svg | 10 + .../static/images/browser-opera.svg | 7 + .../static/images/browser-safari-ios.svg | 5 + .../static/images/browser-safari.svg | 5 + .../static/images/icon-info.svg | 9 + .../static/images/icon-tag.svg | 5 + .../static/images/icon-warning.svg | 7 + .../cupper-hugo-theme/static/images/logo.svg | 1 + themes/cupper-hugo-theme/static/js/prism.js | 8 + .../static/js/service-worker-registration.js | 62 + .../static/mstile-150x150.png | Bin 0 -> 3519 bytes .../static/safari-pinned-tab.svg | 78 + .../cupper-hugo-theme/static/site.webmanifest | 19 + themes/cupper-hugo-theme/task_serve.sh | 5 + themes/cupper-hugo-theme/theme.toml | 17 + 102 files changed, 5246 insertions(+) create mode 100644 .gitignore create mode 100644 archetypes/default.md create mode 100644 config.yaml create mode 100644 content/_index.md create mode 100644 content/post/augmenting-humans-with-machine-learning.md create mode 100644 content/post/cell-division-as-objective.md create mode 100644 content/post/combine-django-vue-vuetify-typescript.md create mode 100644 content/post/data-science-tips-life-hacks.md create mode 100644 content/post/distance-metrics-refresher-pdf.md create mode 100644 content/post/logistic-regression-is-worth-learning.md create mode 100644 content/post/refresher-customer-experience.md create mode 100644 content/post/singular-value-decomposition-is-worth-learning.md create mode 100644 content/post/teach-context.md create mode 100644 static/css/basic_highlight.css create mode 100644 static/js/basic_highlight.js create mode 100644 static/pdf/distance_metrics_refresher.pdf create mode 100644 themes/cupper-hugo-theme/.github/ISSUE_TEMPLATE/bug_report.md create mode 100644 themes/cupper-hugo-theme/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 themes/cupper-hugo-theme/.gitignore create mode 100644 themes/cupper-hugo-theme/LICENSE create mode 100644 themes/cupper-hugo-theme/README.md create mode 100644 themes/cupper-hugo-theme/archetypes/default.md create mode 100644 themes/cupper-hugo-theme/assets/css/search.css create mode 100644 themes/cupper-hugo-theme/assets/css/template-styles.css create mode 100644 themes/cupper-hugo-theme/assets/js/search.js create mode 100644 themes/cupper-hugo-theme/assets/js/template-dom-scripts.js create mode 100644 themes/cupper-hugo-theme/data/principles.json create mode 100644 themes/cupper-hugo-theme/data/wcag.json create mode 100644 themes/cupper-hugo-theme/i18n/en.yaml create mode 100644 themes/cupper-hugo-theme/images/screenshot.png create mode 100644 themes/cupper-hugo-theme/images/tn.png create mode 100644 themes/cupper-hugo-theme/layouts/404.html create mode 100644 themes/cupper-hugo-theme/layouts/_default/baseof.html create mode 100644 themes/cupper-hugo-theme/layouts/_default/list.html create mode 100644 themes/cupper-hugo-theme/layouts/_default/single.html create mode 100644 themes/cupper-hugo-theme/layouts/_default/terms.html create mode 100644 themes/cupper-hugo-theme/layouts/index.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/disqus-js-common.js create mode 100644 themes/cupper-hugo-theme/layouts/partials/disqus-js-main.js create mode 100644 themes/cupper-hugo-theme/layouts/partials/disqus.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/footer.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/google-analytics-async.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/head.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/header.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/katex.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/nav.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/noscript.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/script.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/svg.html create mode 100644 themes/cupper-hugo-theme/layouts/partials/toc.html create mode 100644 themes/cupper-hugo-theme/layouts/post/single.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/blockquote.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/cmd.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/code.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/codePen.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/colors.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/expandable.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/figureCupper.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/fileTree.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/gallery.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/note.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/principles.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/tested.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/ticks.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/warning.html create mode 100644 themes/cupper-hugo-theme/layouts/shortcodes/wcag.html create mode 100755 themes/cupper-hugo-theme/local_git_config.sh create mode 100644 themes/cupper-hugo-theme/netlify.toml create mode 100644 themes/cupper-hugo-theme/static/android-chrome-192x192.png create mode 100644 themes/cupper-hugo-theme/static/android-chrome-512x512.png create mode 100644 themes/cupper-hugo-theme/static/apple-touch-icon.png create mode 100644 themes/cupper-hugo-theme/static/browserconfig.xml create mode 100644 themes/cupper-hugo-theme/static/css/fonts/miriamlibre-bold.woff create mode 100644 themes/cupper-hugo-theme/static/css/fonts/miriamlibre-bold.woff2 create mode 100644 themes/cupper-hugo-theme/static/css/images/arrow_effect.svg create mode 100644 themes/cupper-hugo-theme/static/css/images/icon-tick.svg create mode 100644 themes/cupper-hugo-theme/static/css/images/stripe.svg create mode 100644 themes/cupper-hugo-theme/static/css/prism.css create mode 100644 themes/cupper-hugo-theme/static/favicon-16x16.png create mode 100644 themes/cupper-hugo-theme/static/favicon-32x32.png create mode 100644 themes/cupper-hugo-theme/static/favicon-96x96.png create mode 100644 themes/cupper-hugo-theme/static/favicon.ico create mode 100644 themes/cupper-hugo-theme/static/images/browser-chrome-android.svg create mode 100644 themes/cupper-hugo-theme/static/images/browser-chrome.svg create mode 100644 themes/cupper-hugo-theme/static/images/browser-edge.svg create mode 100644 themes/cupper-hugo-theme/static/images/browser-firefox-android.svg create mode 100644 themes/cupper-hugo-theme/static/images/browser-firefox.svg create mode 100644 themes/cupper-hugo-theme/static/images/browser-ie.svg create mode 100644 themes/cupper-hugo-theme/static/images/browser-opera.svg create mode 100644 themes/cupper-hugo-theme/static/images/browser-safari-ios.svg create mode 100644 themes/cupper-hugo-theme/static/images/browser-safari.svg create mode 100644 themes/cupper-hugo-theme/static/images/icon-info.svg create mode 100644 themes/cupper-hugo-theme/static/images/icon-tag.svg create mode 100644 themes/cupper-hugo-theme/static/images/icon-warning.svg create mode 100644 themes/cupper-hugo-theme/static/images/logo.svg create mode 100644 themes/cupper-hugo-theme/static/js/prism.js create mode 100644 themes/cupper-hugo-theme/static/js/service-worker-registration.js create mode 100644 themes/cupper-hugo-theme/static/mstile-150x150.png create mode 100644 themes/cupper-hugo-theme/static/safari-pinned-tab.svg create mode 100644 themes/cupper-hugo-theme/static/site.webmanifest create mode 100755 themes/cupper-hugo-theme/task_serve.sh create mode 100644 themes/cupper-hugo-theme/theme.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9a3fed5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +*.swp +public diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..4648439 --- /dev/null +++ b/config.yaml @@ -0,0 +1,80 @@ +baseURL: https://nikoreunanen.com +languageCode: en-us +defaultContentLanguage: en +title: Cognitive Digressions +theme: cupper-hugo-theme +# enableGitInfo: true +googleAnalytics: true + +taxonomies: + tag: tags + +permalinks: + post: /:filename/ + +imaging: + quality: 99 + +params: + description: Inner monologue or just hearing voices? + homeMetaContent: Cognitive Digressions is a repository of half-digested ideas + footer: All expressed views on this site are my own and do not represent the opinions of any entity whatsoever with which I have been, am now, or will be affiliated. + dateFormat: Jan 2, 2006 + katex: true + hideHeaderLinks: false + search: true + showThemeSwitcher: true + moveFooterToHeader: false + customCss: + - css/basic_highlight.css + customJs: + - js/basic_highlight.js + +menu: + nav: + - name: About + url: / + weight: 1 + - name: Posts + url: /post/ + weight: 2 + - name: LinkedIn + url: https://www.linkedin.com/in/nikoreunanen/ + weight: 3 + - name: Contracting + url: https://ntsol.io + weight: 4 + - name: RSS + url: /index.xml + weight: 5 + +markup: + defaultMarkdownHandler: goldmark + goldmark: + extensions: + definitionList: true + footnote: true + linkify: true + strikethrough: true + table: true + taskList: true + typographer: true + parser: + attribute: true + autoHeadingID: true + renderer: + hardWraps: false + unsafe: true + xHTML: false + highlight: + codeFences: false + hl_lines: "" + lineNoStart: 1 + lineNos: false + lineNumbersInTable: true + noClasses: true + style: monokai + tabWidth: 4 + tableOfContents: + endLevel: 6 + startLevel: 2 diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..a732f9e --- /dev/null +++ b/content/_index.md @@ -0,0 +1,11 @@ +--- +title: "Cognitive Digressions" +date: 2021-01-21 +draft: false +--- + +Welcome to a repository of half-digested ideas, partially explored thoughts and other cognitive digressions. A mental scratchpad of sorts. + +Personal views: [absurdism](https://en.wikipedia.org/wiki/Absurdism), cats are awesome, coding is creative, anything can be interesting, boring kills businesses, music creates the feelings in a movie, it is not good to spend time with copies of yourself, the division between qualitative and quantitative research is artificial. + +Don't swallow information without chewing it. Especially online. All expressed views on this site are my own and do not represent the opinions of any entity whatsoever with which I have been, am now, or will be affiliated. diff --git a/content/post/augmenting-humans-with-machine-learning.md b/content/post/augmenting-humans-with-machine-learning.md new file mode 100644 index 0000000..b183769 --- /dev/null +++ b/content/post/augmenting-humans-with-machine-learning.md @@ -0,0 +1,7 @@ +--- +title: "Augmenting Humans With Machine Learning" +date: 2021-01-19T01:58:16+02:00 +draft: true +--- + +Why to replace them? Why to fight windmills? diff --git a/content/post/cell-division-as-objective.md b/content/post/cell-division-as-objective.md new file mode 100644 index 0000000..b20b809 --- /dev/null +++ b/content/post/cell-division-as-objective.md @@ -0,0 +1,6 @@ +--- +title: "Cell Division as Objective" +date: 2021-01-23T22:09:39+02:00 +draft: true +--- + diff --git a/content/post/combine-django-vue-vuetify-typescript.md b/content/post/combine-django-vue-vuetify-typescript.md new file mode 100644 index 0000000..bfca963 --- /dev/null +++ b/content/post/combine-django-vue-vuetify-typescript.md @@ -0,0 +1,373 @@ +--- +title: "Combine Django, Vue.js, Vuetify and TypeScript" +date: 2021-06-27T09:18:41+03:00 +draft: false +--- + +Let's combine Django, Vue.js, Vuetify and TypeScript into a complete toolchain for your next web project πŸš€πŸš€ + +Benefits: + +* Automatic reloading of front-end (TypeScript, Vue.js, Vuetify) and back-end (Python, Django) during development for quick code iterations +* [Django](https://www.djangoproject.com/) got you covered for web development, from excellent database tools to user authentication, and everything between +* [Vue.js](https://vuejs.org/) makes it easy to write interactive user interfaces +* [Vuetify](https://vuetifyjs.com/en/) gives you a toolbox of graphical user interface components that follow the Material Design-framework +* [TypeScript](https://www.typescriptlang.org/) extends JavaScript with typing to catch JavaScript errors before running the code +* You'll have a self-contained application to deploy in production with static assets. No separate front-end project. + +Notes: + +* You need to have Python β‰₯ 3.6 and Node.js installed +* We'll use Vue.js 2.x since Vue.js 3 is still in alpha +* You can use [Flask](https://flask.palletsprojects.com/en/2.0.x/) or other Python web frameworks instead of Django. Actually, you could use any web framework, including [Actix Web](https://actix.rs/) for Rust, since the same principles apply for connecting the front-end with the back-end. +* This tutorial uses [whitenoise](http://whitenoise.evans.io/en/stable/) with Django to serve static assets in production builds. You might want to switch to a [CDN](https://en.wikipedia.org/wiki/Content_delivery_network) if you have a high-traffic system. You just need to configure the *DEPLOYMENT_PATH* variable in *vue.config.js* to match your CDN URL addresses. + +Alright, let's go. First we need the official Vue.js standard tooling and to create a tutorial project folder. + +```bash +# Install the official Vue.js command line tool +npm install -g @vue/cli + +# Create a project folder +mkdir tutorial +``` + +## Create Vue.js front-end + +Create a new Vue.js 2.x project. +```bash +# current directory: tutorial + +# Create a new Vue.js 2.x project in tutorial/client +vue create client + +# Choose "Manually select features" +# Select TypeScript with spacebar +# Press enter +# Choose Vue version 2.x +# Use class-style component syntax?: n +# Use Babel alongside TypeScript...: Y +# Linter: ESLint with error prevention only +# Pick additional lint features: Lint on save +# Where do you prefer...: In dedicated config files +# Save this as a preset for future projects?: N + +# Install Vuetify +cd client +vue add vuetify # Choose the default option on prompt + +# Tracker to connect Django and webpack bundles +npm install -D webpack-bundle-tracker +``` + +Replace the existing content in `tutorial/client/vue.config.js` with the following: +```js +const BundleTracker = require("webpack-bundle-tracker"); + +const DEPLOYMENT_PATH = '/static/' + +module.exports = { + runtimeCompiler: true, + pages: { + index: { + entry: "./src/main.ts", + chunks: ["chunk-vendors"] + } + }, + publicPath: process.env.PROJECT_MODE === 'production' ? DEPLOYMENT_PATH : 'http://localhost:8080/', + outputDir: "../server/example/static/", + chainWebpack: config => { + config.optimization.splitChunks(false) + config.plugin('BundleTracker').use(BundleTracker, [{filename: '../server/webpack-stats.json'}]) + config.resolve.alias.set('__STATIC__', 'static') + config.devServer + .public('http://0.0.0.0:8080') + .host('0.0.0.0') + .port(8080) + .hotOnly(true) + .watchOptions({poll: 1000}) + .https(false) + .headers({"Access-Control-Allow-Origin": ["*"]}) + }, + transpileDependencies: ["vuetify"] +} +``` + +We will create the server Django project and the example app very soon. The above `vue.config.js` does the following: + +* The front-end is served from http://localhost:8080 during development (PROJECT\_MODE=development) +* Production version (PROJECT\_MODE=production) of the front-end is written into `tutorial/server/example/static` as a static build (`outputDir`). We'll create a Django app called example, which finds these static files with default configuration. +* `webpack-stats.json` informs Django how to access the front-end assets during development and production +* The front-end reloads automatically after changes +* The resulting bundle is named *index*. Notice that you could output multiple bundles with different TypeScript entry scripts. + +## Create Django back-end + +Install Django for back-end. + +```bash +# current directory: tutorial + +# Python virtual environment at tutorial/local/venv +python3 -m venv local/venv +source local/venv/bin/activate + +# Upgrade the installation tools +pip install --upgrade setuptools pip wheel + +# Install Django, whitenoise is for serving static assets +pip install Django whitenoise + +# Create a Django project in tutorial/server +django-admin startproject server + +# Create a new Django app for your project +cd server +python manage.py startapp example +``` + +Now let's register the new Django app by modifying the existing Django project settings `tutorial/server/server/settings.py`: +```python +# Add the following at the beginning of the file: +import os + +# Add the following at the end of the file: +STATS_FILE = os.path.join(BASE_DIR, 'webpack-stats.json') + +# Add the following in the INSTALLED_APPS list: +'example.apps.ExampleConfig' + +# Add the following in the MIDDLEWARE list +# below 'django.middleware.security.SecurityMiddleware' +# see http://whitenoise.evans.io/en/stable/ +'whitenoise.middleware.WhiteNoiseMiddleware' +``` + +Now let's route the views from the example app in the root project. Replace the existing content in `tutorial/server/server/urls.py` with the following: +```python +from django.contrib import admin +from django.urls import path, include + + +urlpatterns = [ + path('', include('example.urls')), + path('admin/', admin.site.urls) +] +``` + +We'll create register an index page in the example app. It will serve the automatically generated Vue.js and Vuetify example page through Django. Write the following in a new file `tutorial/server/example/urls.py` +```python +from django.urls import path + +from . import views + + +urlpatterns = [ + path('', views.index, name='index') +] +``` + +Finally it's time to create the actual view that we already registered previously. +Replace the existing content in `tutorial/server/example/views.py` with the following: +```python +import json +import pathlib + +from django.shortcuts import render +from django.http import HttpResponse +from django.conf import settings + + +class WebpackStatsProcessing: + def __init__(self): + self.data = json.loads(pathlib.Path(settings.STATS_FILE).read_text('utf-8')) + + def get_tags(self, bundle: str) -> str: + include_tags = [] + for asset in self.data['chunks'][bundle]: + if asset.endswith('.map'): + continue + + location = self.data['assets'][asset]['publicPath'] + if asset.endswith(('.js', 'js.gz')): + include_tags.append(f'') + include_tags.append(f'') + if asset.endswith(('.css', '.css.gz')): + include_tags.append(f'') + return '\n'.join(include_tags) + + +webpack_stats_tracker = WebpackStatsProcessing() + + +def index(request): + return HttpResponse(render(request, 'example/vuetify_bundle.html', context={ + 'bundle': webpack_stats_tracker.get_tags('index'), + 'title': 'Index page from Example Django app' + })) +``` + +The class *WebpackStatsProcessing* is an example on how to parse *webpack-stats.json* to load a webpack bundle (Vue.js, Vuetify, ...) and output the required script and style tags for Django HTML templates. As you see in the *index* view, the *bundle* context parameter contains the required tags. The file *webpack-stats.json* routes the assets through the development front-end server during development and a static asset build in a production. + +The only thing missing anymore is the actual Django HTML template that is rendered by the *index* view. First, create a new folder `tutorial/server/example/templates/example` and then write the following content in a new file `tutorial/server/example/templates/example/vuetify_bundle.html` + +```html + + + + + + + + {{ title }} + + + + +
+ + {{ bundle|safe }} + + +``` + +## Run development environment + +Now we are ready to run the development environment. You need two terminals at the same time: + +Terminal 1 (front-end): +```bash +# current directory: tutorial/client +npm run serve + +# Wait for the code compilation to finish because +# it will write the webpack-stats.json +``` + +Terminal 2 (back-end): +```bash +# current directory: tutorial +source local/venv/bin/activate +cd server +python manage.py runserver + +# You can ignore any database migration errors since +# this tutorial doesn't use database models +``` + +Open [http://localhost:8000](http://localhost:8000) and hopefully you'll see the front-end being served through Django with automatic reloads for front-end and back-end. For example, edit `tutorial/client/src/components/HelloWorld.vue`, save changes and the front-end should update automatically. Cool. Check the page source and you should see that the assets are requested from http://localhost:8080, which is the address configured in `vue.config.js`. This is possible because `webpack-stats.json` instructs Django to use the http://localhost:8080 during development. + +Your tutorial file structure should look something like this: +``` +tutorial +β”œβ”€β”€ client +β”‚Β Β  β”œβ”€β”€ README.md +β”‚Β Β  β”œβ”€β”€ babel.config.js +β”‚Β Β  β”œβ”€β”€ node_modules +β”‚Β Β  β”œβ”€β”€ package-lock.json +β”‚Β Β  β”œβ”€β”€ package.json +β”‚Β Β  β”œβ”€β”€ public +β”‚Β Β  β”‚Β Β  β”œβ”€β”€ favicon.ico +β”‚Β Β  β”‚Β Β  └── index.html +β”‚Β Β  β”œβ”€β”€ src +β”‚Β Β  β”‚Β Β  β”œβ”€β”€ App.vue +β”‚Β Β  β”‚Β Β  β”œβ”€β”€ assets +β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ logo.png +β”‚Β Β  β”‚Β Β  β”‚Β Β  └── logo.svg +β”‚Β Β  β”‚Β Β  β”œβ”€β”€ components +β”‚Β Β  β”‚Β Β  β”‚Β Β  └── HelloWorld.vue +β”‚Β Β  β”‚Β Β  β”œβ”€β”€ main.ts +β”‚Β Β  β”‚Β Β  β”œβ”€β”€ plugins +β”‚Β Β  β”‚Β Β  β”‚Β Β  └── vuetify.ts +β”‚Β Β  β”‚Β Β  β”œβ”€β”€ shims-tsx.d.ts +β”‚Β Β  β”‚Β Β  β”œβ”€β”€ shims-vue.d.ts +β”‚Β Β  β”‚Β Β  └── shims-vuetify.d.ts +β”‚Β Β  β”œβ”€β”€ tsconfig.json +β”‚Β Β  └── vue.config.js +β”œβ”€β”€ local +β”‚Β Β  └── venv +└── server + β”œβ”€β”€ db.sqlite3 + β”œβ”€β”€ example + β”‚Β Β  β”œβ”€β”€ __init__.py + β”‚Β Β  β”œβ”€β”€ admin.py + β”‚Β Β  β”œβ”€β”€ apps.py + β”‚Β Β  β”œβ”€β”€ migrations + β”‚Β Β  β”‚Β Β  └── __init__.py + β”‚Β Β  β”œβ”€β”€ models.py + β”‚Β Β  β”œβ”€β”€ templates + β”‚Β Β  β”‚Β Β  └── example + β”‚Β Β  β”‚Β Β  └── vuetify_bundle.html + β”‚Β Β  β”œβ”€β”€ tests.py + β”‚Β Β  β”œβ”€β”€ urls.py + β”‚Β Β  └── views.py + β”œβ”€β”€ manage.py + β”œβ”€β”€ server + β”‚Β Β  β”œβ”€β”€ __init__.py + β”‚Β Β  β”œβ”€β”€ asgi.py + β”‚Β Β  β”œβ”€β”€ settings.py + β”‚Β Β  β”œβ”€β”€ urls.py + β”‚Β Β  └── wsgi.py + └── webpack-stats.json +``` + +If you use Git for version control, then remember to put the following folders and files in .gitignore: +* node\_modules +* local +* static +* webpack-stats.json + +## Build a production version + +You might want to build a production version without the front-end development server so that only Django is used. Luckily it is very easy now: +```bash +# current directory: tutorial/client +PROJECT_MODE=production npm run build +``` + +Launch the Django development server again: +```bash +python manage.py runserver +```` + +Check the page source. You should see that the assets are Django static assets instead of the earlier origin http://localhost:8080. You could deploy the Django project this way if you don't mind the package *whitenoise* serving the static assets through Django and not an external CDN. + +One option is to use gunicorn to serve the Django WSGI app. You can build it as a Docker image and deploy the image in production (e.g. Cloud Run in Google Cloud Platform): +```docker +FROM python:3.9.5-slim + +ENV DEBIAN_FRONTEND noninteractive +ENV PYTHONUNBUFFERED True + +# No need to use a root account +RUN groupadd -g 61000 docker +RUN useradd -g 61000 -l -m -s /bin/false -u 61000 docker +USER docker + +COPY ./server /app +WORKDIR /app + +RUN pip install --upgrade --no-cache-dir pip wheel setuptools +RUN pip install --no-cache-dir Django whitenoise gunicorn + +# Add gunicorn to PATH +ENV PATH="/home/docker/.local/bin/:${PATH}" + +ENV MODE="production" + +CMD ["bash", "launch.sh"] +``` + +Write the following line in tutorial/server/launch.sh: +```bash +gunicorn server.wsgi:application --bind ":${PORT:-8000}" --workers 2 --threads 8 --timeout 0 +``` + +Done. + +## Conclusion + +There is still a lot of space for optimization, cleaning, configuration, making build sizes smaller and so on. However, this should get you started. Now you have Django, Vue.js, Vuetify and TypeScript living together. Happy coding! + diff --git a/content/post/data-science-tips-life-hacks.md b/content/post/data-science-tips-life-hacks.md new file mode 100644 index 0000000..67a1714 --- /dev/null +++ b/content/post/data-science-tips-life-hacks.md @@ -0,0 +1,65 @@ +--- +title: "Data Science Tips And Life Hacks" +date: 2021-01-30 +draft: false +--- + +Here are some tips and life hacks on how to survive data science. As they say, work smart, not hard. As a matter of fact, my favorite tasks are the tasks that I don't have to do. It is possible that task, as a word, is defined in some forgotten dictionary as something to avoid. Like, has anyone in the history of humankind used the word task in a positive context? Anyway, going off on a tangent. Let's get started. + +### Learn the domain where you work + +It is easy to acquire a pile of numbers and compute something. Just calculate the average value or apply a statistical model. However, to be useful, connect your work with the domain. What do your results mean? What is the actual insight within your results? What kind of actions can be taken based on the results? Are the results valid? Are the results significant? Is there anything fishy about the results? Are your statistical assumptions valid? How to define and measure success? Are [type I errors](https://en.wikipedia.org/wiki/Type_I_and_type_II_errors) more serious than [type II errors](https://en.wikipedia.org/wiki/Type_I_and_type_II_errors)? Do you need to explain the logic behind the results or is a black box sufficient? It is hard to make impact and be relevant inside a vacuum. + +### Are you solving the correct problem? + +Make sure that you are solving a valuable problem in the first place. Otherwise you are fighting against windmills, competing in a race that you can't win. The "why" is at least as important as the "how". + +{{< blockquote author="The author of this post" >}} +The value of the best solution for a wrong problem is a big number times zero +{{< /blockquote >}} + +Some people will have a hard time communicating with you or even understanding what you do. Your world can be very abstract to others. However, you still need to interact with them and figure out what they need. For example, you can create mockups of deliverables, from documents to user interfaces. This will help people to latch on something concrete and have a real, grounded basis for discussion. They can relatively easily tell if you are moving towards a good direction, and to help find one. The quality of feedback, interaction, requirements and extracted domain knowledge will skyrocket. + +### Understand people + +Humans are irrational and implicitly anthropomorphize everything. Like, "this restaurant makes excellent pasta" or "did you hear about the artificial intelligence that detects cats in images." However, organizations, businesses and companies are not living creatures. They consists of humans. Clients and customers are humans, even in business-to-business context. You operate in a sandbox filled to the brim with Homo sapientes. There is no escape. Soft skills are very important and required for efficient collaboration. Before you point your finger at me, I acknowledge that many people together form a system that exhibits its own behavior patterns, like how birds fly together or how atoms form solid matter together. + +Find your supporters in your organization, possibly the people who decided to hire you. Try to stay in friendly terms with them, remember their birthdays and so on. Supporters are your hedge against problems. Let's say that your employer experiences financial challenges. If decision makers in the organization like you, and they understand your value for the business, then you might not be the first one to let go. + +Try to get along with people, try to be like-able. Smile. Don't make your work life harder than it has to be. It sucks when you build an awesome, provenly beneficial system and no-one wants to use it. You effectively end up doing nothing. Zero impact and no business value. Therefore, it is of a paramount importance to obtain supporters, testers, collaborators, feedback givers, users and internal buy-in for your work. + +Data science is an abstract, hazy concept for many people. Just remember that they are not stupid or less intelligent than you. They are professionals in their own field. Who knows, maybe they are just not interested in data science. It is on you to help them understand your value. Never grow a unhealthy ego, no-one wants to feel stupid. The universe does not owe success and fame to you because you can implement the latest tricks in machine learning. Teach the intuition of relevant concepts in data science to your work buddies. Do not mind repeating the same things over and over again. Data science is a complex area and you can provide an easy, abstracted interface to utilize the power of data science. + +Empathy is not only for hippies. Empathy is seriously important and gives you tools to build a personal connection with the person in front of you. Step in her shoes. Understand her and think from her perspective. What motivates her? What makes her tick? What are her hobbies? What are her values? Now you can use familiar vocabulary, build analogies, frame impact into relevant outcomes and become interesting. You can help her to understand you, what you do and why your work is important. + +### Data? Evaluation metrics? + +You need to define what you are doing before acquiring data. If you have to produce insight or create something that works, practice designing experiments and to apply the scientific method. Put science in data science. For example, define hypotheses and how to measure effect sizes to reject or accept the hypotheses. + +Be careful about the measures of effect size, which are typically some evaluation metrics in machine learning context. For example, accuracy metric is a bad choice for data with class imbalance. Let's say that you are building a system to diagnose a disease where 0.1% of population has the disease. You get an expected accuracy of 99.9% simply by diagnosing everyone to not have the disease. You provide accurate diagnoses while denying treatment from a lot of people. + +Now you need to define the required data. You need to understand the business context and domain to figure out if the data exist, can be bought or if you have to collect it. Take the following dimensions into account: cost, time, effort, legislation and availability. + +### Don’t tune parameters forever + +Create a baseline result using a simple model that is easy to implement, understand and deploy in production. The baseline result is a measure stick to determine progress, and sometimes you'll end up noticing that the simple model is all you need. For example, use [Logistic Regression](/logistic-regression-is-worth-learning/). Set a time limit for experiments and be systematic with tracking your experiments. Sometimes you tilt, go into a parameter frenzy and will eventually repeat existing experiments. Don't tweak model parameters or hyperparameters for months if the incremental improvement is not justified by its business potential. Sometimes significant improvements are acquired by paradigm changes in model structure and using more accurate statistical assumptions through better understanding of the domain. + +### Feeling of loneliness and organizational maturity + +One of the common reasons for a data science person to quit is the feeling of loneliness. If you are looking for a new job, find out if the potential work places have peers and mentors available. Businesses that are not mature in data science might not be easy on your mental health unless you have a very entrepreneurial personality. Ask questions during the recruitment process to assess the maturity. For example, by probing how they approach model deployment. Remember that you can also find mentors and data friends outside your work environment. + +### Prepare for help requests and to turn down some of them + +If people find you useful, then they are likely to want your input and effort on many things. You might have to start turning some of them down to get your own work done. A data science manager can be helpful to have around since she can gate the incoming tickets on your behalf. She is someone who guards your time. A data science manager is probably found in organizations that are more mature in data science. + +### Never stop learning + +Learn to learn, and never stop, it will keep rewarding you. You will become much more productive if you have a wide skill set. Maybe even a tenfold increase in productivity. I personally like the idea of a T-shaped skill set where a person knows a lot about some topics and a bit about many topics. It is very empowering to be able to create a concrete prototype of any idea: app, website, machine learning algorithm and so on. + +Do not overfit your machine learning skills by being an expert in using only one specific method. Your favorite algorithm is not a hammer and not every problem is a nail. Have knowledge of many different methods, understand underlying theories and form mathematical connections between machine learning topics. Then you can design a suitable solution for a problem, and not the other way around. + +Learn basics of software development, deployment and some best practices. Write unit tests and integration tests, especially for feature extraction pipelines. Implement active learning for speeding up the model training and data annotation. Learn the basics of containers and cloud platforms. You'll learn to structure your software in a deployment-friendly manner, especially if someone else deploys it. This person will quickly understand how your software is used, she will save a lot of time and have a longer, happier life. + +### Math bugs are different than code bugs + +A compiler or an interpreter can catch problems in source code but you are on your own with problems in mathematics and logic. Your neural network will happily keep training using random, shuffled labels, even though it's not what you want. Code defensibly and do not trust the data that come in. Depending on the domain and context, it is sometimes better to just crash the program after a failed logic assertion. Review your code carefully. diff --git a/content/post/distance-metrics-refresher-pdf.md b/content/post/distance-metrics-refresher-pdf.md new file mode 100644 index 0000000..9717750 --- /dev/null +++ b/content/post/distance-metrics-refresher-pdf.md @@ -0,0 +1,10 @@ +--- +title: "[PDF] Distance Metrics Refresher" +date: 2021-01-21 +draft: false +--- + +[Here is a distance metric refresher for you as a PDF document](/pdf/distance_metrics_refresher.pdf). I wrote it in 2014 but the related mathematics have not changed over the years. Surprise. Enjoy. + +Peace and harmony. + diff --git a/content/post/logistic-regression-is-worth-learning.md b/content/post/logistic-regression-is-worth-learning.md new file mode 100644 index 0000000..b15409f --- /dev/null +++ b/content/post/logistic-regression-is-worth-learning.md @@ -0,0 +1,307 @@ +--- +title: "Logistic Regression is Worth Learning" +date: 2021-01-21 +draft: false +--- + +Logistic Regression (LR) is not a divine truth that exists as a [Platonic ideal](https://en.wikipedia.org/wiki/Platonic_idealism). It is possible to design LR from first principles. LR is a great gateway to learn a variety of topics in mathematics, statistics and machine learning. And as a bonus, LR is useful in practice. Let's talk about LR. + +## Corporate roleplay + +It is Tuesday. You are enjoying a cup of coffee and your manager calls you. She says that we need to predict if a customer goes away (churns) in one month. You listen to her until you agree to do it, probably because your coffee is getting cold. Eventually you start to think about the problem and come up with a very short specification: + +* Churn happens or doesn't. It is a binary outcome per customer. +* Your manager wants to prioritize her time with customers that are the most likely to churn. She needs the estimated probability of churn per customer. +* Your manager will be interested to understand how the predictions are made, especially if they are accurate. She might learn useful insights on how different factors affect customer churn. +* The probability estimates should not fluctuate heavily all the time. + +## Start simple + +Time to define the churn prediction task. We need a model that outputs the estimated probability of churn \\(\hat{p}\\): + +$$ \hat{p}=P(churn | \vec{x}) \in [0,1] $$ + +The symbol \\(\vec{x}\\) denotes a \\(d\\)-dimensional vector \\(\vec{x}=\\{x_1,x_2,...x_d\\}\\) of \\(d\\) numbers. Let's call them data vectors. Also known as [feature](https://en.wikipedia.org/wiki/Feature_(machine_learning)) values in machine learning lingo. If a specific customer has a corresponding data vector \\(\vec{x}\\), then this customer has an estimated churn probability of \\(P(churn | \vec{x})\\). A math person might write \\(\vec{x} \in \mathbb{R}^d\\) meaning that the data vectors are contained in \\(d\\)-dimensional [Euclidean space](https://en.wikipedia.org/wiki/Euclidean_space). Relevant data vectors for churn prediction might be available in your Customer Relationship Managemen (CRM) system database. + +We need to define a statistical model for \\(\hat{p}\\). Like, explicitly tell how \\(\hat{p}\\) is manifested in our world. Let's define a simple model for easy computation, inference and implementation. You are also more likely to see consistent results. Not so much with large neural networks where random initialization can give you a different winning [lottery ticket](https://arxiv.org/abs/1803.03635) every time, even if the data do not change. Machine learning is probably the only field where winning the lottery means that you have to work and grind even harder. + +{{< blockquote author="The author of this post" >}} +You learn to expect that training a large neural network over and over again using the same data gives you different results. +{{< /blockquote >}} + +However. + +{{< blockquote author="Someone, not Einstein" >}} +The definition of insanity is doing the same thing over and over again and expecting different results. +{{< /blockquote >}} + +Deep learning, not even once. Makes you crazy by definition... You can stop throwing tomatoes at me. I understand that if you fix every initial condition, you will get identical results over repetitions. And that there are techniques making the results more stable. + +Can you imagine how unhappy your manager might become, and how hard her job would be, if "nothing changes" and the estimates change significantly? Of course we are assuming that you get acceptable results using a simple model. You can always test if a simple model is accurate enough in your business context. Anyway, I believe it is always a good idea to start with a simple model when it makes sense. Tip: you might need a complex model for speech recognition. + +Ok, sorry for that digression, let's get back to designing a simple model for \\(\hat{p}\\). How about the following linear [functional form](https://www.encyclopedia.com/social-sciences/applied-and-social-sciences-magazines/functional-form) using a [dot product](https://en.wikipedia.org/wiki/Dot_product)? + +$$ \hat{p}(\vec{x},\vec{w}) = \vec{x} \cdot \vec{w} = \sum\nolimits_i^d{\vec{x}_i\vec{w}_i} = \vec{x}_1\vec{w}_1 + ... + \vec{x}_d\vec{w}_d $$ + +How is the dot product useful for our purposes? It matches and activates to patterns that are exhibited by customers with a high probability of churn. It maps a customer-specific \\(\vec{x}\\) to a large value if \\(\vec{x}\\) contains patterns that indicate churn. Notice that you can only tweak the parameter vector \\(\vec{w}\\) because \\(\vec{x}\\) is already fixed and given. This is the reason why \\(\vec{w}\\) contains the model's knowledge, why it is called a parameter vector and why finding the values of \\(\vec{w}\\) is called training the model. + +Unfortunately, the functional form that we designed sucks: + +1. The [range](https://www.sydney.edu.au/content/dam/students/documents/mathematics-learning-centre/functions-domain-and-range.pdf) of the dot product \\(\vec{x} \cdot \vec{w}\\) is \\((-\infty,\infty)\\), which is not great if we want \\(\hat{p}\\) to represent a probability. Our earlier definition of \\(P\\), and the definition of a probability in general, says that a probability takes values within \\([0,1]\\). How about using the dot product as a unnormalized probability? No thanks, it's an ad hoc hack. How large values are considered to be large enough to indicate churn? It is a nightmare to find a reliable magic threshold. +2. If the [norms](https://en.wikipedia.org/wiki/Norm_(mathematics)) of \\(\vec{x}\\) or \\(\vec{w}\\) are large, then large changes are required for significant change in \\(\hat{p}\\). It is a gateway to [overfitting](https://en.wikipedia.org/wiki/Overfitting) your models to noise or having some variables dominate others just because they are measured in larger absolute units. + +Time for a new iteration. + +## Responsive math design + +How to make \\(\hat{p}\\) more sensitive to smaller changes in \\(\vec{x}\\) or \\(\vec{w}\\)? Exponents. Those have some serious firepower. Let's use the natural exponential function as follows: + +$$ \hat{p}(\vec{x},\vec{w}) = e^{\vec{x} \cdot \vec{w}} $$ + +Now changes in \\(\vec{x}\\) or \\(\vec{w}\\) result in multiplicative change in \\(\hat{p}\\). + +The previously mentioned problem of \\(\hat{p}\\) not being a probability is still here. The value of \\(\hat{p}\\) is between zero and positive infinity: \\(e^{\vec{x} \cdot \vec{w}} \in (0,\infty)\\). Therefore, \\(\hat{p}\\) is not a valid probability unless we use duck tape and define \\(\hat{p}=min(1,e^{\vec{x} \cdot \vec{w}})\\). Just... no. Let's come up with something better. + +## Houston, we have a probability + +What is a suitable function that maps \\((0,\infty)\\) to \\((0,1)\\)? + +Time passes, the head scratching is audible and nothing comes up. Time to quit? No. We should try something different. So far we have been focusing on the right side of the equation. + +Let's define a function called odds to map a probability \\(p \in \[0,1)\\) to \\(\[0,\infty)\\): + +$$ + odds(p) = \frac{p}{1-p} +$$ + +The inverse function of odds maps \\(\[0,\infty)\\) back to a probability \\(\[0,1)\\): + +$$ + p(odds) = \frac{odds}{1+odds} +$$ + +Ok. So we have the following functions available: + +| Function | Domain (from) | Range (to) | +| ------------- |:-------------:| -----:| +| \\(odds(p) = \frac{p}{1-p}\\) | \\(\[0,1)\\) | \\(\[0,\infty)\\) | +| \\(p(\vec{x},\vec{w})=e^{\vec{x} \cdot \vec{w}}\\) | \\((-\infty,\infty)\\) | \\((0,\infty)\\) | + +Interesting. Two equations with matching legos. It is possible to model the \\(odds\\) function as a dot product since they have compatible ranges: + +$$ + odds(p) = p(\vec{x},\vec{w}) +$$ + +Now throw the inverse odds function into the mix: + +$$ + p(odds(\vec{x},\vec{w})) = \frac{e^{\vec{x} \cdot \vec{w}}}{1+e^{\vec{x} \cdot \vec{w}}} = \frac{1}{1+e^{-\vec{x} \cdot \vec{w}}} +$$ + +You'll get the last form by multiplying \\(\frac{e^{\vec{x} \cdot \vec{w}}}{1+e^{\vec{x} \cdot \vec{w}}}\\) with \\(\frac{e^{-\vec{x} \cdot \vec{w}}}{e^{-\vec{x} \cdot \vec{w}}}\\). Since \\(p\\) behaves like a probability, and we want a probability, let's redefine \\(\hat{p}\\) using \\(p\\) like a coder who re-assigns a variable value: + +$$ + \hat{p} = P(churn | \vec{x}) = p(odds(\vec{x},\vec{w})) = \frac{1}{1+e^{-\vec{x} \cdot \vec{w}}} +$$ + +Well, well, look who's here. Our good friend Logistic Regression. The model outputs a valid probability estimate and its decision boundary is linear. We have a model that fulfills our short specification for churn prediction. We might be wrong but at least we are not guaranteed to be wrong. + +Please wait. Do not deploy your model in production yet. Your manager is not going to be happy with the results. Why? The model spews out noise, it makes random guesses, no intelligence involved. Why? There is zero knowledge in the model since \\(\vec{w}\\) is unchanged. The model needs to be trained and the parameters adjusted using training data. + +## Why the name? + +Why LR is called Logistic and Regression? Let's take some shortcuts instead of repeating all the previous steps. The following function is called [logit](https://en.wikipedia.org/wiki/Logit) and it is the logarithm of our previously defined odds function: + +$$ + logit(p) = ln(\frac{p}{1-p}) \in (-\infty,\infty) +$$ + +Let's build a model where the logit defined as the previously used dot product. It is fine since \\(\vec{x} \cdot \vec{w} \in (-\infty,\infty)\\): + +$$ + ln(\frac{p}{1-p}) = \vec{x} \cdot \vec{w} +$$ + +Solve for \\(p\\) and you'll get: + +$$ + p = \frac{e^{\vec{x} \cdot \vec{w}}}{1+e^{\vec{x} \cdot \vec{w}}} = \frac{1}{1+e^{-\vec{x} \cdot \vec{w}}} = \sigma(\vec{x} \cdot \vec{w}) +$$ + +We find LR again. The function \\(\sigma\\) is called a [sigmoid function](https://en.wikipedia.org/wiki/Sigmoid_function) and it is a special case of [logistic function](https://en.wikipedia.org/wiki/Logistic_function). Sigmoid function is actually the inverse function of the logit function. + +Regression comes from the linear regression model that we throw in the sigmoid function, which is a special case of logistic function. That's Logistic and Regression in Logistic Regression. + +## Learning in machine learning + +We have defined the model, which turned out to be LR. The next step is to put learning in machine learning. For our LR, learning means finding a parameter vector \\(\vec{w}\\) that outputs a large value of \\(\vec{x} \cdot \vec{w}\\) when \\(\vec{x}\\) corresponds to a customer with a high probability of churn, and vice versa. + +What is a principled basis for tweaking the parameter vector? First of all, it is mathematically impossible to create information from nothing. We need to continue injecting knowledge and assumptions into the system, which we already started by defining the functional form or our LR model. How about observations of what has happened so far? Well, at least they might reflect the real world whereas our own guesses might not. Luckily your CRM system maintains a database of past and current customer behavior. We can extract \\(n\\) pairs of data vectors \\(\vec{x}\_i\\) and churn outcomes \\(y\_i \in \\{0,1\\}\\). This set of actual, historical behavior is called a dataset: + +$$ + \mathbf{X}=\\{(\\vec{x}\_1,y\_1),...,(\\vec{x}\_n,y\_n)\\} \subset \mathbf{R}^d \times \\{0,1\\} +$$ + +Okay. How to get started in figuring out a suitable \\(\vec{w}\\)? How do we even know what is a good \\(\vec{w}\\)? Well, it is impossible to define what is good if there is no reference of bad. + +{{< blockquote author="Antoine-Augustin Cournot, 1847" >}} +If you can not measure it, you can not improve it. +{{< /blockquote >}} + +Thanks Antoine-Augustin. Indeed, it is a fundamental necessity to have a function \\(L(\vec{w} | \mathbf{X})\\) that tells us how good fit a given parameter vector is for the available dataset. Let's call it a [likelihood function](https://en.wikipedia.org/wiki/Likelihood_function). This formulation let's us to find a parameter vector \\(\vec{w}\_\*\\) that is consistent with the dataset by maximising the likelihood function value: + +$$ + \vec{w}\_\*=argmax_{\vec{w}}L(\vec{w} | \mathbf{X}) +$$ + +Therefore, \\(\vec{w}\_\*\\) gives us LR that is aligned with the dataset. The implicit assumption for making predictions using previously unseen data vectors is that the patterns in past behavior are indicative and predictive of the future behavior. If this assumption does not hold for churn prediction, then you'll get incorrect predictions. Therefore, we will continue by assuming that many customers share similar reasons for churn. Let's call \\(\vec{w}\_\*\\) a solution since it is the parameter vector of the highest likelihood for the given data. + +Notice that if we had a dataset of infinite size (\\(n=\infty\\)), then we wouldn't need LR at all. We could calculate the churn probability as the ratio between the number of churn positives and total observations for a data vector. It would be a database query. However, since obviously we don't have an infinite amount of data, let alone a computer that runs for an infinite time, we have to make assumptions and find patterns. And hope that the customers now and in the future exhibit the same patterns. + +Ok. What next? We need to define the functional form of the likelihood function that computes the compatibility of a parameter vector with a given dataset. Let's start by defining the likelihood function for a single pair of a data vector and outcome. Notice that it is a dataset of size \\(n=1\\). How about the following definition? + +$$ +L(\vec{w} | \vec{x},y) = \begin{cases} + \hat{p}(\vec{x},\vec{w}) & \text{if } y=1 \\\\ + 1-\hat{p}(\vec{x},\vec{w}) & \text{if } y=0 +\end{cases} +$$ + +If a customer did actually churn (\\(y=1\\)), then the likelihood is the estimated probability of churn. If the customer didn't churn (\\(y=0\\)), then the likelihood is the estimated probability of not churning. No matter what is the outcome, if we maximize the value of \\(L(\vec{w} | \vec{x},y)\\), then we maximize the fit of our LR model to the data. It is exactly what we want. In other words, maximizing the likelihood function maximizes the amount of correctly assigned probability. Let's do what coders do and refactor it into a single expression for mathematical convenience: + +$$ + L(\vec{w} | \vec{x},y) = \hat{p}(\vec{x},\vec{w})^{y}(1-\hat{p}(\vec{x},\vec{w}))^{1-y} +$$ + +Done. The definition has not changed. Let's assume that the pairs of \\(\vec{x}\_i,y\_i\\) are [independent and identically distributed](https://en.wikipedia.org/wiki/Independent_and_identically_distributed_random_variables). Now we can generalize the definition of the likelihood function for datasets of size \\(n \ge 1\\) by defining a joint probability: + +$$ + L(\vec{w} | \mathbf{X}) = \prod\nolimits_i^n \hat{p}(\vec{x_i},\vec{w})^{y_i}(1-\hat{p}(\vec{x_i},\vec{w}))^{1-y_i} +$$ + +Phew! There it is. Maximize \\(L(\vec{w} | \mathbf{X})\\) to get a solution and call it a day. However, aren't we missing something quite essential here? We have to maximize the likelihood function and it's not going to happen by wishful thinking alone. + +## Learning to learn continues + +The situation is as follows. We have a dataset and we have a likelihood function. The next step is to find a parameter vector to maximize the likelihood function. It smells like an optimization task. Where and how to get started? Maybe you could gamble and sample random parameter vectors from a [uniform distribution](https://en.wikipedia.org/wiki/Continuous_uniform_distribution) for ten minutes, and save the \\(\vec{w}\\) with the highest likelihood function value. Well... you might get lucky and get reasonable results. Or not. It is not deterministic, there are no guarantees of optimality even if you throw dice for the rest of your life. + +Do you happen to remember calculus? Derivatives, integrals, rate of change. The stuff that was butchered by a boring teacher. The stuff that you never used? Good news. You did not study for nothing. We have a real use case for calculus. Let's start. + +[Calculus](https://en.wikipedia.org/wiki/Calculus) is the mathematics of change where [derivatives](https://en.wikipedia.org/wiki/Derivative) measure the rate of change of a function at a given point. Like, how stable the particular location of a function is. Or how sensitive the function is to a given input. We can use derivatives to define the change in our likelihood function given a parameter vector as an input. Sounds promising. Actually, we can calculate the direction where we need to move the parameter vector to increase the value of the likelihood function. That's exactly what we need, a tool served for us on a silver platter. To use this mighty tool, we need to define the derivatives of the likelihood function with respect to the individual elements of a parameter vector. They are called [partial derivatives](https://en.wikipedia.org/wiki/Derivative#Partial_derivatives). When we collect the partial derivatives into a vector, then it is called a [gradient](https://en.wikipedia.org/wiki/Gradient). Now, the gradient gives us the direction from \\(\vec{w}\\) that increases the \\(L(\vec{w} | \mathbf{X})\\) the fastest. + +We have already spelled out the algorithm for maximizing the likelihood function. Push the parameter vector towards the direction defined by the gradient of the likelihood function with respect to the parameter vector. If we take repeated turns between calculating the gradient and updating the parameter vector, we arrive to an optimization algorithm called gradient ascend. Hopefully math people are not offended by our abuse of notation when we define the following assignment using the equality sign: + +$$ + \vec{w} = \vec{w} + \alpha\nabla_wL +$$ + +The alpha is a parameter of the gradient descend, and it is not a parameter of the LR model. In machine learning lingo, the alpha is a hyperparameter and it is called a learning rate in this gradient ascend context. The alpha is utilized to stabilize the gradient ascend by not taking too large or small steps towards the gradient. You can try \\(\alpha=\frac{0.05}{n}\\) as a starting point. The meaning behind the name of the gradient ascend is hopefully clear. The parameter vector ascends towards the direction of increased likelihood. + +Now, to train the LR model, we can repeat the gradient ascend step until the likelihood function does not increase anymore. Done, lights out, time to go home now. Or not. We haven't derived the gradient yet. I promise that this is as deep as the recursion gets. Light is visible at the end of the tunnel already. + +## Gradient without colors + +The parameter vector has \\(d\\) elements. However, without loss of generality, we can derive the partial derivative of the \\(j\\):th element with respect to the likelihood function, and just copy it for the remaining elements to form the gradient. As a refresher, the following was the definition of the likelihood function: + +$$ + L(\vec{w} | \mathbf{X}) = \prod\nolimits_i^n \hat{p}(\vec{x_i},\vec{w})^{y_i}(1-\hat{p}(\vec{x_i},\vec{w}))^{1-y_i} +$$ + +The product is quite hairy and feels troublesome. Like, the equation is a giant multiplication. Have fun deriving monster sized equations. No thanks. + +Let's use a transformation that doesn't change the solution \\(\vec{w}\_\*\\) while it makes the derivation easier. One such a function is the natural logarithm, which is a [monotonic function](https://en.wikipedia.org/wiki/Monotonic_function). It has the awesome property of converting products into sums: + +$$ + ln(L(\vec{w} | \mathbf{X})) = l(\vec{w} | \mathbf{X}) = \sum\nolimits_i^n y_iln(\hat{p}(\vec{x_i},\vec{w})) + (1-y_i)ln(1-\hat{p}(\vec{x_i},\vec{w})) +$$ + +The partial derivative of \\(l(\vec{w} | \mathbf{X})\\) with respect to the \\(j\\):th element of \\(\vec{w}\\) is denoted as \\(\frac{\partial l(\vec{w} | \mathbf{X})}{\partial w_j}\\). Time to wear a calculus hat and start deriving the derivative. Let's temporarily use a shorter notation \\(\hat{p}(\vec{x},\vec{w})=\sigma(z)=\hat{p}\\) where \\(z=\vec{x} \cdot \vec{w}\\) to make the equations shorter. + +$$ + \begin{aligned} + \frac{l(\vec{w} | \mathbf{X})}{\partial w_j} &= \frac{\partial}{\partial w_j}[\sum\nolimits_i^n y_iln(\hat{p}) + (1-y_i)ln(1-\hat{p})] \cr + &= \sum\nolimits_i^n \frac{\partial}{\partial w_j}[y_iln(\hat{p}) + (1-y_i)ln(1-\hat{p})] \cr + &= \sum\nolimits_i^n \frac{\partial}{\partial w_j}[y_iln(\hat{p})] + \frac{\partial}{\partial w_j}[(1-y_i)ln(1-\hat{p})] \cr + &= \sum\nolimits_i^n y_i\frac{\partial}{\partial \hat{p}}\frac{\partial \hat{p}}{\partial w_j}[ln(\hat{p})] + (1-y_i)\frac{\partial}{\partial \hat{p}}\frac{\partial \hat{p}}{\partial w_j}[ln(1-\hat{p})] \cr + &= \sum\nolimits_i^n y_i\frac{1}{\hat{p}}\frac{\partial}{\partial z}\frac{\partial \hat{z}}{\partial w_j}[\hat{p}] + (1-y_i)\frac{1}{1-\hat{p}}(-1)\frac{\partial}{\partial \hat{z}}\frac{\partial \hat{z}}{\partial w_j}[\hat{p}] \cr + &= \sum\nolimits_i^n \frac{y_i}{\hat{p}}\frac{\partial}{\partial z}\frac{\partial \hat{z}}{\partial w_j}[\hat{p}] + \frac{y_i-1}{1-\hat{p}}\frac{\partial}{\partial \hat{z}}\frac{\partial \hat{z}}{\partial w_j}[\hat{p}] \cr + \end{aligned} +$$ + +Okay... let's have a pause here and derive \\(\frac{\partial \hat{p}}{\partial z}\\) separately so that we can have a break from the previous monster. + +$$ + \begin{aligned} +\frac{\partial \hat{p}}{\partial z} &= \frac{\partial}{\partial z}\frac{1}{1+e^{-z}} \cr +&= \frac{\partial}{\partial z}(1+e^{-z})^{-1} \cr +&= -(1+e^{-z})^{-2}\frac{\partial}{\partial z}(1+e^{-z}) \cr +&= -(1+e^{-z})^{-2}e^{-z}\frac{\partial}{\partial z}[-z] \cr +&= (1+e^{-z})^{-2}e^{-z} \cr +&= \frac{e^{-z}}{(1+e^{-z})^2} \cr +&= \frac{1}{1+e^{-z}}\frac{e^{-z}}{1+e^{-z}} \cr +&= \hat{p}(1-\hat{p}) \cr + \end{aligned} +$$ + +Back to the likelihood business: + +$$ + \begin{aligned} +\frac{l(\vec{w} | \mathbf{X})}{\partial w_j} &= \sum\nolimits_i^n \frac{y_i}{\hat{p}}\frac{\partial}{\partial z}\frac{\partial \hat{z}}{\partial w_j}[\hat{p}] + \frac{y_i-1}{1-\hat{p}}\frac{\partial}{\partial \hat{z}}\frac{\partial \hat{z}}{\partial w_j}[\hat{p}] \cr +&= \sum\nolimits_i^n \frac{y_i}{\hat{p}}\hat{p}(1-\hat{p})\frac{\partial \hat{z}}{\partial w_j}[z] + \frac{y_i-1}{1-\hat{p}}\hat{p}(1-\hat{p})\frac{\partial \hat{z}}{\partial w_j}[z] \cr +&= \sum\nolimits_i^n \frac{y_i}{\hat{p}}\hat{p}(1-\hat{p})x_i^j + \frac{y_i-1}{1-\hat{p}}\hat{p}(1-\hat{p})x_i^j \cr +&= \sum\nolimits_i^n y_i(1-\hat{p})x_i^j + (y_i-1)\hat{p}x_i^j \cr +&= \sum\nolimits_i^n y_ix_i^j-y_i\hat{p}x_i^j+y_i\hat{p}x_i^j-\hat{p}x_i^j \cr +&= \sum\nolimits_i^n y_ix_i^j-\hat{p}x_i^j \cr +&= \sum\nolimits_i^n (y_i-\hat{p})x_i^j \cr + \end{aligned} +$$ + +There it is! The partial derivative that can save us. Let's say it aloud once more: + +$$ + \frac{\partial l(\vec{w} | \mathbf{X})}{\partial w_j} = \sum\nolimits_i^n (y_i - \hat{p}(\vec{x_i},\vec{w}))x_i^j +$$ + +The symbol \\(x_i^j\\) means the \\(j\\):th element of the \\(i\\):th data vector in the dataset. Now, the gradient is as follows: + +$$ + \nabla_wl(\vec{w} | \mathbf{X}) = \\{\frac{\partial l(\vec{w} | \mathbf{X})}{\partial w_1},...,\frac{\partial l(\vec{w} | \mathbf{X})}{\partial w_d}\\} +$$ + +Now you are ready to train your LR for churn prediction: +1. Get a dataset +2. Initialize \\(\vec{w}\\) with random values +3. Train the LR: + 1. Calculate \\(\nabla_wl(\vec{w} | \mathbf{X})\\) + 2. Update \\(\vec{w} = \vec{w} + \alpha\nabla_wl(\vec{w} | \mathbf{X})\\). + 3. If the likelihood function \\(L(\vec{w} | \mathbf{x})\\) increased, then go to 3a. If not, then \\(\vec{w}\_\*=\vec{w}\\) and go to 4. +4. Use your LR to make churn predictions as \\(\hat{p}(\vec{x},\vec{w}\_\*) = \sigma(\vec{x} \cdot \vec{w}\_\*)\\) + + +## Conclusion + +LR is worth learning since it covers multiple topics. LR is also relevant and useful in practice. I skipped some topics that might be helpful to know. Nevertheless, you are ready to implement the first version of the LR for churn prediction. + +A coder can import scikit-learn in Python and use the provided LR without any knowledge of the previously explained stuff. That's fine until its not. For example, the gradient ascend of the likelihood function might not converge properly. If you understand the concepts behind LR, then you might have an intuition of how to fix the problem. Otherwise, you have to guess what to ask at Stack Overflow. + +LR has some direct connections to more complex models: +* If you [Kaggle](https://www.kaggle.com/), then you might be aware that [sigmoid function is available](https://xgboost.readthedocs.io/en/latest/parameter.html#learning-task-parameters) in [XGboost](https://github.com/dmlc/xgboost/) for binary classification. +* If you think in neural networks, then LR is a neural network with one sigmoid-activated unit. LR is also often the last transformation in deep neural networks for binary classification. The deep neural network tries to unfold the data before it arrives to the LR, which throws a linear decision boundary at the data. The transformations find a data representation that is [linearly separable](https://en.wikipedia.org/wiki/Linear_separability) for the LR. Therefore, the purpose of the millions and billions of parameters is to serve the LR by finding a data transformation that the mighty LR can comprehend, also known as feature learning. I find it funny, it's like trying to build a simple joystick with one button to fly a massive passenger airplane. Anyway. + +Further topics, exercises and tasks for you: +* How would you measure the accuracy of your LR as a churn predictor for unseen data vectors? What is overfitting? What is cross-validation? +* What is regularization? What is the difference of \\(l_1\\) and \\(l_2\\) regularization? Derive the gradient \\(\nabla_wl(\vec{w} | \mathbf{X})\\) +when the likelihood function is re-defined as \\(l(\vec{w} | \mathbf{X}) - l_2(\vec{w})\\). +* Check out softmax function for generalizing LR to have a categorical output. Derive the gradient for this softmax multiclass LR. What is the intuition behind naming softmax as softmax? +* There are arguably more efficient algorithms available for the gradient ascend. Find some of them. +* What is the difference when a parameter vector is at a global optimum or at a local optimum? +* What is a greedy algorithm? Why is the gradient ascend a greedy algorithm? +* Why not to worry about ending up at a local optimum with LR, even when using the gradient ascend that is a greedy algorithm? +* Implement the LR evaluation and training from scratch in Python. Utilize some public dataset. Use NumPy for vectorizing the computations. +* What is entropy in information theory? How is \\(l(\vec{w} | \mathbf{X})\\) related to entropy and what is the intuition? Why is the negative of \\(l(\vec{w} | \mathbf{X})\\) often called binary cross-entropy loss? +* What is the connection of \\(L(\vec{w} | \mathbf{X})\\) and Bernoulli distribution? + +Peace and harmony. + diff --git a/content/post/refresher-customer-experience.md b/content/post/refresher-customer-experience.md new file mode 100644 index 0000000..3d96e54 --- /dev/null +++ b/content/post/refresher-customer-experience.md @@ -0,0 +1,6 @@ +--- +title: "[PDF] How To Measure Customer Experience" +date: 2021-01-19T02:02:47+02:00 +draft: true +--- + diff --git a/content/post/singular-value-decomposition-is-worth-learning.md b/content/post/singular-value-decomposition-is-worth-learning.md new file mode 100644 index 0000000..ad96b35 --- /dev/null +++ b/content/post/singular-value-decomposition-is-worth-learning.md @@ -0,0 +1,6 @@ +--- +title: "Singular Value Decomposition Is Worth Learning" +date: 2021-01-19T02:24:02+02:00 +draft: true +--- + diff --git a/content/post/teach-context.md b/content/post/teach-context.md new file mode 100644 index 0000000..7cd441d --- /dev/null +++ b/content/post/teach-context.md @@ -0,0 +1,15 @@ +--- +title: "Teach Context" +date: 2021-01-19T02:53:07+02:00 +draft: true +--- + +A math equation is a pinnacle of sweat, tears and exploration. There is a human story. + +A slight analog with show and tell in literature. + +It is your responsibility to make people interested and sell your ideas. + +Like the cliche says that there are no boring topics, just bored minds. + +Give context to your listeners. Help them to think and understand. diff --git a/static/css/basic_highlight.css b/static/css/basic_highlight.css new file mode 100644 index 0000000..c27e27f --- /dev/null +++ b/static/css/basic_highlight.css @@ -0,0 +1,145 @@ +/* PrismJS 1.23.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+bash+docker+python */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; + color: black; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; + color: black; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: white; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.token.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + /* This background color was intended by the author of this theme. */ + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + diff --git a/static/js/basic_highlight.js b/static/js/basic_highlight.js new file mode 100644 index 0000000..54aff7c --- /dev/null +++ b/static/js/basic_highlight.js @@ -0,0 +1,10 @@ +/* PrismJS 1.23.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+bash+docker+python */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,_={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof M?new M(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=l.reach);y+=m.value.length,m=m.next){var k=m.value;if(t.length>n.length)return;if(!(k instanceof M)){var b,x=1;if(h){if(!(b=W(p,y,n,f)))break;var w=b.index,A=b.index+b[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof M)continue;for(var S=m;S!==t.tail&&(Pl.reach&&(l.reach=N);var j=m.prev;O&&(j=z(t,j,O),y+=O.length),I(t,j,x);var C=new M(o,g?_.tokenize(E,g):E,d,E);m=z(t,j,C),L&&z(t,m,L),1"+a.content+""},!u.document)return u.addEventListener&&(_.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(_.highlight(r,_.languages[t],t)),a&&u.close()},!1)),_;var e=_.util.currentScript();function t(){_.manual||_.highlightAll()}if(e&&(_.filename=e.src,e.hasAttribute("data-manual")&&(_.manual=!0)),!_.manual){var r=document.readyState;"loading"===r||"interactive"===r&&e&&e.defer?document.addEventListener("DOMContentLoaded",t):window.requestAnimationFrame?window.requestAnimationFrame(t):window.setTimeout(t,16)}return _}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var n={"included-cdata":{pattern://i,inside:s}};n["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var t={};t[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:n},Prism.languages.insertBefore("markup","cdata",t)}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; +!function(s){var e=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:RegExp("[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),string:{pattern:e,greedy:!0},property:/(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),s.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/(^|["'\s])style\s*=\s*(?:"[^"]*"|'[^']*')/i,lookbehind:!0,inside:{"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{style:{pattern:/(["'])[\s\S]+(?=["']$)/,lookbehind:!0,alias:"language-css",inside:s.languages.css},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},"attr-name":/^style/i}}},t.tag))}(Prism); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-flags":/[a-z]+$/,"regex-delimiter":/^\/|\/$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.js=Prism.languages.javascript; +!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)\w+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b\w+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+?)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)(["'])(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|(?!\2)[^\\`$])*\2/,lookbehind:!0,greedy:!0,inside:a}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|==?|!=?|=~|<<[<-]?|[&\d]?>>|\d?[<>]&?|&[>&]?|\|[&|]?|<=?|>=?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],i=a.variable[1].inside,o=0;o?]/},Prism.languages.dockerfile=Prism.languages.docker; +Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^\s*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python; diff --git a/static/pdf/distance_metrics_refresher.pdf b/static/pdf/distance_metrics_refresher.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ad738bda4c31d710e01cc9be1791958780a8958f GIT binary patch literal 116179 zcmd?QRd6P~k}YaxX7*>c+sw?&%*@Qpb{pHw%xt%rnVA{e%*;%u|GQ@<_MABn=jq;u ztBMLKODd^yDVL%mQzBCk5u;_KV}&8>c`o>ZVFoY&?2W8ocz6KxGM09xhEA4VrX~Q! zzY>6vk&Tg^6F@Hk&;~FvFmM1ESs4Mk0D5@Gr_R@n<6Tn4yFKl4JA{vziOD;nY&m3I9UMnVwN^8rcQrz8$%aU5mRG( zlfSM0l`9xJ**XLM0YTW_#?{u&8NdplS8y^lu{3tEcLFdn{nZOVul^4Z0Or5e3 z7DE#gGe%}ZQxisZ4nrmmGZP~t7E=yWCRSrM6Ba`wJ|1HR6Glce6E-78Lv~h9Rx?9W zMq@@66HZeWRwGUmMrJqlvr~IC@mpOe!&qh5epWquS+5cr`|FU^u zLl;9Ed-H!|A=|&b@qZ+MGJu)wzi7hF^4|@}zyQg>z~HO*Z))BC2@GLiqXsZD6aWII zG&7(y`)gY_AGa?lQ%BHQ$z7$#v^nm8_rV2WsZ^5KEdIT5$LK&{Ak-l=_Wx-t|9tg- zDk5xe=VEH-;tb&UmnyP6$CQeDZ^ z+1}O3_%9et|14*J`S&j{{sHLUkoc$f{~YrFh{S&^6)f!R?EejgOPZvN@Rus=i9i%XozI?YPuT-%`Pdr_^_@y79YULWVmF92u-0NK=Zmie`$Fp>>R zJMJfV-f`^pcISKGD4g+ZR^r8{?l3r%EHfPkR7k_~#)bWBkGie;Vy075Ny0II%4Xeq z;bxtU`=R6G^RvI-{pUM7e@`FwxI(D71Xj4(+R@FCy}$SxoA6pLGnmTni-t?j zQBuWTE+X#b~6M?GhXZWGnhyZCmK9&)<7>84r_ z78F6P=!EY)UgpB*G;hhSw$D_VsW-|H=%-RD7=(MFci;ty=uIaUN5o02%w0oMl+@GsEP&g&chZqUpCgZArNR3TE}Ax3ZP2qEEE ze@9*@7;mIF;jkX^5+PP38gUVhetx2u>_$cM0OqW!Ixxxd^M%WZX~%a3jLTDv<{+N7 zqX6`XBf?6BlDWotYXbaNanq%jE0L%Gyk8B_i zRcJYX2@sMP$h<*V9I9JSjKx-pE(n{k0C*;Yyy&E8VR*0A6f1m+lf2LbL;1*9W@fy3BFtn#+L+dF(Oma9gQv4k-JMPS@3!eN3*c{*39WpjOsO-Xd|HAuiC*D`^ZHaxFWqI z-o1#!p{;7+$ZzBABR`1oA8hr4_aFQ?g|(XzZi$>YSxpx!Lu+BTaa(w_F_)$Ia>A{a z4`~d;+2B~i-1-p-Ktlsua_7!NBHKjum^O`=({~();+9(&x=UZd3=MDejdJc&e%EUH zs@okUvdZ?45DnxyCs{ldK2Kq7);g2x|kmsZgsGE{7n!iS6J@8yp9 zc@_rPQ1UA_gBOGI0mYr!Da>}S0ISqWf`;(MaeO#KL8Dm<1@iI6ZMn8U6qfJfh zhZ$YlPMDddXwO{D4l{n0Udmc88XJRxFlx$$=xYj!ty&4}+?Es{na*T6mYm~r zD`Igdm$CNLcNtEM_k^Z051Q0=mOBw$$y0 zs>|Oh&f^@@JXhm(V(Df1-BKv{EjZ!Y;bO&!&@c@l^hynb{fIu%r@lO;hm=Hjk`pkt zUpeMq(q+S^v07>-+s(4w*XURedPqlC#7%66MpB3OnH7@{U1C4H38?Z0Bq0sx&|Fc8Gf7ZAstB;qki^w<+{l^K**S#=f%b=7&DePq@j5}u3xk)kK;TLf~r@qb?5=7u$YvAh}?=e zk+ca5lyfC^KtTx#VC!nQfIy+#7BnQ$oR>6Q6pbFQFQZxZ1`qC;l=l!o*>jFdp3JQt zr*j(71e_N0u!{l0p0~-C;mLc4KO;I+nsFL4<{3?zrHgAA87_n7R943WptHfVJH6z9 z21gexFS4}e)B>s@!$|^Il2OutI@y0qKNyQk2N?986srXYt%3tbE%fr*qJjXTOZ@~# zISIj5ysyv=Ov~Y0Raj(cv#j;QVPSw=4UYQ^qbh~T)I3Q`-$<(O9%V+vF(c0Gm9r0wnm^T2W1(D~F z|03~`akhR=J8;u>+l9+z2;_~4y%ALuLX@J66Vb2bnm!rbh>pp@$u38&_ONiSUgy+e zm>6=Z%ctca!#aX9KjuRmHdOhMK4utO6}F*l~z}9Yhk{7+W>`0Cg4h=8!E?T z>Npkilki5q<1T1JU?aIlrdjr=if%a%`n$c#?qEs00}FFTUDZ##T*4$N9Eg1SnD3Ve z2)A1m|I6SDOiwisb;cU4wzQ;?F+9pxYTnZVadYZzw>fb$TKVzuqb<&8>rXv4Bky#L zr>1dw`uO58*R$VYdjInP+8}8>l8-CrLe**2ed}0L_BH~;HG17tT+z8ju@$5M7F;&;Ei|Kt;EOI zECF-OV7+BA1C#Pf`}3Jw=2DiZ1nv1ynU=wUpZE+r0Ev=1P}x(c_|!&+@Awc&0ZV$$ zOf+U_3kkX%`l7_3C8EKh5Mc3caK*moJL3ZaqIhyx=@*h_q?K;xHESfh!Kt0m=jcS3 z=tL&59riGYFYgs(wU-t$5hA7I_G>mEV6fiKEe%2egyeWj0Ee4 zr}08dCxQJ;RpViO{z*>F=ho=0ptLTrB$`WzDlvqKoe05ZFfkGGf? z5Vfxsq9pm2)QeGei`PUTndf-Km8$50NWf3HC|3c_+%jZQw9$fhW=AIRH06MCz%(gQ zv*3Ozo?3x?rOhIdWi&N0og4!yl})d!Q-DEHfFpN13}4Vupvz49@((n0mgL6Fiy^GB z6GVh8rYVaVqBM;6pig=Q8WtJwyG*BjGsGh}6)B+ggNdq>MK>1y)Ue!IYTcq)~K{h7fw*I z&M6AKNkl`uIZ=S5kw&BhlG&_E8WAuvq1i_&Z;1}xM#KT!FKL+35w{-KOr zXL_CqO9kw`whLwyiHjj6m`vm(p2U(bKQW4N6|#fW)XXe%9R)hF3*!K0Rzx-;`5tpO zres|A`#^2C1gKrWs&E^o1z=M3Jny&(cqz(Rl2eCLI8;EP{y+!CgcXFSgkVj5UkAm8 z4MpgBz5*phi3|_wj`+E>0O8u2F!DTz97e;hNidO@%`OJ#mjE>>SY$d1F3o@x$co8a z#oNNCvshCYX*9yE%enows0*_gG_1DVj9a^d-xYLN^NgEpNfU0GU|_(Y{z|#6-%>t^ zW3xHu99eJ>3od7>r(8O(X4?)Ls_AuxiX7e_%35~&XhSgKlofj~PclrF&OAI);u)f9&@$^mRUNYGRD_TsRC{C5&sr3M2HAHg0oMhQCOykw(9bnobq)Nys9R2$+pMfym?X&p6YhLDEAI*v+c z9;eGY8m%L=+un;g?0={q4YPJ+Kz~N-jQ`Y{q}fjCCROON^>ud^O}(r0ZtsKfP1&3YB#Wqn4)U>TuS+gTGM0tF$q_XGK`W@y(? z|BX01v&8OqRaGs|^2SBPQ{wx?5=@;x-#W1}g?@ZPqq@E9_VA}&M0KZq%#yt+nAO6? z^PvLmIOez_&35~qmT@3ly1Q+CXNobJ(rXF!#Gh4i{AEoc;bc4QNMK8K-imvC@zA#J z6#cTA`Dho7{PFId%uYo5;|+E`i%qoBW%u%Sw679~8HaX6SpRm!`<-Fea~v9~5dvcV zB~|u^OL2DBz_O>}f!a~_somMdW*7FO*Yc*QK4LDKa8Vs8ELm$PMDVO%)4U9O6!sa- zOY%?)cN*!hrl zEM3bti@oCPanqlU?CHvK&FTUp5~wW%ar-QK?beVXE%FE~*!0Kxe(m z61J4#pbTcVQsuzswxRx5>ZH9!cU|$O`?A*I2l9=0vt6n9KOC~0|91{AMgSu-$6t5% zzuaF;05)b8=Kqxb@u&T#3!RV1Jqbsq&)38X^IK{DS!@KpdQvMeaZY@>Ih^REiB39atF0^gW~? zI?$`Z0aFe!+;0NJi-t1$Bm&f55KtQ&Ra*oH1r{D4F#k=Ocg}?;H-RkAa~P6AtDB2YVK>qwgzC}+(9h>jJ&zFaB>DVC=j@MH7|}Nt;N1+7iFZJhPfJ-RL|9zNzTxMjz`{U+3=~K} zQ39F-4R{sE3h~1?*gHpfhei8Jh9Jog{JNra??sO4?FHG5VE}^=JBbDM?gOG(N5we# z-tOHd5i&Fcf(bJKhD<}nlYAj`{VO?t;GYN9S+pV=fTMr~1_RI59B(>W{Z|-)2EHF|^_#RL z#L)ns9lB+u?>$;iZ~MSk{ILC?AG*?nAtAyBK+pbBcJL^Wf|Y`M{om#t->P@t&ad>z z-%BUo7ZL-gfiJMfU$QU$4z;*=yYFFvPR`GR{j&iCFfhU--;%6hpL)9JXdrL$GO(~> zy+q>@6oWndBzT3u&w+yQI~w8l_8lM7nO|BgV0h5X0){(1ezXAr3{VeEbOW;xR&JNzMj$DU$d)XAlLuLIx@@lICukgpdJT+jLQ zEa%1FZo*Slqr)ZxCHDca9U_JCP2~ME1C5));2Yyhx|3isAmmc#z^MelX8F}CI1buP zoX)&F#S-v$<#L_etiBZ;Qf6<2vX$7?>JleNx=B$mgBg5v2(%xA>Bn)bax;FY)V)zN z(rwqmPp3B)QB3A16u;ew2@QATDo>>SCq(007aV)qm{5^ra0l=qq`i);!;(HpbiRJz z$~T>oe@5!@YR2VGrbNYDrz2d;;H)qj8z3^}iHBjrj+%#_G%IadPTYo?6d;?$5%~t3 z(^<22`-7Rsml!*7irdHQVxaQ8JR}6Iag2drjz3pt7u%YzG$ykHsB-kgIG!f*a3|t< zmYk&3;s%FKW%HG8!b`5ARm8JAV=O=48w){)Jp<3gy3$rNK>UAK=X(CEi2>KCZWDp% z>~GhcnQ%dQm6*eZ%i+dav?0Cr?eba6*!g3vsx9d&fyyRhw?d5H#1w_zh9X;?_<=E9 zLnc%z^wz{8T_Mix3(O*S8EVKh#7xM>6Qp%f%NXrKl@OzA*5pI0n8o;~_z&_s40A*q zrnCw3lLo^8@2Z_gfaI;`NyVaFGn|!j$<{-&d7xH(ak6%3l>%a`n~fW9fTh>|*+Gv9&XX-odgEwMm9HPQ&OFF--*C{6Q|FfG z=RPrT^Tx1Fu9uhRfD*;(&Xyms7K!qehAwx{*+)9f{$6;V->jQs_?kvBWOp@N?j}_C zgvJyT(bHLA>a+^qId@tUgvP=?2_;sutS%HxKGL%A(9;Nd>ibHZ%hVvf`RkM%C@t z?#_CNV!EsdT7|ya$q6wor0Ri$K<&NcMG})c$8OcgdoF>}P0sYSpR6$!QNbQNn+_Se z=Teft-mq&6)N4lHdiVG+138b3S&)lob-pl2UjP`V1iw>*<<|Fb4=s!C!~9zx{;v%+ zpZt=uSkCrszPX8xo&i}V6|yq7x+3j59U*()(T*aQJqoXu8}t>2ioxGEzVVG~nX%fO z_BW2D1U%00bu|U*+N~%RXMNJHhb0%X5s~h)6z(;Ep>@JFyNXW!$Rd3Le`8;I7K?M> z1!Od)z6 z5Pi_8`MuuHVft5M&b-sJ`xOb5`4)K|5luQAJ$BJ%2na~>OVmEp(|VtAEyX`8lReG7 zq^s}73@Wt#BwBruZxY7P`B44h_NBen;@=~%J$^8&dk^4>$>yw1rt{FEl7*zRm8p{t zMt%}%LRs>JegRHhcFlaGqwjO8ln3RLW$e>S`0e!$D&jZvTfm|y4@f5SMEWsIcqw>M zyRYUzGtyPf!g@(UCk|cfqI(e|K5DSR$`zPGXUbFY8c`RWZAWtoUzz)WV^M`KS-u$` zhld*tTb~!lGjS30#{43k)u8@kU5S1kqm2 zpXpZZsXlk^a}Ubd;OGh0LdPY}j4o7k5BmEWO$gHpKS`1(M)Xd(0)oQzM$!yt5{G{5 zP@i?p)=If#jbS&O3NORM1^yl7m=3lp?}3 zX|1jM`i=%vo~m-4yg^I;$XSQw${)AEUR*~O4YBB8%+9=UhHn8?A^Gy4<*_sVez30w zaMX3Qq#_yPS}uVU3YGb2=#fiC8h0ak7ktx#XxMT`7T78%SR{uXqDA14Bf|1@z~13& zzG%thqK-J0McX3;++ZFRV3AeLkWkjW?;SS471UAPRXScnW@7WP>y=UypQl09GI=#W zhzatjP^bLpB!$)Wm$(qV(z&{rXx_7Wnrki9VN!}b860ebv`O%h;0;^9g6Bnu-KV2q z3p0{wk~?^|nI2{ueFPb{FTaewsER@<(=Ga16dxo z8;T5@@C&YMZ`_?#UQgMNPNyUowS9!PWaP$2;2ItE7@}$#`rAWnkrDg*A|=a)A*rX| zO=j;f!x*DSF!S9&vDdH7x*=Yr(Bu+05+sZA%uHny7t3G+NAHtI+Mgv?vb=mg-HBwP zyI)F_q~0_~KlMH_lWO7q2)+UbT|bgHw|EbYUB=;85_mYC z9gED7N=rBN1pNVIiWLU))@Er7PK*>zV}n{0^N3&4`7fjd+iQS#hk=3 zWj_^}>~aG0=qpA{ayvp?NulCSypsM~-SqIBJ;hW1PW#OQmP@quR}%^CIe3NVn=~nC z{y3C|Y^+mla%+6WiE?8QeFqN9XnLU zyXMrQgk^{jA1#tXPm-a%1XJ^>O%Mgxf-nx{giS@?itvE5xp{R zLMF@ku4`ITb%OG{Z1vhm7ZwD1k$ZX6O1QG{3On8fvDVte#@>nFW=1uue;OS(b$o|+* zew3-*VwRnsa}HvjI@h&Aq9yYif}bHDJsc-J-n8Y;+ME%X?nl!GI(xE{Avkb<#{y`!BrVGRHq${DBXKV zNz^dRIT=38BFBu0>+sWnq|p3vpLB6t8>T*;FXR z?s!oq2IoNPY!t|et4yZ%8;fLub3(I^c}6hrXO+{0c2dND*EKvCTKkQg(QeZ1OTLh> zeYj};lv1!r=X%~G}vB6>nfz(gB6N?vLqS|5?4Nu#FolEXi% zj+fmjdqz`=At9rxrB;mbwp3#WzPtKsE2#5arQtluniJ6_SrNlT%D$^E;67KoGDvYOZ|DZVT(jmRBNMrJ_JsKA+p9BPqJ%+Ps zT!aiSO_Rs~YK9KqXSix~V3_>`{@DHuVk$aVPf|l!Ul2XlYh|hYWg^OVATyMlvPk%+ zXCE`kU}NqJOTJI`xvTms;-Sv|!OfL>pb*~&4~S>X**Sda;itH)f};V5xllXj?|#L} z6Nw@ddb`1b{QO+7?aZK%$?4Hp7=N2mRQ_~l;wod>zFDy=)QW~}M-Fm}en#c3{nrjJtIO$mCRVnI^b|*Y*5NHh ziT7KK=M0^0@Xs(Xuf9t79N*iR`HXE%*FtW7zE7N=xH!KT|xCvIW(I0d&AA@+oh%=hzMBJ2kn1fkq6oE`aD{nw2T4N@32+$1CpCE@n5{NJ-(SC}_D>a$t9xRs zq}15T%B;smL#z?K>1hA;j}2RAsYUZU08aG)#yieFHggtOba_sK_`>h*I)#rw3k2y) zc38Hsx9O>H>qIh@Sew>qyP#%qx$r35%&h2R7aTQX&#n1CP=?UyJk)LY*;=I7)%CWQWZ7Kg}cL9Pw8kQF#e$i*+#v$`go>Povm9IR$3H`z#BysHNDM?6Brf zapTt9(7kViyq2-PEq9VC%l<5+S9NQ(Rk8H0E@Id-kP{sG3FzG~#Ovxva)tu@KQn_M zA2F)o7Zf93!D`k%JutdfR!^b*_I)Y1eYi8%brc5o?`VOi_#$snd(PnbrUFPmc*HwM z8>8FJ_9j7AjgLIDl!fwf`&wnI2=0bvSbXTOq?&%@X9QX5hABntOr=Sl+-)VzS+8MF z$%u;9K6x{v))!OjZ$ziB@SkVvwSv>~HPqCjdDhpl;GrWq8?XASYT_oCS-2<(Tm%L? z%_L6oJWsvo`3EcE*0NL0sYUnjz3=N4@7 z=8(BiZ>EuXM7pWg0b|y=%!_p|=>|`l7+p-v+?)XaB_ZQMJ@ z|HW;jv3aC*2V)EQN2}kgO4paxYw6c9L6d=CHXO{?)yg0YQH5l8aJY)kSjU=O%$SG{ zYZ>2eb+J);xa-T3g$UzN28A>FFYR|c8GlMJb_!5=Nev7IMb7Q~HTcGZ>35M43jwnA z(BC^)T@m*BPCG}wSKgP-noCB%Wu5ZqpteDqig;fiLE{`5np#Ey&0OXs6$L0-mG6gt z%muKF)pdq@ZE5FQjM~n>6^i|)CYR5dfua9Nw!bMiPlwduo0VBzR1 z4?cye-}G<}ZqLdxyhz)Q_KF5E;XT59zMx?u#rFm+_|N=3wjUnGv{DggkGOk}V~mXB z+>zEDXd2dj@mr0UmleTBd;>YD?JmVKWq+2d_@u6^lA`>miW|M7eL%+d7sN@|$J!eQ z+5TY*Y~CVGbY+1OF7IDnHAqW0VM5O6W1H5$wX0WO(re|<*>tIxAA=F9pI5=tFSB@MR)F;(@j5BYydk%4eb!I zP3UJwO|d4n8sa3OnJ99cm&p8uYM40oE_kh(5~|2>w{#VKCu`Bteb;HU_jm%h>5a4Q z_Bg&&F97qtNiMaKE7wDZIbq%hJkdpMcrqgX}JRO;~L()RCNC z_6uQxK{Pd-WZN}?whtlWx}Ocr>m`{%_Wo^?iF%CF)-Jks_TpJ&h2oSYDfrHUQ|IOQ zm$r<=#vQo()1WKJkH;K7j*Ox7QWd-6;*V-Y6!uk08TDsT4&eeZix1OS@gqZ)x{T|B zd8?GmdogdmDyYPR*TLzSu}6Afd@-dar8yMnpyPGWlnc6=)3P+X$C+3MlXVME&XxlU zaF?!RJ;6CT)t5~V*~5%-Q_^oWo?UH^Kt4CSlh!*EjxN2 zFG~{~PR3Hs&w1)$UEQ2|;`X+(L254Q(|NaEl-qcbxtY71pEXj*L_V3!>rx*TzFnf% z&%I-7FOKlV_E+4G7A~PTV6I3Zaro9f#*Dcq~a*8ddS{062$L+JP)(N4yH z&Ia4+jFdw{rIY(_3)WzLy-(;}1-f#sH+Kl7#tAfVti2K0`^?h-3+M;7K!XeHBiac-gox<{@lXdd$hQYe^CDvK zkBI(43kUYMMF5Hq_|Uzox!4X-NaIh)XGkjz!$d<3=>G#AN67-hu*90s`@TN}L<#Yw z4JEqIBlrQdi1~NZzV2)|zjhc%J5CD_r5^N)H6I>a?ZRhY59FT8;M~oFBlIIA8 z1Pu8o3gl6VNStT7iACTb_(#-G;9DgO$N}t5-Ue>SSn(^Mt0=gL6fExJ z^YimKTvT8;2g{|G|BgQf%f`mqps1YoZDrIyF(V`A3rJ8$4F@STAp{61ypb3{PYn(B z?T*h(c~-+m`aQNZ0^kK6;@=2)_xLO|-R|K5Jgk5tLwt3l{GuQL7X}jg#@ZBAQbRcc zyn26ri+6m--+dq7ZL5COh<$IzxcJVV@O$L*gMSkeoCOL&eiYw4+}!n%)CSa1-~|qS z)GR{W9xp9DhzxwEE{q7zQKms0(Y;;UitM^5enGWj!yr0;F3|Z8SNZ9)u)qW{+z;ma z@zVxyh$!9pb4aVBP2vaj?gFjxQ-MKz@k^f>806e+x5!ATAp{uJ%>u=d0s$A9m;!@< z{SBBxee>(U1&}f1cyNF~d%W%h0T)qVJiLn>q5;)DUC$Cq=n(+nen+Df0oA^4ODGZm z34aSl0AW3`|CA5{V%XDHfB_=;1~&z&J@3h*0TTNJB}xFox~HcE4XFG6Sr3HuOiu|J zaO>auy$+Fvh!NSl^Ud%B1oRv6YyVIX@PW)QJ6J{`!#RH`YjQtF4bR4ZJ2X=v{1M4^ z+P@bJZ4)^I4X;_@aJX=TeGw>T&zbP)%GSx; zkhXNPQ)rTTanK%OB??}DMChxtZcen$G0{+@b6n)?=R*%yr$2*8>gVCliJg2(N{`P# z7vR3D4wb!IiJcZEX(}CVSi;Cn*O-ZSmo88cu&HDg&?816N5cd`7ayX80n0|Ys>2_P z+DEMJ8^KbRGpTDi=f9^7wTjh`Aqx@>T8>^=JJjbe)~Z%cohl9@A!dlCUjcurmJgjv zdSC8#OIM*D<=j6)(^X`KJH#!fM}3K0=a-Yyk{cP@98)@{5hI9#elEq*U2S@B&>bd3 zw)jg2yeZo^>Lu{6BYfS7A_{-~@te7O3e7O(NA_l?e?T2f=GIPsm>zb{te%ExhjnK) zYEFOzO@-U^(x1U<1fSRGWcKWah*ZdRQPSk<7IZy*Pir|WkU!w)TqIzOOFJzwxxsKQ z9=Unot4R{wqJAH-Cd{#HpDlk*!A1@97VD0$p$QezFB&?8u3sMcvq{axvaj%_!>hoA zCEW&7vlz?|gELEixgFJhdVp!|)3kSp30BkmgmJJYZJC+$@x<|K>uZw@6q>xPF2WEY z*+m*-|H?H7r%B?%l_-TN@g_EEW})ne*rQ?b?BdTBLF6=~+uEWdXPL^9b^mqfMw z{FbPsmOtshh0dM)?zEp?AF3b5{5w2M1azkQwCO+!1-4~-V2e(=t%gNyY!-fk#B9EZ zZY+7Fg#enH0$X>ouFYbU$-SuBv*IOZaGEZ1fCOsz0vr3Di?fnjXSoyj0%TjA&w1 z5naGryxcxnOLmGlU*o00_oLN6&qddrd<`JV&PZo%Fq&wdmmbNw>k3JJNmw4Xk>q!T zv1WerXgZMmrpPcn2iM|UrEFXt!rfKB3R765Tl{ejt4iN4*PYt(6yoy@K9P^h+%2s5 z!5foU1CfJ5E_M*h)Yh}x|M%*SN#T+IC*h@ffE9-lNPcX)Kwx&_} zVP(WF{3A=x4OzQfHB_fC69KuqU^J^Fm3DdukLt~oBlO|dqM~!XIJwp7%RMs`@{_C8 z*xME)Ye#Bk*TR`T$~)T8^Mwc zshwKX9l92*0da*1m75@)4DDP|{{$*2ZPb9}MQy~{LTfK{)+Xo0JCQ%*I;r8HoucNc zdUnc)I4Y%E3mPOu#Ts|KE}+Km;^etvtBz@NFcY0ZF%cPFYg{9H!a!>*@1)M$eCR89 zRhB&u7}b}`*v#;6BYxF%w$FA1(uFQRNd~MhYA`%1Aqh${m>JDbd;r#NAdfP-eyg`uPfV$oqm}YY9;VpsCkCrozsF8 zN9qr;Ku~@RdWx7R2uR`aP)cc!j}k;rS6iAF}W4C-YT} z&vR=2%UVY3F7u`6`ES4*m&|iP?_RQXB4h^VAxels23BXuts#tu@B+T-5RKp1mLh{i z;mZqA^70>q*e78sfW6KCzOiTvgqx#}JzwPJiY+jun^{b@lj7IzWD75zHXEsy)~{ z)}|yg0V1vKVZ6WHDwl|-=e%sM({u%PfAyctm~CT`|>0?k6L)$Rgd1(W^dc;8qE0Xl(EHaCQ>N*vL|HGH4FBE zr3@ZTWPb9?`c85sO~v@V@Zao{1lYQ*q~OW;H(v2KqfOX+d5n8Z4VUTAF8NfG&5@z- z1Q7bcwov!XxY4-8vc=VYzo9bU5unoH)V0afBh*Rgv}&L0QQdsXCiU6CNHy9E(-(2T zdwSa17)4mCIFRVRG+tUS7mr!XHpP>Gb>X-5m{1wCfTyeQR^~TZF9*#OP zYz14Fe5PwQHamLtJ2zShY>2+W7sxk|QI9%0mn&%*madl6OcP@=Yf`qq@!pNITvrNb z5*vLId8VQVg$tjn*n9EJ+{P+hr#zZj;<{~US;O~^?Wcg4BhIoB=cZN*g{tAyU2Q)Y zJ9C;xyYr(Sb&uI#k#+yHI^Ppx-I{LGMKRX0?u_aHMIsM-u5Wn}c6SEoVo%arrKGma z5(T}*jaHf4?_c}I%e``(a7HEHw4P52Alc5=X{%M*soS(2tCculYc?=0@n_W@wy0dT zG-rkym}|4I$W+73;3)`W{`%!UUUB5PkSYG!)$99I-8R#NUjC=t>yH1$*gXUZ7Pd`-*+qP|M`o9r(xS8cyf2;Fm#*?*p+gZv}UXm#Zi;uF$FZsMBmy)*cJEP~)k=92r z!n@k$;>0L^cR5Y>4+LYMs^?-`oD`fbiHl=nTTMkFS9lXp9Z7dqRLuNrIatF5-}F9Y zvWdx5o~Og;^*nYhB(g1SlcysZEBE+ZsmqtMVlguwYHh2c39F)wZIRV12Y7z(E|F3) zx|ub;JNkUK+Hq;s*FY29-ukR=xvkMZPuUIJ&6}kGoI9koc-c&at7@#n&|56rE)Q=!k8~IR9U^-O}iCiI&-0Vc1?HPjOp=O)z8{^ zFnhe==6X68XX{ZV$D_WPkmF8mF&uH+SWYNXTbUq~v^N69So&q~bMmr?1x{$E&kf>v z$-5qfOBvC0-0uOwbd*&xO&6?iTD#(G*O)riGdWhe)Mv}&YVC`485A`=?YCt#J)I*W z73enoqmZx#T-nb>Se34?h+7Yn1-!LBNC;v@pTxXQ8<)DxDCEMz6Q2gYiRV^kveoof zfEO7hGuuNX(@gSbGbtxZ`kiMqryAU1LRR3_{&<}cqIW|WUKdgWx=Hy}v6nRH-Rp}I zn7pMsOt0cXA;<2%QpyAmF`4>{aR(5=9ggTLOL!V<5nP9tSB-kBH^SKz+oxULuku_u z)()Dp+_XCk{M!2n!3WX63PZK6;9m8;SZ|f?F2$NNHw$Pc=rW_wN0{L8{RIb*d?KtCb)2nsBaA^jt~uaL1~;E%nuGV^I_cb=m1VAT&)cn9t^0p%phfM2-o7QTZq?uy?L^wgLs8}|72%lW z?s>e9j^b9l8c`jZ9i#HT(bF9G`Ab&JL|)4&(9G&qIgQoixKE0Wlb}oS z(^JLNGH6$hGD#2d7d!gk3$+BFX)nlNW@rpb-EIhH0(lia6PbFd~yoLXopF z7(pQ_LMz}PzpF9Wc)iYE1cmnmk*su(j;X$4%Br|DP40IngS>vrLizzmNNQKqR~lQ= z)qg%#z-*^_uge05&sb^mzg|hd%IS5T%wkU6r?4|jw{U%TtA8ul2V~?^cPBS6FSl~^ z*EWc*yL6w_Te|7#FXXxPO0XEbf}N=LgpXN^$zl`(FPA?S)U>G?RkU<1?)qSpEfx|# zNt8r!cKjJ;7T)-jvWdIZw{S}HGhkDMXEo^RZKmNUA#~i^kyBv2yznUK83T74&pHjy zP!AWKHOg$SjS!i-H94VTVxZVM&17o7IJ9}c5+^JA6D4h+90GDbFeLeROq}21mqY2v zNTs1DELVe%^~fBJ5cwKBW! z4EG?o>rI|)w%`$N=qb=|h%CzJ9Z9SD#irc{jV%v#A!XDUqfb4m(R&1D&ylnTf4lOtwiTjQc{m=e7?eyk5W(?|%Rqbx&E&IgCHrbG+ z`s0KGo~Q-#Us5=`30I$VAg#AjoBkd?VcZH9!GFKVRA&gM{V9zrtY$`I6xm@XSBsb` z;^AgeVWrgy!$0EgnhcRXWjwzg#v@K;+!|87E4*@bU1PTm(NeW$RNI1c;>VlL@RZaW zbJraq_ezW-!KKomQ3PIsjLi^FSl&H3t*^1_?&$|L%ofAF8z_Z|#u+dh^+uYW#`Mqi zAr30Looym(&NW88zsq3(ek(S+bWM4D#ma2>sb4C8Hxjgkkb0?f)DmQ(zuNhkx~TJ{ zG9&Q%Ot3y_H!66FVJ=GSxF@QAIj`Myqgv0Cl@#Rt8@F6;(x;{m)j0+N99y;XY-47w+oT={7bM*)JA)jn`w-FE>Et+lstXZcr@7tVu)HqPXab zTQeUoXe~5)N4a-abHkKd)tr@Mq{3z*L*Aznd|K%_@1~83detkWB z@c^tJ*f{nx=etokzRmzvmSpcRopo8uGN(RPLECj^=nU57tr=7z%RGIYi>WLj4TRN< zdy-hM)%r(A_=}Gr%~8rL zOgO89){Im)*qS$3qxIG-!c$3rnuf>7n5h!MN-Ny_fC?;_?P(WZMr-@W6{|%**#3vSkzak97G+~w#H3)Qf)QI)C_d@b^fI(`j#D0dQxe6 zTCJ0RVP*`>VZrYMu$)&Lx_&GuVW~%b6NnkK%gR0teu|ygzkf*uQ_Fz^CF(}>-VpS{ zGI3Sxi&gOa7u8X1co;RPa^%GR)kzK%yD#7A0rZGYq8EuKPVDre;|TZSdy1+zL@gG} z$ypGDlfKlx2#4nl#`L0gu|Jlh9@ZvdC|=5F*GgdY)ysUc<(O@n5LZQ{?&{)eSEW5Y zb9s9!^}FpnX-I*{t5hV)IH9sPcRR82Y)K)Zs}1#;;UGe%;E&BMt1t49F&Q!|&?rVP zpo03|0-6TRixFjqR1KyRuubEK)ipqs*1ha?p>>=(Hr4`rr-T(&De?MRJoN$kOV+j7 zYA^-$oo?L2;(a=B7xyrt?>FzL_F^BqKZ$MKs>SRlOI&$4_F?^%(&Kx0osa0C!)T{6 zgH)dE-R94BYO=+M;ZOl?zs7DvpLFOqIBUsq{rsJ;al$ilNsC;n7!liIfpCMoB_>~U zAPW#ObxaDJQ4JHBuh);g^P2SlJh?!8ph2d!5zfSeaWRW!3D$}1VpCM!s1q}RL^ve5 z5k@@3tDL*<7WzH$?nn32Ic+V2xMiM*%VrS26en++V?s1ry zS0LvUey9(po9AzFT+`B4`nx^W(38OVB|=4@vz3~iTjkQGRB$0xRVW=wuhwp=#%6c> ztYd7T#H4*#aXzq^2?oD$^22&=V^6543`aR}&>b=sQ_s8KOd}q)$bsXk)n)U6dQdqa zMt4>xV@&SNV(e?NTUh2k2U@a1tyA=V8{99gZ<{gR@f|n+Xn;4}7G;1Wl|R~y*7H`p zlmjoff`wO1Jtz7TMLRkH=IAJ%Tt*i*U%g>sg)Lg!d5gmv;{-A@S-~DL0U5ZR-7Hi7 zoq~dgZ`o<zO9}FohxCwXZ!DzNV2a9`(;kz!1k1@O9-Ss(`?GVIoV=R07GCyXg zzJ%INS)K=u?TU7bw?#jFO(vTpk1xkR@VHSA9zA;%*kq+yo#-V)SKG8&)6%y?IHbwX zjKl4C7Vo5oM?HMy{vD-e0$H|LKq=(uT7$P*o4% z>qWxT^V~uvaM@Gp*UnlqHZ2ptl`-Xj$nBTJby+&HwdSdA{mMjQ{yS)&EL>ot#NcI{ zX?eECr9pk>h6i@lYFi(j_c7UiHb43#*g^Kn&_Am3dm=P^g~IFII=(KMwd<@LedVe* z5s&J^f$JPxm0qiC{(hbRs!_L|RIOa)l-*~FH;w81vP6qg{Bm~?1mH0|HFXja3!u51SQsDCW@hUm3CC<$my~7&MX1iTZQQu{apxJmB9*D@rk;!$ zk}Pj{Ue|}%6r50EqK=WWtiKMoG;O&lrd%d{%;vL)#A-bRJjjZk4~c zI2rMYv9IIgWv%Sb#cbi-GS3oJZ;@VmS1Y(S0M$t*U-fAfUE}%D`Tdj zJneA_n)*d$AvPK-%+%(g3VnFov^?JFER-|Xl!jeHbWE-0?ImdfN)>G$IVJ>*k{df~ zNu^lZMBV1Q?)s4q%MS;U5DQ?AbJVwAag9i5<0IS@EU$CxE`IrPcv}M(l`%Q@68r)COH$ahY!Igb>0_vSx$uE;|3CJ>x{}dR^V2= zxajkS$qp8IXUgcj{>YAZn6t&ITkwSXI*e}%{koHJS$!EJ9QK%dfBzo?@TLluk28t( zuC9*ZppP@UIOzxq{D**vq_c$2N)ksddd)wCmB?N$!6lqYGk|gaKTWn^BtwFT?Bu+t z(!Yoi-B}!YK>pHLLu^GaDPJ614WjJPn%0TH#zjk(Fx=QoQ$59bT7v#ak4(V|q{Um+ zEfwQK1rCl$=%~Ir-g!(tiafGn_Gpu;Z$MofW=5<)q_Is4qYG8J`Qmu$^)&RSipI8NQ;STC_4Dc3(Jop6AXJjD5q zMN281ro<13Lu~E?W#P2Rds7C^a53u)qa9&kRBN@G2>2zW4m0W+QUYVY0fvrC9v@y| z$hkBQgg53TdzQOeDxBxc(!|p=@W>x>suIFhAed?upxEtw6%5Oo33BzXb&S1=$bI{u zHGV^iwq%+@c)yX^F_m#VdrHE}9^oJkTkt(c^7OkUyW+iQ+%%Y>R?i^($#}3?>rF9A zf*ME3lCWP*J8Ia?_NH}=m!G}yu9QEIuhr=gMG~zm�S_vydqcw}^%P)vRmydTL7p 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

~CS<0_#CXX$DWeuhG3z=)( zSn6LdQ0U3a7DEL|w3#-8c3wFBkjGN^?5)s@^6&+QBSIhBk?q5~MmLrY#e2(dDYdg% zZ}3g2r2d0rYB3mX-U*wN(bsmk;$^7~Ol6(pv4d-rfQxBxKt2)I*S{n~^3u!v-15&X zTYmZ3o$aZ;l`4v|omBLx54C#@Znmg}OA`m5YUPOXbaP-ng#e zPz9o?2m5#P?Qg+JHt=r6ira%OMe^Y1^4J1nxVS891}!XCFyS`lQ` z;LXD3PpL=d5uI{M0CBxn+vmAL2MVu)s@Ne*S&SniIYHw39-tWh9$I1PdV;tIHw`l6 zZMcz%R4S3}%=hSUah$lV%h#rKwaMA<+Xvd!&U=3N3d2IWGxL^1Y6MUR{dDgwxZJiB z>d-4P#s{yfW_@WmqQ%k&za}qSvbk6d@uP&m)Y?a%= zd3CA3A#V+Pc;0xjkpAB+`kSv`3#HaxUe_kFu!tzRz&kwCuEJ$h(w7Gx9@8BwYhd`w z!nFY^Vm9WVYm3Z-10I6=;LRz+X7}sQ7y8pPFr3^jVnu}@mE7dj9s5cyQ2ACpQ^-mn z(V?XBt%@t_F(MzJw0SA14pKl1`{S##4RDJv*m=n#lB}j!c|1BT3ns20W$e{17I0uq zA0hBqo7%ERjEYbRyhlp49$6*jT<#V#ReO#S2kZ&kV)kug)pV|c^4E^vq@Q8f!8O#dZT^~b3$<3wSTS`AR5IHhsM014K#8Y8+v z$jqJ1<{TP9C;3A@rfm&^bz!AVC8aO#pp_~*!I*3`x8pL$ z0lOm~bCWJei-jPl5zw&FkCB-7(pC}dI^*-}kUW9%Nm*V861V1lbAPq6x|P$rWfgVA zt4_OnhEBb3)$w{dKoop1sRe!4CtI4A@dQM{<-%_7#<``&EszZY~cw zExtQzTKN+69>Q$9u0U27rj_{8V2#SS{xmH^`vK(aCuM|^uTp1=h*d9Wp6-|}MmWZj zRbB1+Y-zU(ik77-7-%H{$~+3makPWG0O3Zv1o5SIY4JWO#ZXDamB4TvK)&BU#5Rq^ zWjw^fiksP+{xzu6ipvLjw~lDQz$<>LH_a;e;+S}Ut4RF_ix#4%GiD228=5je;SxBf zDm}1M{;1y&km6gKKIqi8lr%;EsWZj3e`}nrGK~gRf$4Uip2+K7%o)I}1e zj9$;8+=1ecT%)=?O56s&7Ig1QnM|mBS-1;K?g082S(8>5raDg<)SCH1pE;j!ghvwl zJcZ#W$DO3w#3sd7DUI^KL{#V@+d;Sqy&%}L(pLIGbE>?FRFZC>Xek>R;VVlFzECQ@rh{LR=e8;lz8=`L18C*Y&m6zPcG&msklP zAbh5~F|%J*&Z-akz#zLmn3Mt@9^LXP*D{RKMrms()wDmj`)jFv!lpR79ML1p>+Bjv z7(X_4LsZU_;d02KhOUY~^8eD6O zQR;H26M2_ZWr2zHWmBMux_@2auetu#H*dBMd}X+7U4 zLhMaUIFj6V{yxhCbOeCM1oassXU^m-l|EoJv-^Fgr+Esb-P`7mr zTn)yNxBSYs4O-`ctlY`3?{<^x{U?LP4RH5ib=;+uW!V*lYQ)jr zy{sKSfl^hpUuT{q6$~|5_U(h#X3Ov;ZvXF42C~n@<+CS6e4wzO-WSeNx<_~IW5V}S zQZ)A0V*3CfE!eoNJgiwylp?nJ6Pwa|&&C#^X&mDPIq!?28=k!G`Iq5CQ4vGlqb@4b z?)~17eoHl<_@w=Y+BNQc)c&;wyi8~oo@W$My%Bx(>AUd#6pqQR0?o|P)1tK9${g>H ztRnnjf8%ibscJU+P-fSd)6$+Ll6esQX|B;^HN0nrEw)^jL+W&#!x!7c$uWf6;I3ncPvYY^5#wZa@%>8EkC8)uf81eM|$V~=08ZCuc| z?anM{R%}Ww_sCk_tZJ zq(%zTDwQ3b=V0yhPs&UvSxaB+EQ~rS3_X1>i|DdILqCkr93fupfSltlGJgLy@l&R* zLVd{~BTFZg{FVRQ7C3Ylc92vkNb;)~LT&Utx!Zdh(?@>KKd5TsoXsW&0}+Bsal5^vNyTh>c~yvvxFJkr&`?2WCbY)+SChA+|})J zB{ETH%-Ogu<5svqHZrBB$%{&K(Oyq+yY=2j-U-<|u-!X^;BkCgwd4oImK6y)>Qn2) z5y=*>-X-sBGZdfN4MW$)A7Z6V=qp&}4QrfO#u=r#!j^>Rt<|^HPhT(eUkhHgM5(Ju zrNq=A6MrX@Tuf(xuw|L-v?(z5vy}#uaQqk~<@nl>)+K~56`pfAt%h{_?8)M~1GJsp z&`?J9DDM-8?{oCD5nXeo-e>E(E#B=uX=b0vM`nf^NkjgSRmJ>mv&}<8hHNZq4a|dz zlg+Rqw1#>eHH{}aV*opF&O1{cGG4tT(S}{K@jXlkxYA85VowYz_58BMEnz5eq@LHh z4eQ7Rz>J-$Udp5k&)k$k0v(oZ<)AU_!U2xh4}Iv?YXWH+YNAsnE(hMvQQK#x|K|Jv zb71o+RHDJlXh=T_Eru)_wqTS;?5v#JjK){&z`y*?(ZVZVf{z1pT6Ohj@A=Iix*4mW zcJgo>Q(L~fY6Lu~dwGJ>R9_@MqE4gMCa`F;7Eyw=t%AW3VlolEUXbUihPBdHK!Z?v7r zyS2N$ovA6EFvf9pZL62>;h8W5hu-hS0uonVWp=4VkQ|cQODeonSGoqo$<< zlmVt@x(clU4D@13<%~Pf=jC^RMHO`SKKyX;#Qm`-cqy$8b-A(OwwE=b&`bvsH*_^7l!}{z>|xW{+N*FcrgWBz`g8;!MxFwhZi zydA~?jP;WYE3|tP1WxfA{roKEKJROVnjC64D^S(DtJs8`tTvUOx9;h;JViE9uNMlp zn$WMM?KN;xX9@1WRcSR*C`*jxO}r{U*Guq*E9aK$c#)A7T?ciGr3-t(zysm_v!R_A*<&b6ieFWKjqiYmlctdlZEH$T4R)a!zp zGJ*!TFIU6enU6!Ei@oV?^q-UWf_2QF$a6YPSs%DZvq@?Mjkcdh!K<~coH(=t#}4LC zcTL8eX5gjSl_~aXzOiH<)csd2rk2g7@yCG^Do^)Z#g03<+nu~B8b4bf(9kByM}GU{ zpL9Y2#=H-Le{E*DjZ0?qJBQau^URkls*u0qZ8yHFi@?2XkQFOBfQlo_Jrn4>S=tkLwTGfRoG||r`w*=v_?AOoR*jC`q$+JhAz0*s`-;UFZuE`E#|+r$s^5U zn49OVs@Mnr4is^dDW3G?hEHs5zSgUM-)2m{pi)8doS`2EJTi0KGOX%5%BiXssk-c` z^dlsp)^Wl9DK1wg-ctw4k4_qY77J8XcR6aU-qYWIjNuV8DXb6!i_C zq`ikv-PpE3+O42%b6mTb>yNjXQCe+wwaTlTLV;2ffH*NfL%*iclb}>=1(uwNMLxjW zLB8yN_MT@sI0iNjHv&iVxOMua!Q*aWKO;4ILn!@Eyc2!B9nbPO)ce*8+?Xt|- zF_iZs(9UvOw&*<8fbrhJ2z$YR2X(b!)rEv;3?mg})7uV{5r@+$;))Ysw{aiU)$&$; zH#C$=x|5t+*2;XJ{w6f@r4<0?{m`!n@*|+$7l91RZz%ROIY;uB1rM89ta}J zTbS3*tIz2c_ei(#@4EGL`$^-9-^oVT)`!>tlpBV22o+cidf16YpSs1Lqq65`|HZS7@xL6O%z1~^?ejR{-tsYv>OLxxv zy`Vm#eFm0%;6ZL89Rm*%oG_qh1_u(L+i!SCKTL6+9aSulho>i$!1g^61`Tk|K zq+19KA_s^n@Bz3tR)&0NXTh%wnUF|y1~-v|pQ9Lt7Y}(1G{AoVKNO^Rz9R&8AFge9 zACQMQh(U1y>{&a}od4K{KSXOlZx1X0V&IqhP3?ugki^ri5e81Iqhn}6cY+0YA6|qI zfLFx^kq7-3EkIbyr)Wrl0|u2IzzLvmp+O79P~MDTKt&KBz@Rj+e@u9=aYBtpHUwP6 z2P@H88Vo9ZE!2h_ z;bEPh#Lg-FL>ZmlNIkpH00x5R?`9Vh_|zzTTu;|lg3#dPZ;_6m;GvcTA$-d;vJ zf?gR?;0)kf#tG~rsPu58g9G&$ZzKNn{F7#zi+~0KxJhu})roQt%&YiU3IlM5eCKI^ zhm8_-13=e7V88(O_2&NeXc{6iaKm67f3ttTeg{3tqAo8rhyKWX>B}f09)i9>3Fimg z*;0T6{1GAyC{Cu>`<2J^#dxS?>+@f=%D-mpyXN2CXz%HA%Ef&lnkS{U9- zZ~*E1Z5^lWS76ve`nvr3m9PAzd++7^N}KqdJo>ehSjG+gfPMTO`Gv)A742(l z>o`Qz5CAt0?<@S3?T&kEY~q68F7BM{RfOe%2@Rpn$5nt3z#yUnLiXLkA+5cY~-wXvVhrvGlc&)m2W_AnAD5a<{-d$Xr$}d z&ybRaoa#<0L$NM|be%3r;Tz8lJ}t$#A@-8Y8* zDqg6_Q*8f}%fGTeDzI{i`(aC%q23EfDi|n0dET z*5`An-0pNLpQ}YAL4c`?;>g_H?3Ku=m5oZxSYrd^5kF+lO`Qf@SAfzWdN7UB9uy(K z!R39hsnhG8gE|UYO(4#fDD&oxVDZ%7;Gw@kYc2i!n%j-GtOEVQyis;JSPxZ21qyTTQEX_M+f^<$pclIu2_Puo_i@GY={nkC%4 zXc_nXp;xVef8r^MRi$Rl1op4zX$A9r|F{=O$+>QKGXnqb-`8%iTFEaa(-fo_Tr$!=QMxucr{2z_I zV~{ODm@V4oY1_7K+qP}nwtd>RZQHg^+qQ4dyLaNv#Jm@AD|YQ&89S@K%KTBWYJFd> z#f2k&>vRd4SmsFmw(>R|qxjMk6b=1G_&v>S=NUSb5xJg#1Rr;y>W*6T1?@_Io{_Ks z8Cn}^QB>HgJl~a8Nt8qFDck6quwC@;G}7PGZTN+VO`Xvz!<)%rGTULo>JBnQmPPnz zR;sNSw`8$ddH3+8e#c6RkFVkd$In+G4YxRRyd+>R+_aXiqf>i6S@oGP z>u(Zq9gL6hhaFy>#bb=9Mz{7RL5!fw%&>p911#w>D`102u}SQpWa3=drVCqj4`GF_ ziSKQCOb9wGQ@gzU^7G43s9PCC{Z8irA) zTh73#`;aVFY~<(u>9A7wajYp;8J#Djt^!KPeD@(;w3HW6C-g4sWu~B18>g?Y<&5Rc zffGJn_41%^ghSv{GTFpskt7muq$}6yS)q+*1C{_{=YpI=9nn3CVehW4OmP3MYI=L~Gyu=MB zS!g+%uw0D~8p5NiuoaJ7`!s&h)SlUl?JcDlv!2v3O1=*JcBpsRcJReJhQQBJ&{#YY zQ+S*<;cFEe%U{v7EG1}+u9cgKwK$j{{t{{P$zsw1od(lP5mV|3atb4i`uM^~Qzkwzbx80VbYw>RnzcJ&(2S><60^WWOojdgQG)OQ%Re@9yey zyC|=z$Cls;nRJ($!x&UFDBgf<_i51$Um`hE2iy99iR!EUx9=D1+LHz1rPOWPkda*~20NI{ma)0dCH=f%NsLUIvTVvHSAs4>;M?Hlap=ZP%(-E3ynbxmjef!1TPY{g4!ns6PH@A^%gz|7U&+Sw+=3>n7e6Q z9D{51Kpd}6dJ)p(5UvMfm-#fpaS4-gJ4&APAAy3}hM3O8VKD+XqoZ=!+;ZUvNjx^4 zf_H*s!)!SO+DDyWVDR-LzuX~JR1^11&E3zC`6|)Nc)=x-L{66yod9vY8!aKJBe`1N z_AXr)t}7WGM6r>vsI)<=S;2*sX9&^#py<+c3`u(q;#M36TWpOu8GSZX-#+w&rh{y5 z$dhsEp)O^J)?=)|ETgT0lg0g7$moT%S~Mnij5BQHil>eG6P!?Q_(;s!-p`_uSQ%p2 z=;=9z_6qhh^M4QZ38%4#^AoHAX8;$dcU)S{Vc7x@4pZf;^Eq5`%YP&;rxAzNy6MTA zM=!96pLm?xP8Z21RZA8~H6nNx=Xg`!K$dNG`XoB7tT0f9E4G5%%-q(;zP|K?JIm?y z&dlU!pIfHm{I_!tM04K%VK(=;kO%HSoi=8zIyi$enB5a`Hs`?gTyaTVoJcbaLw{u6 zRz;{-d7a2{BKu-8Omh*~q8lLQ;$jU|RI3k3U(@=+wDs;XNluHBo02U`evm41z>NpC zHbs!rv_U}F0Ci7A$X-%K@3v~7~zP3|`5S%Vnokat{?PZLVE`jbzp`$(!pZHVjqGSl4;eA0hJ-S6erGa_0zqL4q z?vw=8uwNj;6DoMM+a4bT@;}Ar%A3 z_mM_n)&41&>#6%#!yRESJR1|Bn16Y^wkq%LLH9zEE(cb2C&9~RC2*1AoQj1q92b)h zpx#Q`*4tOI^cZM|u!zzEgHsPzdqAeZj)-{eY%&(9RiDzH+C2$L8>n7F)FLLe#8oK0 zwhk~dpJUJO*L!QrC?e9qRgzyUYDrdebX}4rFS)GEzFl2%R-cGCDsL)tF`CLaktg;9>~x zB4_XNrdDw_4#VsYkZMh_9<1Zl=R9q`jXdWa7ZKJo#q6QO#hP|_*JecR!Ap+S*jDH# zb~7UoA-+<3+1p-^chtrK+tO;=XUW71)=86AC$(1v?-{iNv5*o(I=hWM#TFS--9zI# zwkSTys$lOCRW3XBR_$q?1Rcuse>-&+myT5zMev?jMXyA}J2Z)sQly(~(MX;%B_nE${8UVe`>i?g7@s_!l>R(Pm*5{I zxndy>u7`P;b_u6+%w30wM^qzZR*wjN81L_kSAkYmCU723mdx?*!WTncUtQ$2d>$Vp zvX}zPcd`wzI5SI{gV6sZ0>l7ks?COAOU~?NjYFkF_z)b;)t8METV@KY1;$Qb=K@b) zqK?M+#G=`BERn3oVH}5E`)pr}^bC7o9*Xvz6;lv4NC^uR92X(&Z)2Z zi_N&Rj8M$ZlZOH;bgvpFgI9rCJ*y>2YwUI}a%5zG38a=4q{*pc3#0uM>?CoCmkK*$Q&-UEy^5@D0@QNW$1C%yIP2bABY8UWpM25{;(5HFez=8TJvC%*d!? z@QfMcxS6#ZHc*=1ef*=!mLt{{c$$^AnK7Sa37vp`)Xqia&vY`NGbco5^Wfs$^}QpS zwH(ay3O#!`#OXVrzSUsGk+7&!jb^Xxfo{K|pBFRTDIajvV+53y)HXQ})T(|@N+jC< zyTz3+EBC7_?fP+zZ8!ZcTMa4330;0Mf1Q{*le2w8*A>n?cafxuWU})Vo8on#Iwi-+ z)998dlNIg!H)*#$LHX{&qREA2#Qt^jSvnV#JTF>^Lf$!}<5NGzJ##f(v6RwzhOK9U z<&mjhCAMx~E}(L*6JqvU9rg`r=KUZVlBYN0o=d7fhGIG!!D**LNee5!TaDSPBhTR( zcvMiSG+rjT@WhDKD7zx$9My_+rs@&*Vx|_H7J~4}Y}!KDD!A@;)=lB12F@|l@7mE8 zCJD(j)r8EiWPUoYozS`rzs#>SW3&5gPj|V6fA-fd20Q{~-(jb-kqI{!k9E&N2GZ_& z>qo<%W`;YiD*kO|sZvm8owl0hVy3H5y1jtG3&d8M7W%ur#<`lvY22)#(c3snk61B_OgK^gY_Iyr@-bFFGdF*})_ee)q?XDMmh9dI5?1@=&u9tib zG|>D0-(m~Z=H*ohnc?>y&nc>L{cmsZACT<52nAE5z5CX{UAfCGbnppk)&i|+aEpSG zLi4n9NPeUpYHFJZW+k?mq>1=qMpL>u{0oU^@GlkY2?IK|kPb~(mM%g$K001m&o%VP z+E%VfA?#Xsg9-}UF3Z%rbIx1{G4j&%8#XrUV5PxLg5q&3^&ZlekV%ofn`VYg%;C$Y z3C{E|d{rDdsXa`}fpnsx3c0|QFb*s9KfijurUpl$t1HkkF`a`DzkcK5eneC>f|DLo zrHxUf197Y&JlJAkJ@L`8R?%-1j^4%bQvUwyqohQi=W%e3beNPyex76&iv(=&m^W)B zDs)}izmGIK6#^G$z02C1!CW2_?o$)DHof|>ycFU=7un9;+fTy-U9AY*R3{q^cFot1 zYbS0M)~=uzg3;P<(Ale@-8x6mSnWKJ?ff;Si>?LuCVJvAXJ(Q1j;BR=Y` zMU!P=Mt9N6Z*MHVKb~eyj?A6Lav35H^s*oOFw3YqeUkh0)7YZD?dQfir!Jw}0Oz#) z$te_P+X0^TAW8p*B(4oV89~E20h|ps2{wT!jhzC=K6N?MnxYZ^^OUFaks;In>RS*Yz{aQ7 zyWOQd`BvIYcE`p}VeYBxP@3`aXdGw(mJ=~vgz0x)<*X%GT6}0^@*2h?K8J;;`s)j~ z_!nGEvXtY5hI8f_tX0Fp%I2&2?eJbm{L9EKs9Ufa@`5VRM#|uBJ2xV1pBXO} zF0(c5j0I6#<6aaIUJ~WBtTl9K4O!cB&^ZevC&_#QZJq(`dXri0Vq55bYtnwU8(#Dq)iNR-+5_ZVTX|{-grwrLkfv}(P z{#gHnvexqg+A*&a9jGbpyZjj%mI5@q8bNHLi;S$v>oJMdMjcjOc07UTEL|e(~$6(>6aDA9xOIj%zE2<&Qd~rI9ePP5SRE}+aXU|jz99JYF|;S z;Vn7Z&BSEe)0nYa`@Y?X55BF?rH<150&A?kKycThc;4*{Q0ugq)TCHQ4hu{ybr4g& zyb@gyrzoNPwn7V_eRbdaKy12ON_7ZM@|9lg<@FY0%h0V7nfF}7qQiOVDVrjnwefWH>D$96;$A}dAp!0Fr3EeFGhI$#-?hNwBsEVajeGl3L?Aj_> z$WCYl;YJY!zZ#ST<7Q8Ba&w=es7n^`eF;eNcFdetbrS?BV~SX{1T3=!`0AvL8v2s@ zAMR%s#gB#hg##?1Sh;d;lwL(`3qPB*Se(zxm+l3&sJuycj0`LPbX1!y+pVd@RXR-< z0b!p%lR1b8*ErO=ErKa-%r1Dz;zzpSd?fmY+-Vqd#2d(}RG5~X7eez*dVF(QU2euW z!2xEwIuQNAbLn`>s;a&MdM_h2e(Fx>{L)h=&B&Xvx6aVW^HHW~Xz0x1GA0ff4a3wo zzE_GZN{l!&c@@ewyYeq*e&c_8nZ)LETg7oP+>P;6Mk;G9_|>>kChlGl+)Ce&_Xd$L zS?RSpXVE~hT7dCG79ObjQ*2o)KAfT09Ir&xCaKe^j_&sss-Gf6!wQjyLxn#tPCke? zFY37-x$oS6d@yJ!T^5w^EA0KJIyajY0bHjkT3h&RmbVX5uq8iw%mBlBYP41wHl(vUPYI6RlCq&!xfUULZI&=m zVnN>;v@oYLP}11TOL{TCr>tkR8AwbJDh$m?$2`@pqHqs{nt<0F&JgBW_A)H<^(0R z-Z$ZNM|)Gg>JB`&)gQ7Nluc@OCsrwpw7!jNtH}zjF-^ue;6$P{!_q@QCE(!}7|gaA z4z0H#S0Z=lCO#A9XU43`Yx>^AEfr)E@5%bT11?n-k1hRh32Je{PFd?8v1+%1l+z|J zdOSmVWAFPAY2T~|ksz(pShFD+;#nHH=)ObM3$BjxY{rX>hb)<%y2M9P@_aW9VNo3w z%Udy@I(D_vcafn-!x;4vqr0+TE#FWKy0-xGPdXZ(sxq_@&(YE&k2d48*sFpO4MS2@ zTBwC3L~6ZIFmN;lIVf9T>8tyIU?xV(4wLIwLnk?Mcom3TNcSP5?VBOW8X@clFp^Q? z@P8!G80r776KJfgjQ^Q3W5j1-XJh}*)_+Z)F?0Mb1Lx(1a&mSwF|dJh&x%R*U{AJt z{0WIfAfdG4F{YV{_Nlz=97D`!G{xn{U@}4tA~#kOZV_yW_o1?iY#^EF326{*sS4Tm zD(5|Vc>Aik_~_2@%UR{Pak_T8{@7~8&#f3ub|?Z7M384=W)hMFf(T9q z0V04zLS_ycQ@_RIlD;JrCl+we+NTZSL=a9O;Fbjz0Yd>4;)b0o)CVj=_D@z3o}eIv z_a_F*zm0>JQwCv{uYm`nPX>6rWse6zQXWOxiii&)(m;59fDX?S0W1m(%vzhZ=U>Jk z7BokOr58@X5imo>5G<_or@(~?Fn;kXhF5SUPJ)cIXHSt#;pa#qz7-B@EHDH>A>;xg z#fK#B2t?N}HTlOqf$_PW0U`}g?-VTFi(TUG#fTyT0vHaWPrw{b6oBp@IOs3ze+dCp z(gEg=066r8i1mpW4%o{E&M%4oQ}lt;odhxP^+z;+-rWoc>I8NV8^8+!8c0+V4AGda z0o{MVz%`hh8WIi(M81X`BC269uvbzHP_qIJ0Qq+?+jx*N!4SrYAdmysj}W^Oz(~kT zLk3HCGc)+H(t%e?rGN+m%ouXcVL!auWY{^8o!@ZlLhR9BvRLR)fVQzg+T?jPBX%&M zg8pC49R9}qU;+GNQWAi9&;T9zID1^sf7_Aza%B%=F+v92b;$lf`tv|Z0d?bh!Ak)d ztV)op!Q&%Q${iXLlSL{!(zG+phmBYK+q+gb$r90cd4t7NNwB$rEW8z{!4N#1}i(QRq zg}EC_ct0W+hi7;GJ+*ptsJ+}k9X~n$v6~A5s86m{4{i*>ApfylhE{el>@-k#F+%vC zyL1jgb24mkLO{k|ZG6~=Toe`ub8gdVEap2Wq^M(eh3i&|2kJh2m#rB(IkQF2k??pLH~ioL+rV! zgeHUi8`2>M?vwBX{tW;bMR-+#LIK@3-YF03ujHB!1W@`t@=u21{E~iMp}AN3f*%)aWScAk?&K% zqLY+=fd@A$&bveF)W98S-*Mmn;9Iso|4lagys;S*;n9M_+sGiqm?tiK-s^5)LKQN| zj;%w^W>HX6<{XKO_k?Vu$=fpx7E9z-22l; zuGS+nyet`QAxvh(Vx|bohY&(CN?SW!j%EwX*~{3XaMp<^Brmb7R7a6>#oIm|Dj`iZ zO?HJjj@S-1%DFA(y15fMtWJ*|!S;=X#f2W!)}_Lpb?`ny=A@&S(JCA(Y(*UpFc-DKOBz{+xMAqGrx5cdT%X&{j1<m8Wup!6hEDoM_-%2=1U23A%c-LvgaB65`vx$agwVYHyZ5Tjj? zeQpX_jU=BaZi-jF?8m<{Uegl#jHPD}h1bCs&fO4CmRxfOTTodmgUhwVp?$?&H1hU# z=Ajzf)8hJ^FhKf>MQfEM3x_L*Z^a{`w+jK$`r9Wk!7uZMxao)y$mRFbOz3*;1iKtE z)pckedFFTzWo14NwQAH-m6GrChe_mqbtJ?OxZR8irqUh*MACmkxA{Rm6W#-Kh*%A1 z@1!TmQOvu@MF`%WGKmGwxt;H!aw?Uk$J>;swmL3$E#V6Xbfhq7e+ncyl9Y}0V6%xW zq=oT7-d|Bc!}gbrQn8=Z3}==@ujkndja2q-j2K%SUWGs5eb!IlGxi@htc5sLN!)k; zWR7E&ybiNtqv{~Of}*vUt=-8~1AGl4cdXogGw;palH$gBHA>W0RDm0Fl%CO;14Ahn z)I950Jx721df4>vR#jalMDrv@vF(L>IKY;&t!S(EJ2}NkoP2z=?6dR-E~mUpNzAVT z50whvLY?0Wg2GK98HBW~HnD>uc&m*eu7*#;#yN@QnYCk zKbKFY;O{r?)&EZ)Wtq4P69Z$ zU4^-pIT>P`ro`nCc=3>yj^|gjq+{WDK25ZQR$Q+zSMeXHuAGLl_GF=XLEbKS8vHNo|06g>p}0XH0j^E+;BLuvR`w(Oq{<}t?bl;>mnq1hNKzF z%T0m0&nj5&vf<2^Kx%p0p|28slRZWi@I)Ur#6bbTGJUrfsrydf`K={#Uy0B$#VUrfrIh) zP3;nIBATC(d#1M6=qULu&HoP z;Dv29JfoBYKayhO7OWO&ARhF+l`Tz=5c6KkihId|sl3)iel4O?C17`broUgFyodRa zXj|UEG5CwrTQ7@VsU7hZwf+Zs$NEXqtmf5bK41}Nm0qW*jLT?!oWz#7rGSIPyJ9Iz zn&KihM)g2{uaeenfSs>#tsU=O!TU#R?X^B^O~J0hRn8@XMweV34b}cFCdkYE1B{Dh z(t_|2n9JzVlwGYH0JNqF+xltHd%^!0YjwO%idq5n^=yL(aR1TF5h{ziG!|(!zEw6{ zM-*xOIq-_c#g*XbTDQG6r3eT!bd+^WoM2WF`g#UCgqAGX<-*`HJYt%Y$3&Nl^`o%o z!Iy3_;~jd^PB0n@M>K_X7V=L-2=TG~)_m@pE0Ma=`;ojA<2DR%VP<2(dAC?MWmg7h zvgjYC${@Y9_8J(s@GP=o>N+OwCJDZp9QME00UY;)kxP<`_1(JEf>U?dNN-p{j zMP8J(o~%EYE-(u*Y{u)6Qa7}StnO}>m)&z+vkQc^uv@MAmlT9}Al&Xn&Ci*zfk;rK zUh38$n0&N0eQWoIHpoS#C7m3%-4x!@XH5|lgadl2)H)AS465~}4achr%4nV509c$C zGaSt?l_VA8Tbkt#OH${TPiL!#?tNX+qJ}4=*2R#~7%Pg=UGmPmzMzooSO&~&ax{mu9ek#KU( zNym=T%Uv8>&bH?q4=|d#zOTR5m=dseCd{Mc51J?{-j&Xj0Gr0aKbU6XvT5z6vU-#}`J~y6bEjZ*) zBN~*lbvB`%Q+*~|2)(?11iBpkXZZV+csa6a93bD=0Lb1 z`TeY+377vR;JY^Dc|rJwwvKd37dQ|Aw6d`(t^6fVbyyM`(67AsAVVbha??`asdbkX zGkuM>8b8+p3Cf2lT;wK_NrXsoZszGyHe3wjMPP)r zX!r{PTT`fhQfcfaCX#5iJ7UKPr{@&qCs72@EscrE=aqd+9iz+ zrpWHFnm*2+LqpUcuN3|jDi1APHfI^mGA5xObmR2C1>4Zfw8lkPL=dU&vJOa`XStQx zgFj@IKNq~{?7@X9Yi$72d32H*g*Od&v>ZVSF=RDtd#I{gGZxbJ?-f0-iQ<4)?>g$A z92u#c46L3;w#Teg-=zObmxZZh!Sgk{7ccS*7sj~%uE{~?PK8U$ed8^`LOjpY2zyPInK9TrXhgat_|5n1V71~ zzj*0w>9Kl(sfN=$=RicLqmmcdqOYQ@==@W)UTFmUHaw{993>6>S z=;vWR;nI6``E+#kskVMi}*|*XUGu z-ppmYpecbtI&nr~Z=@yXa>s}1g8tAc#CDUfQl3VNSM~7hAn?)O(s>O9L-K_~y(%fo zn?eU=9=?Y@G79g|th@V!_b%u()ALx~g{wk?YO5)io`r=et)xXfZ^FVz=J6D&QdoHj z+O@8Qc|;=W{-nN2Z@^I56YXh_7^It!b@42?cDYVvMs0`DTO@hreHHLo*+f}%$K&x4 z0W)|WV~9kCNgdK7>tNk;oOy?)W1ve%BVBUNbVxRT6JvH`|9bbju^ph0`da?Nw&4j3 zbIo`%5t3w{Ts^QwGasGH;?fECtOkl?%HNsanBnu61VxxJRhh=WMk4eLE=~nQlC-CmQ z%jap2)$sVslI+~pb*Ej2?d7U$ITF6-g4<)iv*ZvB26r|NkNUiKsJIE&i)68H>pS~I zGw2E?hq_#Dv){~&duAsI1`7A3_=}uS;slUHZVy-S>R(>surMtX} zP<(G$i+GI=sp5hYX(WLk|H;Cp+F8I7QktB$mKAhqDh>5j|IMsvVhtt|I{eO!4s=-W;RT((5ljSZZmzPz>i%0+xh9`BPT?esJDHxU~<49;qEdOFh zV~iQ4uWJD$*`}A#qeZk;E3$#KxZl7)HFu$(a`t(LY<0ybtZG@B|7D^B)mi(?mR- zX|h{*9iZ6E+Stc!6;zhUUqbjl^DM++Q``{4{Or^nW$BD3?L53@6U;Wp-!T5FD~=14EbYmgII14KiSA*$ zIY54LlS_u+In0{;XSBA$rfK@>zpaYd-PcCVY za^Z9K{lF6*Ub4RB1G&zGBRLv3Hmg1Pk+@ta>@+gHKiR$NAn}r!bDiDfDbd?(`XJff z@XtTOY95%xt;XUCF1db6WAK4gemv5MhgYDjUii@u0Ap}?{C_fb4FA`R9TPq4e{yt; z_zXGn^P2(;p^)n9LLrvGz@l_D4kkfEX+y1dA}SJ`YnceEu!PsP$*$ zkVRzGqsKOZFSbv#7o>nmAolMR{PWkkuc^s^wm|^CPZ0hhPFT?tIBU)x8(7!*pDd!h zER!p7F(n2rVS#mDDG@!wU!aoaC&I=($G+ckKU#jse<6y5PMPl6}&{0U7cM@|ny5sMP#{i1`}10Y$9^r0vQ zEJ%TY3#dxu3}OHz z{NTe`ogjcr1X+L1!XmzmYWvc#KL7Qn!X`tv@Zuf4IuI zL(aP~iq>o!91jvDx-pEr5JwXh=hx`DENvMD`{VE8N62oFSOnY;>X@lrwc!bl4z&E28D6}M2kT9 z?d;Q*6(+_%g;fetfROp;gdo62=|UPpT)L5zI+ldrgi%>U2mq;$9XrnyD63C@s161& zNH!iBEQG%zk1!xUd7fF$a2V)M52?t9q-tLLIKBW(FE(*q+}$muAUYsu(|cG^AFHX4 zuk?6Wqc(7{hZM=A;Ekx7U|j4E^a;kE&150Y)qBUf7!sZn-D)%G^B2P%3zbtDx$}`S zvGY}9j70>i(gn2S2xL&^G^?td_STQ)b-8}Cr*=mZWw?w!fzmGOgB^ue>QaU*6ZD0( zNBsB1@O9e$)=Q~~UGoW=>zvD|Dk+JjTx)~j?>iI4QAye{=b?ku#l+U}cxS3|k3`O} z*K(Tc7j4wT=SY&0snKl-bI`LZPq~+EMB|uE28M%Bx8G!(%`;={ye!g92&) zJyh;6tzT$%=i|L)_r8Fijk3Cv{a1be+5D&%@Ya(o9gB8{dj$_y6{~a4u+dd16UWlz~kd(aTYavc18Al?+PP+xOqthOF`vY4E) z`Ma6Ihs!Lg$Mx%{3#5z+J3sgt$#tVITeKS!qaf{9YkEn&NyJ_Fleg3dW+$Cy)N1af zW?!iQ%AT%H=E}2y>36HvB$$We2g+;QsC;R+R@%+O_rrC)ZvjnYj)VKKzA2&oUx`AG zI=$pHmsy9&iC7|o*1wst+_;g)GAE^`Y|nWfn|{5;xe2Ok;}~NeDpgK7Jr>KCJ8h{u zF=ReB?6&Rm?w8pFrR`$^GEFa3HmAT;HZOO;l%skWYmT{GRwy0?&I8=CS8klHuH|od z+O4HwX2O@nNTu5}MIQ zkhF_Qo>w_wO+P|#n`a%RTrVCMQ_v>feHka2T)*o-qO8xxH5qE(*yOsbClc_D8Z#-A zE5K(foksO?I{9{7q|IV@COxv|y}pa?emE6ZIFekI)Sn97?kNSfWPSProf`M0I8%(M zfgM*pGVMH@?qVjU_9TtW@1uU1rngbDV)bBNSbrS+e@`Rh2))|(wJ{rDpe7guYqqOVvIr|0V{m|E+T*14N-aH7WNkr@~% zKJN|6Sd@!ZR)*q_`wURI?x>w|g{oqMazCJhAk-9y2Gl(5>LtWdE7*q-w;uI1FM?b0t|&V|aoPh*NT}s(aMP^fR)JyGs#H>RU#iLT&Xmq+W( z3qGp;!6mHSp9~bYGQ>mlJi}3!V=gdo5L=_p$>UJ&?hS)+Go4O7XXZloUg}wl@&;Xk zdh-}1OzddZYZbDLUb#7qmAB1))a)<^scW;v@h0nA0kt&cLyfvHgv|X+M6YQ)Ym6M13BOdT5+3)U0?H?73Hm7dZ2EutMk<> zc9u+3s=*Gn8|N>jt0j6>TisrR^Ay80+9CU?jys1pf7)4)5Ldwb8GTL- zh5TrEjD6adOxxF%l%7@>CDuLSEo-)8@ezmTH#Ic5?wnGO9}&mxCG~44pwd7rNtNDS zZY+dNrg0?fOk!2gp2)*dnn-k)Zd}40k>i~-#7`@2NURtCx+s^9i!3a+MTka%av{}?B0_>6Rz3f ztfFXOak0GW0f}U8a!wgJboA=#(o2k2?9v?F>*4c!ogCc@>fy4fv)E&!SuRi_ zbIInz;pt`X3$|D~Dzh0L6zlMyeUQKViZ>coyQ9EdXOf6}r0e0MQfSctU7Ye@jd1G)3u zD%_80to?+=_wjW9;zs1y<}?yo85X3Lcm$F9QaObx8B zugk#ORj&ArYuQoIp9>t7tJbJSy;wSf*Zl&GX_?ld4qFyH(RN$q=6UNFuenbX@6MqM z(v<9%OtRU?PDhCjKf>y%o)5ndzV)84A3^1h1d`f=9<%X~t`4dghL1I1!^W04os?$u z(Qm2i$=)l&StXAgyON7o^x9{YWzAtZ7tIswm9&k=%a%P6FJO`z;1c}wKY2_|v!H?} zB$snGL0t+T9rKdqz{wReMH0k!22LSlRZ|w*^K;?(KBeH&mi1}QfT1$Blpsx@#ST}* z(^*n61i4&+$IK~UNpU}%h+OimR>3;ttqB7e}O)Tnw3A4+)G$3=#`HfEUluXSL|Q? z$+BFqYhs0D6#v z!2_5q%;~ETiy?Ce8nz53^A>1?mn8QHf&>YzR(R@U9;&^_9eca)4<37((^>_7C|=J` zlDaWDo77BR(6#^Ez3F4Qlq=3tXh)sfqc37Ja|*n@VuiTPQt)n;$nU7>RHYT?m=7Cw|dh@|5 z5Q5gU9a1)QWc)G!7OTcXnDyyejC1xga4<8?cyrBLl*(aq9xIx}Xu z43WZz83vYu=t7dFpA$>%@)XVA=R9&D@^WY9S0(7|J$jvq&EipJ?yLhW7(+=&^B zS9cZZ5jMIKx4Ghn(F$+(v{>J`&Yz8b0d1A2kR-NJe*tsY;c|B>CXFO*(HZm$GYX@yqUo&yEj`vxK~o2;v1tzy^Y(O-Kd`40|NNYrAX{#0)nqOkV!B;UZ-#9@ljfSeCwe>1c9HHxwG+b3 z_$h4n_P`?z?pEpHtW-oCYz0>bE09K}?c80Gy*~E>9RjOvqMdjlVxCdZZ9E55TKk## z)GzxGA8ulf0=t?2%;#(&W6*VmOJgZKRIb7b3;5az(+!DZN2Kke6x=CiMLhi4ZrllW z32EyVK5tEtHlDExO7$m&-yd}R&7<_m>#hISD@U%>_$0WMue$A*y_=>a|AfaNAkT-) z20az%cVIzbY8dKDdpun5`-%-$NlfE@?9q-sYdh@Spc@&tf8g0dxd=n)GkK3>suSBA zo}#`@H=$U?J3FN5jhL&nAKp7LZ2i|wKCR+%+zV)?Wqa}Sbw`VEYjOF`;)EHB*c}ty z5{sVmrf06`!dUK0$cQfWmZy#xh$iHZhwnwZ!P-&@=ElYz3@k@;)HA|qV%JJfJ< zFCi~%Yn#k)POr9OwqqUt9HhrJ*(JccBO`rlD)Qx-4;z830*D#5=2)uDBK4iZit6DL zPG1qe>?`kf^Y=f7r&6N8-RIWVns^-_m1$qDw5=rQ{RLj}I&Q|yrE8&w1b28F1GSD+H z{(dpjGcjsX;M4s-J?tFu$(2pif15IP#{d6)<&}TE&_rFVtql!qZGSNsxw5&16aMeV z-q`f_bZUH66Gx}tX!uOD49pBH9E_|iG>o*YGz_%N^t22t_}c#w1Yg?1)dZiBo`G4L z0^iEsz}ei%!~oy*|D4H6%ScQAdmr+ScE&D7{}JPVU;96=@%xvuqk+A>iSaMoGq83t z`46b~I|X)zmQeo_K&mU6nEt=;@mCh&{}Vj^ZxAVO;ArE7&&~ZiC3e;>HnvXqznq%9 zqlvMFk@N5TF#LzP2|k?~z7{?MKGW~6gHNYq;c4=FOeZ0Xuf@%5U~Fv4z+_-z%)rKO zz{qZDY-q@A!fwLIV#I39Y+%UCZA5R(z+h_3YRF)~#=^m3YGA@(#K3IKVZzK}$YIRD z#H;h)aI29a03fO8$lwRYuO|b#A0q$&92-!`e+>5jRN(!eVdMYz?YBP9z|q;=@z`s) automatically get a table of contents. To disable this set `toc` to `false`. For example: + +``` +--- +title: "My page with a few headings" +toc: false +--- +``` + +## Localization + +The strings in the templates of this theme can be localized. Make a copy of `/i18n/en.yaml` to `/i18n/.yaml`, and translate one by one, changing the `translation` field. + +[Here is a tutorial that goes more in depth about this.](https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-2-i18n-string-localization/) + +## Custom CSS and JS + +You can provide an optional list of custom CSS files, which must be placed inside the `static` dir. These will load after the theme CSS loads. So, `static/css/custom_01.css` translates to `css/custom_01.css`. + +You can provide an optional list of custom JS files, which must be placed inside the `static` dir. These will load after the theme JS loads. So, `static/js/custom_01.js` translates to `js/custom_01.js`. + +See the [example site config file](https://github.com/zwbetz-gh/cupper-hugo-theme/blob/master/exampleSite/config.yaml) for sample usage. + +## Getting help + +If you run into an issue that isn't answered by this documentation or the [`exampleSite`](https://github.com/zwbetz-gh/cupper-hugo-theme/tree/master/exampleSite), then visit the [Hugo forum](https://discourse.gohugo.io/). The folks there are helpful and friendly. **Before** asking your question, be sure to read the [requesting help guidelines](https://discourse.gohugo.io/t/requesting-help/9132). + +## Credits + +Thank you to [Heydon Pickering](http://www.heydonworks.com) and [The Paciello Group](https://www.paciellogroup.com/) for creating the original Cupper project. diff --git a/themes/cupper-hugo-theme/archetypes/default.md b/themes/cupper-hugo-theme/archetypes/default.md new file mode 100644 index 0000000..d677d28 --- /dev/null +++ b/themes/cupper-hugo-theme/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +tags: [] +--- + diff --git a/themes/cupper-hugo-theme/assets/css/search.css b/themes/cupper-hugo-theme/assets/css/search.css new file mode 100644 index 0000000..77a424b --- /dev/null +++ b/themes/cupper-hugo-theme/assets/css/search.css @@ -0,0 +1,8 @@ +#search { + height: 50px; + width: 100%; + padding: 8px; + border: 2px solid; + line-height: 1.6; + font-size: 1.25rem; +} diff --git a/themes/cupper-hugo-theme/assets/css/template-styles.css b/themes/cupper-hugo-theme/assets/css/template-styles.css new file mode 100644 index 0000000..9ce3042 --- /dev/null +++ b/themes/cupper-hugo-theme/assets/css/template-styles.css @@ -0,0 +1,1036 @@ +/* Fonts */ +@font-face { + font-family: 'Miriam Libre'; + src: url('{{ "css/fonts/miriamlibre-bold.woff2" | absURL }}') format('woff2'), url('{{ "css/fonts/miriamlibre-bold.woff" | absURL }}') format('woff'); + font-weight: bold; + font-style: normal; +} +*, +*::before, +*::after { + font-family: inherit; + background-color: inherit; + color: inherit; + margin: 0; + padding: 0; + box-sizing: border-box; +} +html { + font-size: calc(1em + 0.33vw); + font-family: Arial, Helvetica Neue, sans-serif; + line-height: 1.5; + color: #111; + background-color: #fefefe; +} +template { + display: none !important; +} +* + * { + margin-top: 2.25rem; +} +br, +dt, +dd, +th, +td, +option, +[hidden] + *, +li + li, +body, +.main-and-footer { + margin-top: 0; +} +p + p { + margin-top: 0.75rem; +} +.priority { + margin-top: 0; +} +a { + text-decoration: none; + border-bottom: 1px solid; +} +abbr { + text-decoration: none; + cursor: help; + border-bottom: 1px dashed; +} +img { + max-width: 100%; + max-height: 50vh; +} +.img-link { + border-bottom: none; +} +p img { + margin: 0.75rem 0; +} +figure p img { + margin: 0; +} +:focus:not([tabindex="-1"]), +[data-expands]:focus svg, +.patterns a:focus .text, +[for="themer"] :focus + [aria-hidden] { + outline: 4px solid #999; +} +a { + outline-offset: 2px; +} + +/* Katex math typesetting */ +.katex * { + margin-top: 0; + background-color: transparent; +} + +/* Fix for IE :( */ +[tabindex="-1"]:focus, +div:not([tabindex]):focus { + outline: none; +} +[hidden] { + display: none; +} + +/* Skip link */ +[href="#main"] { + display: block; + width: 100%; + padding: 0.75rem; + color: #fefefe; + background: #000; + position: absolute; + top: -3rem; + text-align: center; + z-index: 1; +} +[href="#main"]:focus { + top: 0; + outline: none; +} + +/* Text styles */ +h1, +h2, +h3, +h4 { + font-family: Miriam Libre, serif; + line-height: 1.125; +} +h1 { + font-size: 2rem; +} +h2 { + font-size: 1.66rem; +} +h3 { + font-size: 1.25rem; +} +h4, +h5 { + font-size: 1rem; + font-family: PT Sans, sans-serif; +} +h5 { + font-size: 0.85rem; + text-transform: uppercase; +} +kbd { + line-height: 1; + font-size: 0.66rem; + padding: 0.1rem 0.33rem; + border-radius: 0.25rem; + border: 2px solid; + box-shadow: 0.125rem 0.125rem 0 #111; + vertical-align: 0.33em; +} +pre, +.file-tree { + overflow-x: auto; + padding: 1.5rem; + border: 1px solid; +} +code { + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 0.85em; +} +.cmd { + padding: 0.75rem; + background: #111; +} +.cmd code { + color: #fefefe; + white-space: pre-wrap; +} +.cmd code::before { + content: '$'; + font-weight: bold; + padding-right: 0.25em; +} + +/* Lists */ +main ul, +main ol { + margin-left: 2.25rem; +} +main li + li { + margin-top: 0.5rem; +} +main ul ul, main ol ol, main li ul, main li ol { + margin-top: 0.5rem; +} +ol ol { + list-style: lower-latin; +} +ol ol ol { + list-style: lower-roman; +} +main dt { + font-weight: bold; +} +main dd { + padding-left: 2rem; +} +dd ul { + margin-left: 0; +} +dd li + li { + margin: 0; +} + +/* Blockquotes */ +blockquote { + border-left: 0.5rem solid; + padding-left: 0.75rem; +} +blockquote .author { + font-size: 0.85rem; +} + +/* Buttons */ +button { + font-size: 1.25rem; + border-radius: 0.33em; + font-family: inherit; + background: #111; + color: #fefefe; + padding: 0.75rem; + border: 0; +} +[data-launch] { + font-size: 0.66rem !important; + padding: 0.5rem !important; + margin-top: 0 !important; + border-radius: 0 !important; + border-top-left-radius: 0.33rem !important; + box-shadow: none !important; + background: #111 !important; + color: #fefefe !important; + position: absolute !important; + right: 0 !important; + bottom: 0 !important; +} + +/* Forms */ +label { + display: inline-block; + font-weight: bold; +} +[for="themer"] { + background: #111; + border-radius: 0.33em; + color: #fefefe; + padding: 0.25em 0.75em; + margin: 0.5rem; +} +[for="themer"] [aria-hidden]::before { + content: 'off'; +} +[for="themer"] :checked + [aria-hidden]::before { + content: 'on'; +} + +/* Tables */ +table { + text-align: left; + table-layout: fixed; + width: 100%; + border-collapse: collapse; +} +th, +td { + border: 2px solid; + padding: 0.5rem; + line-height: 1.25; + margin: 0; +} +th { + font-weight: bold; +} +th:empty { + border: 0; +} + +/* Tested using... table */ +.tested { + text-align: center; + border: 1px solid #111; +} +.tested tr { + display: flex; + flex-flow: row wrap; +} +.tested td, .tested th { + vertical-align: middle; + overflow: hidden; + flex: 1 0 auto; + border: 1px solid #111; +} +.tested th { + width: 100%; + background-color: #111; + color: #fefefe; + outline-color: #111; +} +.tested img { + max-width: 3rem; +} +.tested span { + display: block; + margin: 0; +} +.tested .additional { + font-size: 0.85rem; +} +caption { + font-size: 1.125rem; + padding-bottom: 0.25rem; + font-style: italic; +} + +/* Page structure */ +.wrapper { + position: relative; + margin-top: 0; + overflow-x: hidden; +} +.intro-and-nav { + font-size: 0.8rem; + width: 15rem; + height: 100vh; + position: fixed; + top: 0; + left: 0; + border-right: 2px solid; +} +.intro-and-nav > div { + padding: 2.25rem; + display: flex; + flex-direction: column; + height: 100%; +} +.intro { + flex: 0 0 auto; +} +.patterns { + flex: 1 1 auto; +} +.logo { + border: 0; +} +.logo img { + width: 100%; + max-width: 12rem; +} +.library-desc { + margin-top: 0.5rem; + margin-left: auto; + margin-right: auto; + max-width: 25rem; +} +.main-and-footer { + margin-left: 15rem; +} +.main-and-footer > div { + max-width: 40rem; + margin: 0 auto; + padding: 2.25rem; +} +[role="contentinfo"] { + font-size: 0.85rem; + margin-top: 4rem; + text-align: center; +} + +/* Patterns navigation */ +.patterns { + overflow: auto; + margin-top: 1.5rem; + min-width: max-content; +} +.patterns * { + margin-top: 0; +} +.patterns h3 { + font-size: 1rem; +} +.patterns h3 + ul { + margin-top: 0.75rem; +} +.patterns li { + line-height: 1.125; + list-style: none; +} +.patterns li + li { +} +.patterns ul ul { + margin-left: 0.75rem; +} +.pattern a { + border: 0; + display: flex; + flex-wrap: nowrap; + align-items: baseline; + font-weight: bold; + padding: 0 1rem; + padding-top: 0.5em; + padding-bottom: 0.5em; +} +.pattern a:focus { + outline: none; +} +.pattern span { + margin-left: 0.125rem; +} + +/* After */ +.pattern [aria-current] { + background-color: #111; + clip-path: polygon(0% 0%, 90% 0%, 100% 50%, 90% 100%, 0% 100%); + color: #fefefe; +} + +/* Menu button */ +#menu-button { + display: none; + width: 100%; + text-align: center; +} +#menu-button:focus { + outline: none; + box-shadow: inset 0 0 0 0.25rem #999; +} + +/* Tables of contents */ +.toc { + font-size: 0.85rem; + border: 1px solid; + padding: 1.5rem; +} +.toc h2 { + font-size: 1rem; +} +.toc ol { + margin-left: 0.75rem; + margin-top: 0.5rem; +} + +/* Disqus Comments */ +#disqus-container { + text-align: center; +} +#disqus-button { + width: 100%; + padding: 0.25em 0.75em; +} +#disqus-comments { + display: none; +} + +/* Pattern lists */ +.patterns-list { + list-style: none; + margin-left: 0; +} +.patterns-list h2 { + font-size: 1.25rem; + line-height: 1.6; +} +.patterns-list li + li { + margin-top: 1rem; + padding-top: 1rem; + border-top: 2px solid; +} +.patterns-list a { + border: 0; +} + +/* Tags */ +.tags { + margin-top: 0; + font-size: 0.85rem; +} +.tags * { + display: inline; + margin: 0; +} +.tags strong { + margin-right: 0.25rem; +} +.tags li { + white-space: nowrap; + margin: 0 0.25rem 0 0; +} + +/* Date */ +.date { + margin-top: 0; + font-size: 0.85rem; +} + +/* Notes and warnings */ +.note { + border-left: 0.5rem solid; + font-size: 0.85rem; +} +.note .sign { + height: 2.25rem; + width: 2.25rem; +} +.note > div { + margin-left: 0.75rem; +} +.note > div > img:first-child { + height: 1.5rem; +} +.note > div >:first-child + * { + margin-top: 0; +} +.note.warning { + border-left: 0; + background-image: url({{ "css/images/stripe.svg" | absURL }}); + background-size: 0.5rem auto; + background-repeat: repeat-y; +} +.note.warning > div { + margin-left: 1.25rem; +} + +/* Tick lists */ +.ticks li { + list-style: none; + position: relative; +} +.ticks li::before { + content: ''; + display: inline-block; + width: 1rem; + height: 1rem; + margin-right: 0.25rem; + background-image: url({{ "css/images/icon-tick.svg" | absURL }}); + background-size: 100% auto; + position: absolute; + left: -1.25rem; + top: 0.25rem; +} + +/* Figures */ +figure { + text-align: center; +} +figcaption { + font-size: 0.85rem; + font-style: italic; + margin-top: 0.5rem; +} +main { + display: block; + counter-reset: fig; + min-height: 100vh; +} +figcaption::before { + counter-increment: fig; + content: 'Figure ' counter(fig) ':\0020'; + font-weight: bold; +} + +/* Code blocks */ +pre[class*=language-] { + background: none; + margin-top: 2.25rem; + margin-bottom: 0; + overflow-y: hidden; + overflow-x: auto; +} +code[class*="language-"], pre[class*="language-"] { + text-shadow: none; + /* filter: grayscale(100%); */ +} +pre[class*=language-][data-line] { + padding: 1em 0 0 2.25rem; +} +pre[class*=language-] code * { + margin-top: 0 !important; +} +[data-codeblock-shortcode], .code-annotated code { + display: inline-block; + margin-top: -1rem; +} +.code-annotated { + overflow-y: hidden; + overflow-x: auto; + padding: 1.5rem; + border: 1px solid; + white-space: pre; + counter-reset: annotation; +} +.highlight { + background: #ddd; + padding: 0.0625rem 0.33rem; + border-radius: 0.5rem; +} +.numbered .highlight::after, +.code-annotated.numbered + ol li::before { + counter-increment: annotation; + content: counter(annotation); + font-weight: bold; + font-size: 0.5rem; + background: #111; + color: #fefefe; + border-radius: 1rem; + margin-left: 0.25rem; + padding: 0.125em 0.5em; + vertical-align: 0.33em; +} +.code-annotated.numbered + ol { + list-style: none; + counter-reset: annotation; +} +.code-annotated.numbered + ol li::before { + font-size: 0.66em; + margin-right: 0.33em; + vertical-align: 0.25em; +} + +/* File tree lists */ +.file-tree { + overflow-x: auto; +} +.file-tree ul { + font-family: Courier, monospace; + margin: 0; + padding: 0; + padding-left: 3rem; + list-style: none; + line-height: 1.25; + position: relative; +} +.file-tree > ul { + padding-left: 0; + overflow-x: auto; + overflow-y: hidden; +} +.file-tree li { + background: #fefefe; + position: relative; + white-space: nowrap; +} +.file-tree li + li { + margin-top: 0; +} +.file-tree li:not(:last-child) > ul::before { + content: '\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020'; + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 1em; + white-space: normal; +} +.file-tree li::before { + content: '\251C\2500\2500\0020'; +} +.file-tree li:last-child::before { + content: '\2514\2500\2500\0020'; +} + +/* Expandable sections */ +.expandable-section { + border-top: 1px solid; + border-bottom: 1px solid; + padding: 0.75rem 0; +} +[id^="js-expandable-"] { + margin: 0; + padding: 1.5rem 0 0.75rem; +} +@media screen { + .expandable-section + .expandable-section { + margin-top: 0; + border-top: 0; + } +} +[data-expands] { + text-align: left; + color: #111; + border: 0; + background: none; + width: 100%; + padding: 0; + margin: 0; + display: flex; + align-items: center; + justify-content: space-between; + cursor: pointer; +} +[data-expands] svg { + margin-top: 0; + width: 1em; + height: 1em; +} +[data-expands][aria-expanded="true"] svg .up-strut { + display: none; +} +[data-expands]:focus { + outline: none; +} +p:empty { + display: none; +} +*:not(p) + p:empty + p { + margin-top: 2.25rem; +} + +/* WCAG and principles */ +.wcag li { + font-size: 0.85em; +} +.principles p { + font-size: 0.85rem; + margin-top: 0.75rem; +} +.principles.with-desc > li + li, +.wcag.with-desc > li + li { + border-top: 1px solid; + margin-top: 0.75rem; + padding-top: 0.75rem; +} + +/* Site errors */ +.site-error { + padding: 1.5rem; + background: #efefef; +} +.site-error strong { + color: #C83737; +} + +/* SVG icons */ +a svg, +button svg, +h1 svg, +th svg, +li > svg { + height: 0.75em; + width: 0.75em; + margin-right: 0.25em; +} +h1 svg { + margin-right: 0; + width: 0.85em; + height: 0.85em; +} +.wcag-icon { + width: 1.25em; +} +.bookmark-icon { + vertical-align: middle; +} +.link-icon { + width: 0.75em; + height: 0.75em; +} +.tags svg, .link-icon { + vertical-align: middle; +} +.balloon-icon { + width: 0.75em; + margin-right: 0; +} +.print { + white-space: nowrap; + font-style: normal; +} + +/* Color palettes */ +.colors { + display: flex; + height: 5rem; + margin: -0.25rem; + list-style: none; + flex-wrap: nowrap; +} +.colors li { + margin: 0.25rem; + flex: 1 0 auto; + position: relative; +} +.colors span { + line-height: 1; + background-color: #111; + color: #fefefe; + font-size: 0.75rem; + padding: 0.25rem; + position: absolute; + bottom: 0.25rem; + right: 0.25rem; +} + +/* Cross references */ +.pattern-link { + font-weight: bold; +} + +/* Inline demos */ +.demo-inner { + border-top: 1px solid; + border-bottom: 1px solid; + padding: 1.5rem 0; + position: relative; +} +[id^="js-demo-"] { + all: initial; + display: block; +} + +/* Section links */ +.h2-container { + position: relative; + font-size: 1.66rem; +} +.h2-container a { + position: absolute; + margin-top: 0; + top: 0; + line-height: 1; + left: -1em; + border: 0; +} + +/* Single page layout */ +.wrapper.print-version .main-and-footer { + margin-left: 0; +} +.wrapper.print-version .intro-and-nav { + position: static; + border: 0; + width: auto; + text-align: center; + display: flex; + align-items: center; + justify-content: center; +} +.wrapper.print-version main { + min-height: 0; +} +.wrapper.print-version .library-desc { + font-size: 1rem; +} +.wrapper.print-version .intro-and-nav > div { + height: auto; +} +.wrapper.print-version #patterns-list { + margin-left: 0; + margin-top: 1.5rem; + display: block; +} +.wrapper.print-version .toc { + font-size: 1rem; +} +.wrapper.print-version .toc h2 { + font-size: 1.66rem; +} +.wrapper.print-version #patterns-list h3 { + font-size: 1.25rem; +} +.wrapper.print-version .patterns { + margin-top: 0; +} +.pattern-section:not(:last-child) { + padding-bottom: 2.25rem; + border-bottom: 2px solid; +} +.pattern-section h1 { + padding: 0 !important; +} + +/* Custom 404 */ +.custom-404 { + text-align: center; +} +.custom-404 * { + margin: 0; +} +.custom-404 svg { + max-width: 100%; +} + +/* Utilities */ +.vh { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; +} +.gallery { + display: flex; + justify-content: center; +} + +/* Media queries */ +@media screen and (max-width: 45em) { + body a { + hyphens: auto; + } + [role="banner"] { + position: static; + width: auto; + height: auto; + } + .intro { + text-align: center; + } + .intro-and-nav { + border-right: none; + } + .intro-and-nav > div { + padding: 1.5rem; + } + .main-and-footer { + margin: 0; + } + main { + min-height: auto; + } + #patterns-list { + margin-top: 0.5rem; + border: 1px solid; + } + .patterns h3 { + font-size: 1.5rem; + padding: 1.5rem 1rem 0.75rem; + } + .patterns li:not(.pattern) { + margin-top: 0; + } + .patterns ul ul { + margin: 0; + } + .patterns li { + margin-top: 0; + } + .pattern { + font-size: 1rem; + } + .pattern a { + padding: 1rem; + } + .pattern [aria-current] { + clip-path: none; + padding: 1rem; + } + .pattern + .pattern { + border-top: 1px solid; + margin-top: 0; + } + #menu-button { + display: block; + } + #patterns-list { + display: none; + } + .toc-link { + display: none; + } + [aria-expanded="true"] + #patterns-list { + display: block; + } + code { + word-break: break-all; + } +} +@media print { + .wrapper:not(.print-version) .intro-and-nav, + .wrapper:not(.print-version) [role="contentinfo"] { + display: none; + } + .main-and-footer { + margin-left: 0; + } + a { + border: 0; + } + main a::after { + content: " (" attr(href) ")"; + word-break: break-word; + } + main nav a::after { + content: ''; + } + .cmd code { + background: #fefefe; + color: #111; + } + pre code { + white-space: pre-wrap !important; + } + .expandable-section { + border: 0; + padding: 0; + } + .expandable-section + p { + margin-top: 0.75rem; + } + [id^="js-expandable-"] { + display: block; + } + [data-expands] svg { + display: none; + } + main *:not(.with-desc) { + page-break-inside: avoid; + } + .note.warning { + border-left: 0.5rem solid; + background: none; + } +} +@media (-ms-high-contrast: active) { + img[src*=".svg"] { + background: #fefefe; + padding: 0.5rem; + } + .ticks li::before { + content: 'βœ“'; + background: none; + width: auto; + top: 0; + } + .note.warning { + border-left: 0.5rem solid; + background: none; + } +} + +::-moz-selection { /* Code for Firefox */ + background: rgba(0,0,0,.8); + color: #fefefe; +} + +::selection { + background: rgba(0,0,0,.8); + color: #fefefe; +} diff --git a/themes/cupper-hugo-theme/assets/js/search.js b/themes/cupper-hugo-theme/assets/js/search.js new file mode 100644 index 0000000..f760b85 --- /dev/null +++ b/themes/cupper-hugo-theme/assets/js/search.js @@ -0,0 +1,21 @@ +(function () { + function onEvent() { + var filter = search.value.toUpperCase(); + var list = document.getElementById("list"); + var listItems = list.getElementsByTagName("li"); + for (i = 0; i < listItems.length; i++) { + var item = listItems[i]; + var text = item.innerText.toUpperCase(); + if (text.indexOf(filter) > -1) { + item.style.display = ""; + } else { + item.style.display = "none"; + } + } + } + + var search = document.getElementById("search"); + if (search) { + search.addEventListener("keyup", onEvent); + } +})(); diff --git a/themes/cupper-hugo-theme/assets/js/template-dom-scripts.js b/themes/cupper-hugo-theme/assets/js/template-dom-scripts.js new file mode 100644 index 0000000..368ddfb --- /dev/null +++ b/themes/cupper-hugo-theme/assets/js/template-dom-scripts.js @@ -0,0 +1,150 @@ +/* Expandable sections */ +(function () { + function toggle (button, target) { + var expanded = button.getAttribute('aria-expanded') === 'true'; + button.setAttribute('aria-expanded', !expanded); + target.hidden = !target.hidden; + } + + var expanders = document.querySelectorAll('[data-expands]'); + + Array.prototype.forEach.call(expanders, function (expander) { + var target = document.getElementById(expander.getAttribute('data-expands')); + + expander.addEventListener('click', function () { + toggle(expander, target); + }) + }) +}()); + +/* Menu button */ +(function () { + var button = document.getElementById('menu-button'); + if (button) { + var menu = document.getElementById('patterns-list'); + button.addEventListener('click', function() { + var expanded = this.getAttribute('aria-expanded') === 'true'; + this.setAttribute('aria-expanded', !expanded); + }) + } +}()); + +/* Persist navigation scroll point */ +(function () { + window.onbeforeunload = function () { + var patternsNav = document.getElementById('patterns-nav'); + if (patternsNav) { + var scrollPoint = patternsNav.scrollTop; + localStorage.setItem('scrollPoint', scrollPoint); + } + } + + window.addEventListener('DOMContentLoaded', function () { + if (document.getElementById('patterns-nav')) { + if (window.location.href.indexOf('patterns/') !== -1) { + document.getElementById('patterns-nav').scrollTop = parseInt(localStorage.getItem('scrollPoint')); + } else { + document.getElementById('patterns-nav').scrollTop = 0; + } + } + }) +}()); + +{{ if not .Site.Params.hideHeaderLinks }} + /* Add "link here" links to

headings */ + (function () { + var headings = document.querySelectorAll('main > h2'); + + Array.prototype.forEach.call(headings, function (heading) { + var id = heading.getAttribute('id'); + + if (id) { + var newHeading = heading.cloneNode(true); + newHeading.setAttribute('tabindex', '-1'); + + var container = document.createElement('div'); + container.setAttribute('class', 'h2-container'); + container.appendChild(newHeading); + + heading.parentNode.insertBefore(container, heading); + + var link = document.createElement('a'); + link.setAttribute('href', '#' + id); + link.innerHTML = ''; + + container.appendChild(link); + + heading.parentNode.removeChild(heading); + } + }) + }()); +{{ end }} + +/* Enable scrolling by keyboard of code samples */ +(function () { + var codeBlocks = document.querySelectorAll('pre, .code-annotated'); + + Array.prototype.forEach.call(codeBlocks, function (block) { + if (block.querySelector('code')) { + block.setAttribute('role', 'region'); + block.setAttribute('aria-label', 'code sample'); + if (block.scrollWidth > block.clientWidth) { + block.setAttribute('tabindex', '0'); + } + } + }); +}()); + +/* Switch and persist theme */ +(function () { + var checkbox = document.getElementById('themer'); + + function persistTheme(val) { + localStorage.setItem('darkTheme', val); + } + + function applyDarkTheme() { + var rules = [ + '.intro-and-nav, .main-and-footer { filter: invert(100%); }', + '* { background-color: inherit; }', + 'img:not([src*=".svg"]), .colors, iframe, .demo-container { filter: invert(100%); }' + ]; + rules.forEach(function(rule) { + document.styleSheets[0].insertRule(rule); + }) + } + + function clearDarkTheme() { + for (let i = 0; i < document.styleSheets[0].cssRules.length; i++) { + document.styleSheets[0].deleteRule(i); + } + } + + checkbox.addEventListener('change', function () { + if (this.checked) { + applyDarkTheme(); + persistTheme('true'); + } else { + clearDarkTheme(); + persistTheme('false'); + } + }); + + function showTheme() { + if (localStorage.getItem('darkTheme') === 'true') { + applyDarkTheme(); + checkbox.checked = true; + } + } + + function showContent() { + document.body.style.visibility = 'visible'; + document.body.style.opacity = 1; + } + + window.addEventListener('DOMContentLoaded', function () { + showTheme(); + showContent(); + }); + +}()); diff --git a/themes/cupper-hugo-theme/data/principles.json b/themes/cupper-hugo-theme/data/principles.json new file mode 100644 index 0000000..9864138 --- /dev/null +++ b/themes/cupper-hugo-theme/data/principles.json @@ -0,0 +1,149 @@ +{ + "title": "Inclusive Design Principles", + "description": "

These Inclusive Design Principles are about putting people first. It's about designing for the needs of people with permanent, temporary, situational, or changing disabilities β€” all of us really.

They are intended to give anyone involved in the design and development of websites and applications - designers, user experience professionals, developers, product owners, idea makers, innovators, artists and thinkers - a broad approach to inclusive design.

For more background, read about the Inclusive Design Principles on the TPG blog.

", + "authors": [ + "LΓ©onie Watson", + "Henny Swan", + "Ian Pouncey", + "Heydon Pickering" + ], + "principles": [ + { + "title": "Provide comparable experience", + "strapline": "Ensure your interface provides a comparable experience for all so people can accomplish tasks in a way that suits their needs without undermining the quality of the content.", + "description": "Whether out of circumstance, choice, or context people are diverse. As people use different approaches and tools to read and operate interfaces, what the interface offers each user should be comparable in value, quality, and efficiency.", + "examples": [ + { + "title": "Content for alternatives", + "description": "Having a basic alternative, whether it's alt text, a transcript, audio description, or sign language, makes the content accessible but to be equivalent it needs to capture the essence of the original." + }, + { + "title": "Ergonomic features", + "description": "Providing synchronized closed captions makes your video accessible. But making them customizable, color coded, and repositionable provides a more comparable experience." + }, + { + "title": "Notifications", + "description": "Notifications that appear in an interface are visually obvious but require proactive discovery by screen reader users. A comparable experience for blind users, can be achieved by using a live region. The notification then requires no explicit action on the part of the user." + } + ] + }, + { + "title": "Consider situation", + "strapline": "People use your interface in different situations. Make sure your interface delivers a valuable experience to people regardless of their circumstances.", + "description": "People are first time users, established users, users at work, users at home, users on the move, and users under pressure. All of these situations can have an impact. For those who already find interaction challenging, such as those with disabilities, this impact may make usage particularly difficult.", + "examples": [ + { + "title": "Colour contrast", + "description": "When using an interface outdoors, good contrast lessens the impact of bright sunshine." + }, + { + "title": "Context sensitive help", + "description": "Users may need help when they first encounter a complex form or interaction. This help may become redundant, even distracting, as a user becomes more familiar with the form or interaction. Context sensitive help provides the user with choice as to when they access help and better control over the page." + }, + { + "title": "Captions on the go", + "description": "You're aware that the video content you are providing will be consumed on mobile devices, which may be in public spaces where people might prefer to consume the content without being antisocial. For smaller viewports, sound is switched off and captions activated by default." + } + ] + }, + { + "title": "Be consistent", + "strapline": "Use familiar conventions and apply them consistently.", + "description": "Familiar interfaces borrow from well-established patterns. These should be used consistently within the interface to reinforce their meaning and purpose. This should be applied to functionality, behavior, editorial, and presentation. You should say the same things in the same way and users should be able to do the same things in the same way.", + "examples": [ + { + "title": "Consistent design patterns", + "description": "Use consistent web and platform design patterns to help build familiarity and understanding." + }, + { + "title": "Consistent editorial", + "description": "Use plain language consistently across platforms including editorial that is relied on by screen reader users such as text alternatives, headings, labels for buttons and so on. Keeping editorial style consistent is also important e.g. making sure the top of the article always has a clearly marked summary paragraph, making sure bullets always start with a bolded definition." + }, + { + "title": "Consistent page architecture", + "description": "Use consistent page architecture across templates to help people scan and navigate key content." + } + ] + }, + { + "title": "Give control", + "strapline": "Ensure people are in control. People should be able to access and interact with content in their preferred way.", + "description": "Do not suppress or disable the ability to change standard browser and platform settings such as orientation, font size, zoom, and contrast. In addition, avoid content changes that have not been initiated by the user unless there is a way to control it.", + "examples": [ + { + "title": "Scrolling control", + "description": "'Infinite scrolling' can be problematic, especially for users navigating by keyboard because they can't get past the stream of refreshing content. Give the option to turn off this feature and replace it with a 'load more' button." + }, + { + "title": "Make it stop", + "description": "Some users find that animations or parallax scrolling cause nausea, and others find them plain distracting. Where they play automatically, they should at least be easy to stop, by providing prominent playback controls." + }, + { + "title": "Allow zoom", + "description": "There are many reasons why a user may want to operate the pinch-to-zoom gesture on their touch device. Make sure it is not suppressed, and that the content does not get obscured when it is put to use." + } + ] + }, + { + "title": "Offer choice", + "strapline": "Consider providing different ways for people to complete tasks, especially those that are complex or non standard.", + "description": "There is often more than one way to complete a task. You cannot assume what someone's preferred way might be. By providing alternatives for layout and task completion, you offer people choices that suit them and their circumstances at the time.", + "examples": [ + { + "title" : "Multiple ways to complete an action", + "description": "Where appropriate, provide multiple ways to complete an action. On mobile swipe to delete an item can be supported together with an edit button that allows you to select items then delete. An example of this is in iOS mail." + }, + { + "title": "Layout", + "description": "Where there are long lists of content consider offering a grid or list layout option. This supports people who may want larger images on screen or smaller rows." + }, + { + "title": "Accessible alternatives", + "description": "Alternative ways of presenting data, such as data tables for info graphics, should be available to all users, as an option rather than a hidden link just for screen reader users. Accessible alternatives can benefit not just a specific target group but all users as long as we offer the choice." + } + ] + }, + { + "title": "Prioritise content", + "strapline": "Help users focus on core tasks, features, and information by prioritising them within the content and layout.", + "description": "Interfaces can be difficult to understand when core features are not clearly exposed and prioritised. A site or application may provide lots of information and functionality, but people should be able to focus on one thing at a time. Identify the core purpose of the interface, and then the content and features needed to fulfill that purpose.", + "examples": [ + { + "title": "Keep task focused", + "description": "Progressively reveal features and content when needed, not all in one go." + }, + { + "title": "Prioritising tasks", + "description": "An email application is principally for writing and reading email. The 'compose' button is, therefore, present on all screens, and early in the focus order. The inbox is prioritised over other lists of email, such as 'sent' and 'spam' messages. Less used features such as tagging or organizing email into folders appear later in the focus order, as they will generally only be used when the primary task of reading the email is complete." + }, + { + "title": "Prioritising content", + "description": "The primary content on a news article page is the story, therefore it should come before other content, both visually and in the source order. Related content, such as similar articles, should follow it, and unrelated content after that." + }, + { + "title": "Prioritising editorial", + "description": "Editorial for links, headings and buttons should use plain language and put the primary text first. This applies to both visible and hidden text. This makes the text easy to scan both visually and audibly for screen reader users. Plain language also benefits non native speakers and is easier to translate." + } + ] + }, + { + "title": "Add value", + "strapline": "Consider the value of features and how they improve the experience for different users.", + "description": "Features should add value to the user experience by providing efficient and diverse ways to find and interact with content. Consider device features such as voice, geolocation, camera and vibration API's, and how integration with connected devices or a second screen could provide choice.", + "examples": [ + { + "title": "Integration with connected devices or second screen", + "description": "Using voice interfaces to control multimedia, search for content, output from music or TV adds value for people who struggle to use other interfaces." + }, + { + "title": "Integration with platform APIs", + "description": "Enhance functionality using platform features. The vibration API makes notifications more usable by deaf and hard of hearing people while the geolocation API makes it easier for people with mobility impairments to use location based services." + }, + { + "title": "Make task completion easier", + "description": "Add a 'Show password' button to input fields so users can verify they have correctly inputted text, or add touch identification for password protected areas." + } + ] + } + ] +} diff --git a/themes/cupper-hugo-theme/data/wcag.json b/themes/cupper-hugo-theme/data/wcag.json new file mode 100644 index 0000000..8192898 --- /dev/null +++ b/themes/cupper-hugo-theme/data/wcag.json @@ -0,0 +1,1427 @@ +[ + { + "ref_id": "1.1.1", + "title": "Non-text Content", + "description": "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed below. (", + "url": "https://www.w3.org/TR/WCAG20/#text-equiv-all", + "level": "A", + "special_cases": [ + { + "type": "exception", + "title": "Controls, Input", + "description": "If non-text content is a control or accepts user input, then it has a name that describes its purpose. (Refer to Guideline 4.1 for additional requirements for controls and content that accepts user input.)" + }, + { + "type": "exception", + "title": "Time-Based Media", + "description": "If non-text content is time-based media, then text alternatives at least provide descriptive identification of the non-text content. (Refer to Guideline 1.2 for additional requirements for media.)" + }, + { + "type": "exception", + "title": "Test", + "description": "If non-text content is a test or exercise that would be invalid if presented in text, then text alternatives at least provide descriptive identification of the non-text content." + }, + { + "type": "exception", + "title": "Sensory", + "description": "If non-text content is primarily intended to create a specific sensory experience, then text alternatives at least provide descriptive identification of the non-text content." + }, + { + "type": "exception", + "title": "CAPTCHA", + "description": "If the purpose of non-text content is to confirm that content is being accessed by a person rather than a computer, then text alternatives that identify and describe the purpose of the non-text content are provided, and alternative forms of CAPTCHA using output modes for different types of sensory perception are provided to accommodate different disabilities." + }, + { + "type": "exception", + "title": "Decoration, Formatting, Invisible", + "description": "If non-text content is pure decoration, is used only for visual formatting, or is not presented to users, then it is implemented in a way that it can be ignored by assistive technology." + } + ], + "notes": null, + "references": [ + { + "title": "How to Meet 1.1.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-text-equiv-all" + }, + { + "title": "Understanding 1.1.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/text-equiv-all.html" + } + ] + }, + { + "ref_id": "1.2.1", + "title": "Audio-only and Video-only (Prerecorded", + "description": "For prerecorded audio-only and prerecorded video-only media, the following are true, except when the audio or video is a media alternative for text and is clearly labeled as such.", + "url": "https://www.w3.org/TR/WCAG20/", + "level": "A", + "special_cases": [ + { + "type": "all_true", + "title": "Prerecorded Audio-only", + "description": "An alternative for time-based media is provided that presents equivalent information for prerecorded audio-only content." + }, + { + "type": "all_true", + "title": "Prerecorded Video-only", + "description": "Either an alternative for time-based media or an audio track is provided that presents equivalent information for prerecorded video-only content" + } + ], + "notes": null, + "references": [ + { + "title": "How to Meet 1.2.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-media-equiv-av-only-alt" + }, + { + "title": "Understanding 1.2.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-av-only-alt.html" + } + ] + }, + { + "ref_id": "1.2.2", + "title": "Captions (Prerecorded)", + "description": "Captions are provided for all prerecorded audio content in synchronized media, except when the media is a media alternative for text and is clearly labeled as such", + "url": "https://www.w3.org/TR/WCAG20/#media-equiv-captions", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.2.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-media-equiv-captions" + }, + { + "title": "Understanding 1.2.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-captions.html" + } + ] + }, + { + "ref_id": "1.2.3", + "title": "Audio Description or Media Alternative (Prerecorded)", + "description": "An alternative for time-based media or audio description of the prerecorded video content is provided for synchronized media, except when the media is a media alternative for text and is clearly labeled as such", + "url": "https://www.w3.org/TR/WCAG20/#media-equiv-audio-desc", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.2.3", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-media-equiv-audio-desc" + }, + { + "title": "Understanding 1.2.3", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-audio-desc.html" + } + ] + }, + { + "ref_id": "1.2.4", + "title": "Captions (Live)", + "description": "Captions are provided for all live audio content in synchronized media", + "url": "https://www.w3.org/TR/WCAG20/#media-equiv-real-time-captions", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.2.4", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-media-equiv-real-time-captions" + }, + { + "title": "Understanding 1.2.4", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-real-time-captions.html" + } + ] + }, + { + "ref_id": "1.2.5", + "title": "Audio Description (Prerecorded)", + "description": "Audio description is provided for all prerecorded video content in synchronized media", + "url": "https://www.w3.org/TR/WCAG20/#media-equiv-audio-desc-only", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.2.5", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-media-equiv-audio-desc-only" + }, + { + "title": "Understanding 1.2.5", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-audio-desc-only.html" + } + ] + }, + { + "ref_id": "1.2.6", + "title": "Sign Language (Prerecorded)", + "description": "Sign language interpretation is provided for all prerecorded audio content in synchronized media.", + "url": "https://www.w3.org/TR/WCAG20/#media-equiv-sign", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.2.6", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-media-equiv-sign" + }, + { + "title": "Understanding 1.2.6", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-sign.html" + } + ] + }, + { + "ref_id": "1.2.7", + "title": "Extended Audio Description (Prerecorded)", + "description": "Where pauses in foreground audio are insufficient to allow audio descriptions to convey the sense of the video, extended audio description is provided for all prerecorded video content in synchronized media", + "url": "https://www.w3.org/TR/WCAG20/#media-equiv-extended-ad", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.2.7", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-media-equiv-extended-ad" + }, + { + "title": "Understanding 1.2.7", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-extended-ad.html" + } + ] + }, + { + "ref_id": "1.2.8", + "title": "Media Alternative (Prerecorded)", + "description": "An alternative for time-based media is provided for all prerecorded synchronized media and for all prerecorded video-only media", + "url": "https://www.w3.org/TR/WCAG20/#media-equiv-text-doc", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.2.8", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-media-equiv-text-doc" + }, + { + "title": "Understanding 1.2.8", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-text-doc.html" + } + ] + }, + { + "ref_id": "1.2.9", + "title": "Audio-only (Live)", + "description": " An alternative for time-based media that presents equivalent information for live audio-only content is provided.", + "url": "https://www.w3.org/TR/WCAG20/#media-equiv-live-audio-only", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.2.9", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-media-equiv-live-audio-only" + }, + { + "title": "Understanding 1.2.9", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-live-audio-only.html" + } + ] + }, + { + "ref_id": "1.3.1", + "title": "Info and Relationships", + "description": "Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.", + "url": "https://www.w3.org/TR/WCAG20/#content-structure-separation-programmatic", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.3.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-content-structure-separation-programmatic" + }, + { + "title": "Understanding 1.3.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/content-structure-separation-programmatic.html" + } + ] + }, + { + "ref_id": "1.3.2", + "title": "Meaningful Sequence", + "description": "When the sequence in which content is presented affects its meaning, a correct reading sequence can be programmatically determined.", + "url": "https://www.w3.org/TR/WCAG20/#content-structure-separation-sequence", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.3.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-content-structure-separation-sequence" + }, + { + "title": "Understanding 1.3.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/content-structure-separation-sequence.html" + } + ] + }, + { + "ref_id": "1.3.3", + "title": "Sensory Characteristics", + "description": "Instructions provided for understanding and operating content do not rely solely on sensory characteristics of components such as shape, size, visual location, orientation, or sound", + "url": "https://www.w3.org/TR/WCAG20/#content-structure-separation-understanding", + "level": "A", + "special_cases": null, + "notes": [ + { + "content": "For requirements related to color, refer to Guideline 1.4." + } + ], + "references": [ + { + "title": "How to Meet 1.3.3", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-content-structure-separation-understanding" + }, + { + "title": "Understanding 1.3.3", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/content-structure-separation-understanding.html" + } + ] + }, + { + "ref_id": "1.4.1", + "title": "Use of Color", + "description": "Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element.", + "url": "https://www.w3.org/TR/WCAG20/#visual-audio-contrast-without-color", + "level": "A", + "special_cases": null, + "notes": [ + { + "content": "This success criterion addresses color perception specifically. Other forms of perception are covered in Guideline 1.3 including programmatic access to color and other visual presentation coding." + } + ], + "references": [ + { + "title": "How to Meet 1.4.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-visual-audio-contrast-without-color" + }, + { + "title": "Understanding 1.4.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-without-color.html" + } + ] + }, + { + "ref_id": "1.4.2", + "title": "Audio Control", + "description": "If any audio on a Web page plays automatically for more than 3 seconds, either a mechanism is available to pause or stop the audio, or a mechanism is available to control audio volume independently from the overall system volume level. (Level A)", + "url": "https://www.w3.org/TR/WCAG20/#visual-audio-contrast-dis-audio", + "level": "A", + "special_cases": null, + "notes": [ + { + "content": "Note: Since any content that does not meet this success criterion can interfere with a user's ability to use the whole page, all content on the Web page (whether or not it is used to meet other success criteria) must meet this success criterion. See Conformance Requirement 5: Non-Interference. (https://www.w3.org/TR/WCAG20/#cc5)" + } + ], + "references": [ + { + "title": "How to Meet 1.4.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-visual-audio-contrast-dis-audio" + }, + { + "title": "Understanding 1.4.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-dis-audio.html" + } + ] + }, + { + "ref_id": "1.4.3", + "title": "Contrast (Minimum)", + "description": " The visual presentation of text and images of text has a contrast ratio of at least 4.5:1, except for the following: ", + "url": "https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast", + "level": "AA", + "special_cases": [ + { + "type": "exception", + "title": "Large Text", + "description": "Large-scale text and images of large-scale text have a contrast ratio of at least 3:1" + }, + { + "type": "exception", + "title": "Incidental", + "description": "Text or images of text that are part of an inactive user interface component, that are pure decoration, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement." + }, + { + "type": "exception", + "title": "Logotypes", + "description": "Text that is part of a logo or brand name has no minimum contrast requirement." + } + ], + "notes": null, + "references": [ + { + "title": "How to Meet 1.4.3", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-visual-audio-contrast-contrast" + }, + { + "title": "Understanding 1.4.3", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html" + } + ] + }, + { + "ref_id": "1.4.4", + "title": "Resize text", + "description": "Except for captions and images of text, text can be resized without assistive technology up to 200 percent without loss of content or functionality", + "url": "https://www.w3.org/TR/WCAG20/#visual-audio-contrast-scale", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 1.4.4", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-visual-audio-contrast-scale" + }, + { + "title": "Understanding 1.4.4", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-scale.html" + } + ] + }, + { + "ref_id": "1.4.5", + "title": "Images of Text", + "description": "If the technologies being used can achieve the visual presentation, text is used to convey information rather than images of text except for the following", + "url": "https://www.w3.org/TR/WCAG20/#visual-audio-contrast-text-presentation", + "level": "AA", + "special_cases": [ + { + "type": "exception", + "title": "Customizable", + "description": "The image of text can be visually customized to the user's requirements" + }, + { + "type": "exception", + "title": "Essential", + "description": "A particular presentation of text is essential to the information being conveyed" + } + ], + "notes": [ + { + "content": "Logotypes (text that is part of a logo or brand name) are considered essential" + } + ], + "references": [ + { + "title": "How to Meet 1.4.5", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-visual-audio-contrast-text-presentation" + }, + { + "title": "Understanding 1.4.5", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-text-presentation.html" + } + ] + }, + { + "ref_id": "1.4.6", + "title": "Contrast (Enhanced)", + "description": "The visual presentation of text and images of text has a contrast ratio of at least 7:1, except for the following: ", + "url": "https://www.w3.org/TR/WCAG20/#visual-audio-contrast7", + "level": "AAA", + "special_cases": [ + { + "type": "exception", + "title": "Large Text", + "description": "Large-scale text and images of large-scale text have a contrast ratio of at least 4.5:1" + }, + { + "type": "exception", + "title": "Text or images of text that are part of an inactive user interface component, that are pure decoration, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.", + "description": "Incidental" + }, + { + "type": "exception", + "title": "Logotypes", + "description": "Text that is part of a logo or brand name has no minimum contrast requirement." + } + ], + "notes": null, + "references": [ + { + "title": "How to Meet 1.4.6", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-visual-audio-contrast7" + }, + { + "title": "Understanding 1.4.6", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast7.html" + } + ] + }, + { + "ref_id": "1.4.7", + "title": "Low or No Background Audio", + "description": "For prerecorded audio-only content that (1) contains primarily speech in the foreground, (2) is not an audio CAPTCHA or audio logo, and (3) is not vocalization intended to be primarily musical expression such as singing or rapping, at least one of the following is true: (Level AAA)", + "url": "https://www.w3.org/TR/WCAG20/#visual-audio-contrast-noaudio", + "level": "AAA", + "special_cases": [ + { + "type": "at_least_one", + "title": "No Background", + "description": "The audio does not contain background sounds." + }, + { + "type": "at_least_one", + "title": "Turn Off", + "description": "The background sounds can be turned off." + }, + { + "type": "at_least_one", + "title": "20 dB", + "description": "The background sounds are at least 20 decibels lower than the foreground speech content, with the exception of occasional sounds that last for only one or two seconds." + } + ], + "notes": [ + { + "content": "Per the definition of 'decibel,' background sound that meets this requirement will be approximately four times quieter than the foreground speech content." + } + ], + "references": [ + { + "title": "How to Meet 1.4.7", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-visual-audio-contrast-noaudio" + }, + { + "title": "Understanding 1.4.7" + } + ] + }, + { + "ref_id": "1.4.8", + "title": "Visual Presentation", + "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following:", + "url": "https://www.w3.org/TR/WCAG20/#visual-audio-contrast-visual-presentation", + "level": "AAA", + "special_cases": [ + { + "type": "all_true", + "title": "Foreground and background colors can be selected by the user." + }, + { + "type": "all_true", + "title": "Width is no more than 80 characters or glyphs (40 if CJK)" + }, + { + "type": "all_true", + "title": "Text is not justified (aligned to both the left and the right margins)." + }, + { + "type": "all_true", + "title": "Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing." + }, + { + "type": "all_true", + "title": "Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window." + } + ], + "notes": null, + "references": [ + { + "title": "How to Meet 1.4.8", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-visual-audio-contrast-visual-presentation" + }, + { + "title": "Understanding 1.4.8", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-visual-presentation.html" + } + ] + }, + { + "ref_id": "1.4.9", + "title": "Images of Text (No Exception)", + "description": "Images of text are only used for pure decoration or where a particular presentation of text is essential to the information being conveyed.", + "url": "https://www.w3.org/TR/WCAG20/", + "level": "AAA", + "special_cases": null, + "notes": [ + { + "content": "Logotypes (text that is part of a logo or brand name) are considered essential." + } + ], + "references": [ + { + "title": "How to Meet 1.4.9", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-visual-audio-contrast-text-images" + }, + { + "title": "Understanding 1.4.9", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-text-images.html" + } + ] + }, + { + "ref_id": "2.1.1", + "title": "Keyboard", + "description": "All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes, except where the underlying function requires input that depends on the path of the user's movement and not just the endpoints", + "url": "https://www.w3.org/TR/WCAG20/#keyboard-operation-keyboard-operable", + "level": "A", + "special_cases": null, + "notes": [ + { + "content": "This exception relates to the underlying function, not the input technique. For example, if using handwriting to enter text, the input technique (handwriting) requires path-dependent input but the underlying function (text input) does not." + }, + { + "content": "This does not forbid and should not discourage providing mouse input or other input methods in addition to keyboard operation." + } + ], + "references": [ + { + "title": "How to Meet 2.1.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-keyboard-operation-keyboard-operable" + }, + { + "title": "Understanding 2.1.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/keyboard-operation-keyboard-operable.html" + } + ] + }, + { + "ref_id": "2.1.2", + "title": "No Keyboard Trap", + "description": "If keyboard focus can be moved to a component of the page using a keyboard interface, then focus can be moved away from that component using only a keyboard interface, and, if it requires more than unmodified arrow or tab keys or other standard exit methods, the user is advised of the method for moving focus away.", + "url": "https://www.w3.org/TR/WCAG20/#keyboard-operation-trapping", + "level": "A", + "special_cases": null, + "notes": [ + { + "content": "Since any content that does not meet this success criterion can interfere with a user's ability to use the whole page, all content on the Web page (whether it is used to meet other success criteria or not) must meet this success criterion. See Conformance Requirement 5: Non-Interference. (https://www.w3.org/TR/WCAG20/#cc5)" + } + ], + "references": [ + { + "title": "How to Meet 2.1.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-keyboard-operation-trapping" + }, + { + "title": "Understanding 2.1.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/keyboard-operation-trapping.html" + } + ] + }, + { + "ref_id": "2.1.3", + "title": "Keyboard (No Exception)", + "description": "All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes.", + "url": "https://www.w3.org/TR/WCAG20/#keyboard-operation-all-funcs", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.1.3", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-keyboard-operation-all-funcs" + }, + { + "title": "Understanding 2.1.3", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/keyboard-operation-all-funcs.html" + } + ] + }, + { + "ref_id": "2.2.1", + "title": "Timing Adjustable", + "description": "For each time limit that is set by the content, at least one of the following is true:", + "url": "https://www.w3.org/TR/WCAG20/#time-limits-required-behaviors", + "level": "A", + "special_cases": [ + { + "type": "at_least_one", + "title": "Turn off", + "description": "The user is allowed to turn off the time limit before encountering it; or" + }, + { + "type": "at_least_one", + "title": "Adjust", + "description": "The user is allowed to adjust the time limit before encountering it over a wide range that is at least ten times the length of the default setting; or" + }, + { + "type": "at_least_one", + "title": "Extend", + "description": "The user is warned before time expires and given at least 20 seconds to extend the time limit with a simple action (for example, 'press the space bar'), and the user is allowed to extend the time limit at least ten times; or" + }, + { + "type": "at_least_one", + "title": "Real-time Exception", + "description": "The time limit is a required part of a real-time event (for example, an auction), and no alternative to the time limit is possible; or" + }, + { + "type": "at_least_one", + "title": "Essential Exception", + "description": "The time limit is essential and extending it would invalidate the activity; or" + }, + { + "type": "at_least_one", + "title": "20 Hour Exception", + "description": "The time limit is longer than 20 hours." + } + ], + "notes": [ + { + "content": "This success criterion helps ensure that users can complete tasks without unexpected changes in content or context that are a result of a time limit. This success criterion should be considered in conjunction with Success Criterion 3.2.1 (https://www.w3.org/TR/WCAG20/#consistent-behavior-receive-focus), which puts limits on changes of content or context as a result of user action." + } + ], + "references": [ + { + "title": "How to Meet 2.2.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-time-limits-required-behaviors" + }, + { + "title": "Understanding 2.2.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-required-behaviors.html" + } + ] + }, + { + "ref_id": "2.2.2", + "title": "Pause, Stop, Hide", + "description": "For moving, blinking, scrolling, or auto-updating information, all of the following are true:", + "url": "https://www.w3.org/TR/WCAG20/#time-limits-pause", + "level": "A", + "special_cases": [ + { + "type": "all_true", + "title": "Moving, blinking, scrolling", + "description": "For any moving, blinking or scrolling information that (1) starts automatically, (2) lasts more than five seconds, and (3) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it unless the movement, blinking, or scrolling is part of an activity where it is essential; and" + }, + { + "type": "all_true", + "title": "Auto-updating", + "description": "For any auto-updating information that (1) starts automatically and (2) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it or to control the frequency of the update unless the auto-updating is part of an activity where it is essential." + } + ], + "notes": [ + { + "content": "For requirements related to flickering or flashing content, refer to Guideline 2.3. (https://www.w3.org/TR/WCAG20/#seizure)" + }, + { + "content": "Since any content that does not meet this success criterion can interfere with a user's ability to use the whole page, all content on the Web page (whether it is used to meet other success criteria or not) must meet this success criterion. See Conformance Requirement 5: Non-Interference (https://www.w3.org/TR/WCAG20/#cc5)" + }, + { + "content": "Content that is updated periodically by software or that is streamed to the user agent is not required to preserve or present information that is generated or received between the initiation of the pause and resuming presentation, as this may not be technically possible, and in many situations could be misleading to do so." + }, + { + "content": "An animation that occurs as part of a preload phase or similar situation can be considered essential if interaction cannot occur during that phase for all users and if not indicating progress could confuse users or cause them to think that content was frozen or broken." + } + ], + "references": [ + { + "title": "How to Meet 2.2.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-time-limits-pause" + }, + { + "title": "Understanding 2.2.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-pause.html" + } + ] + }, + { + "ref_id": "2.2.3", + "title": "No Timing", + "description": "Timing is not an essential part of the event or activity presented by the content, except for non-interactive synchronized media and real-time events", + "url": "https://www.w3.org/TR/WCAG20/#time-limits-no-exceptions", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.2.3", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-time-limits-no-exceptions" + }, + { + "title": "Understanding 2.2.3", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-no-exceptions.html" + } + ] + }, + { + "ref_id": "2.2.4", + "title": "Interruptions", + "description": "Interruptions can be postponed or suppressed by the user, except interruptions involving an emergency.", + "url": "https://www.w3.org/TR/WCAG20/#time-limits-postponed", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.2.4", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-time-limits-postponed" + }, + { + "title": "Understanding 2.2.4", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-postponed.html" + } + ] + }, + { + "ref_id": "2.2.5", + "title": "Re-authenticating", + "description": "When an authenticated session expires, the user can continue the activity without loss of data after re-authenticating.", + "url": "https://www.w3.org/TR/WCAG20/#time-limits-server-timeout", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.2.5", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-time-limits-server-timeout" + }, + { + "title": "Understanding 2.2.5", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-server-timeout.html" + } + ] + }, + { + "ref_id": "2.3.1", + "title": "Three Flashes or Below Threshold", + "description": "Web pages do not contain anything that flashes more than three times in any one second period, or the flash is below the general flash and red flash thresholds", + "url": "https://www.w3.org/TR/WCAG20/#seizure-does-not-violate", + "level": "A", + "special_cases": null, + "notes": [ + { + "content": "Since any content that does not meet this success criterion can interfere with a user's ability to use the whole page, all content on the Web page (whether it is used to meet other success criteria or not) must meet this success criterion. See Conformance Requirement 5: Non-Interference. (https://www.w3.org/TR/WCAG20/#cc5)" + } + ], + "references": [ + { + "title": "How to Meet 2.3.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-seizure-does-not-violate" + }, + { + "title": "Understanding 2.3.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/seizure-does-not-violate.html" + } + ] + }, + { + "ref_id": "2.3.2", + "title": "Three Flashes", + "description": "Web pages do not contain anything that flashes more than three times in any one second period.", + "url": "https://www.w3.org/TR/WCAG20/#seizure-three-times", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.3.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-seizure-three-times" + }, + { + "title": "Understanding 2.3.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/seizure-three-times.html" + } + ] + }, + { + "ref_id": "2.4.1", + "title": "Bypass Blocks", + "description": "A mechanism is available to bypass blocks of content that are repeated on multiple Web pages.", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-skip", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.4.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-skip" + }, + { + "title": "Understanding 2.4.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-skip.html" + } + ] + }, + { + "ref_id": "2.4.2", + "title": "Page Titled", + "description": "Web pages have titles that describe topic or purpose.", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-title", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.4.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-title" + }, + { + "title": "Understanding 2.4.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-title.html" + } + ] + }, + { + "ref_id": "2.4.3", + "title": "Focus Order", + "description": " If a Web page can be navigated sequentially and the navigation sequences affect meaning or operation, focusable components receive focus in an order that preserves meaning and operability", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-focus-order", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.4.3", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-focus-order" + }, + { + "title": "Understanding 2.4.3", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-focus-order.html" + } + ] + }, + { + "ref_id": "2.4.4", + "title": "Link Purpose (In Context)", + "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-refs", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.4.4", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-refs" + }, + { + "title": "Understanding 2.4.4", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-refs.html" + } + ] + }, + { + "ref_id": "2.4.5", + "title": "Multiple Ways", + "description": "More than one way is available to locate a Web page within a set of Web pages except where the Web Page is the result of, or a step in, a process.", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-mult-loc", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.4.5", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-mult-loc" + }, + { + "title": "Understanding 2.4.5", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-mult-loc.html" + } + ] + }, + { + "ref_id": "2.4.6", + "title": "Headings and Labels", + "description": "Headings and labels describe topic or purpose.", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-descriptive", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.4.6", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-descriptive" + }, + { + "title": "Understanding 2.4.6", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-descriptive.html" + } + ] + }, + { + "ref_id": "2.4.7", + "title": "Focus Visible", + "description": "Any keyboard operable user interface has a mode of operation where the keyboard focus indicator is visible.", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-focus-visible", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.4.7", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-focus-visible" + }, + { + "title": "Understanding 2.4.7", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-focus-visible.html" + } + ] + }, + { + "ref_id": "2.4.8", + "title": "Location", + "description": "Information about the user's location within a set of Web pages is available", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-location", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.4.8", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-location" + }, + { + "title": "Understanding 2.4.8", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-location.html" + } + ] + }, + { + "ref_id": "2.4.9", + "title": "Link Purpose (Link Only)", + "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-link", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 2.4.9", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-link" + }, + { + "title": "Understanding 2.4.9", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-link.html" + } + ] + }, + { + "ref_id": "2.4.10", + "title": "Section Headings", + "description": "Section headings are used to organize the content", + "url": "https://www.w3.org/TR/WCAG20/#navigation-mechanisms-headings", + "level": "AAA", + "special_cases": null, + "notes": [ + { + "content": "'Heading' is used in its general sense and includes titles and other ways to add a heading to different types of content." + }, + { + "content": "This success criterion covers sections within writing, not user interface components. User Interface components are covered under Success Criterion 4.1.2. (http://www.w3.org/TR/2008/REC-WCAG20-20081211/#ensure-compat-rsv)" + } + ], + "references": [ + { + "title": "How to Meet 2.4.10", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-headings" + }, + { + "title": "Understanding 2.4.10", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-headings.html" + } + ] + }, + { + "ref_id": "3.1.1", + "title": "Language of Page", + "description": "The default human language of each Web page can be programmatically determined.", + "url": "https://www.w3.org/TR/WCAG20/#meaning-doc-lang-id", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.1.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-meaning-doc-lang-id" + }, + { + "title": "Understanding 3.1.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-doc-lang-id.html" + } + ] + }, + { + "ref_id": "3.1.2", + "title": "Language of Parts", + "description": "The human language of each passage or phrase in the content can be programmatically determined except for proper names, technical terms, words of indeterminate language, and words or phrases that have become part of the vernacular of the immediately surrounding text.", + "url": "https://www.w3.org/TR/WCAG20/#meaning-other-lang-id", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.1.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-meaning-other-lang-id" + }, + { + "title": "Understanding 3.1.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-other-lang-id.html" + } + ] + }, + { + "ref_id": "3.1.3", + "title": "Unusual Words", + "description": "A mechanism is available for identifying specific definitions of words or phrases used in an unusual or restricted way, including idioms and jargon", + "url": "https://www.w3.org/TR/WCAG20/#meaning-idioms", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.1.3", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-meaning-idioms" + }, + { + "title": "Understanding 3.1.3", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-idioms.html" + } + ] + }, + { + "ref_id": "3.1.4", + "title": "Abbreviations", + "description": "A mechanism for identifying the expanded form or meaning of abbreviations is available.", + "url": "https://www.w3.org/TR/WCAG20/#meaning-located", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.1.4", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-meaning-located" + }, + { + "title": "Understanding 3.1.4", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-located.html" + } + ] + }, + { + "ref_id": "3.1.5", + "title": "Reading Level", + "description": "When text requires reading ability more advanced than the lower secondary education level after removal of proper names and titles, supplemental content, or a version that does not require reading ability more advanced than the lower secondary education level, is available.", + "url": "https://www.w3.org/TR/WCAG20/#meaning-supplements", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.1.5", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-meaning-supplements" + }, + { + "title": "Understanding 3.1.5", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-supplements.html" + } + ] + }, + { + "ref_id": "3.1.6", + "title": "Pronunciation", + "description": "A mechanism is available for identifying specific pronunciation of words where meaning of the words, in context, is ambiguous without knowing the pronunciation", + "url": "https://www.w3.org/TR/WCAG20/#meaning-pronunciation", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.1.6", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-meaning-pronunciation" + }, + { + "title": "Understanding 3.1.6", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-pronunciation.html" + } + ] + }, + { + "ref_id": "3.2.1", + "title": "On Focus", + "description": "When any component receives focus, it does not initiate a change of context", + "url": "https://www.w3.org/TR/WCAG20/#consistent-behavior-receive-focus", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.2.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-consistent-behavior-receive-focus" + }, + { + "title": "Understanding 3.2.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-receive-focus.html" + } + ] + }, + { + "ref_id": "3.2.2", + "title": "On Input", + "description": "Changing the setting of any user interface component does not automatically cause a change of context unless the user has been advised of the behavior before using the component.", + "url": "https://www.w3.org/TR/WCAG20/#consistent-behavior-unpredictable-change", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.2.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-consistent-behavior-unpredictable-change" + }, + { + "title": "Understanding 3.2.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-unpredictable-change.html" + } + ] + }, + { + "ref_id": "3.2.3", + "title": "Consistent Navigation", + "description": "Navigational mechanisms that are repeated on multiple Web pages within a set of Web pages occur in the same relative order each time they are repeated, unless a change is initiated by the user", + "url": "https://www.w3.org/TR/WCAG20/#consistent-behavior-consistent-locations", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.2.3", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-consistent-behavior-consistent-locations" + }, + { + "title": "Understanding 3.2.3", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-consistent-locations.html" + } + ] + }, + { + "ref_id": "3.2.4", + "title": "Consistent Identification", + "description": "Components that have the same functionality within a set of Web pages are identified consistently.", + "url": "https://www.w3.org/TR/WCAG20/#consistent-behavior-consistent-functionality", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.2.4", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-consistent-behavior-consistent-functionality" + }, + { + "title": "Understanding 3.2.4", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-consistent-functionality.html" + } + ] + }, + { + "ref_id": "3.2.5", + "title": "Change on Request", + "description": "Changes of context are initiated only by user request or a mechanism is available to turn off such changes", + "url": "https://www.w3.org/TR/WCAG20/#consistent-behavior-no-extreme-changes-context", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.2.5", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-consistent-behavior-no-extreme-changes-context" + }, + { + "title": "Understanding 3.2.5", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-no-extreme-changes-context.html" + } + ] + }, + { + "ref_id": "3.3.1", + "title": "Error Identification", + "description": "If an input error is automatically detected, the item that is in error is identified and the error is described to the user in text", + "url": "https://www.w3.org/TR/WCAG20/#minimize-error-identified", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.3.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-identified" + }, + { + "title": "Understanding 3.3.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/minimize-error-identified.html" + } + ] + }, + { + "ref_id": "3.3.2", + "title": "Labels or Instructions", + "description": "Labels or instructions are provided when content requires user input.", + "url": "https://www.w3.org/TR/WCAG20/#minimize-error-cues", + "level": "A", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.3.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues" + }, + { + "title": "Understanding 3.3.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/minimize-error-cues.html" + } + ] + }, + { + "ref_id": "3.3.3", + "title": "Error Suggestion", + "description": "If an input error is automatically detected and suggestions for correction are known, then the suggestions are provided to the user, unless it would jeopardize the security or purpose of the content", + "url": "https://www.w3.org/TR/WCAG20/#minimize-error-suggestions", + "level": "AA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.3.3", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-suggestions" + }, + { + "title": "Understanding 3.3.3", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/minimize-error-suggestions.html" + } + ] + }, + { + "ref_id": "3.3.4", + "title": "Error Prevention (Legal, Financial, Data", + "description": " For Web pages that cause legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses, at least one of the following is true:", + "url": "https://www.w3.org/TR/WCAG20/#minimize-error-reversible", + "level": "AA", + "special_cases": [ + { + "type": "at_least_one", + "title": "Reversible", + "description": "Submissions are reversible." + }, + { + "type": "at_least_one", + "title": "Checked", + "description": "Data entered by the user is checked for input errors and the user is provided an opportunity to correct them." + }, + { + "type": "at_least_one", + "title": "Confirmed", + "description": "A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission." + } + ], + "notes": null, + "references": [ + { + "title": "How to Meet 3.3.4", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-reversible" + }, + { + "title": "Understanding 3.3.4", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/minimize-error-reversible.html" + } + ] + }, + { + "ref_id": "3.3.5", + "title": "Help", + "description": "Context-sensitive help is available.", + "url": "https://www.w3.org/TR/WCAG20/#minimize-error-context-help", + "level": "AAA", + "special_cases": null, + "notes": null, + "references": [ + { + "title": "How to Meet 3.3.5", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-context-help" + }, + { + "title": "Understanding 3.3.5", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/minimize-error-context-help.html" + } + ] + }, + { + "ref_id": "3.3.6", + "title": "Error Prevention (All)", + "description": "For Web pages that require the user to submit information, at least one of the following is true:", + "url": "https://www.w3.org/TR/WCAG20/#minimize-error-reversible-all", + "level": "AAA", + "special_cases": [ + { + "type": "at_least_one", + "title": "Reversible", + "description": "Submissions are reversible." + }, + { + "type": "at_least_one", + "title": "Checked", + "description": "Data entered by the user is checked for input errors and the user is provided an opportunity to correct them." + }, + { + "type": "at_least_one", + "title": "Confirmed", + "description": "A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission." + } + ], + "notes": null, + "references": [ + { + "title": "How to Meet 3.3.6", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-reversible-all" + }, + { + "title": "Understanding 3.3.6", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/minimize-error-reversible-all.html" + } + ] + }, + { + "ref_id": "4.1.1", + "title": "Parsing", + "description": "In content implemented using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique, except where the specifications allow these features", + "url": "https://www.w3.org/TR/WCAG20/#ensure-compat-parses", + "level": "A", + "special_cases": null, + "notes": [ + { + "content": "Start and end tags that are missing a critical character in their formation, such as a closing angle bracket or a mismatched attribute value quotation mark are not complete." + } + ], + "references": [ + { + "title": "How to Meet 4.1.1", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-ensure-compat-parses" + }, + { + "title": "Understanding 4.1.1", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/ensure-compat-parses.html" + } + ] + }, + { + "ref_id": "4.1.2", + "title": "Name, Role, Value", + "description": "For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.", + "url": "https://www.w3.org/TR/WCAG20/#ensure-compat-rsv", + "level": "A", + "special_cases": null, + "notes": [ + { + "content": "This success criterion is primarily for Web authors who develop or script their own user interface components. For example, standard HTML controls already meet this success criterion when used according to specification." + } + ], + "references": [ + { + "title": "How to Meet 4.1.2", + "url": "http://www.w3.org/WAI/WCAG20/quickref/#qr-ensure-compat-rsv" + }, + { + "title": "Understanding 4.1.2", + "url": "http://www.w3.org/TR/UNDERSTANDING-WCAG20/ensure-compat-rsv.html" + } + ] + } +] diff --git a/themes/cupper-hugo-theme/i18n/en.yaml b/themes/cupper-hugo-theme/i18n/en.yaml new file mode 100644 index 0000000..3db3cda --- /dev/null +++ b/themes/cupper-hugo-theme/i18n/en.yaml @@ -0,0 +1,28 @@ +- id: skip_to_content + translation: skip to content +- id: nav_main_navigation + translation: Main navigation +- id: nav_button_menu + translation: Menu +- id: discuss_show_comments_button + translation: Show comments +- id: discuss_comments_disabled + translation: Disqus comments are disabled. +- id: discuss_js_disabled + translation: Enable JavaScript to view Disqus comments. +- id: dark_theme + translation: "dark theme:" +- id: table_of_contents + translation: Table of contents +- id: publish_date + translation: "Publish date:" +- id: last_updated + translation: "Last updated:" +- id: tags + translation: "Tags:" +- id: aria_label_tags + translation: tags +- id: search_placeholder + translation: Search by title... +- id: search_aria_label + translation: Search by title diff --git a/themes/cupper-hugo-theme/images/screenshot.png b/themes/cupper-hugo-theme/images/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6450c2a9b55af76b9398274874aac78034f3169f GIT binary patch literal 137593 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

2#yM55l!j|7Z<-QMtQjn7i4&1~t~YkbMi~uE~oY zxa(eAn-PB``2QTrFAlH)EY>j)_YotnzDWE9nsMEAwzr;0AsXOPB9RX2Nn<1}RnSTL zQ>pO07vNuNevft!sb?H6EQDFhb3tzX?LT9DZbYlK|2ZhZX!yB)@>|Fz{Pc zZ2fv=u$l>q()W1!^#=hjP<{B?k&TEx5(#O0m0My!o|dG6 zNrQ460x&ECyrDosTc4!i$OzP9sd){alEW1d(Pkl~#~>#g!8^Kkwy;gkGqZ_*1p=UA z=;on1afpX|h^|Iar5nf^N>17f-Q;s#uxrd@Xs6ftP=ZcC=v8|=5W3tD<2YsH z?k5N_48OVYH*)=VW4?b6{8ixb@K7?&AXtq=1fAp?#Tzo-XGC$=fn_^mLMR17n+3Su z&Yn~dcgdG{M$4|@L&-A~dkx8WK--whF}+A{l#c{P;NOH`6ePxrDzS9ojd+_T?+k%z781O}rNCb@2Bf`{m8<+Rx-2#)MMP5*57B4?@ z={&Fw!&8~jCqeu7vZGB#uMf%ayIln+Wr4XRB%N8d3Os_;o=b%h`KG&$T}9~U3!wv* zAiB+z-vzK{l4q<14!#y%7=yMzGswVN=K4~5#Ne%a_D&wY7Pbr05OD}k(IcV`YLRPd z5u|z3*sZthzn-$oK|L~d?Gf_YSXda1mZvmQu3MP<@gX=>)-wpwLKcMd#hug{B*LFL zigz5JGZ~{uKCrC0Q5elAFJ}ZL=3!V!6er0Z)EW&;v-m@1AtD-f19zyDrIkWRy1tyN z$K1wUN~QSO=6@M+5^_?J$1}3qq^5J+QJn3aaj_(i4MBj*^@PrjhEKoSeMtAKMHV9P zJx(jehcG_{uUFa8H@v18J;okD_mX%3QhDDK-@Rn0XrE^H`dvnM1%PVR0`KPu)-Ut2 zIrhsT9`otUS{ST{em%@uK-=_Y*Tv8m?<<<{disUFt)=7AKya`;A0`|l&# z!kds8Q9JDq2QzkkAW*>Z4znMGU^rs+Vw|a@Lm&D#7}L5g9PZS1knF&hQB$uLgr8ze zT?3$=xoz_Cs(A~K$L-M6N!_laCncDQ?7q)At}@@)1(^aq*uN5zJC{QBt>!4P3`zM| zmS)lwn@iFO%q5^xsyWE}Um3CVT~wmz*O0@>Jv=i}Ao^>QAyc29r5e#~LD^GJfA;g+ z_ZzjA-wUhpXwOe(MUm`6K8dDH0w2bD(*@IXgxI5OYI^C0b}oAueL;$bWx=aq>~2MY zYYr!G5YDxn?GZWL;tZq^gPS&I$pt@1E?bobV)ineK|(u=LOrTQPvCfo8|j?SPeF+< z;u_}-`m?(b8wfy@ddYofvGE|OmF)%9z~mj)-ixf(DYv^2F@`%2q7#qYo82glH`K)l zzGWzoI~*~_A>t2g&snevLcnlFrAtk`mSe>)oNy*m+y)Mmhq-SDqzGrBtQ9$OAXI38 zP=}~SsmJ#KMvWVjWJty5zlMCx9A3={pbE5XzrDPCHEi~@dbRBQ>(#UW!~b=vBU2wc zhU!Kt7e1pKp=7H!Z%FvHrbq{aXj(R`m5k#&ehjB}RLy~|KJy3BxJKO$QuqSNUZK#n zkN3ai8opI{>M6;IyMAkqe)@m3#c%`P%=;|s&96-a3?gN&exL<}w|YA<*!W``IWZ)u z%ZpZdxu*q8jc>eomf_uu5Ul(+bO%o4nRisa7#diK;6Hn~osJ_w?TcK)z_q#%)Ns{N z;^T;bs#>R;qIc#^t{9~V5<)0N!239NyL4#Qf@sd9gi@r3iK73rtL;_cL(j&K5YhRb zO^LgD*IIQ+{&&#QB7ez4Lv0>k;W{2{QK?5mG%AD(P; z=|QeD-Ye?S8P2s1dZQrU-D%TdaJZsPvc%T)K2HIRnE$x_{e<*PzET-=T(~Z;FjUqo z@~+w(zP?)sUvyJeSHW91cKb;%!>PH_(UaxBjkOAY&re?r^ACkt3Pi}3hf_A;s)LcL?o9dmz%bmEcvCsSHd&hMjHT4=U*sha zn)2IKXafzNObPknOMQe0yKz_Mq2++S6|P}p6})%JUCKB;G7`|N zqyeI-!K1Y&K`5d8{#%~|k?7wH<+t(6J$PLz&`L4n^;av!zaKCS7?xobMuCqWiYgKi zerq2KTh>4>+Kz2-nL)FP!y0svCtu~fQJ?yrXSy>0CCspr=ugU5K>O2>RQzwo0Lf9a z?cuWGe)yg#-iM{s{%{+lUvSKqRuCm9 z_h?*v!69%Nsoy1)AAZP}k>1p^KXzc?U~te9Na8sRPyfbQe!JA?X2hZZ>Vw}+B=Y8f z;?*3a1t(?itc27^W6LOdX=oD8@fX`T#2-GiGs4|!^=cY*A?aSOm6p`crx4BGJe2_y#Zs`{ng1;JkBG&C9FDS^ z>5sTPm3Dfpa&XZ)mpH@dA0TpF{BZsfeT1N>%1gO4i|x7gQ3vB#z0aC|{qVK6ARW&= z7vi5Yq1O@Zvk@r5%)dT8$KTsQKfemH2!Z3LPIK9Vyt7@dA(j!M){ewx?4h=B7v~r9 zm~lssw(t5KW55SHGC}GJN2y+w6a^gHMmRJ)Vg|Y^CLZGp(Y`yG&(0K_>jS~yQ}-65 z!`-Yp0#?tdIzRXY;g1GU-edN6*MqNjJP(94>D7o~wDNgG^o~doAiJUgis+Ozh=;-) z^_<0FWA8!@Qx9FMf(8(SP<}6dB*y#_X)PZHs*?yrr^H~!9`!08M!yY!pUDSFcktfs zb})sWk+4a`OL5Oyydr9nUjR44#X}_5S z2tOGz!3nYcAMLoS;MHEa;|~pMxoks8h}QeZ{JY8c5y^nRwE(FLfarn_WL7P)y`%J= zkAde2L_jCs+x}ZRwn(3ZVq+A2=7t>bJXf6NDc=4hoU0$de)GWeF34j|&_Fuwy#en1 zDCfckUz5#T^>uOkv5lLs-KLl$cE`KOcN|0=ZRFaT=0T@*V`C4NxrGt z{h5`Pk+qF99n4j1&n+N@S)|)(k8ZL29VyE;Fz%EHX(j}!*gz2X1Rywu4~TrERY&LU z_pI`baySRC=M#U)MsJguML7ZY6&NkI#T7P(^rn<^&OVO8yq^VKUpVbTy?Tg$$UQHx z5l5YkNm9W3X|k>7N}v9?B!k^7{n+i+dy&Dq>y2x(ea9-2n$oHcdPD#gfmB020IH~R zh<>?s{GaBEznk1AdsHan!Hn&U>?;6%4I?@`D1$~44S}#-$_p@{&fPZ7ExtCEQAg(e9(*qBEezIc${9td@DhCCra~iOTKw+4O9c@#4nTd z69bw6zf5%6JkuKuxp)AvtYDmk~w_0<^4v8fpMF9;!bqO?Evs zSI}uCDf={zO9g8_Yf)kPELd+DejF};j8jJcRd>&oBDt6Kn~<(JNhF3JJnk`VCW5(; z-uet)je{A5j#{4%*#-wE(; zCY`UllYAM!uZ=-EiHyNRdPjge9dA zqLjpa|HdCpL9oLf7v;?>0hV3pJM7am8J{IU*a|#*5Xc%?!shvsC4*8@9x5Mak#0Bt z`O0~+RoI_?nmVITzmug2M5ucO;FETm`E|e{l(Gu5J{O@-9qlpBW)97_mvc(T74XktEP(G9Uf#W zKGI9KvcVzDAP4-}M#{TUL@hP}G)Lms$AYOKv?=gS=B0c>mMB34Y%`wy+TS4~_6+#_ zH*={=Idnu{jZ6{N-6+eHd5+B1GF3QDX{W$MT4x)T(NJl|0bx)S#*3 zi9Uj}#Can%ZJ8l!Q>|l^=(&;|8 zy`^x-Hzo@Y_2f$d-;p+@dqPN?%!a2wFKMHZ<;e#rZwR{8#1xU9FbQ}UtcJas=+kTd z*IU&-WV7DB%lt?&Iih*(JEy!m=9GWTV?^+al&43Wg=)nf-15@5cV6_wovXfQ)URI zSd+`Q=)YFjMBcx>KF^5I-x6Zk$5zi-My^Y)CX)IdU7=qcn~d zv6JmT(PtcKmZQ5_EkbNc;==x1>-A!8UJKM`Ecg=S$OtJhXEJE(YoyJW~+%|2Qq zv$u#}8S8id9XQ5dq~wReKH?<8j{XMefppj$erreqk__i?VhgmflsGfCLSd3YxyQbp zfmb183)->wHUviIi>`NM84u>*?I%BJ;xrXs+g}p8WWa8 zhF|QyG&&rqmgK0|FAI%mH3*O4fl#C7_fCjqd!$H3gJkKZ7ZY|KfRKYGH;0z<_O4ZH zz@SCbQbV22eCAkh16~u77HMCH*2UL4MUyrQS-bdc_=`}GGw~9{jkq?Uy)O@Sw1RS> zEct9&3&&^%*%}~q$hsiM z6QFE!C|_K%|z@<(3dHeiq2 zy!i!E;%mi_KkY_dChe!0k5KMiKw5*Gj@dOF2U~z*SVuS2PD?qIf`;!NJsHxrZl#-liSdz~#a0*MvS!%#X7&q6PQ;s;mh%ieGJHQJ zJr?>n2a!Hyh-!=v=JIP#wu^AYt0lH1f3zPM9l65NiFDZJ|8VWo0A=Jl%ZCwaNVKjG>DMD{N19T{ zLZ>3CK7Tqd#w|idOMsr52d>Q=LUr`MR%pcsX#3BYl)tSu+v1frNka@;*3_Fai+m$O z*h>h{xh?&JtZH5)v%jMawI~SXUoNgfb0uG^s2J!GN$*!lAlyf z;>V2{r>5&sKwLfxI&(!U;_6nk@aOrB?N4Q+e!|VT@9mqu+?>-l8|6%^9Q10;Z2KE% zG5IwhsUlLoS0F;Z5u_;f)%qYiWx~eK47vVn0mJz+h0Ba3?Oez(Qco|JTaqz6564RC z7o+B6uaNJ5Hb?bw{rjWUDB;+T^U$v<(skw{W^y^nhD04H7fox&it2QBlC`HyUF!{& z&{h=6`tf$)j$P53Lg{n+jHb|h&Qqu4#)`obRTpF2UJyU{F{ZJy3~-uJx%(Qsf3`ZC z=m;k4Vcus0cF*iC&eCO>RhC=3&y#M3jkBzbOs8tGGZ_@3oRI!N7?-!?ggNC0CJ8IT zxv^lTXm;WU?fBK*y=GUHVrAwZ5?eiOA?!9&Les>y;l8#H!@S4RpekkM>qyhj#1-FyNC}yT=6;FZ$$Tt@IvLay+g9R5vK6~GvFA8Z-Q7&Yb@O$pwr*O| zIYnR9g})|GdCgeZ60cVAriI+H_X!!A^vIY-EpR7QSX=s^2?tpHcS(hXeij_*mS3LjM3#CAWBskd8-#E^tUw~H{NV@ECfK+Vx{I*#7 zQ3|5oPd0OSx}LoV>7_Du(TPyxMA3hMM#wSt?s48y=K|ggA7j)U{s3HihW=BMl;c$P zS|nkiMiVyZb~2}^{3PzuT72OIH5V~~4cSKm`Y)MOEI9pbHJ-}Wu(w&BP^uGB_)d}e>H^F14u9aJk=rs(SzxvN2ZE zJ5idSVop}GW!Xm=#^6WX*I1EUW7$b!)0{5e?3g!> zj|B5m)+H9aizi3UbjgLR;&q2zb`=DtxB$Q%or+QuepO)ki>-< z81KZ|C33^DsoRPDc&{KJj_|=Q{>};kExkT5YCMwvc#Z2DQ)a4j&jDp9LFW$DD-$!fC}%UC5sfr8^-C!I zf%sR=?j80EScrd3kIBhE{41qOx>z;6ISPwZhfG-bsu8&%Mm1KM+>xhRmQjNSZGtw= zcpmDa<l)(ebWS-Xgxr}?<|1CC z#G>Ry&0JRNJT^?dNT%&EpuBNSl%->kcJPk9#uR6OS4L)m(5Kt)tSV~77^_pZm>Vo; zluk=>Vw0p5`1;YOZhz9k8>Z2DB*x*p3qE1cCu1}ePut-h0k+UAdt&O8Tla95Hd=yK z)Lx&YIBH`c&$Kd8^Hc+;&VI6r!ucR>hEe?bvF&cl==$~H@T%zUmI?GP=K=PnBv)p2 zQJ;{TZCdtH?SuNgLe||=h-NABe(I)-uZI15A#0M?!^*P5YAI8e_Wsm@o$((%e#P>a zE=%j9{8B#=GBbW)&@Wg#%By8?jc~5Jm!zQ08e67A<+$%Y{u<_KYBJu?XSp@>4q~e2%aWe8}fwG}umWz?DIfE^dh4WSAn75Mb3))?U3jA)P zml`fIMySeAF4cUFTPfKNEOmv`DzfklS%zL*l=8bDE^8SYL%u>WBe%CP>Q3lSc5+O) ze9Ae%702zDN|Fd`KdRk4j>bv*s=XpfvDSy-2=_KTM5_JiNXB5#*rzfy6^Ff4zHr^3 z?53G_0I_t2)NS+HfPG@7iH=GAwtRCxH)&3Z{7=lL8QX<|mmQ`gR%HK9x!5ioM~H!R zTL#i> z$m4$8e=Z*U?7SRmE+hbbe>twK;-Y5={=|q*fG*k)?U3OPJEbOh5;gRgdxzy#4S5vW zjWx%TUI|CSgN2gy7AbSe%oW{tJINtd88a^!2fFc-yPrRe#c^YqSlqR)J>vIHm>WKq z;B==mTc<#?JA-YQPUlf1cEHt)m!V-Qe2qMu&)}(4df*tdtca4ah;(rqeF+PRxLf&& zBPl@7#DhJo51nC2;0!$4zUJKqQ~GT(mcr0ARRtR*|AL6BmUFl`o~0~`mNrVKrL7(^ zvWPp24ESAttziQd?q0DIx}G1y7qJDGp8G^_ia9;RPZJQy)xb=yVCR@6Cy-Q18Xw`! zu?`t(ObvzmIxgbQfyC&#f;8#+)ol z`{=nd{Tri^jPx#DbkwIJhz)@(IJC+z2k}!p9CwE*fSXkrMzu#x*`ZbWWJ&IaPH>QV z7SvOQ>vZGa33*db(vP~a$UPbE0-w7;(?0ML*lhk@n^IO_{Ni(Md8fapcj|Y0Y^H#b z(Nx}=a&mv^-M|z=Y#~JvTD*`E{bds7T>y4Ix(Y z+vDV)?EnBvs}l0leqoHYbosbUclWs@r5$;{6R|+&@~$0q))N!jXc{>Ea%4ZZ*X3`6 zYzlzgC%6QB`{VO%q}f{7AWg|1DTus{w?+y@`+_CW0NnsZw41#Ai{idN$C+!}SNwx)M;lCME zEpinYPDwK-yQlviK9Qp3MsS0hwclKA-<+yeU*Ty(V=9+TMqgtzBV&1ur1@RkbJl$# zxNbY`KO1MJY|%GZnhVZV>*6Jmmwg7dkCwH+z|4;&u!5S(oBH+%pcxAmfTr|9qd!%gI5wVXa8|{v^B8clSp<& zrSWe{qQr2x1Lp@f6(r9$U!``+iLa-BAdG%4gk_V_mLar^%^POcUX4RLuSFWp7qu}F zcAwcd!`MAFGl|dML(G^jj`A4a%}>#|xZ!6hNp{3zTr$cYlPsU4N)p~2A1qcrFZ`23 zzKrIDG>W@3GW4|R*ypDSVoTDLM|&J{POuYE_9}Ls8sxqw_J9g?hK{@S40G0AXK1~e z^~hECFV?+BeWTJlIP>qxoBmwN!gF!zDa#l#5i>SdMi|~pC$QvRq13+vQ6bUhu~<)K zc};qatlR1S245rLQ74L5p*MfLSEePbTWZj6TIlhGq_QE~P;MWkg<@D7YfW|&ay0j; zG4l5~xr{ZzgYMSloS?z?51H7JYe~tkR>*#)*-Qhipb5Ui9+7JQ4`XivP37Lck4w93 zDK=Y%%tITQQ|3%3EWKqvy@&%P zMkW78sf)On)CT951Y&0FjaD)eM{meha6Qt-W)+-^7N*hq6jk{7ToNLpj;1=$wYZAEh5??mu!_$E3v3eVv_ zzeRZvzqXpZc>g3?pDCM9=WE)xD? z1!Q4`9Zupy%dUcDKf!MY#tNGPKDLUwMUqeArU=4|J25b)XZ|8hg*?(b)AlZqz4=@jf5X9w#&-71jb5GC6ij`3@l}8CU+=PiN2zGr&yvP19>h{lm za2l`4GbuS>7~ZUftz=Z5A;*j(mN$PIp8m;xkWU%| zhHp||Czdk4UX+VZ@1@HK&U6T?o4@-?#H7#+zr)=H+iNw|w{?m3?{JlSkoHmaQCvtq z;`KIG!PQR+Oa5I6qP(5!hT#=ji7a0pOYVq29@ycGT(HE@YxHyPTx6l5`0^JpUQ9_9 zeZQ`rhAXsRVbTF;-H{f|3;SJi6~CjdUGTzlaaGA0%_vF81*I=`Drt1g7utG4>>;O9 zJL!rzAn2NoG~e(mxyZt?k&$(k-*K4K2Wh}>1)Z-nt>T_38hx}HcFHgJ&5(H%Ht!AK zYbU1#6|M6Pp?6!wPbD<5&Pp!gPbSV!At%s(RY5sZz}7{%#}g$l$|iJK7_e;wu|{@n z{>jbgWGpI@$2GM`klBx_FU7DJ{R6TE+JR)o4fRAMBZ6@-w1wGHez;_d{lMcmk z0Z6K=9wv6OXUw8ZZruG5MOOn=bX1jXdkCV4{=yX`i19ZL!-4_}6w$o=w@XG$dGI7T zqyX3bVD4|Y5L_LSoxEVx(+`7)FqB_Y|W`d{41T5Wjxm zN(Pt1DCyw0R-%mCjQrxi`rgTUq?G6}~ zN9tR8SCQz(NwOTShI>(}m4bJZu5TNhg(GvpJPWnKaN16Dd+#r=V{46SqA*0Ho8I!q zkf-0j>XrZYzYB@OkJ3Rqhu`9BP?)jKC(*dd+kg_jWFv=KR#-^TLMGfdm~N7KgYW9h z7>u{x0qhicW1HTm5PT4%O(F?lCnJEb!Dl#RhzI$|BS#Lmu12nLpo#PNn4C0xik6-? z)b|voGbnR%Mi*^ogmGjG-44Y=wPo-jLpWDj8-rPknTHo=q}}FPB8TU$bvkf_XCp)U zf1}+vFo>O}@mW~0p2C8u10jOshf1L6Iq~wxUy=PhF}?D2;v`lJvAADV1$U$?k>eOg z9>3>?$Ob%caw?VsK5#}sD#rFcTdIVx2e4WywYXBt;O=bBmoYLD#I@W(PzFJ9W*>kkPBlJa6yvO&i_tExf zBeY9xmXJni06q&W!O;HuYZqb-;xnPmxZy__bG{iK;(@N47C!}Za_fMH%-0aNn?LSZ zdc4lQn1}t{?S#v#Vrx>(YxCSINvMvAj-Rqz-lu|gmZQ*@Z`;_9NAOdEMQV4|a0{Y9 z>bVg1q)?WDk;*IQGoKqXoy$TD42!_IfBsmBKWm8~qbA|l_(xnNZ`=G6c1ixPQK?== zXB})f{Bo{=UUP>}Y|zfF_MUMcezXLC3uq2LA%UjF#`O9dCmheV^Na0i6+(uQB_aPc zc!_2L6`tEG*HMjV6+1KaU{(`@F26ui2F9GH$wk=`p)5zQOmF#Hk@=vJcT1*HZ3`*V zG1Tlv-!T1<_`g^bws(lKyin_dSaIKj@n)Ll9^<~dVKkpjR&}5 zAFLaYG-llT}$>rO(cS(~|K~CoPcNW^`;1k%o)q+ul?ni`I&6c`wG7 z3BNP(E>&T#u-dFWqbT&1c3!Zbd&O?hF2wBU-NN4x3i)&??dPFaEaM|SS&7$O$+~x5 zk?9O+wCY>QItt@5r-i_$yBdO~WF8oEy)lam)ab#A=N$%77>CP<1idiUk@4sC6U81P z8im-lzdvcd@5hL^qc5o)Z^P5WxROW@U%2zNKXo6i@!7O)u3urWr~oR zbF&b&TPmvy+GQaPZESL-9Zk$M^}(5MkJQ`k8U3OP`1HfuzIJQ<;79s^96vd+w^F+-i001@=cJi`#A;8Ddm~k z7z7-od=0MT@j9rQYBc1!(p?=LFC@kv|EYWD_TO9pOY;IDpAw=*;S5jXj2bPmuHgss z1}~c@RqkVy?<|~OuVw$wX0rt>6H>Wzj9tUwRH#&VJ8;t)AkOr|>3JS2cPmP**^ulN z$Ib@TJgb?o{V27cNCh76CV|Vh$|9onH2u=#ahmc%TMqzAy`w0ej48^ z<8MnA%|S-|729R9DWBoVp;qWGCu@}8h}1`;#kHndGLUowfE^KV$v|`>!o$QjA^ebp zSh{w(NENknlKQT(_+^XYLv+k^Ux%NsBH>Cx#!#ZZ=^Z!X{}I5XhvL&8FjN--C9D56 z*JcOw1DJ-`wu80-HXW-Gg7{huo2Djy({9YagB>--G>=`FP6E&$A5o*RKU^Q}o{`QL zNKXKJ(%feG7_9v)ub_-B@~HHVvCDnYVOJLvO5FUITmg!Z4s!pv4pFvt5B!EC(QM?l zNVD5QS_O&ZwE_dNAp`^I+FVZ#PDb-caXXprmrkR#Q1~}2-b(ivX_YwtLwkTAq#Uv^ z^01(nT^4-1*5el$?fcJ5w6!{niK*kGRBQkmvEmkY)-y)`mbTy(uh`1)X1yb@-s&G` zN7IJhT&P7m@qsjqp*~=;aJs=5dEOm^=p*j!7ZtkKugatNy^eN=iXYE?lHi)yop3XpoJ$XU*Z-^K@F z+^Jj-1HSTv5b_fs2A>8M3^Tn6B*^*R$PPAC;wHbKcWqRb1r3f??@zS^Tm2KIIeLng zW)Jv~RwPLzt`;-19nVv%U1^oNy5M(Kq)18ncsP^~X`&ptUSxzPU<0Ud#p-4cxY%f7 zj52zp=%ZXHucgVTN;lLzKJfUrHS=o$U(1FRJ>1%@u;CuEG5iNpQiG$-)79*1zC=a( z66j-yU9f0^p5jyb6lPR96&_$X3ODOm;OjBi4(Ly_%;Pa>c@v}wR`yQcx+K{dGZi9w3^naI~37% z5)L<8+mRDHu6W26GlkK+!h#Ra(9iF#j#t6gm}2&J%;-tzC$Z|O4i)0EVluBK&C!Cn z@T(3#U_bL?Q-vHPYbZMnx9~NDo=^41tgF zm!MbD1Y+4EgEONahR}TAFVcVmLm}Xjwzz7y22m3Bevu-sa2UgqArPDQ4T&7@7%Wgo z+P2*Y5E5``1tOQyr;KAc7g<>FA2y&~seJ0HfzQ$71VrZ<2o45&ix}dHG+xU?=$CXP-SLX{)gBCcJfeKUejr_$`o*atA= zrv(M9U#|yXV4@lB&${N=%T>6;w`bl?BE-L=Xm3k*>NM1tvVME;FQ(ojmJ16^TJYeh z@D#Y8JCF~ZFW6{nqBK_QUcByH!FtJ%epC3(AkxSF9if2ZU)+dBf(SMH{Xw>E`EF5^W<{v zazW$7D>t6JjU}7z<_{e})JG!_GgS=eyDeVbd+j#e!cYIp$!iakXt}aB_B_HxAhHc! znou^e*uU}N#by0?teEpHHiMg!MWka{EUMYyWHLDl3Sz(z4VbX0fF&NHaoABE%`y2x zVBP_~mdvcj7tkV3{(`fxnMCpF^QgJ70Ak$MYXW14cZL6U)AY4xl0e|NY$7(hlKq7Y zf#3I5_@hNWs_EG5HRgc@DjHpDjvFd;f_hDjU^{}%flErqi6{b%!-a1Q# z%%LHszi`C!IF)g}UjVeqzh_wUpMB|n=&2G;&^^)EZ2*lRzDcs3%+6;t^SsIYYlJ)T zSjF$+M-3@K*5PHCWI^6iJaipQ%$-Y`Ft<3JCvG_4yyNXZj2LC-0{)F2wT~*bWf4kVQ~3QpDYts&ARN zEScDTEJeb2H+4a4so74Y*{b;$m@qu+mXIp}t1?qYRKcZbW}HSxW2tm6fa^D1z@tV0 z(rSWh@?E+HPoUim7Yl|jkI*JiN6gRM%99I-@O9>93ATMOoitRAQsTRBu$}N(_bD+R~2Sn`Mt`Ju}l$pD%d3Y7D zgGFl|wfF7Wn+F2A>Fz71KeD6;Wz!8Vxl~^1qj+1RmGQHGLy}rXfonkbb!QsH@@AEo z?ZoOS!31$#jA4QXqK(35De~Mkj-d}Rk)uJqLEWGMgjXJ6+=ED#)cs{Y23O(=FCaE( zS=uJGN{N`lJU@UuH793h-ans|NPJ2Eqz86>2ND%1?^o6`&CmZD5l2-ZS} z?6+-tP9|xS4{tgCj_o`b2I`AUmb}2f@s|I6vjC&N&RJeo%*AAW4q*w8*B}WB6+V0w zxPeD73dF(eeEZ(ZMH#@34>o6Kzd+q5NXLogh*LM=5EwLDcSuP*jrKEidYK(IdvHv=5coA@G3et2 z@HsFj77_cM<5k_+ic4L7^{T!XL@;R-#@{>w)@)Y*4PL$eVc?6YueCsxgtnkvNuUXc zD7i*`o2h(+qrTMy2$Xr1Q=LVDGNF)$2WojSV|Eedu?0AB?lp1tCB=nL*;XIhevVEp zO8ws<_*snF^NE*IH}N-p~QUfmgDmGn^60RXC>93uF}Uu!*HX4sxux) zl|Rd9br%~WvS+>!zJxBw^1n&gw>F&e9EG{01q|H!Uf@~0bsW9m z3##xhj8TG9DiPdX!QG4ZGUfnBIrTuyQ(~kzz@$7VhQBu-JY-v^+M)F=aZnMQA7c6O z?-T3)3Jsnhp@jFBRYoa`LOeox8c^fz$vhp34VqX3QUyU!%4~v!>V|LqSiOOK4o&<5 z5M+gP7qwv?Ff*8k|AGh1<+lvtEf&@jgUBTQ28>VxW%Ig=S-zG=Cji3P3`)xC@UaY# zI~Y=7w@kJfL>PL%EZYJ&8^-1LiJjO=94HFgIiGfW0Q>C6Xh^^Ki{=`-GR?k&O+QMJ zKWG0bov9aif^R)zB!3nLo<%@tVff`dBSeD@DC9t5`~mn(&PVvLMms?9O(1JYYDgQl z{LC-z81SHPWqGpH`%8;{s-i;>2`tg1&_zV$A# z02_{(fK0&eTXB?fD++Aj_5xAO<6fnSEw(05wd|w&MV>KTXe;;lc=@U5Z-8v?LIUsR zMZ}`RO~$^>FLZa!pSW%`;JxD{>f5UTknhCCToOn|&akZ}Q5m)VG~dj!Qpl7@<2#^7 zIo!qG{cl9`_ryFA-&=!q9p{{#AD9(NwkHxH)F(SzJjwkFTd%3|doprXriL9E;XH7zlE8$k9k@O{TP*Jshi ziuDp_Iqm+ThNKj~s#1suX#}`2IU%^9%4@XBcOgYyCz!I^(`j$sa((Ty7-E!D4KW3j zxD$!|S=-8M?vuw8w}I$bY)GufY)DmId$&3OTdQ-e3P*62Q*`czJB+bBqJ~#4M2a5v zho65vW2i7`?h-f0yzgOxu@~ybpGjUvo9TLf=9{dvKOz~M zkDmnMwOhXk#`E{O_Z$h<2tCJvF!R@!X6Kojmdm&zN897@i6sd2>uV_X2!q*HPw7!2tzAvps>83wNWk{rl5}k|AaMWqbDsgx;K{m!s{cYf#!^oo@s3NzmQMC% zLcYHQ{7*kbBtcUXFJJQCO`>k_H2;p#zJC*ZKsIdK3DS)konwQJOam=s5F}q7qGA`8q#qee5ps1SP8<3Sjd$z@HNKA#mwB1 z*Y9{BJz4klKKe8C4hAnnb^t+@DL5%dtbRSLD5*zFzsS_1`1_TcMd z0DJZeZE+>=4~Q!n(y5{?O=O3?dPwhg{0M*H@DF4B*TBC;fT>RU0yza_44$P|Rv{Mc zDraO0-|0EVOX;>a2Mhie&lNTBHo8;qvJW#G95{eETd$&EjMFvG?<__Ur}@alQ2 zp|>D#KOy{2FBQBxCFs3IHO0yVO2Bud>HXX%LjGwa`k2A<+*!_A0~hE+Z(qaiL%}~? z{1v+Rw(tBNxS&uTjPWo{QZdJ$78*Sag$w37Qa`%C4G~WdP3zab7=inLUX`KXe#K<) zP~WcjBH}%8!Q@SQn)=5T0{)Uh3|tTxVe}AOOko6mmvzHY_WbjNRj`FV?113)T422^ zBe;3dFykYVKM!z?EEuTuu&2+caT$7vz|Fhe{ipdU69ry!-}|&m@I0@eMXBGC& z)8|US6-1%gFcF{C29^-CG|TQMg$MlcCM1-=4l#jjik5i=zT*}6+=fRT_x`x)g1=;v z)*FMb0U5q)1z=irf>v=VP{6VEJ+9XAef+Lv1#p2?I2@`wQ`OnYAdh)!oRA6G!p#G& zBnL?0J>6Q^b^1)|j@*r3Q5v&ydmnao0*byCEkHkRgFPq?&{M26Mo#wY&N(3?KnoGw z!w&UWU_`NbY5w>(P#LlUCoQYhm$hMYnV+Fp zM~^usIyM`(PR)-8XOIT63v@Jc+BAH~&A12Dxw??4(z68?u}y3dKuzk>%j-_&x#!bg z65awWS8T1C9&i^!ji}}UpPrrWpdPP7hRW&*l(*WimJF$-0wrO4w6j3ZH6)mnO|aW7 zf0$)|y>$g*=*b<-=v=3K=K;4kr;%rR_a)tlp4(S>o!ionT7TU~{{|fF&s=E8ehi#q z);S@hkY~(cmx)-vNm)e~G$?BOmB-fQ)31tv_d;x0-RY_kaAv#(`F~XaycYa53;!oe?Kmyu9cyaG>m&?1^g9K4+e-}u; z)Kxw_U~8J^x+Yh32E0jr?9f4<-3cT<>MA*iNZsSnq1d6CHK)_y?G6`l0l`2)yj`Fp zRMP>HvY}$e)h)`hl45?e?mlEEa#x$c_ZZmhu|od849pI5^4=L&bF{}MmCH_mPgwry zPK|oaimDOF=yP&3wNh1HiEB+#&#js5I>t>?=3qR+19sSf>dn)t2UyVSScAy@Ryp#c z0Pr>#Ed`?Nql(+RN>$#+KPP`wLVMKFKBnOm*t)TTUQ0?(fz_4yr1#D{I@Jp&QE4a7 zX^5=U2=QJZn;@@1VPha-GrbpxY?*(49w$5C+K%+8S1vXc)G7W~hnoC!$=8akA zbRE9kbqWnSbC#oE0ku34l@1LF`VGTUfV9McgYYzlp;hA-lH5br%Cy4Q1Dvt z-d^|5XTN{_1H_UUC|<1;Jh7htR66?cN;=wfrtGCi#YdqskxMR8pS9+io$!1}mIUjC z>M~)=)$ku$-LPl-wr)racEjJ;;4Yr9emoUqjg`Ip^t};7G_q|_x*1hUf^`AC9V!I@ zKcLb<3mGN!z9JjH^n0J_mqq-g4*F>Jv?;~k^WiMX^6FA2E)Vjy#_E93=?U2=drSD9 zeA4U+*%*z?LspgrWY%D(w)Nu+>{5I(7xCAUw>mk#C}{5#;A{f%YaN$4B5&6dDCKhq zZN@n5H5BMAXN}q}{NVCre1ZH}Vg^Eo?Acr|Kfz5MI_y66@z_dh_*8y1kcbxs&(xYs zHyHTQz{&98AQqerxY$;?S2}PX=DfDcf4SL>fa>g%*Rlb8AL?-ODOV)0Du8sJWHd&8 zr|ck|j?9u;LFBv8g6xbqR_7L`$Yx<|Tb_x5EvVVW4T~;ClzQUtAjkTXu z7|R_TkjEv<>)z+?t1qj6!FEt*zxeDXGW<(LHCp2ft=(qFWbO#1G}hFX%~L>eOO_QmghY#pQpBH=|I!U;IS$ zT)B`OFBjxYY=b`sLI`(@L}E7e#O*}EiRMu#2vb!+J=?!oj$E(E6dI**{!08!Rnbyi zOj0fQh7pOwptR#^^?Okv5M$=DkDexXr&P=&h1AZ=Ee@=aot4Bz={(&km;WlIWrG(; zvN^e%?=om#u?H5+_WTnU;(<)TNMx<1?U2oyL%0=r{;2%GLhIu1#q2cY2JLPKzb{(r z9Zj!abK%wA5hLRbnsR0?FQ3Wun|`=1Z(CO0xQyv?cDk}gJtvr}l=i-Oxtc>byI<;6 zVG)I-mW^MPOEcGnW&P03MX~*g4#iQb#ya_jRIAGBWmEZz&it-f?>l)>WH`|+`jaWb zEayVk#GzQP=gv(KumADPy_zb~b7igBHt;ct2DWjmOR?QL+<48g+lp~78os9W>w7xl z`8=;nJxX%)LXL72;`0#jjaV^8`5&HK?d7BV{AI&Ow356&k|UfA23ZU}&`vcexjtnBKEHe$;PYF0gnPGn(Q3 z{i_FvDe}2&-Nttv>|rh$B?Ii7x)m+>YtG^Bz=Ez~PlLHnt)eFkbW_j@CU;w`Qt3Dl zh=sWjdaGwm<)^gHlh++cYfHSI`Jmk~Bu?laLJ~zX7WQszbJSE{g3#q846jZ2$GFfK z{tB5)&>{5+8G?gauveY(`^nr5H;@C#rrMeRQ+mCW_SZO>`|hL373H)~6kQ!k<|=XHSbqH0iV(W{Vz2b?WeS%me0Jr?)poTme; zj2psNRo#*g2&b4IB9~}_9v0Mq{OH$(B>T!L>Y|5vsAdNXk>{!%*TX$9?iD>k8-uHE z2BHj51FJmTLV1zQha&)a%l-9CL|CO`>1C5_rrPw(kn{em>{M*N%u#g1m9^3J5vZPA z8slRvIUU3lo{d-j@LMB(c-GNT)o;dlt%mXA`f;u-F}zAgo-iaK8J8M}J`(K%-D|`H zMHGchIICd0 zcn82;A)QbTy}}b`SS6y}282(_;`^R6tokp&D{c=u@_))$Rm?cnCopDv|9a=VQ(Rq2 zfjldVGO`+M^#jTC&Bg|wNO@r<7>5i2mdZK@ld}7o6-D@mXuWVxBRdBNZ~2x+ZEm7! z6Y30MkWUWm$=S{5gb;pDfEt<%j&Lf~NM8)>m;eK&y2RpmJjzzC$!sg6=LqqI80%ij zL4Fm9Hv(*X#>FWbQeFartI!CiW3lrcT7Q#p=UIkvCHeX9L%)P>`c<{SLYTi#w^P;u z0r!siIL&3CV-Z%aO+?AlA(`uyLS5qJ^5U zImr`ay(w{bm{TJw7l4c=}QDF@n4==Cj04&90vcWnrha2B3iUQy`Ag z(vXR@QmNS4;^{X&^~+-HAVztSx+ zkl?Dv)!NZJk_=m6>Hn+)%N-t4pQT+Ome5EZAMq&uL%@vPh>aACvc)eM;*x?k+(7A@;pxsfzl5 zj0f`lsdP0kX@D$@*Bd29d+?8k$S%n5%dKViHIZ)A-K5ua6i z&@9@t2dRi{Q*LC{JoPsGmM{@~{SUWSX&X=7% zH8tHms@gLRaUXc6WyNUDe!n8s$|(D#$j^PdN3YJx_+7j2by!-d8!z(3>rbwkc{VD! zQ>pA$$=+LGYDVr?9OI9!r43|KkKMC4*%_?E<9n4lNN)J~bXc$6D8IVfZhefhuVeq7 zf~bXPbbmR8KxoXow(0sSlTml0!Y1oWA>7VSAGiz*RmGggze)oT&a_D)$)6EOde~*9 zbdyW_4KBPc;ba#W@A@X|c>~YQA5F$I61P^nT}jh9<28H=lKiH)JbQuJjy5@?y&?_R zO0x(T2mS$2Wat%uP((hNP#l(Wt$pS02kSHS%6O6XH4$Z<*1n)ITS+oVr0$BJLrEuy zz~d4vyhXXVLI*cPro_}_QL6yq{L?m#l>|FdGsWWL>>!?x|IAFU^+YpDeK@P(uT z&)p6>mlFr;z5)HTXa50!Uj%~jnV`%qz5_5-9B>=k!GA>=>j=;~iKPQ%j*mbF>8;ve z&67dnn>t(xEVJU&t7on^{dhXVK-@>?R33!&KLxNH%5SY8(o0{`vv8m5&R(sv4g{bG zf#z?Wpu>zBC=J(c0f?`T10=Uh!;RByqgA`0!;$*i#0U34Y4X}i3SH`GU>2#tF|h1c zuLX_A;=Dl{X(M1|#0fP~f{?#gS$@&~Gbd;L!M)qve!VOMBBTF;65!SkrUN_M#LqVE zft^?!1pTP$r3^@Cdn~;TTseiDH$9C7xullB6%qC=*VUr|W>9?s9`jSj2dbjPQNi6{PeJ*OfVG;VAFHoygIvI5Gdk?8||AI1d$u$^{d;hsyOGs zTlYu$_+m1%;pPiqfN~{}Jnn~v)vU%G{{X*TTf&k9`8R-Ac#ptE%XEZ=l!{GT^{oG^nO|ja7_<6PQ;W*@N+oTld

yN`5!d|kEjF*h~>;HOS~P5CcDwRL~~9o?yE1xSl?zjy-M4h}%2 z*xR^c?*DKzH3fqH*>w*eYV$k;Mm!(oy@53v<=Y#wA2hZm+S6F54nf?{3>xu|uK z2_wKkJ>Fq{L!CWV(r2uxzR6cv%9bMZNX%#4Kr|R_kN<3-`N`i5zVg*nW

cWvsEGEn=yG*3#BY+83gKlg}h8i`b(sPYy+v~=nWAl09^^3FE`#q->z z7lAMNk%;aU%C!|}x&M`6TzAD^gQ`$Z-R5I*ak#Htalk{i0GRygH=Goqr50B)^5erZ zaCV&~6AW(y;K)Xi(*SSW0szT3kR<7=V~%wiee15POJa!VWq-DM103I@!Ovb!*Rx_w z9;fQ99;ec=DwQ9J4mk(#tJj%SeY@t|Z&oHeI!}8#q?1u0b}+UkIk|4LZ~XI90noGj zxO3Z?xE5ehd3KbswJa0*uL}x_z_-SMia}k`G8v=<+fU5MT*a84L}TxJn_Q#_Z2hKg zWq!KP;XEEE+{IhXy_yI-@_$jxbW`|c^~C6p)m%J#&|*M4v(>B~a??rv=aol?j2#Gz>E zsNW~)ySw`)$@-Y@3*EIZ0;`pdl8Q0NBXt>Jx__U#_oVe2;cLy7)-Jv)5UzQ{wo-w| z(j zFY)tktgqGTH7U;3HhiccriZ3?zQ?8JmG8zz%OU*5_(Tgwj6wU!{8eofO9X0LSx2?C zx7yyvaaDS*?u^1QnoqD?qSy;nq$9u1(TTq%&2qjTMYNue*! zfKBK}BU1-~&wE_Ufvf%g7uLHLfrCM%LzDYy3%6HcFs!udSFV_=K&XTJ(9h?!Niq9* zpXH2{PL=k~si+!i$YnXL2tinp4U>xS#1oS?F2FGus7p{p@? z*gacBn`Py^V%g9!p7;0l*!7|{-%Ne=9OtY|l1O;K8nkQcD&? zp+;Y=s)N_oQ9Bq`gMEc1uSNaUI`{gX;&A9YoXNYO+7$cse)lJsTNi5+ z1y>BqnzWO~xwRwD;)@dNBd~|S+4&L6CJKczL)lG` z=apzzbPSn9p?j#@HGfx?QMwaZiu3!jOeFExmE=y&_cbjz}@d;y8G9O`v@QL?39)!Ec&(qr^rq0_{_b!&zbuU5++&jB|a(o zhSC=1P)Y;2x}npx6Ho(xGFymwJFvcN14?Oktr2Mmq?P9la@R5yId~(hTRdmrm#?f^@dh8rV~>!~;WpZzBPTpR+=4~sV?(pNj&%10)aeEQt!X~4Oe>J{>wRSX5VD za_PzKrz9AiI_!4o{Nnn;yX7?H6}9J%mOROvifTpccB>m2mYlY{08mbPR<5Zw54;xRJ-vCK*wffU;4+XU$DpbZM!%#XpsWpH+;DnzHBRpr|XQMVpkZmY3x{sa+%XE*u01C8~`4Uer#MpOYxr#i!g zvw1f;0Zy|il9EjxUI*fK&ug#nDtCx)nyhhE4|w`|Wuwx&b5|MZ^EE{q`l_<%IO{||kOfr}0q)_xIhEoa#SVqx zjW$a55P>7p!C$V+o^ZQevWG$F||M5KldCw{+ z)bDb(E|GFk62aG2=rtgFM9(X0R^(|WlmgAZ

*W49tobcmJM>pM0nkn!G9aTC=>r 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

<6YI{5^>tb#4MR&9GaRklHnqE<;PU__B3^_*> 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 + + {{ partial "head.html" . }} + + {{ T "skip_to_content" }} + {{ partial "noscript.html" . }} + {{ partial "svg.html" . }} +

+ {{ partial "header.html" . }} + +
+ {{ partial "script.html" . }} + {{ partial "katex.html" . }} + + diff --git a/themes/cupper-hugo-theme/layouts/_default/list.html b/themes/cupper-hugo-theme/layouts/_default/list.html new file mode 100644 index 0000000..ece8203 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/_default/list.html @@ -0,0 +1,32 @@ +{{ define "main" }} +
+

{{ .Title }}

+ {{ if site.Params.search }} + + {{ end }} + +
+{{ end }} diff --git a/themes/cupper-hugo-theme/layouts/_default/single.html b/themes/cupper-hugo-theme/layouts/_default/single.html new file mode 100644 index 0000000..ecd5d7d --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/_default/single.html @@ -0,0 +1,6 @@ +{{ define "main" }} +
+

{{ .Title }}

+ {{ .Content }} +
+{{ end }} diff --git a/themes/cupper-hugo-theme/layouts/_default/terms.html b/themes/cupper-hugo-theme/layouts/_default/terms.html new file mode 100644 index 0000000..d3f541f --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/_default/terms.html @@ -0,0 +1,19 @@ +{{ define "main" }} +
+

{{ .Title }}

+ +
+{{ end }} diff --git a/themes/cupper-hugo-theme/layouts/index.html b/themes/cupper-hugo-theme/layouts/index.html new file mode 100644 index 0000000..ecd5d7d --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/index.html @@ -0,0 +1,6 @@ +{{ define "main" }} +
+

{{ .Title }}

+ {{ .Content }} +
+{{ end }} diff --git a/themes/cupper-hugo-theme/layouts/partials/disqus-js-common.js b/themes/cupper-hugo-theme/layouts/partials/disqus-js-common.js new file mode 100644 index 0000000..1d69d8d --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/disqus-js-common.js @@ -0,0 +1,6 @@ +// Remove button +var disqusButton = document.getElementById('disqus-button'); +disqusButton.parentNode.removeChild(disqusButton); +// Un-hide comments +var disqusComments = document.getElementById('disqus-comments'); +disqusComments.style.display = 'block'; \ No newline at end of file diff --git a/themes/cupper-hugo-theme/layouts/partials/disqus-js-main.js b/themes/cupper-hugo-theme/layouts/partials/disqus-js-main.js new file mode 100644 index 0000000..74bff17 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/disqus-js-main.js @@ -0,0 +1,10 @@ +// Config +var disqus_config = function () { +}; +// Build and append comments +var d = document; +var s = d.createElement('script'); +s.async = true; +s.src = '//' + "{{ . }}" + '.disqus.com/embed.js'; +s.setAttribute('data-timestamp', + new Date()); +(d.head || d.body).appendChild(s); \ No newline at end of file diff --git a/themes/cupper-hugo-theme/layouts/partials/disqus.html b/themes/cupper-hugo-theme/layouts/partials/disqus.html new file mode 100644 index 0000000..ccf0340 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/disqus.html @@ -0,0 +1,27 @@ +
+ {{ with .Site.DisqusShortname }} + +
+ {{ $isDummyName := eq . "yourdiscussshortname" }} + {{ $isServer := $.Site.IsServer }} + {{ if or $isDummyName $isServer }} +

{{ T "discuss_comments_disabled" }}

+ + {{ else }} +
+
+ + {{ end }} + +
+ {{ end }} +
diff --git a/themes/cupper-hugo-theme/layouts/partials/footer.html b/themes/cupper-hugo-theme/layouts/partials/footer.html new file mode 100644 index 0000000..faec94f --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/footer.html @@ -0,0 +1,14 @@ +
+
+ +
+ {{ with .Site.Params.footer }} + {{ . | markdownify }} + {{ end }} +
diff --git a/themes/cupper-hugo-theme/layouts/partials/google-analytics-async.html b/themes/cupper-hugo-theme/layouts/partials/google-analytics-async.html new file mode 100644 index 0000000..ecc2767 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/google-analytics-async.html @@ -0,0 +1,10 @@ +{{ if not .Site.IsServer }} + {{ with .Site.GoogleAnalytics }} + + + {{ end }} +{{ end }} \ No newline at end of file diff --git a/themes/cupper-hugo-theme/layouts/partials/head.html b/themes/cupper-hugo-theme/layouts/partials/head.html new file mode 100644 index 0000000..0b9f6a3 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/head.html @@ -0,0 +1,58 @@ + + + + + + {{ hugo.Generator }} + + + {{ if .IsHome }} + {{ with .Site.Params.homeMetaContent }} + + {{ end }} + {{ end }} + + {{ if not .Site.IsServer }} + {{ with .Site.GoogleAnalytics }} + + + {{ end }} + {{ end }} + + + + + + + + + + + + + + {{ $templateStyles := resources.Get "css/template-styles.css" }} + {{ $styles := $templateStyles | resources.ExecuteAsTemplate "css/styles.css" . }} + + + {{ range .Site.Params.customCss }} + + {{ end }} + + {{ $title := print .Title " | " .Site.Title }} + {{ if .IsHome }} + {{ $title = .Site.Title }} + {{ end }} + {{ $title }} + diff --git a/themes/cupper-hugo-theme/layouts/partials/header.html b/themes/cupper-hugo-theme/layouts/partials/header.html new file mode 100644 index 0000000..05f45c8 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/header.html @@ -0,0 +1,20 @@ + diff --git a/themes/cupper-hugo-theme/layouts/partials/katex.html b/themes/cupper-hugo-theme/layouts/partials/katex.html new file mode 100644 index 0000000..7410749 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/katex.html @@ -0,0 +1,5 @@ +{{ if eq $.Site.Params.katex true }} + + + +{{ end }} \ No newline at end of file diff --git a/themes/cupper-hugo-theme/layouts/partials/nav.html b/themes/cupper-hugo-theme/layouts/partials/nav.html new file mode 100644 index 0000000..ca80808 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/nav.html @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/themes/cupper-hugo-theme/layouts/partials/noscript.html b/themes/cupper-hugo-theme/layouts/partials/noscript.html new file mode 100644 index 0000000..40ae776 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/noscript.html @@ -0,0 +1,8 @@ + diff --git a/themes/cupper-hugo-theme/layouts/partials/script.html b/themes/cupper-hugo-theme/layouts/partials/script.html new file mode 100644 index 0000000..6f59c7d --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/script.html @@ -0,0 +1,16 @@ +{{ $templateDomScripts := resources.Get "js/template-dom-scripts.js" }} +{{ $domScripts := $templateDomScripts | resources.ExecuteAsTemplate "js/dom-scripts.js" . }} + + + + +{{ if site.Params.search }} +{{ $searchJs := resources.Get "js/search.js" | fingerprint }} + +{{ $searchCss := resources.Get "css/search.css" | fingerprint }} + +{{ end }} + +{{ range .Site.Params.customJs }} + +{{ end }} diff --git a/themes/cupper-hugo-theme/layouts/partials/svg.html b/themes/cupper-hugo-theme/layouts/partials/svg.html new file mode 100644 index 0000000..7c34d04 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/svg.html @@ -0,0 +1,88 @@ + + + + + + + + + W3C + SVG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/cupper-hugo-theme/layouts/partials/toc.html b/themes/cupper-hugo-theme/layouts/partials/toc.html new file mode 100644 index 0000000..55a2ccb --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/partials/toc.html @@ -0,0 +1,19 @@ +{{ $headings := findRE "(.|\n])+?

" .Content }} +{{ if ge (len $headings) 2 }} + +{{ end }} diff --git a/themes/cupper-hugo-theme/layouts/post/single.html b/themes/cupper-hugo-theme/layouts/post/single.html new file mode 100644 index 0000000..9003db6 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/post/single.html @@ -0,0 +1,46 @@ +{{ define "main" }} +
+

+ + {{ .Title }} +

+ +
+ {{ $dateFormat := $.Site.Params.dateFormat | default "Jan 2, 2006" }} + {{ $publishDate := .PublishDate }} + {{ T "publish_date" }} {{ $publishDate.Format $dateFormat }} + {{ with .Lastmod }} + {{ if gt . $publishDate }} +
+ {{ T "last_updated" }} {{ .Format $dateFormat }} + {{ end }} + {{ end }} +
+ + {{ with .Params.tags }} +
+ {{ T "tags" }} +
    + {{ range . }} +
  • + + {{ $href := print ("tags/" | relLangURL) (. | urlize) "/" }} + {{ . }} +
  • + {{ end }} +
+
+ {{ end }} + + {{ if ne .Params.toc false }} + {{ partial "toc" . }} + {{ end }} + + {{ .Content }} +
+ {{ partial "disqus.html" . }} +{{ end }} diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/blockquote.html b/themes/cupper-hugo-theme/layouts/shortcodes/blockquote.html new file mode 100644 index 0000000..7bc9551 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/blockquote.html @@ -0,0 +1,11 @@ +{{ $quote := .Inner }} + +
+

+ {{ $quote | markdownify }} + {{ with (.Get "author") }} +
+ — {{ . }} + {{ end }} +

+
\ No newline at end of file diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/cmd.html b/themes/cupper-hugo-theme/layouts/shortcodes/cmd.html new file mode 100644 index 0000000..ccadc07 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/cmd.html @@ -0,0 +1,7 @@ +{{ $trimmed := (trim .Inner "\n") }} +{{ $lines := split $trimmed "\n" }} +
+  {{ range $lines }}
+  {{ . }}
+  {{ end }}
+
diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/code.html b/themes/cupper-hugo-theme/layouts/shortcodes/code.html new file mode 100644 index 0000000..a993b61 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/code.html @@ -0,0 +1,5 @@ +{{ $code := .Inner | htmlEscape }} +{{ $code := replace $code "[[[" "" }} +{{ $code := replace $code "]]]" "" }} +{{ $numbered := .Get "numbered" }} +
{{ $code | safeHTML }}
diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/codePen.html b/themes/cupper-hugo-theme/layouts/shortcodes/codePen.html new file mode 100644 index 0000000..b608953 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/codePen.html @@ -0,0 +1,10 @@ +{{ $pen := .Get 0 }} +{{ with .Site.Params.codePenUser }} + +{{ else }} +

Site error: The codePenUser param has not been set in config.toml

+{{ end }} diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/colors.html b/themes/cupper-hugo-theme/layouts/shortcodes/colors.html new file mode 100644 index 0000000..b46486f --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/colors.html @@ -0,0 +1,11 @@ +{{ $colorString := replace (.Get 0) " " "" | upper }} +{{ $colors := split $colorString "," }} +
+
    + {{ range $colors }} +
  • + {{ . }} +
  • + {{ end }} +
+
diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/expandable.html b/themes/cupper-hugo-theme/layouts/shortcodes/expandable.html new file mode 100644 index 0000000..5b752a9 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/expandable.html @@ -0,0 +1,25 @@ +
+ {{ if .Get "level" }} + + {{ end }} + {{/* 1. Get the md5 hash of the expandable inner text */}} + {{/* 2. Split the hash string into an array */}} + {{/* 3. Shuffle the array */}} + {{/* 4. Convert the array back into a string */}} + {{ $random := delimit (shuffle (split (md5 .Inner) "" )) "" }} + + {{ if .Get "level" }} + + {{ end }} +
+ {{ .Inner | markdownify }} +
+
diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/figureCupper.html b/themes/cupper-hugo-theme/layouts/shortcodes/figureCupper.html new file mode 100644 index 0000000..51a0a09 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/figureCupper.html @@ -0,0 +1,28 @@ +{{ $img := .Get "img" }} +{{ $caption := .Get "caption" }} +{{ $command := .Get "command" }} +{{ $options := .Get "options" }} + +{{ $original := .Page.Resources.GetMatch (printf "*%s*" $img) }} +{{ $new := "" }} + +{{ if eq $command "Fit" }} + {{ $new = $original.Fit $options }} +{{ else if eq $command "Fill" }} + {{ $new = $original.Fill $options }} +{{ else if eq $command "Resize" }} + {{ $new = $original.Resize $options }} +{{ else if eq $command "Original" }} + {{ $new = $original }} +{{ else }} + {{ errorf "Invalid image processing command: Must be one of Fit, Fill, Resize, Original." }} +{{ end }} + +
+ + + +
+ {{ $caption | markdownify }} +
+
diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/fileTree.html b/themes/cupper-hugo-theme/layouts/shortcodes/fileTree.html new file mode 100644 index 0000000..3e8d95d --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/fileTree.html @@ -0,0 +1,3 @@ +
+ {{ .Inner | markdownify }} +
diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/gallery.html b/themes/cupper-hugo-theme/layouts/shortcodes/gallery.html new file mode 100644 index 0000000..d1c7be0 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/gallery.html @@ -0,0 +1,29 @@ +{{ $command := .Get "command" }} +{{ $options := .Get "options" }} + +{{ with .Page.Resources.ByType "image" }} + {{ range . }} + + {{ $original := . }} + {{ $new := "" }} + + {{ if eq $command "Fit" }} + {{ $new = $original.Fit $options }} + {{ else if eq $command "Fill" }} + {{ $new = $original.Fill $options }} + {{ else if eq $command "Resize" }} + {{ $new = $original.Resize $options }} + {{ else if eq $command "Original" }} + {{ $new = $original }} + {{ else }} + {{ errorf "Invalid image processing command: Must be one of Fit, Fill, Resize, Original." }} + {{ end }} + + + + {{ end }} +{{ end }} diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/note.html b/themes/cupper-hugo-theme/layouts/shortcodes/note.html new file mode 100644 index 0000000..5671b72 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/note.html @@ -0,0 +1,8 @@ + diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/principles.html b/themes/cupper-hugo-theme/layouts/shortcodes/principles.html new file mode 100644 index 0000000..ca846ac --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/principles.html @@ -0,0 +1,24 @@ +{{ $JSON := $.Site.Data.principles }} +{{ $included := replace (.Get "include") ", " "," }} +{{ $included := apply (split $included ",") "lower" "." }} +{{ $descriptions := .Get "descriptions" }} +
    + {{ range $JSON.principles }} + {{ if in $included (lower .title) }} +
  • + + + + {{ .title }} + : + + {{ .strapline }} + {{ if and ($descriptions) (ne $descriptions "false") }} +

    {{ .description }}

    + {{ end }} +
  • + {{ end }} + {{ end }} +
diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/tested.html b/themes/cupper-hugo-theme/layouts/shortcodes/tested.html new file mode 100644 index 0000000..0e8d9d3 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/tested.html @@ -0,0 +1,28 @@ +{{ $tested := replace (.Get "using") ", " "," }} +{{ $tested := replace $tested " + " "+" }} +{{ $tested := split $tested "," }} + + + + {{ range $tested }} + + {{ end }} + +
+ + Tested using + + {{ $browser := findRE "^[a-zA-Z ]+" . }} + {{ $browser := index $browser 0 }} + {{ $version := findRE "[0-9]+$" . }} + {{ $slug := replace $browser " " "-" | lower }} + + {{ $browser }} {{ index $version 0 }} + {{ if in . "+" }} + {{ $parts := split . "+" }} + {{ $additional := index $parts 1 }} + with {{ $additional }} + {{ end }} +
diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/ticks.html b/themes/cupper-hugo-theme/layouts/shortcodes/ticks.html new file mode 100644 index 0000000..21518d4 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/ticks.html @@ -0,0 +1,3 @@ +
+ {{ .Inner | markdownify }} +
diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/warning.html b/themes/cupper-hugo-theme/layouts/shortcodes/warning.html new file mode 100644 index 0000000..69d1bad --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/warning.html @@ -0,0 +1,8 @@ + diff --git a/themes/cupper-hugo-theme/layouts/shortcodes/wcag.html b/themes/cupper-hugo-theme/layouts/shortcodes/wcag.html new file mode 100644 index 0000000..574af64 --- /dev/null +++ b/themes/cupper-hugo-theme/layouts/shortcodes/wcag.html @@ -0,0 +1,30 @@ +{{ $JSON := $.Site.Data.wcag }} +{{ $included := replace (.Get "include") ", " "," }} +{{ $included := split $included "," }} +{{ $descriptions := .Get "descriptions" }} +
    + {{ range $JSON }} + {{ if in $included .ref_id }} +
  • + + + {{ .ref_id }} {{ .title }} (level {{ .level }}){{ if $descriptions }}:{{ end }} + + {{ if and ($descriptions) (ne $descriptions "false") }} + {{ .description }} + {{ if .special_cases }} +
      + {{ range .special_cases }} +
    • {{ .title }}: + {{ .description }} +
    • + {{ end }} +
    + {{ end }} + {{ end }} +
  • + {{ end }} + {{ end }} +
diff --git a/themes/cupper-hugo-theme/local_git_config.sh b/themes/cupper-hugo-theme/local_git_config.sh new file mode 100755 index 0000000..d510958 --- /dev/null +++ b/themes/cupper-hugo-theme/local_git_config.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +git config --local user.name "zwbetz-gh" +git config --local user.email "zwbetz@gmail.com" + +git config --local --list diff --git a/themes/cupper-hugo-theme/netlify.toml b/themes/cupper-hugo-theme/netlify.toml new file mode 100644 index 0000000..044b094 --- /dev/null +++ b/themes/cupper-hugo-theme/netlify.toml @@ -0,0 +1,13 @@ +[build] + publish = "exampleSite/public" + command = "cd exampleSite && hugo --themesDir ../.." + +[build.environment] + HUGO_VERSION = "0.72.0" + HUGO_THEME = "repo" + HUGO_BASEURL = "https://cupper-hugo-theme.netlify.app" + +[[headers]] + for = "/*" + [headers.values] + Access-Control-Allow-Origin = "*" diff --git a/themes/cupper-hugo-theme/static/android-chrome-192x192.png b/themes/cupper-hugo-theme/static/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..9138e12cf1a6b08209d2834fe6d3ee3a8e45500d GIT binary patch literal 4733 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 Z0bhC8v4;j~S${_W#t1WbwSjB=e*qE~j}ZU> literal 0 HcmV?d00001 diff --git a/themes/cupper-hugo-theme/static/android-chrome-512x512.png b/themes/cupper-hugo-theme/static/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..7e493ee9eba9ba371ab591c05a26f3078646f095 GIT binary patch literal 13062 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 literal 0 HcmV?d00001 diff --git a/themes/cupper-hugo-theme/static/apple-touch-icon.png b/themes/cupper-hugo-theme/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c20e3b503988af3aaf71c86f5d16f4d7cc6a7dc6 GIT binary patch literal 3080 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 Rr<|Vv?&#gst literal 0 HcmV?d00001 diff --git a/themes/cupper-hugo-theme/static/browserconfig.xml b/themes/cupper-hugo-theme/static/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/themes/cupper-hugo-theme/static/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/themes/cupper-hugo-theme/static/css/fonts/miriamlibre-bold.woff b/themes/cupper-hugo-theme/static/css/fonts/miriamlibre-bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..54f9900d94d28d4c9e9a824a53cf1a882ce1e95e GIT binary patch literal 29040 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 literal 0 HcmV?d00001 diff --git a/themes/cupper-hugo-theme/static/css/fonts/miriamlibre-bold.woff2 b/themes/cupper-hugo-theme/static/css/fonts/miriamlibre-bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9ab4b85342fa5c12ed91a75ed43852acda1259ef GIT binary patch literal 22820 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 HKlA_q3 + + + + + diff --git a/themes/cupper-hugo-theme/static/css/images/icon-tick.svg b/themes/cupper-hugo-theme/static/css/images/icon-tick.svg new file mode 100644 index 0000000..20f9650 --- /dev/null +++ b/themes/cupper-hugo-theme/static/css/images/icon-tick.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/themes/cupper-hugo-theme/static/css/images/stripe.svg b/themes/cupper-hugo-theme/static/css/images/stripe.svg new file mode 100644 index 0000000..48bf5f9 --- /dev/null +++ b/themes/cupper-hugo-theme/static/css/images/stripe.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/cupper-hugo-theme/static/css/prism.css b/themes/cupper-hugo-theme/static/css/prism.css new file mode 100644 index 0000000..6ae40c7 --- /dev/null +++ b/themes/cupper-hugo-theme/static/css/prism.css @@ -0,0 +1,183 @@ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript&plugins=line-numbers */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +pre[class*="language-"].line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre[class*="language-"].line-numbers > code { + position: relative; + white-space: inherit; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + +} + + .line-numbers-rows > span { + pointer-events: none; + display: block; + counter-increment: linenumber; + } + + .line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; + } + diff --git a/themes/cupper-hugo-theme/static/favicon-16x16.png b/themes/cupper-hugo-theme/static/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..27a56135f698a3d18c3015554b8866a4bdf18e14 GIT binary patch literal 588 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{Xiaj ziKnkC`(q|P0WKcRlm~o3p^u&}jv*T7mtM5?a!!0aHfQf4;uoAkYhvlC-jvv>W!Q#^B# zc;^cJiIW#Scb~E-U-j~*#)R{2^FrdT6u;-(5~P~1v1`-1g$oj|b~4XyniXVp;?*mQ zl9zY(TJE;WIwx`@C*ef}+f3!ukiAjglzEg-SWnZuv3=Rv%zImx2~A~8_6m&`xq8>a zlv(TMi^tQr%gapeRQ-9ab|XmG_r|x>OG{R)e{uQngb5ni*|WE%1Wx(9t~RdP`(kYX@0FtpS)Fw!+N2{AOY zGBmIgja<`lmsP~D-;yvr)B1(DwI?f zq$*?3oE!Zm>f=FR^A+< raQeoT6GzS*kvYPCy1`?Cmmb3_alw*LPNq|VRxo(F`njxgN@xNA-_qJD literal 0 HcmV?d00001 diff --git a/themes/cupper-hugo-theme/static/favicon-32x32.png b/themes/cupper-hugo-theme/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..390625eba66956052c277fe46ddb5b8bce7f9ce2 GIT binary patch literal 893 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-G$+Qd;gjJKpuOE zr>`sfVANfcrIaNj50NY_{N@~aHj4F}j1_bCZZ z6p-wE;k0YR28GzpUY8sePjj;}r$3Bk9T5T_1%Qyhe9FSTWBrwhT`Pwao znX%`hjnCFAOA7Xw_jyF*^yydCtf_IiynaK#*1$+pqqaQ)S6_5%`360z^Ex?IxJ6TH zse=BxyWYinH-v3<)7*TuYW+E`@426DxmrGa zv)Oq??CcFSzEv$<<^Mmf|Hv&>wsFtdMHXzp1f*Kx8c~vxSdwa$T$Bo=7>o=IEp-iy zbPY{H49%9nO2Eg!`#Nr_CO8cRUr{2L5bxG1x5L3 znK`KnC6xuK3Yi5Z$qWn?a~^-<;V2B#&^YCP`i$q(AO>b-ZoOn~VP#?O$s)|c3N8&M xhf|o9H-{*kzH#NmkuyhRj3!S#o+UnMwwsfej)6uDU&AI1Xch0&0-#_L(@ALl7^Lswe_xUa7eWbyG z-kRzr>Hq*uvJZ&@jnoZORf4_`yb3o0$}Eon4*<>`hkv4}K)ymM#oH5f-Z6UtIS9HB zB>;d-YXC%f0Q>??iJk+Hh5=xa3IMSR07HIVf5;vH6q|$n!}dYIpU+9<= z94k#|eRBdzU?@;f+M=os*U(f{+h$E5MrpzIyN0)@vH*N;WMAeP(<1c0=Mo*V;R-cP?|FRrOy1VmvDIFOep{f% z_lZmeU}wRGDOkRoI|}sxS2D>Xj6F-I8mTl>w;dISVAQ<^Z6QZgBPx?t=U0@R%sp9B zQITIQEsOdwB_;XItJkY=RduyuNs-jg$Co@N87)#B8{K7Vx3i(fwXa0zQ+QLhWJ7mp3QE8+8vem@>51o6`eXLDPjE&?u@r|jC|3ZUfT^Q{;K+nmJy`RFL6-Eq_N5mE31Y{}o24k=(T%n^j>>(0%juoZb-8ijW zs6rtiyAEE`ibf=N;`j*2%csT~?XU+h#t#%7 zGWyX|u!UutCUK}6B$Ru_zi@gb3q`UowxcEAI$~7rb5ZX-$gOcnhaYS=CV45;C20FPSNbo00Ix%BToMmTz6lAK6EH&6As&#vkXRo!jGebJ#}bK0{8 zXBudsZ;dOxgYDXKi$JynXKHd#I)o zn3!8B)%=oufppvAY{|`g?%#aeUU5KD5^L0(QjziW-DIqv#Y6@bHs9}BHf&h8$2)Gx zQ1MWYj{f^d-QB(;FGH`Bba68y@!hh0=)Z}7uKUVupWVpeET^EBqE+{SjD)~sH($D(Jv%$Kr(9)kjXwNL zXK~WeH@00D(XS-6U)j*76x-9@&8K%Q3?VP4<6qV1`)Z|$vp4q#>b78G0C=ZD)+)y$ zqoMXA>wdEEN&MDL&RWAHQciQD}l?4=P(cd z?}S4kh1Z}2uZ;?+Jf=WMOJM*qm&RfQ&{!OL0>T-EM-l8@5Ku`+dyJDk7KaGIIwRNu z0iTFQ3xz@yXM=_eqEWmQ)^x#7kRUMHPz+R+vKbr}TL7>wIBk%U4>5+DbpFj8;KU2q8^{l5EL0)HcoP!9;W7k=`3&&;s?hu- zmRtA!z(42&gh3R*I=Z-EogMHFILuN@9fW9a(h22cG62TYv%JamB^27fDHKj2112Yt z0c{`6O%f#XSZF3KokQm(rK10HG0+?y>qu~>6t7<%1-d literal 0 HcmV?d00001 diff --git a/themes/cupper-hugo-theme/static/favicon.ico b/themes/cupper-hugo-theme/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6506f1ddd5a0b6d88ff01efaa51f4573a252613c GIT binary patch literal 15086 zcmeI23$RsH8Gtt+0-^y%LJzr@9|6l)F zd+o=ZC~6V4iUtmh(ACiodPdRNQ502I=kgt+=x>yDL|Z@WgeY1`gFdvOOEeuU&q|L5 zRr#$%pb~*f1S%0YCL_=muUZD4wI+RHkUy4_`dJ6P11HCmz9PsU?c^XFSPqwfv7Q18 zVH%tc>tGGchfZ)cJP1p{zRH=f2rh>%umF}oUudlKql4omaTevqGTslJN&g76HxY)w zBQOiL!8z~{tbp6VdCdXaIG+dL!>|Ds!x(Umcft?B`N#4u5+8vizv41|za1`vNeLLA zi-4z+toT@RKb+i02R;QGP#)3d(z_F}{xHyvBk)y6^Q{|JTD8U=_G$+&{*4GPsWh!$xpD9?RvwivBeW zhd5RwONzcX#(xJK0e8T3a4#66RxlO1!*sX_^#A?foR)#>Gz{E}_Az#opc+7+G3MWB){gZ4~X-@w=FGhlU=V5pf zo`Nm#U6=*Ez`fR7(j5L9+Y7;K@=eGT;BCrx!PlTWG>0_RfA_T4?QSUKcT&0Mr|U5Y zT(`8+RR1r=@Jo>7W2v%3^m`3{1z!Z$#CSADn&N*~4E+X5`B_fAbNLf2g43W}X^Q{X zV8lILj(^449AJ!B!8tgd>u~{;vleOn_iXfjS-I3tB=CCJ3~zyZawfEfVv^SX zp$z&ul=5*OZJrI@kX?t^~dURVuX;0efY>zddulzC)qw+*_6 z6+t?U|L>vyGm!5?QeOZ2fcLl);S@;n-#tGTLh;$}58yR@Sy&OI)A;Z6x_%}3n_uSs z=^fZBL#(hG)pK=My9MkLGYbQz4`0uldHXQqDxD$ML8V^I^Ozl8 zFdp|p{LEmy+XQ)%iIT>D_rQAi7rY8jfVOXdx$qhI6pVpUFdB@jXW&(^7`_d^0I%RsTTcmKZ(ujI68%U*yT@H_Z9d;_LHH;7|TvTRA~ ze`ug38TUhHsDi#Q5YC2=!^gmDVgPszdtd4Z?w_VgbNJs>ADYttf5HDR69BLE;}L!T z3d}!F(f4-XGsp3WzE`9Yfl34_5vW8UMFcWg;Q>6guBRvc55B%BtLw)-u$Fvn{lwiF zz6fUOC#*A{Ie6giP3o+KdT&j(UuJWg23^;xK{JN!8KWwv+o*YKnvv6s8}ypN>iyAE z=htTS-ov`4A>S=m9{rcTKI)XA{y-*^9e;n-{u=X#(NXisy4GUnmzDIo4{KHpL*elM zw0yd)NF@TtR|I^I6Qxyyiq1p(zNQQX-|=FxjqjXczql?*x24ec#1P9A-yN=mE5LWg zB`^(qKk^-S6f6h7nVb(bFb_TiOJNu&`r{%`WVNIWZBYK`@I?YTksdy2XE!{pV7C&KxoYOmd4os zC}VF2?p_7iNuB%8?^=GBD<$RHcg;6KG23C?0ov;8)!@Dqq85<2$r4btOa5IhLK2hXQ`DaU>fI_-ia`_EJEIcKbE z;Z2C!ts$*=O|Avocuj^Yse@3;vF|zV zSnlb+!d7?`Ho%kM`F}aof&T0Uo~E;B)6?iZU|b%DY6ztq`*+d7{)@n~y#vH&y6ft_ z>{7T2hJpKh6TAlJg7=2=;55jWa_oE0TL)XfIeUNmI;@1+9Hwst*VlO(qZ=UJe$9qD^fZ&o~b6 zwAQxg!O;Zs75RUSK*M*2gx|MoC>)u|EPdoi<=(1HW+$IhHn#viqtvyk$<*DmHdFWa z9k4wU?d*_=Hdke8`1rAG*^z!lQXbA7p&AZG?VuXGzxM<0b&l)!zV~=<8wlRpM!;~m2<&?S#Qv%6 z+a2=7_e$?2zB_mi8w^R&w{L!b&(H6{A;{!-1-%}ofMPUUuPW>OKT{BMr literal 0 HcmV?d00001 diff --git a/themes/cupper-hugo-theme/static/images/browser-chrome-android.svg b/themes/cupper-hugo-theme/static/images/browser-chrome-android.svg new file mode 100644 index 0000000..5ecb985 --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/browser-chrome-android.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/themes/cupper-hugo-theme/static/images/browser-chrome.svg b/themes/cupper-hugo-theme/static/images/browser-chrome.svg new file mode 100644 index 0000000..02d8389 --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/browser-chrome.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/themes/cupper-hugo-theme/static/images/browser-edge.svg b/themes/cupper-hugo-theme/static/images/browser-edge.svg new file mode 100644 index 0000000..a755a9d --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/browser-edge.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/themes/cupper-hugo-theme/static/images/browser-firefox-android.svg b/themes/cupper-hugo-theme/static/images/browser-firefox-android.svg new file mode 100644 index 0000000..f9c0e66 --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/browser-firefox-android.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/themes/cupper-hugo-theme/static/images/browser-firefox.svg b/themes/cupper-hugo-theme/static/images/browser-firefox.svg new file mode 100644 index 0000000..1a80b65 --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/browser-firefox.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/cupper-hugo-theme/static/images/browser-ie.svg b/themes/cupper-hugo-theme/static/images/browser-ie.svg new file mode 100644 index 0000000..8636924 --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/browser-ie.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/themes/cupper-hugo-theme/static/images/browser-opera.svg b/themes/cupper-hugo-theme/static/images/browser-opera.svg new file mode 100644 index 0000000..f127290 --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/browser-opera.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/themes/cupper-hugo-theme/static/images/browser-safari-ios.svg b/themes/cupper-hugo-theme/static/images/browser-safari-ios.svg new file mode 100644 index 0000000..da98377 --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/browser-safari-ios.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/cupper-hugo-theme/static/images/browser-safari.svg b/themes/cupper-hugo-theme/static/images/browser-safari.svg new file mode 100644 index 0000000..12f0c76 --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/browser-safari.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/cupper-hugo-theme/static/images/icon-info.svg b/themes/cupper-hugo-theme/static/images/icon-info.svg new file mode 100644 index 0000000..1e2384f --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/icon-info.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/themes/cupper-hugo-theme/static/images/icon-tag.svg b/themes/cupper-hugo-theme/static/images/icon-tag.svg new file mode 100644 index 0000000..0d8d3af --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/icon-tag.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/cupper-hugo-theme/static/images/icon-warning.svg b/themes/cupper-hugo-theme/static/images/icon-warning.svg new file mode 100644 index 0000000..49d20fc --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/icon-warning.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/themes/cupper-hugo-theme/static/images/logo.svg b/themes/cupper-hugo-theme/static/images/logo.svg new file mode 100644 index 0000000..b0a4220 --- /dev/null +++ b/themes/cupper-hugo-theme/static/images/logo.svg @@ -0,0 +1 @@ + diff --git a/themes/cupper-hugo-theme/static/js/prism.js b/themes/cupper-hugo-theme/static/js/prism.js new file mode 100644 index 0000000..9461593 --- /dev/null +++ b/themes/cupper-hugo-theme/static/js/prism.js @@ -0,0 +1,8 @@ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript&plugins=line-numbers */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof a?new a(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){if(m&&b!=t.length-1){f.lastIndex=k;var _=f.exec(e);if(!_)break;for(var j=_.index+(d?_[1].length:0),P=_.index+_[0].length,A=b,O=k,x=t.length;x>A&&(P>O||!t[A].type&&!t[A-1].greedy);++A)O+=t[A].length,j>=O&&(++b,k=O);if(t[b]instanceof s)continue;I=A-b,w=e.slice(k,O),_.index-=k}else{f.lastIndex=0;var _=f.exec(w),I=1}if(_){d&&(p=_[1]?_[1].length:0);var j=_.index+p,_=_[0].slice(p),P=j+_.length,N=w.slice(0,j),S=w.slice(P),E=[b,I];N&&(++b,k+=N.length,E.push(N));var C=new s(u,h?n.tokenize(_,h):_,y,_,m);if(E.push(C),S&&E.push(S),Array.prototype.splice.apply(t,E),1!=I&&n.matchGrammar(e,t,a,b,k,!0,u),i)break}else if(i)break}}}}},tokenize:function(e,t){var a=[e],r=t.rest;if(r){for(var l in r)t[l]=r[l];delete t.rest}return n.matchGrammar(e,a,t,0,0,!1),a},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,l=0;r=a[l++];)r(t)}}},a=n.Token=function(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r};if(a.stringify=function(e,t,r){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return a.stringify(n,t,e)}).join("");var l={type:e.type,content:a.stringify(e.content,t,r),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:r};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,r=t.code,l=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[a],a)),l&&_self.close()},!1),_self.Prism):_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,n.manual||r.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; +Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?[\s\S]*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},Prism.languages.css.atrule.inside.rest=Prism.languages.css,Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css",greedy:!0}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},/\b(?:as|async|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/],number:/\b(?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\(|\.(?:apply|bind|call)\()/,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var e="line-numbers",t=/\n(?!$)/g,n=function(e){var n=r(e),s=n["white-space"];if("pre-wrap"===s||"pre-line"===s){var l=e.querySelector("code"),i=e.querySelector(".line-numbers-rows"),a=e.querySelector(".line-numbers-sizer"),o=l.textContent.split(t);a||(a=document.createElement("span"),a.className="line-numbers-sizer",l.appendChild(a)),a.style.display="block",o.forEach(function(e,t){a.textContent=e||"\n";var n=a.getBoundingClientRect().height;i.children[t].style.height=n+"px"}),a.textContent="",a.style.display="none"}},r=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null};window.addEventListener("resize",function(){Array.prototype.forEach.call(document.querySelectorAll("pre."+e),n)}),Prism.hooks.add("complete",function(e){if(e.code){var r=e.element.parentNode,s=/\s*\bline-numbers\b\s*/;if(r&&/pre/i.test(r.nodeName)&&(s.test(r.className)||s.test(e.element.className))&&!e.element.querySelector(".line-numbers-rows")){s.test(e.element.className)&&(e.element.className=e.element.className.replace(s," ")),s.test(r.className)||(r.className+=" line-numbers");var l,i=e.code.match(t),a=i?i.length+1:1,o=new Array(a+1);o=o.join(""),l=document.createElement("span"),l.setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=o,r.hasAttribute("data-start")&&(r.style.counterReset="linenumber "+(parseInt(r.getAttribute("data-start"),10)-1)),e.element.appendChild(l),n(r),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}),Prism.plugins.lineNumbers={getLine:function(t,n){if("PRE"===t.tagName&&t.classList.contains(e)){var r=t.querySelector(".line-numbers-rows"),s=parseInt(t.getAttribute("data-start"),10)||1,l=s+(r.children.length-1);s>n&&(n=s),n>l&&(n=l);var i=n-s;return r.children[i]}}}}}(); diff --git a/themes/cupper-hugo-theme/static/js/service-worker-registration.js b/themes/cupper-hugo-theme/static/js/service-worker-registration.js new file mode 100644 index 0000000..bbcc757 --- /dev/null +++ b/themes/cupper-hugo-theme/static/js/service-worker-registration.js @@ -0,0 +1,62 @@ +/** + * Copyright 2015 Google Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* eslint-env browser */ +'use strict'; + +if ('serviceWorker' in navigator) { + // Delay registration until after the page has loaded, to ensure that our + // precaching requests don't degrade the first visit experience. + // See https://developers.google.com/web/fundamentals/instant-and-offline/service-worker/registration + window.addEventListener('load', function() { + // Your service-worker.js *must* be located at the top-level directory relative to your site. + // It won't be able to control pages unless it's located at the same level or higher than them. + // *Don't* register service worker file in, e.g., a scripts/ sub-directory! + // See https://github.com/slightlyoff/ServiceWorker/issues/468 + navigator.serviceWorker.register('service-worker.js').then(function(reg) { + // updatefound is fired if service-worker.js changes. + reg.onupdatefound = function() { + // The updatefound event implies that reg.installing is set; see + // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event + var installingWorker = reg.installing; + + installingWorker.onstatechange = function() { + switch (installingWorker.state) { + case 'installed': + if (navigator.serviceWorker.controller) { + // At this point, the old content will have been purged and the fresh content will + // have been added to the cache. + // It's the perfect time to display a "New content is available; please refresh." + // message in the page's interface. + console.log('New or updated content is available.'); + } else { + // At this point, everything has been precached. + // It's the perfect time to display a "Content is cached for offline use." message. + console.log('Content is now available offline!'); + } + break; + + case 'redundant': + console.error('The installing service worker became redundant.'); + break; + } + }; + }; + }).catch(function(e) { + console.error('Error during service worker registration:', e); + }); + }); +} diff --git a/themes/cupper-hugo-theme/static/mstile-150x150.png b/themes/cupper-hugo-theme/static/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..2f0b1de1e557c6a36775ba1bca42a2c6526d4ffa GIT binary patch literal 3519 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 + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + + + + + + diff --git a/themes/cupper-hugo-theme/static/site.webmanifest b/themes/cupper-hugo-theme/static/site.webmanifest new file mode 100644 index 0000000..b20abb7 --- /dev/null +++ b/themes/cupper-hugo-theme/static/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/themes/cupper-hugo-theme/task_serve.sh b/themes/cupper-hugo-theme/task_serve.sh new file mode 100755 index 0000000..80281fd --- /dev/null +++ b/themes/cupper-hugo-theme/task_serve.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +cd exampleSite +hugo serve --themesDir ../.. +cd .. diff --git a/themes/cupper-hugo-theme/theme.toml b/themes/cupper-hugo-theme/theme.toml new file mode 100644 index 0000000..8d8ef0c --- /dev/null +++ b/themes/cupper-hugo-theme/theme.toml @@ -0,0 +1,17 @@ +name = "Cupper" +license = "MIT" +licenselink = "https://github.com/zwbetz-gh/cupper-hugo-theme/blob/master/LICENSE" +description = "An accessibility-friendly Hugo theme, ported from the original Cupper project." +homepage = "https://github.com/zwbetz-gh/cupper-hugo-theme" +tags = ["accessible", "blog", "documentation", "dark"] +features = ["accessible", "blog", "documentation", "dark"] +min_version = "0.60.1" + +[author] + name = "Zachary Betz" + homepage = "https://zwbetz.com/" + +[original] + name = "Cupper" + homepage = "https://thepaciellogroup.github.io/cupper/" + repo = "https://github.com/ThePacielloGroup/cupper" \ No newline at end of file